ETH Price: $2,609.21 (-0.47%)

Token

The Black Rabbit ($TBR)
 

Overview

Max Total Supply

88,888,888 $TBR

Holders

67

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000031925537 $TBR

Value
$0.00
0x7a6e5218d49FEa3748Ab4B8cEbD5152a1eAACc82
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:
TheBlackRabbit

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**
//SPDX-License-Identifier: MIT

   /gg\           /gg\ 
  /g.gg\         /gg.g\ 
 |gg..gg\       /gg..gg| 
 |gg...g|       |g...gg| 
 |gg...g|       |g...gg| 
  \gg..g/       \g..gg/ 
   |gg.gvgggggggvg.gg| 
  /ggggggggggggggggggg\ 
 /gggg(((ggggggg)))gggg\ 
|ggggg....ggggg....ggggg| 
|ggggg....ggggg....ggggg| 
|ggcccgggg\___/ggggcccgg| 
|ggcccccgggg|ggggcccccgg| 
  \gcccggg\---/gggcccg/ 
     \ggggggggggggg/

The Black Rabbit Project
"a journey of 2 tails" 
tg - https://t.me/Blackrabbitproject
Website - https://blackrabbit.exchange
twitter - https://twitter.com/BlackRabbitEXC

*/

pragma solidity =0.8.16;
pragma experimental ABIEncoderV2;

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

    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 { //Change
        _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 _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 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 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 TheBlackRabbit is ERC20, Ownable {
    using SafeMath for uint256;

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

    bool private swapping;

    address public BuyLPGiftWallet;
    address public DevMarkOthWallet;

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

    bool public tradingActive = false;
    bool public swapEnabled = false;

    uint256 public buyTotalFees;
    uint256 private buyMarketingFee;
    uint256 private buyLiquidityFee;

    uint256 public sellTotalFees;
    uint256 private sellMarketingFee;
    uint256 private sellLiquidityFee;

    uint256 private tokensForMarketing;
    uint256 private tokensForLiquidity;
    uint256 private previousFee;

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

    event UpdateUniswapV2Router(
        address indexed newAddress,
        address indexed oldAddress
    );

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event marketingWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    constructor() ERC20("The Black Rabbit", unicode"$TBR") {
        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 _buyMarketingFee = 20;
        uint256 _buyLiquidityFee = 0;

        uint256 _sellMarketingFee = 30;
        uint256 _sellLiquidityFee = 0;

        uint256 totalSupply = 88888888 * 1e18;

        maxTransactionAmount = 1777777 * 1e18;
        maxWallet = 1777777 * 1e18;
        swapTokensAtAmount = (totalSupply * 5) / 10000;

        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee;

        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee;
        previousFee = sellTotalFees;

        BuyLPGiftWallet = address(0x30E74d6aa9e5C9020068f8DaF95141240c61c4E2);
        DevMarkOthWallet = address(0xf515B8Ac7B96CCc4eC481ec5B55561b9FaeBc11a);

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

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

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

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

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

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

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

    function updateBuyFees(
        uint256 _marketingFee,
        uint256 _liquidityFee
    ) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        
    }

    function updateSellFees(
        uint256 _marketingFee,
        uint256 _liquidityFee
    ) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee;
        previousFee = sellTotalFees;
       
    }

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

    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 isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

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

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

                if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
                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 &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        bool takeFee = !swapping;

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

        uint256 fees = 0;

        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
            }

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

            amount -= fees;
        }

        super._transfer(from, to, amount);
        sellTotalFees = previousFee;

    }

    function swapTokensForEth(uint256 tokenAmount) private {

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {

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

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

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity +
            tokensForMarketing;
        bool success;

        if (contractBalance == 0 || totalTokensToSwap == 0) {
            return;
        }

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

        uint256 liquidityTokens = (contractBalance * tokensForLiquidity) /
            totalTokensToSwap /
            2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);

        uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(
            totalTokensToSwap
        );

        uint256 ethForLiquidity = ethBalance - ethForMarketing;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(
                amountToSwapForETH,
                ethForLiquidity,
                tokensForLiquidity
            );
        }

        uint256 marketingbalance = address(this).balance;
        uint amt = marketingbalance.div(5);
        (success, ) = address(BuyLPGiftWallet).call{value: amt}("");
        (success, ) = address(DevMarkOthWallet).call{value: marketingbalance.sub(amt)}("");
    }
}
//Anon for now

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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[],"name":"BuyLPGiftWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DevMarkOthWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTxnNum","type":"uint256"},{"internalType":"uint256","name":"newMaxWalletNum","type":"uint256"}],"name":"updateMaxWalletAndTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateSellFees","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"}]

60c06040526000600b60006101000a81548160ff0219169083151502179055506000600b60016101000a81548160ff0219169083151502179055503480156200004757600080fd5b506040518060400160405280601081526020017f54686520426c61636b20526162626974000000000000000000000000000000008152506040518060400160405280600481526020017f24544252000000000000000000000000000000000000000000000000000000008152508160039081620000c5919062000cec565b508060049081620000d7919062000cec565b505050620000fa620000ee6200053360201b60201c565b6200053b60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001268160016200060160201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001cc919062000e3d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000234573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025a919062000e3d565b6040518363ffffffff1660e01b81526004016200027992919062000e80565b6020604051808303816000875af115801562000299573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002bf919062000e3d565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200030760a05160016200060160201b60201c565b6200031c60a0516001620006eb60201b60201c565b600060149050600080601e90506000806a4986f44622f73835e0000090506a0178757bf9c1c5632400006008819055506a0178757bf9c1c563240000600a8190555061271060058262000370919062000edc565b6200037c919062000f6c565b60098190555084600d8190555083600e81905550600e54600d54620003a2919062000fa4565b600c819055508260108190555081601181905550601154601054620003c8919062000fa4565b600f81905550600f546014819055507330e74d6aa9e5c9020068f8daf95141240c61c4e2600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f515b8ac7b96ccc4ec481ec5b55561b9faebc11a600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004a3620004956200078c60201b60201c565b6001620007b660201b60201c565b620004b6306001620007b660201b60201c565b620004cb61dead6001620007b660201b60201c565b620004ed620004df6200078c60201b60201c565b60016200060160201b60201c565b620005003060016200060160201b60201c565b6200051561dead60016200060160201b60201c565b620005273382620008f060201b60201c565b5050505050506200113c565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620006116200053360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620006376200078c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000690576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006879062001040565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620007c66200053360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007ec6200078c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000845576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200083c9062001040565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620008e491906200107f565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000962576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200095990620010ec565b60405180910390fd5b620009766000838362000a6860201b60201c565b80600260008282546200098a919062000fa4565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620009e1919062000fa4565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a4891906200111f565b60405180910390a362000a646000838362000a6d60201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000af457607f821691505b60208210810362000b0a5762000b0962000aac565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000b747fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b35565b62000b80868362000b35565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000bcd62000bc762000bc18462000b98565b62000ba2565b62000b98565b9050919050565b6000819050919050565b62000be98362000bac565b62000c0162000bf88262000bd4565b84845462000b42565b825550505050565b600090565b62000c1862000c09565b62000c2581848462000bde565b505050565b5b8181101562000c4d5762000c4160008262000c0e565b60018101905062000c2b565b5050565b601f82111562000c9c5762000c668162000b10565b62000c718462000b25565b8101602085101562000c81578190505b62000c9962000c908562000b25565b83018262000c2a565b50505b505050565b600082821c905092915050565b600062000cc16000198460080262000ca1565b1980831691505092915050565b600062000cdc838362000cae565b9150826002028217905092915050565b62000cf78262000a72565b67ffffffffffffffff81111562000d135762000d1262000a7d565b5b62000d1f825462000adb565b62000d2c82828562000c51565b600060209050601f83116001811462000d64576000841562000d4f578287015190505b62000d5b858262000cce565b86555062000dcb565b601f19841662000d748662000b10565b60005b8281101562000d9e5784890151825560018201915060208501945060208101905062000d77565b8683101562000dbe578489015162000dba601f89168262000cae565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000e058262000dd8565b9050919050565b62000e178162000df8565b811462000e2357600080fd5b50565b60008151905062000e378162000e0c565b92915050565b60006020828403121562000e565762000e5562000dd3565b5b600062000e668482850162000e26565b91505092915050565b62000e7a8162000df8565b82525050565b600060408201905062000e97600083018562000e6f565b62000ea6602083018462000e6f565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000ee98262000b98565b915062000ef68362000b98565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000f325762000f3162000ead565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000f798262000b98565b915062000f868362000b98565b92508262000f995762000f9862000f3d565b5b828204905092915050565b600062000fb18262000b98565b915062000fbe8362000b98565b925082820190508082111562000fd95762000fd862000ead565b5b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200102860208362000fdf565b9150620010358262000ff0565b602082019050919050565b600060208201905081810360008301526200105b8162001019565b9050919050565b60008115159050919050565b620010798162001062565b82525050565b60006020820190506200109660008301846200106e565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620010d4601f8362000fdf565b9150620010e1826200109c565b602082019050919050565b600060208201905081810360008301526200110781620010c5565b9050919050565b620011198162000b98565b82525050565b60006020820190506200113660008301846200110e565b92915050565b60805160a05161419c6200118c60003960008181610ba1015261121b0152600081816109c001528181612bd101528181612cb201528181612cd901528181612d750152612d9c015261419c6000f3fe6080604052600436106102085760003560e01c80637571336a11610118578063c0246668116100a0578063dd62ed3e1161006f578063dd62ed3e1461077a578063e2f45605146107b7578063e40fe0a1146107e2578063f2fde38b1461080d578063f8b45b05146108365761020f565b8063c0246668146106be578063c8c8ebe4146106e7578063d257b34f14610712578063d85ba0631461074f5761020f565b806396188399116100e757806396188399146105c75780639a7a23d6146105f0578063a457c2d714610619578063a9059cbb14610656578063bbc0c742146106935761020f565b80637571336a146105315780638a8c523c1461055a5780638da5cb5b1461057157806395d89b411461059c5761020f565b8063395093511161019b57806366ca9b831161016a57806366ca9b831461045e5780636a486a8e146104875780636ddd1713146104b257806370a08231146104dd578063715018a61461051a5761020f565b8063395093511461038e57806349bd5a5e146103cb5780634fbee193146103f6578063591dcfd8146104335761020f565b806318160ddd116101d757806318160ddd146102d057806323b872dd146102fb57806327c8f83514610338578063313ce567146103635761020f565b806302dbd8f81461021457806306fdde031461023d578063095ea7b3146102685780631694505e146102a55761020f565b3661020f57005b600080fd5b34801561022057600080fd5b5061023b60048036038101906102369190612e86565b610861565b005b34801561024957600080fd5b5061025261090e565b60405161025f9190612f56565b60405180910390f35b34801561027457600080fd5b5061028f600480360381019061028a9190612fd6565b6109a0565b60405161029c9190613031565b60405180910390f35b3480156102b157600080fd5b506102ba6109be565b6040516102c791906130ab565b60405180910390f35b3480156102dc57600080fd5b506102e56109e2565b6040516102f291906130d5565b60405180910390f35b34801561030757600080fd5b50610322600480360381019061031d91906130f0565b6109ec565b60405161032f9190613031565b60405180910390f35b34801561034457600080fd5b5061034d610ae4565b60405161035a9190613152565b60405180910390f35b34801561036f57600080fd5b50610378610aea565b6040516103859190613189565b60405180910390f35b34801561039a57600080fd5b506103b560048036038101906103b09190612fd6565b610af3565b6040516103c29190613031565b60405180910390f35b3480156103d757600080fd5b506103e0610b9f565b6040516103ed9190613152565b60405180910390f35b34801561040257600080fd5b5061041d600480360381019061041891906131a4565b610bc3565b60405161042a9190613031565b60405180910390f35b34801561043f57600080fd5b50610448610c19565b6040516104559190613152565b60405180910390f35b34801561046a57600080fd5b5061048560048036038101906104809190612e86565b610c3f565b005b34801561049357600080fd5b5061049c610ccd565b6040516104a991906130d5565b60405180910390f35b3480156104be57600080fd5b506104c7610cd3565b6040516104d49190613031565b60405180910390f35b3480156104e957600080fd5b5061050460048036038101906104ff91906131a4565b610ce6565b60405161051191906130d5565b60405180910390f35b34801561052657600080fd5b5061052f610d2e565b005b34801561053d57600080fd5b50610558600480360381019061055391906131fd565b610db6565b005b34801561056657600080fd5b5061056f610e8d565b005b34801561057d57600080fd5b50610586610f41565b6040516105939190613152565b60405180910390f35b3480156105a857600080fd5b506105b1610f6b565b6040516105be9190612f56565b60405180910390f35b3480156105d357600080fd5b506105ee60048036038101906105e99190612e86565b610ffd565b005b3480156105fc57600080fd5b50610617600480360381019061061291906131fd565b61119d565b005b34801561062557600080fd5b50610640600480360381019061063b9190612fd6565b6112b5565b60405161064d9190613031565b60405180910390f35b34801561066257600080fd5b5061067d60048036038101906106789190612fd6565b6113a0565b60405161068a9190613031565b60405180910390f35b34801561069f57600080fd5b506106a86113be565b6040516106b59190613031565b60405180910390f35b3480156106ca57600080fd5b506106e560048036038101906106e091906131fd565b6113d1565b005b3480156106f357600080fd5b506106fc6114f6565b60405161070991906130d5565b60405180910390f35b34801561071e57600080fd5b506107396004803603810190610734919061323d565b6114fc565b6040516107469190613031565b60405180910390f35b34801561075b57600080fd5b50610764611651565b60405161077191906130d5565b60405180910390f35b34801561078657600080fd5b506107a1600480360381019061079c919061326a565b611657565b6040516107ae91906130d5565b60405180910390f35b3480156107c357600080fd5b506107cc6116de565b6040516107d991906130d5565b60405180910390f35b3480156107ee57600080fd5b506107f76116e4565b6040516108049190613152565b60405180910390f35b34801561081957600080fd5b50610834600480360381019061082f91906131a4565b61170a565b005b34801561084257600080fd5b5061084b611801565b60405161085891906130d5565b60405180910390f35b610869611807565b73ffffffffffffffffffffffffffffffffffffffff16610887610f41565b73ffffffffffffffffffffffffffffffffffffffff16146108dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d4906132f6565b60405180910390fd5b81601081905550806011819055506011546010546108fb9190613345565b600f81905550600f546014819055505050565b60606003805461091d906133a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610949906133a8565b80156109965780601f1061096b57610100808354040283529160200191610996565b820191906000526020600020905b81548152906001019060200180831161097957829003601f168201915b5050505050905090565b60006109b46109ad611807565b848461180f565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b60006109f98484846119d8565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a44611807565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ac4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abb9061344b565b60405180910390fd5b610ad885610ad0611807565b85840361180f565b60019150509392505050565b61dead81565b60006012905090565b6000610b95610b00611807565b848460016000610b0e611807565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b909190613345565b61180f565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c47611807565b73ffffffffffffffffffffffffffffffffffffffff16610c65610f41565b73ffffffffffffffffffffffffffffffffffffffff1614610cbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb2906132f6565b60405180910390fd5b81600d8190555080600e819055505050565b600f5481565b600b60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d36611807565b73ffffffffffffffffffffffffffffffffffffffff16610d54610f41565b73ffffffffffffffffffffffffffffffffffffffff1614610daa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da1906132f6565b60405180910390fd5b610db46000612434565b565b610dbe611807565b73ffffffffffffffffffffffffffffffffffffffff16610ddc610f41565b73ffffffffffffffffffffffffffffffffffffffff1614610e32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e29906132f6565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610e95611807565b73ffffffffffffffffffffffffffffffffffffffff16610eb3610f41565b73ffffffffffffffffffffffffffffffffffffffff1614610f09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f00906132f6565b60405180910390fd5b6001600b60006101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610f7a906133a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa6906133a8565b8015610ff35780601f10610fc857610100808354040283529160200191610ff3565b820191906000526020600020905b815481529060010190602001808311610fd657829003601f168201915b5050505050905090565b611005611807565b73ffffffffffffffffffffffffffffffffffffffff16611023610f41565b73ffffffffffffffffffffffffffffffffffffffff1614611079576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611070906132f6565b60405180910390fd5b670de0b6b3a76400006103e8600561108f6109e2565b611099919061346b565b6110a391906134f4565b6110ad91906134f4565b8210156110ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e690613597565b60405180910390fd5b670de0b6b3a76400006103e860056111056109e2565b61110f919061346b565b61111991906134f4565b61112391906134f4565b811015611165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115c90613629565b60405180910390fd5b670de0b6b3a764000081611179919061346b565b600a81905550670de0b6b3a764000082611193919061346b565b6008819055505050565b6111a5611807565b73ffffffffffffffffffffffffffffffffffffffff166111c3610f41565b73ffffffffffffffffffffffffffffffffffffffff1614611219576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611210906132f6565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129e906136bb565b60405180910390fd5b6112b182826124fa565b5050565b600080600160006112c4611807565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611381576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113789061374d565b60405180910390fd5b61139561138c611807565b8585840361180f565b600191505092915050565b60006113b46113ad611807565b84846119d8565b6001905092915050565b600b60009054906101000a900460ff1681565b6113d9611807565b73ffffffffffffffffffffffffffffffffffffffff166113f7610f41565b73ffffffffffffffffffffffffffffffffffffffff161461144d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611444906132f6565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516114ea9190613031565b60405180910390a25050565b60085481565b6000611506611807565b73ffffffffffffffffffffffffffffffffffffffff16611524610f41565b73ffffffffffffffffffffffffffffffffffffffff161461157a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611571906132f6565b60405180910390fd5b620186a060016115886109e2565b611592919061346b565b61159c91906134f4565b8210156115de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d5906137df565b60405180910390fd5b6103e860056115eb6109e2565b6115f5919061346b565b6115ff91906134f4565b821115611641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163890613871565b60405180910390fd5b8160098190555060019050919050565b600c5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611712611807565b73ffffffffffffffffffffffffffffffffffffffff16611730610f41565b73ffffffffffffffffffffffffffffffffffffffff1614611786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177d906132f6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036117f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ec90613903565b60405180910390fd5b6117fe81612434565b50565b600a5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361187e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187590613995565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e490613a27565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119cb91906130d5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3e90613ab9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ab6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aad90613b4b565b60405180910390fd5b60008103611acf57611aca8383600061259b565b61242f565b611ad7610f41565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b455750611b15610f41565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611b7e5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bb8575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bd15750600560149054906101000a900460ff16155b15611fb457600b60009054906101000a900460ff16611ccb57601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611c8b5750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc190613bb7565b60405180910390fd5b5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611d6e5750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e1557600854811115611db8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611daf90613c49565b60405180910390fd5b600a54611dc483610ce6565b82611dcf9190613345565b1115611e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0790613cb5565b60405180910390fd5b611fb3565b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611eb85750601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f0757600854811115611f02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef990613d47565b60405180910390fd5b611fb2565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611fb157600a54611f6483610ce6565b82611f6f9190613345565b1115611fb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa790613cb5565b60405180910390fd5b5b5b5b5b6000611fbf30610ce6565b905060006009548210159050808015611fe45750600b60019054906101000a900460ff165b8015611ffd5750600560149054906101000a900460ff16155b80156120535750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120a95750601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120ff5750601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612143576001600560146101000a81548160ff02191690831515021790555061212761281a565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121f95750601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561220357600090505b6000811561241657601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561226657506000600f54115b15612300576122936064612285600f5488612ae690919063ffffffff16565b612afc90919063ffffffff16565b9050600f54601154826122a6919061346b565b6122b091906134f4565b601360008282546122c19190613345565b92505081905550600f54601054826122d9919061346b565b6122e391906134f4565b601260008282546122f49190613345565b925050819055506123f2565b601760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561235b57506000600c54115b156123f157612388606461237a600c5488612ae690919063ffffffff16565b612afc90919063ffffffff16565b9050600c54600e548261239b919061346b565b6123a591906134f4565b601360008282546123b69190613345565b92505081905550600c54600d54826123ce919061346b565b6123d891906134f4565b601260008282546123e99190613345565b925050819055505b5b60008111156124075761240687308361259b565b5b80856124139190613d67565b94505b61242187878761259b565b601454600f81905550505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361260a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260190613ab9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612679576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267090613b4b565b60405180910390fd5b612684838383612b12565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561270a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270190613e0d565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461279d9190613345565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161280191906130d5565b60405180910390a3612814848484612b17565b50505050565b600061282530610ce6565b905060006012546013546128399190613345565b905060008083148061284b5750600082145b1561285857505050612ae4565b6014600954612867919061346b565b83111561288057601460095461287d919061346b565b92505b600060028360135486612893919061346b565b61289d91906134f4565b6128a791906134f4565b905060006128be8286612b1c90919063ffffffff16565b905060004790506128ce82612b32565b60006128e38247612b1c90919063ffffffff16565b9050600061290e8761290060125485612ae690919063ffffffff16565b612afc90919063ffffffff16565b90506000818361291e9190613d67565b9050600060138190555060006012819055506000861180156129405750600081115b1561298d5761294f8682612d6f565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561858260135460405161298493929190613e2d565b60405180910390a15b600047905060006129a8600583612afc90919063ffffffff16565b9050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516129f090613e95565b60006040518083038185875af1925050503d8060008114612a2d576040519150601f19603f3d011682016040523d82523d6000602084013e612a32565b606091505b505080995050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612a848284612b1c90919063ffffffff16565b604051612a9090613e95565b60006040518083038185875af1925050503d8060008114612acd576040519150601f19603f3d011682016040523d82523d6000602084013e612ad2565b606091505b50508099505050505050505050505050505b565b60008183612af4919061346b565b905092915050565b60008183612b0a91906134f4565b905092915050565b505050565b505050565b60008183612b2a9190613d67565b905092915050565b6000600267ffffffffffffffff811115612b4f57612b4e613eaa565b5b604051908082528060200260200182016040528015612b7d5781602001602082028036833780820191505090505b5090503081600081518110612b9557612b94613ed9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c5e9190613f1d565b81600181518110612c7257612c71613ed9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612cd7307f00000000000000000000000000000000000000000000000000000000000000008461180f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612d39959493929190614043565b600060405180830381600087803b158015612d5357600080fd5b505af1158015612d67573d6000803e3d6000fd5b505050505050565b612d9a307f00000000000000000000000000000000000000000000000000000000000000008461180f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612e019695949392919061409d565b60606040518083038185885af1158015612e1f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612e449190614113565b5050505050565b600080fd5b6000819050919050565b612e6381612e50565b8114612e6e57600080fd5b50565b600081359050612e8081612e5a565b92915050565b60008060408385031215612e9d57612e9c612e4b565b5b6000612eab85828601612e71565b9250506020612ebc85828601612e71565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f00578082015181840152602081019050612ee5565b60008484015250505050565b6000601f19601f8301169050919050565b6000612f2882612ec6565b612f328185612ed1565b9350612f42818560208601612ee2565b612f4b81612f0c565b840191505092915050565b60006020820190508181036000830152612f708184612f1d565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612fa382612f78565b9050919050565b612fb381612f98565b8114612fbe57600080fd5b50565b600081359050612fd081612faa565b92915050565b60008060408385031215612fed57612fec612e4b565b5b6000612ffb85828601612fc1565b925050602061300c85828601612e71565b9150509250929050565b60008115159050919050565b61302b81613016565b82525050565b60006020820190506130466000830184613022565b92915050565b6000819050919050565b600061307161306c61306784612f78565b61304c565b612f78565b9050919050565b600061308382613056565b9050919050565b600061309582613078565b9050919050565b6130a58161308a565b82525050565b60006020820190506130c0600083018461309c565b92915050565b6130cf81612e50565b82525050565b60006020820190506130ea60008301846130c6565b92915050565b60008060006060848603121561310957613108612e4b565b5b600061311786828701612fc1565b935050602061312886828701612fc1565b925050604061313986828701612e71565b9150509250925092565b61314c81612f98565b82525050565b60006020820190506131676000830184613143565b92915050565b600060ff82169050919050565b6131838161316d565b82525050565b600060208201905061319e600083018461317a565b92915050565b6000602082840312156131ba576131b9612e4b565b5b60006131c884828501612fc1565b91505092915050565b6131da81613016565b81146131e557600080fd5b50565b6000813590506131f7816131d1565b92915050565b6000806040838503121561321457613213612e4b565b5b600061322285828601612fc1565b9250506020613233858286016131e8565b9150509250929050565b60006020828403121561325357613252612e4b565b5b600061326184828501612e71565b91505092915050565b6000806040838503121561328157613280612e4b565b5b600061328f85828601612fc1565b92505060206132a085828601612fc1565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006132e0602083612ed1565b91506132eb826132aa565b602082019050919050565b6000602082019050818103600083015261330f816132d3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061335082612e50565b915061335b83612e50565b925082820190508082111561337357613372613316565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806133c057607f821691505b6020821081036133d3576133d2613379565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613435602883612ed1565b9150613440826133d9565b604082019050919050565b6000602082019050818103600083015261346481613428565b9050919050565b600061347682612e50565b915061348183612e50565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156134ba576134b9613316565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006134ff82612e50565b915061350a83612e50565b92508261351a576135196134c5565b5b828204905092915050565b7f43616e6e6f7420736574206d617854786e206c6f776572207468616e20302e3560008201527f2500000000000000000000000000000000000000000000000000000000000000602082015250565b6000613581602183612ed1565b915061358c82613525565b604082019050919050565b600060208201905081810360008301526135b081613574565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613613602483612ed1565b915061361e826135b7565b604082019050919050565b6000602082019050818103600083015261364281613606565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006136a5603983612ed1565b91506136b082613649565b604082019050919050565b600060208201905081810360008301526136d481613698565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613737602583612ed1565b9150613742826136db565b604082019050919050565b600060208201905081810360008301526137668161372a565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006137c9603583612ed1565b91506137d48261376d565b604082019050919050565b600060208201905081810360008301526137f8816137bc565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b600061385b603483612ed1565b9150613866826137ff565b604082019050919050565b6000602082019050818103600083015261388a8161384e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006138ed602683612ed1565b91506138f882613891565b604082019050919050565b6000602082019050818103600083015261391c816138e0565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061397f602483612ed1565b915061398a82613923565b604082019050919050565b600060208201905081810360008301526139ae81613972565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a11602283612ed1565b9150613a1c826139b5565b604082019050919050565b60006020820190508181036000830152613a4081613a04565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613aa3602583612ed1565b9150613aae82613a47565b604082019050919050565b60006020820190508181036000830152613ad281613a96565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613b35602383612ed1565b9150613b4082613ad9565b604082019050919050565b60006020820190508181036000830152613b6481613b28565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613ba1601683612ed1565b9150613bac82613b6b565b602082019050919050565b60006020820190508181036000830152613bd081613b94565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000613c33603583612ed1565b9150613c3e82613bd7565b604082019050919050565b60006020820190508181036000830152613c6281613c26565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613c9f601383612ed1565b9150613caa82613c69565b602082019050919050565b60006020820190508181036000830152613cce81613c92565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613d31603683612ed1565b9150613d3c82613cd5565b604082019050919050565b60006020820190508181036000830152613d6081613d24565b9050919050565b6000613d7282612e50565b9150613d7d83612e50565b9250828203905081811115613d9557613d94613316565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613df7602683612ed1565b9150613e0282613d9b565b604082019050919050565b60006020820190508181036000830152613e2681613dea565b9050919050565b6000606082019050613e4260008301866130c6565b613e4f60208301856130c6565b613e5c60408301846130c6565b949350505050565b600081905092915050565b50565b6000613e7f600083613e64565b9150613e8a82613e6f565b600082019050919050565b6000613ea082613e72565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613f1781612faa565b92915050565b600060208284031215613f3357613f32612e4b565b5b6000613f4184828501613f08565b91505092915050565b6000819050919050565b6000613f6f613f6a613f6584613f4a565b61304c565b612e50565b9050919050565b613f7f81613f54565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613fba81612f98565b82525050565b6000613fcc8383613fb1565b60208301905092915050565b6000602082019050919050565b6000613ff082613f85565b613ffa8185613f90565b935061400583613fa1565b8060005b8381101561403657815161401d8882613fc0565b975061402883613fd8565b925050600181019050614009565b5085935050505092915050565b600060a08201905061405860008301886130c6565b6140656020830187613f76565b81810360408301526140778186613fe5565b90506140866060830185613143565b61409360808301846130c6565b9695505050505050565b600060c0820190506140b26000830189613143565b6140bf60208301886130c6565b6140cc6040830187613f76565b6140d96060830186613f76565b6140e66080830185613143565b6140f360a08301846130c6565b979650505050505050565b60008151905061410d81612e5a565b92915050565b60008060006060848603121561412c5761412b612e4b565b5b600061413a868287016140fe565b935050602061414b868287016140fe565b925050604061415c868287016140fe565b915050925092509256fea2646970667358221220f2b18ab74af2fe44e82622b5c002d9958a40ee7b71e4b5fdd225564dbdf71a9d64736f6c63430008100033

Deployed Bytecode

0x6080604052600436106102085760003560e01c80637571336a11610118578063c0246668116100a0578063dd62ed3e1161006f578063dd62ed3e1461077a578063e2f45605146107b7578063e40fe0a1146107e2578063f2fde38b1461080d578063f8b45b05146108365761020f565b8063c0246668146106be578063c8c8ebe4146106e7578063d257b34f14610712578063d85ba0631461074f5761020f565b806396188399116100e757806396188399146105c75780639a7a23d6146105f0578063a457c2d714610619578063a9059cbb14610656578063bbc0c742146106935761020f565b80637571336a146105315780638a8c523c1461055a5780638da5cb5b1461057157806395d89b411461059c5761020f565b8063395093511161019b57806366ca9b831161016a57806366ca9b831461045e5780636a486a8e146104875780636ddd1713146104b257806370a08231146104dd578063715018a61461051a5761020f565b8063395093511461038e57806349bd5a5e146103cb5780634fbee193146103f6578063591dcfd8146104335761020f565b806318160ddd116101d757806318160ddd146102d057806323b872dd146102fb57806327c8f83514610338578063313ce567146103635761020f565b806302dbd8f81461021457806306fdde031461023d578063095ea7b3146102685780631694505e146102a55761020f565b3661020f57005b600080fd5b34801561022057600080fd5b5061023b60048036038101906102369190612e86565b610861565b005b34801561024957600080fd5b5061025261090e565b60405161025f9190612f56565b60405180910390f35b34801561027457600080fd5b5061028f600480360381019061028a9190612fd6565b6109a0565b60405161029c9190613031565b60405180910390f35b3480156102b157600080fd5b506102ba6109be565b6040516102c791906130ab565b60405180910390f35b3480156102dc57600080fd5b506102e56109e2565b6040516102f291906130d5565b60405180910390f35b34801561030757600080fd5b50610322600480360381019061031d91906130f0565b6109ec565b60405161032f9190613031565b60405180910390f35b34801561034457600080fd5b5061034d610ae4565b60405161035a9190613152565b60405180910390f35b34801561036f57600080fd5b50610378610aea565b6040516103859190613189565b60405180910390f35b34801561039a57600080fd5b506103b560048036038101906103b09190612fd6565b610af3565b6040516103c29190613031565b60405180910390f35b3480156103d757600080fd5b506103e0610b9f565b6040516103ed9190613152565b60405180910390f35b34801561040257600080fd5b5061041d600480360381019061041891906131a4565b610bc3565b60405161042a9190613031565b60405180910390f35b34801561043f57600080fd5b50610448610c19565b6040516104559190613152565b60405180910390f35b34801561046a57600080fd5b5061048560048036038101906104809190612e86565b610c3f565b005b34801561049357600080fd5b5061049c610ccd565b6040516104a991906130d5565b60405180910390f35b3480156104be57600080fd5b506104c7610cd3565b6040516104d49190613031565b60405180910390f35b3480156104e957600080fd5b5061050460048036038101906104ff91906131a4565b610ce6565b60405161051191906130d5565b60405180910390f35b34801561052657600080fd5b5061052f610d2e565b005b34801561053d57600080fd5b50610558600480360381019061055391906131fd565b610db6565b005b34801561056657600080fd5b5061056f610e8d565b005b34801561057d57600080fd5b50610586610f41565b6040516105939190613152565b60405180910390f35b3480156105a857600080fd5b506105b1610f6b565b6040516105be9190612f56565b60405180910390f35b3480156105d357600080fd5b506105ee60048036038101906105e99190612e86565b610ffd565b005b3480156105fc57600080fd5b50610617600480360381019061061291906131fd565b61119d565b005b34801561062557600080fd5b50610640600480360381019061063b9190612fd6565b6112b5565b60405161064d9190613031565b60405180910390f35b34801561066257600080fd5b5061067d60048036038101906106789190612fd6565b6113a0565b60405161068a9190613031565b60405180910390f35b34801561069f57600080fd5b506106a86113be565b6040516106b59190613031565b60405180910390f35b3480156106ca57600080fd5b506106e560048036038101906106e091906131fd565b6113d1565b005b3480156106f357600080fd5b506106fc6114f6565b60405161070991906130d5565b60405180910390f35b34801561071e57600080fd5b506107396004803603810190610734919061323d565b6114fc565b6040516107469190613031565b60405180910390f35b34801561075b57600080fd5b50610764611651565b60405161077191906130d5565b60405180910390f35b34801561078657600080fd5b506107a1600480360381019061079c919061326a565b611657565b6040516107ae91906130d5565b60405180910390f35b3480156107c357600080fd5b506107cc6116de565b6040516107d991906130d5565b60405180910390f35b3480156107ee57600080fd5b506107f76116e4565b6040516108049190613152565b60405180910390f35b34801561081957600080fd5b50610834600480360381019061082f91906131a4565b61170a565b005b34801561084257600080fd5b5061084b611801565b60405161085891906130d5565b60405180910390f35b610869611807565b73ffffffffffffffffffffffffffffffffffffffff16610887610f41565b73ffffffffffffffffffffffffffffffffffffffff16146108dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d4906132f6565b60405180910390fd5b81601081905550806011819055506011546010546108fb9190613345565b600f81905550600f546014819055505050565b60606003805461091d906133a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610949906133a8565b80156109965780601f1061096b57610100808354040283529160200191610996565b820191906000526020600020905b81548152906001019060200180831161097957829003601f168201915b5050505050905090565b60006109b46109ad611807565b848461180f565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b60006109f98484846119d8565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a44611807565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ac4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abb9061344b565b60405180910390fd5b610ad885610ad0611807565b85840361180f565b60019150509392505050565b61dead81565b60006012905090565b6000610b95610b00611807565b848460016000610b0e611807565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b909190613345565b61180f565b6001905092915050565b7f0000000000000000000000007f543950795eb59d8f2eeb9eb31ff3f53de0882781565b6000601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c47611807565b73ffffffffffffffffffffffffffffffffffffffff16610c65610f41565b73ffffffffffffffffffffffffffffffffffffffff1614610cbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb2906132f6565b60405180910390fd5b81600d8190555080600e819055505050565b600f5481565b600b60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d36611807565b73ffffffffffffffffffffffffffffffffffffffff16610d54610f41565b73ffffffffffffffffffffffffffffffffffffffff1614610daa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da1906132f6565b60405180910390fd5b610db46000612434565b565b610dbe611807565b73ffffffffffffffffffffffffffffffffffffffff16610ddc610f41565b73ffffffffffffffffffffffffffffffffffffffff1614610e32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e29906132f6565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610e95611807565b73ffffffffffffffffffffffffffffffffffffffff16610eb3610f41565b73ffffffffffffffffffffffffffffffffffffffff1614610f09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f00906132f6565b60405180910390fd5b6001600b60006101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610f7a906133a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa6906133a8565b8015610ff35780601f10610fc857610100808354040283529160200191610ff3565b820191906000526020600020905b815481529060010190602001808311610fd657829003601f168201915b5050505050905090565b611005611807565b73ffffffffffffffffffffffffffffffffffffffff16611023610f41565b73ffffffffffffffffffffffffffffffffffffffff1614611079576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611070906132f6565b60405180910390fd5b670de0b6b3a76400006103e8600561108f6109e2565b611099919061346b565b6110a391906134f4565b6110ad91906134f4565b8210156110ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e690613597565b60405180910390fd5b670de0b6b3a76400006103e860056111056109e2565b61110f919061346b565b61111991906134f4565b61112391906134f4565b811015611165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115c90613629565b60405180910390fd5b670de0b6b3a764000081611179919061346b565b600a81905550670de0b6b3a764000082611193919061346b565b6008819055505050565b6111a5611807565b73ffffffffffffffffffffffffffffffffffffffff166111c3610f41565b73ffffffffffffffffffffffffffffffffffffffff1614611219576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611210906132f6565b60405180910390fd5b7f0000000000000000000000007f543950795eb59d8f2eeb9eb31ff3f53de0882773ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129e906136bb565b60405180910390fd5b6112b182826124fa565b5050565b600080600160006112c4611807565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611381576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113789061374d565b60405180910390fd5b61139561138c611807565b8585840361180f565b600191505092915050565b60006113b46113ad611807565b84846119d8565b6001905092915050565b600b60009054906101000a900460ff1681565b6113d9611807565b73ffffffffffffffffffffffffffffffffffffffff166113f7610f41565b73ffffffffffffffffffffffffffffffffffffffff161461144d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611444906132f6565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516114ea9190613031565b60405180910390a25050565b60085481565b6000611506611807565b73ffffffffffffffffffffffffffffffffffffffff16611524610f41565b73ffffffffffffffffffffffffffffffffffffffff161461157a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611571906132f6565b60405180910390fd5b620186a060016115886109e2565b611592919061346b565b61159c91906134f4565b8210156115de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d5906137df565b60405180910390fd5b6103e860056115eb6109e2565b6115f5919061346b565b6115ff91906134f4565b821115611641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163890613871565b60405180910390fd5b8160098190555060019050919050565b600c5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611712611807565b73ffffffffffffffffffffffffffffffffffffffff16611730610f41565b73ffffffffffffffffffffffffffffffffffffffff1614611786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177d906132f6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036117f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ec90613903565b60405180910390fd5b6117fe81612434565b50565b600a5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361187e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187590613995565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e490613a27565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119cb91906130d5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3e90613ab9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ab6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aad90613b4b565b60405180910390fd5b60008103611acf57611aca8383600061259b565b61242f565b611ad7610f41565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b455750611b15610f41565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611b7e5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bb8575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bd15750600560149054906101000a900460ff16155b15611fb457600b60009054906101000a900460ff16611ccb57601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611c8b5750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc190613bb7565b60405180910390fd5b5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611d6e5750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e1557600854811115611db8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611daf90613c49565b60405180910390fd5b600a54611dc483610ce6565b82611dcf9190613345565b1115611e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0790613cb5565b60405180910390fd5b611fb3565b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611eb85750601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f0757600854811115611f02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef990613d47565b60405180910390fd5b611fb2565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611fb157600a54611f6483610ce6565b82611f6f9190613345565b1115611fb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa790613cb5565b60405180910390fd5b5b5b5b5b6000611fbf30610ce6565b905060006009548210159050808015611fe45750600b60019054906101000a900460ff165b8015611ffd5750600560149054906101000a900460ff16155b80156120535750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120a95750601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120ff5750601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612143576001600560146101000a81548160ff02191690831515021790555061212761281a565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121f95750601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561220357600090505b6000811561241657601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561226657506000600f54115b15612300576122936064612285600f5488612ae690919063ffffffff16565b612afc90919063ffffffff16565b9050600f54601154826122a6919061346b565b6122b091906134f4565b601360008282546122c19190613345565b92505081905550600f54601054826122d9919061346b565b6122e391906134f4565b601260008282546122f49190613345565b925050819055506123f2565b601760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561235b57506000600c54115b156123f157612388606461237a600c5488612ae690919063ffffffff16565b612afc90919063ffffffff16565b9050600c54600e548261239b919061346b565b6123a591906134f4565b601360008282546123b69190613345565b92505081905550600c54600d54826123ce919061346b565b6123d891906134f4565b601260008282546123e99190613345565b925050819055505b5b60008111156124075761240687308361259b565b5b80856124139190613d67565b94505b61242187878761259b565b601454600f81905550505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361260a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260190613ab9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612679576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267090613b4b565b60405180910390fd5b612684838383612b12565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561270a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270190613e0d565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461279d9190613345565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161280191906130d5565b60405180910390a3612814848484612b17565b50505050565b600061282530610ce6565b905060006012546013546128399190613345565b905060008083148061284b5750600082145b1561285857505050612ae4565b6014600954612867919061346b565b83111561288057601460095461287d919061346b565b92505b600060028360135486612893919061346b565b61289d91906134f4565b6128a791906134f4565b905060006128be8286612b1c90919063ffffffff16565b905060004790506128ce82612b32565b60006128e38247612b1c90919063ffffffff16565b9050600061290e8761290060125485612ae690919063ffffffff16565b612afc90919063ffffffff16565b90506000818361291e9190613d67565b9050600060138190555060006012819055506000861180156129405750600081115b1561298d5761294f8682612d6f565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561858260135460405161298493929190613e2d565b60405180910390a15b600047905060006129a8600583612afc90919063ffffffff16565b9050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516129f090613e95565b60006040518083038185875af1925050503d8060008114612a2d576040519150601f19603f3d011682016040523d82523d6000602084013e612a32565b606091505b505080995050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612a848284612b1c90919063ffffffff16565b604051612a9090613e95565b60006040518083038185875af1925050503d8060008114612acd576040519150601f19603f3d011682016040523d82523d6000602084013e612ad2565b606091505b50508099505050505050505050505050505b565b60008183612af4919061346b565b905092915050565b60008183612b0a91906134f4565b905092915050565b505050565b505050565b60008183612b2a9190613d67565b905092915050565b6000600267ffffffffffffffff811115612b4f57612b4e613eaa565b5b604051908082528060200260200182016040528015612b7d5781602001602082028036833780820191505090505b5090503081600081518110612b9557612b94613ed9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c5e9190613f1d565b81600181518110612c7257612c71613ed9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612cd7307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461180f565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612d39959493929190614043565b600060405180830381600087803b158015612d5357600080fd5b505af1158015612d67573d6000803e3d6000fd5b505050505050565b612d9a307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461180f565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612e019695949392919061409d565b60606040518083038185885af1158015612e1f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612e449190614113565b5050505050565b600080fd5b6000819050919050565b612e6381612e50565b8114612e6e57600080fd5b50565b600081359050612e8081612e5a565b92915050565b60008060408385031215612e9d57612e9c612e4b565b5b6000612eab85828601612e71565b9250506020612ebc85828601612e71565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f00578082015181840152602081019050612ee5565b60008484015250505050565b6000601f19601f8301169050919050565b6000612f2882612ec6565b612f328185612ed1565b9350612f42818560208601612ee2565b612f4b81612f0c565b840191505092915050565b60006020820190508181036000830152612f708184612f1d565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612fa382612f78565b9050919050565b612fb381612f98565b8114612fbe57600080fd5b50565b600081359050612fd081612faa565b92915050565b60008060408385031215612fed57612fec612e4b565b5b6000612ffb85828601612fc1565b925050602061300c85828601612e71565b9150509250929050565b60008115159050919050565b61302b81613016565b82525050565b60006020820190506130466000830184613022565b92915050565b6000819050919050565b600061307161306c61306784612f78565b61304c565b612f78565b9050919050565b600061308382613056565b9050919050565b600061309582613078565b9050919050565b6130a58161308a565b82525050565b60006020820190506130c0600083018461309c565b92915050565b6130cf81612e50565b82525050565b60006020820190506130ea60008301846130c6565b92915050565b60008060006060848603121561310957613108612e4b565b5b600061311786828701612fc1565b935050602061312886828701612fc1565b925050604061313986828701612e71565b9150509250925092565b61314c81612f98565b82525050565b60006020820190506131676000830184613143565b92915050565b600060ff82169050919050565b6131838161316d565b82525050565b600060208201905061319e600083018461317a565b92915050565b6000602082840312156131ba576131b9612e4b565b5b60006131c884828501612fc1565b91505092915050565b6131da81613016565b81146131e557600080fd5b50565b6000813590506131f7816131d1565b92915050565b6000806040838503121561321457613213612e4b565b5b600061322285828601612fc1565b9250506020613233858286016131e8565b9150509250929050565b60006020828403121561325357613252612e4b565b5b600061326184828501612e71565b91505092915050565b6000806040838503121561328157613280612e4b565b5b600061328f85828601612fc1565b92505060206132a085828601612fc1565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006132e0602083612ed1565b91506132eb826132aa565b602082019050919050565b6000602082019050818103600083015261330f816132d3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061335082612e50565b915061335b83612e50565b925082820190508082111561337357613372613316565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806133c057607f821691505b6020821081036133d3576133d2613379565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613435602883612ed1565b9150613440826133d9565b604082019050919050565b6000602082019050818103600083015261346481613428565b9050919050565b600061347682612e50565b915061348183612e50565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156134ba576134b9613316565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006134ff82612e50565b915061350a83612e50565b92508261351a576135196134c5565b5b828204905092915050565b7f43616e6e6f7420736574206d617854786e206c6f776572207468616e20302e3560008201527f2500000000000000000000000000000000000000000000000000000000000000602082015250565b6000613581602183612ed1565b915061358c82613525565b604082019050919050565b600060208201905081810360008301526135b081613574565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613613602483612ed1565b915061361e826135b7565b604082019050919050565b6000602082019050818103600083015261364281613606565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006136a5603983612ed1565b91506136b082613649565b604082019050919050565b600060208201905081810360008301526136d481613698565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613737602583612ed1565b9150613742826136db565b604082019050919050565b600060208201905081810360008301526137668161372a565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006137c9603583612ed1565b91506137d48261376d565b604082019050919050565b600060208201905081810360008301526137f8816137bc565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b600061385b603483612ed1565b9150613866826137ff565b604082019050919050565b6000602082019050818103600083015261388a8161384e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006138ed602683612ed1565b91506138f882613891565b604082019050919050565b6000602082019050818103600083015261391c816138e0565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061397f602483612ed1565b915061398a82613923565b604082019050919050565b600060208201905081810360008301526139ae81613972565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a11602283612ed1565b9150613a1c826139b5565b604082019050919050565b60006020820190508181036000830152613a4081613a04565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613aa3602583612ed1565b9150613aae82613a47565b604082019050919050565b60006020820190508181036000830152613ad281613a96565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613b35602383612ed1565b9150613b4082613ad9565b604082019050919050565b60006020820190508181036000830152613b6481613b28565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613ba1601683612ed1565b9150613bac82613b6b565b602082019050919050565b60006020820190508181036000830152613bd081613b94565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000613c33603583612ed1565b9150613c3e82613bd7565b604082019050919050565b60006020820190508181036000830152613c6281613c26565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613c9f601383612ed1565b9150613caa82613c69565b602082019050919050565b60006020820190508181036000830152613cce81613c92565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613d31603683612ed1565b9150613d3c82613cd5565b604082019050919050565b60006020820190508181036000830152613d6081613d24565b9050919050565b6000613d7282612e50565b9150613d7d83612e50565b9250828203905081811115613d9557613d94613316565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613df7602683612ed1565b9150613e0282613d9b565b604082019050919050565b60006020820190508181036000830152613e2681613dea565b9050919050565b6000606082019050613e4260008301866130c6565b613e4f60208301856130c6565b613e5c60408301846130c6565b949350505050565b600081905092915050565b50565b6000613e7f600083613e64565b9150613e8a82613e6f565b600082019050919050565b6000613ea082613e72565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613f1781612faa565b92915050565b600060208284031215613f3357613f32612e4b565b5b6000613f4184828501613f08565b91505092915050565b6000819050919050565b6000613f6f613f6a613f6584613f4a565b61304c565b612e50565b9050919050565b613f7f81613f54565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613fba81612f98565b82525050565b6000613fcc8383613fb1565b60208301905092915050565b6000602082019050919050565b6000613ff082613f85565b613ffa8185613f90565b935061400583613fa1565b8060005b8381101561403657815161401d8882613fc0565b975061402883613fd8565b925050600181019050614009565b5085935050505092915050565b600060a08201905061405860008301886130c6565b6140656020830187613f76565b81810360408301526140778186613fe5565b90506140866060830185613143565b61409360808301846130c6565b9695505050505050565b600060c0820190506140b26000830189613143565b6140bf60208301886130c6565b6140cc6040830187613f76565b6140d96060830186613f76565b6140e66080830185613143565b6140f360a08301846130c6565b979650505050505050565b60008151905061410d81612e5a565b92915050565b60008060006060848603121561412c5761412b612e4b565b5b600061413a868287016140fe565b935050602061414b868287016140fe565b925050604061415c868287016140fe565b915050925092509256fea2646970667358221220f2b18ab74af2fe44e82622b5c002d9958a40ee7b71e4b5fdd225564dbdf71a9d64736f6c63430008100033

Deployed Bytecode Sourcemap

14732:12368:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19737:317;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3268:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4182:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14816:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3589:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4359:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14919:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3488:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4859:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14874:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20760:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15011:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19514:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15395:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15243:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3705:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1393:112;;;;;;;;;;;;;:::i;:::-;;19339:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18202:112;;;;;;;;;;;;;:::i;:::-;;1170:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3376:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18827:504;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20252:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5082:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3840:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15203:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20062:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15088:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18322:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15283:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4023:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15130:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15048:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1513:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15170:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19737:317;1316:12;:10;:12::i;:::-;1305:23;;:7;:5;:7::i;:::-;:23;;;1297:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19881:13:::1;19862:16;:32;;;;19924:13;19905:16;:32;;;;19983:16;;19964;;:35;;;;:::i;:::-;19948:13;:51;;;;20024:13;;20010:11;:27;;;;19737:317:::0;;:::o;3268:100::-;3322:13;3355:5;3348:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3268:100;:::o;4182:169::-;4265:4;4282:39;4291:12;:10;:12::i;:::-;4305:7;4314:6;4282:8;:39::i;:::-;4339:4;4332:11;;4182:169;;;;:::o;14816:51::-;;;:::o;3589:108::-;3650:7;3677:12;;3670:19;;3589:108;:::o;4359:492::-;4499:4;4516:36;4526:6;4534:9;4545:6;4516:9;:36::i;:::-;4565:24;4592:11;:19;4604:6;4592:19;;;;;;;;;;;;;;;:33;4612:12;:10;:12::i;:::-;4592:33;;;;;;;;;;;;;;;;4565:60;;4664:6;4644:16;:26;;4636:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4751:57;4760:6;4768:12;:10;:12::i;:::-;4801:6;4782:16;:25;4751:8;:57::i;:::-;4839:4;4832:11;;;4359:492;;;;;:::o;14919:53::-;14965:6;14919:53;:::o;3488:93::-;3546:5;3571:2;3564:9;;3488:93;:::o;4859:215::-;4947:4;4964:80;4973:12;:10;:12::i;:::-;4987:7;5033:10;4996:11;:25;5008:12;:10;:12::i;:::-;4996:25;;;;;;;;;;;;;;;:34;5022:7;4996:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4964:8;:80::i;:::-;5062:4;5055:11;;4859:215;;;;:::o;14874:38::-;;;:::o;20760:126::-;20826:4;20850:19;:28;20870:7;20850:28;;;;;;;;;;;;;;;;;;;;;;;;;20843:35;;20760:126;;;:::o;15011:30::-;;;;;;;;;;;;;:::o;19514:215::-;1316:12;:10;:12::i;:::-;1305:23;;:7;:5;:7::i;:::-;:23;;;1297:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19656:13:::1;19638:15;:31;;;;19698:13;19680:15;:31;;;;19514:215:::0;;:::o;15395:28::-;;;;:::o;15243:31::-;;;;;;;;;;;;;:::o;3705:127::-;3779:7;3806:9;:18;3816:7;3806:18;;;;;;;;;;;;;;;;3799:25;;3705:127;;;:::o;1393:112::-;1316:12;:10;:12::i;:::-;1305:23;;:7;:5;:7::i;:::-;:23;;;1297:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1467:30:::1;1494:1;1467:18;:30::i;:::-;1393:112::o:0;19339:167::-;1316:12;:10;:12::i;:::-;1305:23;;:7;:5;:7::i;:::-;:23;;;1297:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19494:4:::1;19452:31;:39;19484:6;19452:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;19339:167:::0;;:::o;18202:112::-;1316:12;:10;:12::i;:::-;1305:23;;:7;:5;:7::i;:::-;:23;;;1297:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18273:4:::1;18257:13;;:20;;;;;;;;;;;;;;;;;;18302:4;18288:11;;:18;;;;;;;;;;;;;;;;;;18202:112::o:0;1170:87::-;1216:7;1243:6;;;;;;;;;;;1236:13;;1170:87;:::o;3376:104::-;3432:13;3465:7;3458:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3376:104;:::o;18827:504::-;1316:12;:10;:12::i;:::-;1305:23;;:7;:5;:7::i;:::-;:23;;;1297:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19004:4:::1;18996;18991:1;18975:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18974:26;;;;:::i;:::-;18973:35;;;;:::i;:::-;18960:9;:48;;18938:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;19152:4;19144;19139:1;19123:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19122:26;;;;:::i;:::-;19121:35;;;;:::i;:::-;19102:15;:54;;19080:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;19262:6;19243:15;:26;;;;:::i;:::-;19231:9;:38;;;;19316:6;19303:9;:20;;;;:::i;:::-;19280;:43;;;;18827:504:::0;;:::o;20252:304::-;1316:12;:10;:12::i;:::-;1305:23;;:7;:5;:7::i;:::-;:23;;;1297:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20396:13:::1;20388:21;;:4;:21;;::::0;20366:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20507:41;20536:4;20542:5;20507:28;:41::i;:::-;20252:304:::0;;:::o;5082:413::-;5175:4;5192:24;5219:11;:25;5231:12;:10;:12::i;:::-;5219:25;;;;;;;;;;;;;;;:34;5245:7;5219:34;;;;;;;;;;;;;;;;5192:61;;5292:15;5272:16;:35;;5264:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;5385:67;5394:12;:10;:12::i;:::-;5408:7;5436:15;5417:16;:34;5385:8;:67::i;:::-;5483:4;5476:11;;;5082:413;;;;:::o;3840:175::-;3926:4;3943:42;3953:12;:10;:12::i;:::-;3967:9;3978:6;3943:9;:42::i;:::-;4003:4;3996:11;;3840:175;;;;:::o;15203:33::-;;;;;;;;;;;;;:::o;20062:182::-;1316:12;:10;:12::i;:::-;1305:23;;:7;:5;:7::i;:::-;:23;;;1297:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20178:8:::1;20147:19;:28;20167:7;20147:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20218:7;20202:34;;;20227:8;20202:34;;;;;;:::i;:::-;;;;;;;;20062:182:::0;;:::o;15088:35::-;;;;:::o;18322:497::-;18430:4;1316:12;:10;:12::i;:::-;1305:23;;:7;:5;:7::i;:::-;:23;;;1297:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18509:6:::1;18504:1;18488:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18487:28;;;;:::i;:::-;18474:9;:41;;18452:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;18664:4;18659:1;18643:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18642:26;;;;:::i;:::-;18629:9;:39;;18607:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;18780:9;18759:18;:30;;;;18807:4;18800:11;;18322:497:::0;;;:::o;15283:27::-;;;;:::o;4023:151::-;4112:7;4139:11;:18;4151:5;4139:18;;;;;;;;;;;;;;;:27;4158:7;4139:27;;;;;;;;;;;;;;;;4132:34;;4023:151;;;;:::o;15130:33::-;;;;:::o;15048:31::-;;;;;;;;;;;;;:::o;1513:201::-;1316:12;:10;:12::i;:::-;1305:23;;:7;:5;:7::i;:::-;:23;;;1297:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1622:1:::1;1602:22;;:8;:22;;::::0;1594:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1678:28;1697:8;1678:18;:28::i;:::-;1513:201:::0;:::o;15170:24::-;;;;:::o;716:98::-;769:7;796:10;789:17;;716:98;:::o;6651:380::-;6804:1;6787:19;;:5;:19;;;6779:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6885:1;6866:21;;:7;:21;;;6858:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6969:6;6939:11;:18;6951:5;6939:18;;;;;;;;;;;;;;;:27;6958:7;6939:27;;;;;;;;;;;;;;;:36;;;;7007:7;6991:32;;7000:5;6991:32;;;7016:6;6991:32;;;;;;:::i;:::-;;;;;;;;6651:380;;;:::o;20894:3667::-;21042:1;21026:18;;:4;:18;;;21018:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21119:1;21105:16;;:2;:16;;;21097:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21188:1;21178:6;:11;21174:93;;21206:28;21222:4;21228:2;21232:1;21206:15;:28::i;:::-;21249:7;;21174:93;21317:7;:5;:7::i;:::-;21309:15;;:4;:15;;;;:49;;;;;21351:7;:5;:7::i;:::-;21345:13;;:2;:13;;;;21309:49;:86;;;;;21393:1;21379:16;;:2;:16;;;;21309:86;:128;;;;;21430:6;21416:21;;:2;:21;;;;21309:128;:158;;;;;21459:8;;;;;;;;;;;21458:9;21309:158;21287:1684;;;21507:13;;;;;;;;;;;21502:223;;21579:19;:25;21599:4;21579:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;21608:19;:23;21628:2;21608:23;;;;;;;;;;;;;;;;;;;;;;;;;21579:52;21545:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;21502:223;21799:25;:31;21825:4;21799:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;21856:31;:35;21888:2;21856:35;;;;;;;;;;;;;;;;;;;;;;;;;21855:36;21799:92;21773:1183;;;21978:20;;21968:6;:30;;21934:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;22186:9;;22169:13;22179:2;22169:9;:13::i;:::-;22160:6;:22;;;;:::i;:::-;:35;;22126:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;21773:1183;;;22364:25;:29;22390:2;22364:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;22419:31;:37;22451:4;22419:37;;;;;;;;;;;;;;;;;;;;;;;;;22418:38;22364:92;22338:618;;;22543:20;;22533:6;:30;;22499:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;22338:618;;;22736:31;:35;22768:2;22736:35;;;;;;;;;;;;;;;;;;;;;;;;;22731:225;;22856:9;;22839:13;22849:2;22839:9;:13::i;:::-;22830:6;:22;;;;:::i;:::-;:35;;22796:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;22731:225;22338:618;21773:1183;21287:1684;22983:28;23014:24;23032:4;23014:9;:24::i;:::-;22983:55;;23051:12;23090:18;;23066:20;:42;;23051:57;;23139:7;:35;;;;;23163:11;;;;;;;;;;;23139:35;:61;;;;;23192:8;;;;;;;;;;;23191:9;23139:61;:110;;;;;23218:25;:31;23244:4;23218:31;;;;;;;;;;;;;;;;;;;;;;;;;23217:32;23139:110;:153;;;;;23267:19;:25;23287:4;23267:25;;;;;;;;;;;;;;;;;;;;;;;;;23266:26;23139:153;:194;;;;;23310:19;:23;23330:2;23310:23;;;;;;;;;;;;;;;;;;;;;;;;;23309:24;23139:194;23121:326;;;23371:4;23360:8;;:15;;;;;;;;;;;;;;;;;;23392:10;:8;:10::i;:::-;23430:5;23419:8;;:16;;;;;;;;;;;;;;;;;;23121:326;23459:12;23475:8;;;;;;;;;;;23474:9;23459:24;;23500:19;:25;23520:4;23500:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;23529:19;:23;23549:2;23529:23;;;;;;;;;;;;;;;;;;;;;;;;;23500:52;23496:100;;;23579:5;23569:15;;23496:100;23608:12;23641:7;23637:831;;;23693:25;:29;23719:2;23693:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;23742:1;23726:13;;:17;23693:50;23689:630;;;23771:34;23801:3;23771:25;23782:13;;23771:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;23764:41;;23874:13;;23854:16;;23847:4;:23;;;;:::i;:::-;23846:41;;;;:::i;:::-;23824:18;;:63;;;;;;;:::i;:::-;;;;;;;;23956:13;;23936:16;;23929:4;:23;;;;:::i;:::-;23928:41;;;;:::i;:::-;23906:18;;:63;;;;;;;:::i;:::-;;;;;;;;23689:630;;;24031:25;:31;24057:4;24031:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;24081:1;24066:12;;:16;24031:51;24027:292;;;24110:33;24139:3;24110:24;24121:12;;24110:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;24103:40;;24211:12;;24192:15;;24185:4;:22;;;;:::i;:::-;24184:39;;;;:::i;:::-;24162:18;;:61;;;;;;;:::i;:::-;;;;;;;;24291:12;;24272:15;;24265:4;:22;;;;:::i;:::-;24264:39;;;;:::i;:::-;24242:18;;:61;;;;;;;:::i;:::-;;;;;;;;24027:292;23689:630;24346:1;24339:4;:8;24335:91;;;24368:42;24384:4;24398;24405;24368:15;:42::i;:::-;24335:91;24452:4;24442:14;;;;;:::i;:::-;;;23637:831;24480:33;24496:4;24502:2;24506:6;24480:15;:33::i;:::-;24540:11;;24524:13;:27;;;;21007:3554;;;;20894:3667;;;;:::o;1722:191::-;1796:16;1815:6;;;;;;;;;;;1796:25;;1841:8;1832:6;;:17;;;;;;;;;;;;;;;;;;1896:8;1865:40;;1886:8;1865:40;;;;;;;;;;;;1785:128;1722:191;:::o;20564:188::-;20681:5;20647:25;:31;20673:4;20647:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20738:5;20704:40;;20732:4;20704:40;;;;;;;;;;;;20564:188;;:::o;5503:733::-;5661:1;5643:20;;:6;:20;;;5635:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5745:1;5724:23;;:9;:23;;;5716:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5800:47;5821:6;5829:9;5840:6;5800:20;:47::i;:::-;5860:21;5884:9;:17;5894:6;5884:17;;;;;;;;;;;;;;;;5860:41;;5937:6;5920:13;:23;;5912:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;6058:6;6042:13;:22;6022:9;:17;6032:6;6022:17;;;;;;;;;;;;;;;:42;;;;6110:6;6086:9;:20;6096:9;6086:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;6151:9;6134:35;;6143:6;6134:35;;;6162:6;6134:35;;;;;;:::i;:::-;;;;;;;;6182:46;6202:6;6210:9;6221:6;6182:19;:46::i;:::-;5624:612;5503:733;;;:::o;25456:1641::-;25495:23;25521:24;25539:4;25521:9;:24::i;:::-;25495:50;;25556:25;25618:18;;25584;;:52;;;;:::i;:::-;25556:80;;25647:12;25695:1;25676:15;:20;:46;;;;25721:1;25700:17;:22;25676:46;25672:85;;;25739:7;;;;;25672:85;25812:2;25791:18;;:23;;;;:::i;:::-;25773:15;:41;25769:115;;;25870:2;25849:18;;:23;;;;:::i;:::-;25831:41;;25769:115;25896:23;26009:1;25976:17;25941:18;;25923:15;:36;;;;:::i;:::-;25922:71;;;;:::i;:::-;:88;;;;:::i;:::-;25896:114;;26021:26;26050:36;26070:15;26050;:19;;:36;;;;:::i;:::-;26021:65;;26099:25;26127:21;26099:49;;26161:36;26178:18;26161:16;:36::i;:::-;26210:18;26231:44;26257:17;26231:21;:25;;:44;;;;:::i;:::-;26210:65;;26288:23;26314:81;26367:17;26314:34;26329:18;;26314:10;:14;;:34;;;;:::i;:::-;:38;;:81;;;;:::i;:::-;26288:107;;26408:23;26447:15;26434:10;:28;;;;:::i;:::-;26408:54;;26496:1;26475:18;:22;;;;26529:1;26508:18;:22;;;;26565:1;26547:15;:19;:42;;;;;26588:1;26570:15;:19;26547:42;26543:278;;;26606:46;26619:15;26636;26606:12;:46::i;:::-;26672:137;26705:18;26742:15;26776:18;;26672:137;;;;;;;;:::i;:::-;;;;;;;;26543:278;26833:24;26860:21;26833:48;;26892:8;26903:23;26924:1;26903:16;:20;;:23;;;;:::i;:::-;26892:34;;26959:15;;;;;;;;;;;26951:29;;26988:3;26951:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26937:59;;;;;27029:16;;;;;;;;;;;27021:30;;27059:25;27080:3;27059:16;:20;;:25;;;;:::i;:::-;27021:68;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27007:82;;;;;25484:1613;;;;;;;;;;;25456:1641;:::o;8657:98::-;8715:7;8746:1;8742;:5;;;;:::i;:::-;8735:12;;8657:98;;;;:::o;8763:::-;8821:7;8852:1;8848;:5;;;;:::i;:::-;8841:12;;8763:98;;;;:::o;7039:125::-;;;;:::o;7172:124::-;;;;:::o;8551:98::-;8609:7;8640:1;8636;:5;;;;:::i;:::-;8629:12;;8551:98;;;;:::o;24569:503::-;24637:21;24675:1;24661:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24637:40;;24706:4;24688;24693:1;24688:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;24732:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24722:4;24727:1;24722:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;24767:62;24784:4;24799:15;24817:11;24767:8;:62::i;:::-;24868:15;:66;;;24949:11;24975:1;24991:4;25018;25038:15;24868:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24624:448;24569:503;:::o;25080:368::-;25163:62;25180:4;25195:15;25213:11;25163:8;:62::i;:::-;25238:15;:31;;;25277:9;25310:4;25330:11;25356:1;25372;14965:6;25414:15;25238:202;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;25080:368;;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:99::-;1222:6;1256:5;1250:12;1240:22;;1170:99;;;:::o;1275:169::-;1359:11;1393:6;1388:3;1381:19;1433:4;1428:3;1424:14;1409:29;;1275:169;;;;:::o;1450:246::-;1531:1;1541:113;1555:6;1552:1;1549:13;1541:113;;;1640:1;1635:3;1631:11;1625:18;1621:1;1616:3;1612:11;1605:39;1577:2;1574:1;1570:10;1565:15;;1541:113;;;1688:1;1679:6;1674:3;1670:16;1663:27;1512:184;1450:246;;;:::o;1702:102::-;1743:6;1794:2;1790:7;1785:2;1778:5;1774:14;1770:28;1760:38;;1702:102;;;:::o;1810:377::-;1898:3;1926:39;1959:5;1926:39;:::i;:::-;1981:71;2045:6;2040:3;1981:71;:::i;:::-;1974:78;;2061:65;2119:6;2114:3;2107:4;2100:5;2096:16;2061:65;:::i;:::-;2151:29;2173:6;2151:29;:::i;:::-;2146:3;2142:39;2135:46;;1902:285;1810:377;;;;:::o;2193:313::-;2306:4;2344:2;2333:9;2329:18;2321:26;;2393:9;2387:4;2383:20;2379:1;2368:9;2364:17;2357:47;2421:78;2494:4;2485:6;2421:78;:::i;:::-;2413:86;;2193:313;;;;:::o;2512:126::-;2549:7;2589:42;2582:5;2578:54;2567:65;;2512:126;;;:::o;2644:96::-;2681:7;2710:24;2728:5;2710:24;:::i;:::-;2699:35;;2644:96;;;:::o;2746:122::-;2819:24;2837:5;2819:24;:::i;:::-;2812:5;2809:35;2799:63;;2858:1;2855;2848:12;2799:63;2746:122;:::o;2874:139::-;2920:5;2958:6;2945:20;2936:29;;2974:33;3001:5;2974:33;:::i;:::-;2874:139;;;;:::o;3019:474::-;3087:6;3095;3144:2;3132:9;3123:7;3119:23;3115:32;3112:119;;;3150:79;;:::i;:::-;3112:119;3270:1;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3241:117;3397:2;3423:53;3468:7;3459:6;3448:9;3444:22;3423:53;:::i;:::-;3413:63;;3368:118;3019:474;;;;;:::o;3499:90::-;3533:7;3576:5;3569:13;3562:21;3551:32;;3499:90;;;:::o;3595:109::-;3676:21;3691:5;3676:21;:::i;:::-;3671:3;3664:34;3595:109;;:::o;3710:210::-;3797:4;3835:2;3824:9;3820:18;3812:26;;3848:65;3910:1;3899:9;3895:17;3886:6;3848:65;:::i;:::-;3710:210;;;;:::o;3926:60::-;3954:3;3975:5;3968:12;;3926:60;;;:::o;3992:142::-;4042:9;4075:53;4093:34;4102:24;4120:5;4102:24;:::i;:::-;4093:34;:::i;:::-;4075:53;:::i;:::-;4062:66;;3992:142;;;:::o;4140:126::-;4190:9;4223:37;4254:5;4223:37;:::i;:::-;4210:50;;4140:126;;;:::o;4272:153::-;4349:9;4382:37;4413:5;4382:37;:::i;:::-;4369:50;;4272:153;;;:::o;4431:185::-;4545:64;4603:5;4545:64;:::i;:::-;4540:3;4533:77;4431:185;;:::o;4622:276::-;4742:4;4780:2;4769:9;4765:18;4757:26;;4793:98;4888:1;4877:9;4873:17;4864:6;4793:98;:::i;:::-;4622:276;;;;:::o;4904:118::-;4991:24;5009:5;4991:24;:::i;:::-;4986:3;4979:37;4904:118;;:::o;5028:222::-;5121:4;5159:2;5148:9;5144:18;5136:26;;5172:71;5240:1;5229:9;5225:17;5216:6;5172:71;:::i;:::-;5028:222;;;;:::o;5256:619::-;5333:6;5341;5349;5398:2;5386:9;5377:7;5373:23;5369:32;5366:119;;;5404:79;;:::i;:::-;5366:119;5524:1;5549:53;5594:7;5585:6;5574:9;5570:22;5549:53;:::i;:::-;5539:63;;5495:117;5651:2;5677:53;5722:7;5713:6;5702:9;5698:22;5677:53;:::i;:::-;5667:63;;5622:118;5779:2;5805:53;5850:7;5841:6;5830:9;5826:22;5805:53;:::i;:::-;5795:63;;5750:118;5256:619;;;;;:::o;5881:118::-;5968:24;5986:5;5968:24;:::i;:::-;5963:3;5956:37;5881:118;;:::o;6005:222::-;6098:4;6136:2;6125:9;6121:18;6113:26;;6149:71;6217:1;6206:9;6202:17;6193:6;6149:71;:::i;:::-;6005:222;;;;:::o;6233:86::-;6268:7;6308:4;6301:5;6297:16;6286:27;;6233:86;;;:::o;6325:112::-;6408:22;6424:5;6408:22;:::i;:::-;6403:3;6396:35;6325:112;;:::o;6443:214::-;6532:4;6570:2;6559:9;6555:18;6547:26;;6583:67;6647:1;6636:9;6632:17;6623:6;6583:67;:::i;:::-;6443:214;;;;:::o;6663:329::-;6722:6;6771:2;6759:9;6750:7;6746:23;6742:32;6739:119;;;6777:79;;:::i;:::-;6739:119;6897:1;6922:53;6967:7;6958:6;6947:9;6943:22;6922:53;:::i;:::-;6912:63;;6868:117;6663:329;;;;:::o;6998:116::-;7068:21;7083:5;7068:21;:::i;:::-;7061:5;7058:32;7048:60;;7104:1;7101;7094:12;7048:60;6998:116;:::o;7120:133::-;7163:5;7201:6;7188:20;7179:29;;7217:30;7241:5;7217:30;:::i;:::-;7120:133;;;;:::o;7259:468::-;7324:6;7332;7381:2;7369:9;7360:7;7356:23;7352:32;7349:119;;;7387:79;;:::i;:::-;7349:119;7507:1;7532:53;7577:7;7568:6;7557:9;7553:22;7532:53;:::i;:::-;7522:63;;7478:117;7634:2;7660:50;7702:7;7693:6;7682:9;7678:22;7660:50;:::i;:::-;7650:60;;7605:115;7259:468;;;;;:::o;7733:329::-;7792:6;7841:2;7829:9;7820:7;7816:23;7812:32;7809:119;;;7847:79;;:::i;:::-;7809:119;7967:1;7992:53;8037:7;8028:6;8017:9;8013:22;7992:53;:::i;:::-;7982:63;;7938:117;7733:329;;;;:::o;8068:474::-;8136:6;8144;8193:2;8181:9;8172:7;8168:23;8164:32;8161:119;;;8199:79;;:::i;:::-;8161:119;8319:1;8344:53;8389:7;8380:6;8369:9;8365:22;8344:53;:::i;:::-;8334:63;;8290:117;8446:2;8472:53;8517:7;8508:6;8497:9;8493:22;8472:53;:::i;:::-;8462:63;;8417:118;8068:474;;;;;:::o;8548:182::-;8688:34;8684:1;8676:6;8672:14;8665:58;8548:182;:::o;8736:366::-;8878:3;8899:67;8963:2;8958:3;8899:67;:::i;:::-;8892:74;;8975:93;9064:3;8975:93;:::i;:::-;9093:2;9088:3;9084:12;9077:19;;8736:366;;;:::o;9108:419::-;9274:4;9312:2;9301:9;9297:18;9289:26;;9361:9;9355:4;9351:20;9347:1;9336:9;9332:17;9325:47;9389:131;9515:4;9389:131;:::i;:::-;9381:139;;9108:419;;;:::o;9533:180::-;9581:77;9578:1;9571:88;9678:4;9675:1;9668:15;9702:4;9699:1;9692:15;9719:191;9759:3;9778:20;9796:1;9778:20;:::i;:::-;9773:25;;9812:20;9830:1;9812:20;:::i;:::-;9807:25;;9855:1;9852;9848:9;9841:16;;9876:3;9873:1;9870:10;9867:36;;;9883:18;;:::i;:::-;9867:36;9719:191;;;;:::o;9916:180::-;9964:77;9961:1;9954:88;10061:4;10058:1;10051:15;10085:4;10082:1;10075:15;10102:320;10146:6;10183:1;10177:4;10173:12;10163:22;;10230:1;10224:4;10220:12;10251:18;10241:81;;10307:4;10299:6;10295:17;10285:27;;10241:81;10369:2;10361:6;10358:14;10338:18;10335:38;10332:84;;10388:18;;:::i;:::-;10332:84;10153:269;10102:320;;;:::o;10428:227::-;10568:34;10564:1;10556:6;10552:14;10545:58;10637:10;10632:2;10624:6;10620:15;10613:35;10428:227;:::o;10661:366::-;10803:3;10824:67;10888:2;10883:3;10824:67;:::i;:::-;10817:74;;10900:93;10989:3;10900:93;:::i;:::-;11018:2;11013:3;11009:12;11002:19;;10661:366;;;:::o;11033:419::-;11199:4;11237:2;11226:9;11222:18;11214:26;;11286:9;11280:4;11276:20;11272:1;11261:9;11257:17;11250:47;11314:131;11440:4;11314:131;:::i;:::-;11306:139;;11033:419;;;:::o;11458:348::-;11498:7;11521:20;11539:1;11521:20;:::i;:::-;11516:25;;11555:20;11573:1;11555:20;:::i;:::-;11550:25;;11743:1;11675:66;11671:74;11668:1;11665:81;11660:1;11653:9;11646:17;11642:105;11639:131;;;11750:18;;:::i;:::-;11639:131;11798:1;11795;11791:9;11780:20;;11458:348;;;;:::o;11812:180::-;11860:77;11857:1;11850:88;11957:4;11954:1;11947:15;11981:4;11978:1;11971:15;11998:185;12038:1;12055:20;12073:1;12055:20;:::i;:::-;12050:25;;12089:20;12107:1;12089:20;:::i;:::-;12084:25;;12128:1;12118:35;;12133:18;;:::i;:::-;12118:35;12175:1;12172;12168:9;12163:14;;11998:185;;;;:::o;12189:220::-;12329:34;12325:1;12317:6;12313:14;12306:58;12398:3;12393:2;12385:6;12381:15;12374:28;12189:220;:::o;12415:366::-;12557:3;12578:67;12642:2;12637:3;12578:67;:::i;:::-;12571:74;;12654:93;12743:3;12654:93;:::i;:::-;12772:2;12767:3;12763:12;12756:19;;12415:366;;;:::o;12787:419::-;12953:4;12991:2;12980:9;12976:18;12968:26;;13040:9;13034:4;13030:20;13026:1;13015:9;13011:17;13004:47;13068:131;13194:4;13068:131;:::i;:::-;13060:139;;12787:419;;;:::o;13212:223::-;13352:34;13348:1;13340:6;13336:14;13329:58;13421:6;13416:2;13408:6;13404:15;13397:31;13212:223;:::o;13441:366::-;13583:3;13604:67;13668:2;13663:3;13604:67;:::i;:::-;13597:74;;13680:93;13769:3;13680:93;:::i;:::-;13798:2;13793:3;13789:12;13782:19;;13441:366;;;:::o;13813:419::-;13979:4;14017:2;14006:9;14002:18;13994:26;;14066:9;14060:4;14056:20;14052:1;14041:9;14037:17;14030:47;14094:131;14220:4;14094:131;:::i;:::-;14086:139;;13813:419;;;:::o;14238:244::-;14378:34;14374:1;14366:6;14362:14;14355:58;14447:27;14442:2;14434:6;14430:15;14423:52;14238:244;:::o;14488:366::-;14630:3;14651:67;14715:2;14710:3;14651:67;:::i;:::-;14644:74;;14727:93;14816:3;14727:93;:::i;:::-;14845:2;14840:3;14836:12;14829:19;;14488:366;;;:::o;14860:419::-;15026:4;15064:2;15053:9;15049:18;15041:26;;15113:9;15107:4;15103:20;15099:1;15088:9;15084:17;15077:47;15141:131;15267:4;15141:131;:::i;:::-;15133:139;;14860:419;;;:::o;15285:224::-;15425:34;15421:1;15413:6;15409:14;15402:58;15494:7;15489:2;15481:6;15477:15;15470:32;15285:224;:::o;15515:366::-;15657:3;15678:67;15742:2;15737:3;15678:67;:::i;:::-;15671:74;;15754:93;15843:3;15754:93;:::i;:::-;15872:2;15867:3;15863:12;15856:19;;15515:366;;;:::o;15887:419::-;16053:4;16091:2;16080:9;16076:18;16068:26;;16140:9;16134:4;16130:20;16126:1;16115:9;16111:17;16104:47;16168:131;16294:4;16168:131;:::i;:::-;16160:139;;15887:419;;;:::o;16312:240::-;16452:34;16448:1;16440:6;16436:14;16429:58;16521:23;16516:2;16508:6;16504:15;16497:48;16312:240;:::o;16558:366::-;16700:3;16721:67;16785:2;16780:3;16721:67;:::i;:::-;16714:74;;16797:93;16886:3;16797:93;:::i;:::-;16915:2;16910:3;16906:12;16899:19;;16558:366;;;:::o;16930:419::-;17096:4;17134:2;17123:9;17119:18;17111:26;;17183:9;17177:4;17173:20;17169:1;17158:9;17154:17;17147:47;17211:131;17337:4;17211:131;:::i;:::-;17203:139;;16930:419;;;:::o;17355:239::-;17495:34;17491:1;17483:6;17479:14;17472:58;17564:22;17559:2;17551:6;17547:15;17540:47;17355:239;:::o;17600:366::-;17742:3;17763:67;17827:2;17822:3;17763:67;:::i;:::-;17756:74;;17839:93;17928:3;17839:93;:::i;:::-;17957:2;17952:3;17948:12;17941:19;;17600:366;;;:::o;17972:419::-;18138:4;18176:2;18165:9;18161:18;18153:26;;18225:9;18219:4;18215:20;18211:1;18200:9;18196:17;18189:47;18253:131;18379:4;18253:131;:::i;:::-;18245:139;;17972:419;;;:::o;18397:225::-;18537:34;18533:1;18525:6;18521:14;18514:58;18606:8;18601:2;18593:6;18589:15;18582:33;18397:225;:::o;18628:366::-;18770:3;18791:67;18855:2;18850:3;18791:67;:::i;:::-;18784:74;;18867:93;18956:3;18867:93;:::i;:::-;18985:2;18980:3;18976:12;18969:19;;18628:366;;;:::o;19000:419::-;19166:4;19204:2;19193:9;19189:18;19181:26;;19253:9;19247:4;19243:20;19239:1;19228:9;19224:17;19217:47;19281:131;19407:4;19281:131;:::i;:::-;19273:139;;19000:419;;;:::o;19425:223::-;19565:34;19561:1;19553:6;19549:14;19542:58;19634:6;19629:2;19621:6;19617:15;19610:31;19425:223;:::o;19654:366::-;19796:3;19817:67;19881:2;19876:3;19817:67;:::i;:::-;19810:74;;19893:93;19982:3;19893:93;:::i;:::-;20011:2;20006:3;20002:12;19995:19;;19654:366;;;:::o;20026:419::-;20192:4;20230:2;20219:9;20215:18;20207:26;;20279:9;20273:4;20269:20;20265:1;20254:9;20250:17;20243:47;20307:131;20433:4;20307:131;:::i;:::-;20299:139;;20026:419;;;:::o;20451:221::-;20591:34;20587:1;20579:6;20575:14;20568:58;20660:4;20655:2;20647:6;20643:15;20636:29;20451:221;:::o;20678:366::-;20820:3;20841:67;20905:2;20900:3;20841:67;:::i;:::-;20834:74;;20917:93;21006:3;20917:93;:::i;:::-;21035:2;21030:3;21026:12;21019:19;;20678:366;;;:::o;21050:419::-;21216:4;21254:2;21243:9;21239:18;21231:26;;21303:9;21297:4;21293:20;21289:1;21278:9;21274:17;21267:47;21331:131;21457:4;21331:131;:::i;:::-;21323:139;;21050:419;;;:::o;21475:224::-;21615:34;21611:1;21603:6;21599:14;21592:58;21684:7;21679:2;21671:6;21667:15;21660:32;21475:224;:::o;21705:366::-;21847:3;21868:67;21932:2;21927:3;21868:67;:::i;:::-;21861:74;;21944:93;22033:3;21944:93;:::i;:::-;22062:2;22057:3;22053:12;22046:19;;21705:366;;;:::o;22077:419::-;22243:4;22281:2;22270:9;22266:18;22258:26;;22330:9;22324:4;22320:20;22316:1;22305:9;22301:17;22294:47;22358:131;22484:4;22358:131;:::i;:::-;22350:139;;22077:419;;;:::o;22502:222::-;22642:34;22638:1;22630:6;22626:14;22619:58;22711:5;22706:2;22698:6;22694:15;22687:30;22502:222;:::o;22730:366::-;22872:3;22893:67;22957:2;22952:3;22893:67;:::i;:::-;22886:74;;22969:93;23058:3;22969:93;:::i;:::-;23087:2;23082:3;23078:12;23071:19;;22730:366;;;:::o;23102:419::-;23268:4;23306:2;23295:9;23291:18;23283:26;;23355:9;23349:4;23345:20;23341:1;23330:9;23326:17;23319:47;23383:131;23509:4;23383:131;:::i;:::-;23375:139;;23102:419;;;:::o;23527:172::-;23667:24;23663:1;23655:6;23651:14;23644:48;23527:172;:::o;23705:366::-;23847:3;23868:67;23932:2;23927:3;23868:67;:::i;:::-;23861:74;;23944:93;24033:3;23944:93;:::i;:::-;24062:2;24057:3;24053:12;24046:19;;23705:366;;;:::o;24077:419::-;24243:4;24281:2;24270:9;24266:18;24258:26;;24330:9;24324:4;24320:20;24316:1;24305:9;24301:17;24294:47;24358:131;24484:4;24358:131;:::i;:::-;24350:139;;24077:419;;;:::o;24502:240::-;24642:34;24638:1;24630:6;24626:14;24619:58;24711:23;24706:2;24698:6;24694:15;24687:48;24502:240;:::o;24748:366::-;24890:3;24911:67;24975:2;24970:3;24911:67;:::i;:::-;24904:74;;24987:93;25076:3;24987:93;:::i;:::-;25105:2;25100:3;25096:12;25089:19;;24748:366;;;:::o;25120:419::-;25286:4;25324:2;25313:9;25309:18;25301:26;;25373:9;25367:4;25363:20;25359:1;25348:9;25344:17;25337:47;25401:131;25527:4;25401:131;:::i;:::-;25393:139;;25120:419;;;:::o;25545:169::-;25685:21;25681:1;25673:6;25669:14;25662:45;25545:169;:::o;25720:366::-;25862:3;25883:67;25947:2;25942:3;25883:67;:::i;:::-;25876:74;;25959:93;26048:3;25959:93;:::i;:::-;26077:2;26072:3;26068:12;26061:19;;25720:366;;;:::o;26092:419::-;26258:4;26296:2;26285:9;26281:18;26273:26;;26345:9;26339:4;26335:20;26331:1;26320:9;26316:17;26309:47;26373:131;26499:4;26373:131;:::i;:::-;26365:139;;26092:419;;;:::o;26517:241::-;26657:34;26653:1;26645:6;26641:14;26634:58;26726:24;26721:2;26713:6;26709:15;26702:49;26517:241;:::o;26764:366::-;26906:3;26927:67;26991:2;26986:3;26927:67;:::i;:::-;26920:74;;27003:93;27092:3;27003:93;:::i;:::-;27121:2;27116:3;27112:12;27105:19;;26764:366;;;:::o;27136:419::-;27302:4;27340:2;27329:9;27325:18;27317:26;;27389:9;27383:4;27379:20;27375:1;27364:9;27360:17;27353:47;27417:131;27543:4;27417:131;:::i;:::-;27409:139;;27136:419;;;:::o;27561:194::-;27601:4;27621:20;27639:1;27621:20;:::i;:::-;27616:25;;27655:20;27673:1;27655:20;:::i;:::-;27650:25;;27699:1;27696;27692:9;27684:17;;27723:1;27717:4;27714:11;27711:37;;;27728:18;;:::i;:::-;27711:37;27561:194;;;;:::o;27761:225::-;27901:34;27897:1;27889:6;27885:14;27878:58;27970:8;27965:2;27957:6;27953:15;27946:33;27761:225;:::o;27992:366::-;28134:3;28155:67;28219:2;28214:3;28155:67;:::i;:::-;28148:74;;28231:93;28320:3;28231:93;:::i;:::-;28349:2;28344:3;28340:12;28333:19;;27992:366;;;:::o;28364:419::-;28530:4;28568:2;28557:9;28553:18;28545:26;;28617:9;28611:4;28607:20;28603:1;28592:9;28588:17;28581:47;28645:131;28771:4;28645:131;:::i;:::-;28637:139;;28364:419;;;:::o;28789:442::-;28938:4;28976:2;28965:9;28961:18;28953:26;;28989:71;29057:1;29046:9;29042:17;29033:6;28989:71;:::i;:::-;29070:72;29138:2;29127:9;29123:18;29114:6;29070:72;:::i;:::-;29152;29220:2;29209:9;29205:18;29196:6;29152:72;:::i;:::-;28789:442;;;;;;:::o;29237:147::-;29338:11;29375:3;29360:18;;29237:147;;;;:::o;29390:114::-;;:::o;29510:398::-;29669:3;29690:83;29771:1;29766:3;29690:83;:::i;:::-;29683:90;;29782:93;29871:3;29782:93;:::i;:::-;29900:1;29895:3;29891:11;29884:18;;29510:398;;;:::o;29914:379::-;30098:3;30120:147;30263:3;30120:147;:::i;:::-;30113:154;;30284:3;30277:10;;29914:379;;;:::o;30299:180::-;30347:77;30344:1;30337:88;30444:4;30441:1;30434:15;30468:4;30465:1;30458:15;30485:180;30533:77;30530:1;30523:88;30630:4;30627:1;30620:15;30654:4;30651:1;30644:15;30671:143;30728:5;30759:6;30753:13;30744:22;;30775:33;30802:5;30775:33;:::i;:::-;30671:143;;;;:::o;30820:351::-;30890:6;30939:2;30927:9;30918:7;30914:23;30910:32;30907:119;;;30945:79;;:::i;:::-;30907:119;31065:1;31090:64;31146:7;31137:6;31126:9;31122:22;31090:64;:::i;:::-;31080:74;;31036:128;30820:351;;;;:::o;31177:85::-;31222:7;31251:5;31240:16;;31177:85;;;:::o;31268:158::-;31326:9;31359:61;31377:42;31386:32;31412:5;31386:32;:::i;:::-;31377:42;:::i;:::-;31359:61;:::i;:::-;31346:74;;31268:158;;;:::o;31432:147::-;31527:45;31566:5;31527:45;:::i;:::-;31522:3;31515:58;31432:147;;:::o;31585:114::-;31652:6;31686:5;31680:12;31670:22;;31585:114;;;:::o;31705:184::-;31804:11;31838:6;31833:3;31826:19;31878:4;31873:3;31869:14;31854:29;;31705:184;;;;:::o;31895:132::-;31962:4;31985:3;31977:11;;32015:4;32010:3;32006:14;31998:22;;31895:132;;;:::o;32033:108::-;32110:24;32128:5;32110:24;:::i;:::-;32105:3;32098:37;32033:108;;:::o;32147:179::-;32216:10;32237:46;32279:3;32271:6;32237:46;:::i;:::-;32315:4;32310:3;32306:14;32292:28;;32147:179;;;;:::o;32332:113::-;32402:4;32434;32429:3;32425:14;32417:22;;32332:113;;;:::o;32481:732::-;32600:3;32629:54;32677:5;32629:54;:::i;:::-;32699:86;32778:6;32773:3;32699:86;:::i;:::-;32692:93;;32809:56;32859:5;32809:56;:::i;:::-;32888:7;32919:1;32904:284;32929:6;32926:1;32923:13;32904:284;;;33005:6;32999:13;33032:63;33091:3;33076:13;33032:63;:::i;:::-;33025:70;;33118:60;33171:6;33118:60;:::i;:::-;33108:70;;32964:224;32951:1;32948;32944:9;32939:14;;32904:284;;;32908:14;33204:3;33197:10;;32605:608;;;32481:732;;;;:::o;33219:831::-;33482:4;33520:3;33509:9;33505:19;33497:27;;33534:71;33602:1;33591:9;33587:17;33578:6;33534:71;:::i;:::-;33615:80;33691:2;33680:9;33676:18;33667:6;33615:80;:::i;:::-;33742:9;33736:4;33732:20;33727:2;33716:9;33712:18;33705:48;33770:108;33873:4;33864:6;33770:108;:::i;:::-;33762:116;;33888:72;33956:2;33945:9;33941:18;33932:6;33888:72;:::i;:::-;33970:73;34038:3;34027:9;34023:19;34014:6;33970:73;:::i;:::-;33219:831;;;;;;;;:::o;34056:807::-;34305:4;34343:3;34332:9;34328:19;34320:27;;34357:71;34425:1;34414:9;34410:17;34401:6;34357:71;:::i;:::-;34438:72;34506:2;34495:9;34491:18;34482:6;34438:72;:::i;:::-;34520:80;34596:2;34585:9;34581:18;34572:6;34520:80;:::i;:::-;34610;34686:2;34675:9;34671:18;34662:6;34610:80;:::i;:::-;34700:73;34768:3;34757:9;34753:19;34744:6;34700:73;:::i;:::-;34783;34851:3;34840:9;34836:19;34827:6;34783:73;:::i;:::-;34056:807;;;;;;;;;:::o;34869:143::-;34926:5;34957:6;34951:13;34942:22;;34973:33;35000:5;34973:33;:::i;:::-;34869:143;;;;:::o;35018:663::-;35106:6;35114;35122;35171:2;35159:9;35150:7;35146:23;35142:32;35139:119;;;35177:79;;:::i;:::-;35139:119;35297:1;35322:64;35378:7;35369:6;35358:9;35354:22;35322:64;:::i;:::-;35312:74;;35268:128;35435:2;35461:64;35517:7;35508:6;35497:9;35493:22;35461:64;:::i;:::-;35451:74;;35406:129;35574:2;35600:64;35656:7;35647:6;35636:9;35632:22;35600:64;:::i;:::-;35590:74;;35545:129;35018:663;;;;;:::o

Swarm Source

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