ETH Price: $3,174.38 (+4.53%)

Token

BabyShiaInu (BABYSHIA)
 

Overview

Max Total Supply

1,000,000,000 BABYSHIA

Holders

483

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000048955845 BABYSHIA

Value
$0.00
0x941a8093c3d975326a3089f4df8228218bf63698
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:
BabyShiaInu

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

/*
   ___            _        _  _    ___    _         _              ___                   
  | _ )   __ _   | |__    | || |  / __|  | |_      (_)    __ _    |_ _|   _ _     _  _   
  | _ \  / _` |  | '_ \    \_, |  \__ \  | ' \     | |   / _` |    | |   | ' \   | +| |  
  |___/  \__,_|  |_.__/   _|__/   |___/  |_||_|   _|_|_  \__,_|   |___|  |_||_|   \_,_|  
_|"""""|_|"""""|_|"""""|_| """"|_|"""""|_|"""""|_|"""""|_|"""""|_|"""""|_|"""""|_|"""""| 
"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-' 

                                                                                
                                                       ###                      
                                                   ## @@@ #                     
                        ##   ##    (#############  @@ @@@ /                     
                        # @@ @  ################ *###@@@@(                      
                         #@& ###############&@@@@####/##(                       
                           ##@@@#############   #####(###                       
                          ####     #########  @#  ########                      
                        ######      ########  #   ###@@@@@@@                    
                       #######   .  #@@@@@@@@&. *@@@@###@@@@%                   
                      /@@@####@@@@@@@     @@@@@@@@@#####@@@@@                   
                       @@@%###@@@@@@&@@@     %@@@@@@@@@@@@@@                    
                         @@@@@@@@@@@@@@  #(# @@@@@@@@@@@@@@                     
                            @@@@@@@@@@@@@@@@@@@@@@@@@@@@@   &@@                 
                 @@@@  %##%%%%,  &@@@@@@@@@@@@@@@@@.   (((( @ @@@@@             
                @ @@ #%%%%%%% ((((( @,         /(((((((((  &@ @@@@@             
                   #%%%%%%%  ((((((@ (((((,@((((((( ((((( @ @@@@@@              
                %%#%#%%%#% ((((((( @(((((((@/((((((( /((((  @                   
               %%#%%%##%% *(((((((@@ (((((@@.(((((((((                          
               (%#%%##%#. ((((((((((((((((((((((((((((((                        
        %%%%%%# %%#%#%%%# /((((((( @&,        ((((((((((                        
                 %%#%%###  ((((( @ @@@@@@@@@@ /*((((((((.                       
                   %%##%%%#  ((.#@@@@@@@@@@@@@@@.(((((((                        
                      %%%%### (/(((*            (((((((                         
                             #   /((((((((/,..,/(((((((                         
                             ########.                (                         
                             ###########      #########                         
                            ###########(       ########                         
                            ###########        #########                        
                            @@@@@@@@@@@         ##@@@@@@@@%                     
                          @@ @@@ @@@@@@          @@@@  @@@ @                    
                              &  @@@              @@@@& *                       

Telegram: http://t.me/babyshiainu
Web: https://babyshiainu.com
Twitter: https://twitter.com/babyshiainu

*/

// SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.21;

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

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


abstract contract Ownable is Context {
    address private _owner;

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


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


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


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

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


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

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

interface IERC20 {

    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

interface IERC20Metadata is IERC20 {

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

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

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

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

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }


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

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

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

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

    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

library SafeMath {

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

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

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

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

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

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

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

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

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

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

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

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

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

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

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

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

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

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

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

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

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

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

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

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

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

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

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

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

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

    bool private swapping;

    address private marketingWallet;

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

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

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

    uint256 public buyTotalFees;
    uint256 private buyMarketingFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;

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

    mapping(address => bool) public automatedMarketMakerPairs;

    event 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(address _wallet1) ERC20("BabyShiaInu", "BABYSHIA") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

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

        uint256 totalSupply = 1_000_000_000 * 1e18;


        maxTransactionAmount = 1_000_000_000 * 1e18;
        maxWallet = 1_000_000_000 * 1e18;
        swapTokensAtAmount = maxTransactionAmount / 2000;

        marketingWallet = _wallet1;

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

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

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

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

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

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

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

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

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

      _isExcludedFromFees[_whitelist] = isWL;

    }

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

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

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

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

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

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

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

    function updateMarketingWallet(address newMarketingWallet)
        external
        onlyOwner
    {
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }

    function airdrop(address[] calldata addresses, uint256[] calldata amounts) external {
          require(addresses.length > 0 && amounts.length == addresses.length);
          address from = msg.sender;

          for (uint i = 0; i < addresses.length; i++) {

            _transfer(from, addresses[i], amounts[i] * (10**18));

          }
    }

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

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

        uint256 blockNum = block.number;

        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
              if
                ((launchedAt + deadBlocks) >= blockNum)
              {
                maxTransactionAmount =  20_000_000 * 1e18;
                maxWallet =  20_000_000 * 1e18;

                buyMarketingFee = 30;
                buyTotalFees = buyMarketingFee;

                sellMarketingFee = 30;
                sellTotalFees = sellMarketingFee;

              } else if(blockNum > (launchedAt + deadBlocks) && blockNum <= launchedAt + 8)
              {
                maxTransactionAmount =  20_000_000 * 1e18;
                maxWallet =  20_000_000 * 1e18;

                buyMarketingFee = 10;
                buyTotalFees = buyMarketingFee;

                sellMarketingFee = 10;
                sellTotalFees = sellMarketingFee;
              }
              else
              {
                maxTransactionAmount =  20_000_000 * 1e18;
                maxWallet =  20_000_000 * 1e18;

                buyMarketingFee = 2;
                buyTotalFees = buyMarketingFee;

                sellMarketingFee = 2;
                sellTotalFees = sellMarketingFee;
              }

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

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

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapBack();

            ++swapInBlock[blockNum];

            swapping = false;
        }

        bool takeFee = !swapping;

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

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

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

            amount -= fees;
        }

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

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

        if (contractBalance == 0) {
            return;
        }

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


        uint256 amountToSwapForETH = contractBalance;

        swapTokensForEth(amountToSwapForETH);

        (success, ) = address(marketingWallet).call{
            value: address(this).balance
        }("");
    }

    function getCurrentMiner() external view returns(address) {
        return block.coinbase;
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_wallet1","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadBlocks","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCurrentMiner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_whitelist","type":"address"},{"internalType":"bool","name":"isWL","type":"bool"}],"name":"whitelistContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526001600a5f6101000a81548160ff0219169083151502179055505f600a60016101000a81548160ff0219169083151502179055505f600a60026101000a81548160ff0219169083151502179055503480156200005e575f80fd5b506040516200580838038062005808833981810160405281019062000084919062000a1a565b6040518060400160405280600b81526020017f4261627953686961496e750000000000000000000000000000000000000000008152506040518060400160405280600881526020017f4241425953484941000000000000000000000000000000000000000000000000815250816003908162000101919062000cae565b50806004908162000113919062000cae565b505050620001366200012a6200048d60201b60201c565b6200049460201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001618160016200055760201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001df573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000205919062000a1a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000291919062000a1a565b6040518363ffffffff1660e01b8152600401620002b092919062000da3565b6020604051808303815f875af1158015620002cd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002f3919062000a1a565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200033b60a05160016200055760201b60201c565b6200035060a05160016200063e60201b60201c565b5f6b033b2e3c9fd0803ce800000090506b033b2e3c9fd0803ce80000006007819055506b033b2e3c9fd0803ce80000006009819055506107d060075462000398919062000e28565b6008819055508260065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000400620003f2620006dc60201b60201c565b60016200070460201b60201c565b620004133060016200070460201b60201c565b6200042861dead60016200070460201b60201c565b6200044a6200043c620006dc60201b60201c565b60016200055760201b60201c565b6200045d3060016200055760201b60201c565b6200047261dead60016200055760201b60201c565b6200048433826200083b60201b60201c565b50505062000fe8565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620005676200048d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200058d620006dc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620005e6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005dd9062000ebd565b60405180910390fd5b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620007146200048d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200073a620006dc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000793576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200078a9062000ebd565b60405180910390fd5b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200082f919062000ef9565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008ac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008a39062000f62565b60405180910390fd5b620008bf5f8383620009ab60201b60201c565b8060025f828254620008d2919062000f82565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825462000926919062000f82565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200098c919062000fcd565b60405180910390a3620009a75f8383620009b060201b60201c565b5050565b505050565b505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620009e482620009b9565b9050919050565b620009f681620009d8565b811462000a01575f80fd5b50565b5f8151905062000a1481620009eb565b92915050565b5f6020828403121562000a325762000a31620009b5565b5b5f62000a418482850162000a04565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000ac657607f821691505b60208210810362000adc5762000adb62000a81565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000b407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b03565b62000b4c868362000b03565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000b9662000b9062000b8a8462000b64565b62000b6d565b62000b64565b9050919050565b5f819050919050565b62000bb18362000b76565b62000bc962000bc08262000b9d565b84845462000b0f565b825550505050565b5f90565b62000bdf62000bd1565b62000bec81848462000ba6565b505050565b5b8181101562000c135762000c075f8262000bd5565b60018101905062000bf2565b5050565b601f82111562000c625762000c2c8162000ae2565b62000c378462000af4565b8101602085101562000c47578190505b62000c5f62000c568562000af4565b83018262000bf1565b50505b505050565b5f82821c905092915050565b5f62000c845f198460080262000c67565b1980831691505092915050565b5f62000c9e838362000c73565b9150826002028217905092915050565b62000cb98262000a4a565b67ffffffffffffffff81111562000cd55762000cd462000a54565b5b62000ce1825462000aae565b62000cee82828562000c17565b5f60209050601f83116001811462000d24575f841562000d0f578287015190505b62000d1b858262000c91565b86555062000d8a565b601f19841662000d348662000ae2565b5f5b8281101562000d5d5784890151825560018201915060208501945060208101905062000d36565b8683101562000d7d578489015162000d79601f89168262000c73565b8355505b6001600288020188555050505b505050505050565b62000d9d81620009d8565b82525050565b5f60408201905062000db85f83018562000d92565b62000dc7602083018462000d92565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000e348262000b64565b915062000e418362000b64565b92508262000e545762000e5362000dce565b5b828204905092915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62000ea560208362000e5f565b915062000eb28262000e6f565b602082019050919050565b5f6020820190508181035f83015262000ed68162000e97565b9050919050565b5f8115159050919050565b62000ef38162000edd565b82525050565b5f60208201905062000f0e5f83018462000ee8565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000f4a601f8362000e5f565b915062000f578262000f14565b602082019050919050565b5f6020820190508181035f83015262000f7b8162000f3c565b9050919050565b5f62000f8e8262000b64565b915062000f9b8362000b64565b925082820190508082111562000fb65762000fb562000dfb565b5b92915050565b62000fc78162000b64565b82525050565b5f60208201905062000fe25f83018462000fbc565b92915050565b60805160a0516147e2620010265f395f8181610e3d015261163301525f8181610b5a01528181612e4b01528181612f2a0152612f5101526147e25ff3fe608060405260043610610280575f3560e01c8063881dce601161014e578063bbc0c742116100c0578063dd62ed3e11610079578063dd62ed3e1461097d578063e2f45605146109b9578063eba4c333146109e3578063f2fde38b14610a0b578063f8b45b0514610a33578063fabb0b4f14610a5d57610287565b8063bbc0c74214610873578063c02466681461089d578063c18bc195146108c5578063c8c8ebe4146108ed578063d257b34f14610917578063d85ba0631461095357610287565b80639a7a23d6116101125780639a7a23d614610747578063a457c2d71461076f578063a672990c146107ab578063a9059cbb146107d3578063aacebbe31461080f578063b62496f51461083757610287565b8063881dce60146106795780638da5cb5b146106a157806392136913146106cb578063924de9b7146106f557806395d89b411461071d57610287565b806349bd5a5e116101f257806370a08231116101ab57806370a0823114610585578063715018a6146105c157806371fc4688146105d7578063751039fc146105ff5780637571336a1461062957806382aa7c681461065157610287565b806349bd5a5e1461049f5780634a62bb65146104c957806367243482146104f35780636a486a8e1461051b5780636ddd1713146105455780636fc3eaec1461056f57610287565b806318160ddd1161024457806318160ddd14610381578063203e727e146103ab57806323b872dd146103d357806327c8f8351461040f578063313ce56714610439578063395093511461046357610287565b806306fdde031461028b578063095ea7b3146102b557806310bc3c75146102f157806310d5de531461031b5780631694505e1461035757610287565b3661028757005b5f80fd5b348015610296575f80fd5b5061029f610a87565b6040516102ac9190613492565b60405180910390f35b3480156102c0575f80fd5b506102db60048036038101906102d69190613547565b610b17565b6040516102e8919061359f565b60405180910390f35b3480156102fc575f80fd5b50610305610b34565b60405161031291906135c7565b60405180910390f35b348015610326575f80fd5b50610341600480360381019061033c91906135e0565b610b3b565b60405161034e919061359f565b60405180910390f35b348015610362575f80fd5b5061036b610b58565b6040516103789190613666565b60405180910390f35b34801561038c575f80fd5b50610395610b7c565b6040516103a2919061368e565b60405180910390f35b3480156103b6575f80fd5b506103d160048036038101906103cc91906136a7565b610b85565b005b3480156103de575f80fd5b506103f960048036038101906103f491906136d2565b610c94565b604051610406919061359f565b60405180910390f35b34801561041a575f80fd5b50610423610d86565b60405161043091906135c7565b60405180910390f35b348015610444575f80fd5b5061044d610d8c565b60405161045a919061373d565b60405180910390f35b34801561046e575f80fd5b5061048960048036038101906104849190613547565b610d94565b604051610496919061359f565b60405180910390f35b3480156104aa575f80fd5b506104b3610e3b565b6040516104c091906135c7565b60405180910390f35b3480156104d4575f80fd5b506104dd610e5f565b6040516104ea919061359f565b60405180910390f35b3480156104fe575f80fd5b506105196004803603810190610514919061380c565b610e71565b005b348015610526575f80fd5b5061052f610f1a565b60405161053c919061368e565b60405180910390f35b348015610550575f80fd5b50610559610f20565b604051610566919061359f565b60405180910390f35b34801561057a575f80fd5b50610583610f33565b005b348015610590575f80fd5b506105ab60048036038101906105a691906135e0565b610fc1565b6040516105b8919061368e565b60405180910390f35b3480156105cc575f80fd5b506105d5611006565b005b3480156105e2575f80fd5b506105fd60048036038101906105f891906136a7565b61108d565b005b34801561060a575f80fd5b50610613611162565b604051610620919061359f565b60405180910390f35b348015610634575f80fd5b5061064f600480360381019061064a91906138b4565b6111ff565b005b34801561065c575f80fd5b50610677600480360381019061067291906136a7565b6112d3565b005b348015610684575f80fd5b5061069f600480360381019061069a91906136a7565b61139d565b005b3480156106ac575f80fd5b506106b561145e565b6040516106c291906135c7565b60405180910390f35b3480156106d6575f80fd5b506106df611486565b6040516106ec919061368e565b60405180910390f35b348015610700575f80fd5b5061071b600480360381019061071691906138f2565b61148c565b005b348015610728575f80fd5b50610731611525565b60405161073e9190613492565b60405180910390f35b348015610752575f80fd5b5061076d600480360381019061076891906138b4565b6115b5565b005b34801561077a575f80fd5b5061079560048036038101906107909190613547565b6116cd565b6040516107a2919061359f565b60405180910390f35b3480156107b6575f80fd5b506107d160048036038101906107cc91906138b4565b6117b3565b005b3480156107de575f80fd5b506107f960048036038101906107f49190613547565b6118db565b604051610806919061359f565b60405180910390f35b34801561081a575f80fd5b50610835600480360381019061083091906135e0565b6118f8565b005b348015610842575f80fd5b5061085d600480360381019061085891906135e0565b611a32565b60405161086a919061359f565b60405180910390f35b34801561087e575f80fd5b50610887611a4f565b604051610894919061359f565b60405180910390f35b3480156108a8575f80fd5b506108c360048036038101906108be91906138b4565b611a62565b005b3480156108d0575f80fd5b506108eb60048036038101906108e691906136a7565b611b84565b005b3480156108f8575f80fd5b50610901611c93565b60405161090e919061368e565b60405180910390f35b348015610922575f80fd5b5061093d600480360381019061093891906136a7565b611c99565b60405161094a919061359f565b60405180910390f35b34801561095e575f80fd5b50610967611ded565b604051610974919061368e565b60405180910390f35b348015610988575f80fd5b506109a3600480360381019061099e919061391d565b611df3565b6040516109b0919061368e565b60405180910390f35b3480156109c4575f80fd5b506109cd611e75565b6040516109da919061368e565b60405180910390f35b3480156109ee575f80fd5b50610a096004803603810190610a0491906136a7565b611e7b565b005b348015610a16575f80fd5b50610a316004803603810190610a2c91906135e0565b611f50565b005b348015610a3e575f80fd5b50610a47612046565b604051610a54919061368e565b60405180910390f35b348015610a68575f80fd5b50610a7161204c565b604051610a7e919061368e565b60405180910390f35b606060038054610a9690613988565b80601f0160208091040260200160405190810160405280929190818152602001828054610ac290613988565b8015610b0d5780601f10610ae457610100808354040283529160200191610b0d565b820191905f5260205f20905b815481529060010190602001808311610af057829003601f168201915b5050505050905090565b5f610b2a610b23612052565b8484612059565b6001905092915050565b5f41905090565b6014602052805f5260405f205f915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b610b8d612052565b73ffffffffffffffffffffffffffffffffffffffff16610bab61145e565b73ffffffffffffffffffffffffffffffffffffffff1614610c01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf890613a02565b60405180910390fd5b670de0b6b3a76400006103e86001610c17610b7c565b610c219190613a4d565b610c2b9190613abb565b610c359190613abb565b811015610c77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6e90613b5b565b60405180910390fd5b670de0b6b3a764000081610c8b9190613a4d565b60078190555050565b5f610ca084848461221c565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610ce7612052565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5d90613be9565b60405180910390fd5b610d7a85610d72612052565b858403612059565b60019150509392505050565b61dead81565b5f6012905090565b5f610e31610da0612052565b848460015f610dad612052565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610e2c9190613c07565b612059565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600a5f9054906101000a900460ff1681565b5f84849050118015610e8857508383905082829050145b610e90575f80fd5b5f3390505f5b85859050811015610f1257610eff82878784818110610eb857610eb7613c3a565b5b9050602002016020810190610ecd91906135e0565b670de0b6b3a7640000878786818110610ee957610ee8613c3a565b5b90506020020135610efa9190613a4d565b61221c565b8080610f0a90613c67565b915050610e96565b505050505050565b60105481565b600a60029054906101000a900460ff1681565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051610f7990613cdb565b5f6040518083038185875af1925050503d805f8114610fb3576040519150601f19603f3d011682016040523d82523d5f602084013e610fb8565b606091505b50508091505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61100e612052565b73ffffffffffffffffffffffffffffffffffffffff1661102c61145e565b73ffffffffffffffffffffffffffffffffffffffff1614611082576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107990613a02565b60405180910390fd5b61108b5f612ceb565b565b611095612052565b73ffffffffffffffffffffffffffffffffffffffff166110b361145e565b73ffffffffffffffffffffffffffffffffffffffff1614611109576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110090613a02565b60405180910390fd5b80600f81905550600f54600e81905550600a600e54111561115f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115690613d39565b60405180910390fd5b50565b5f61116b612052565b73ffffffffffffffffffffffffffffffffffffffff1661118961145e565b73ffffffffffffffffffffffffffffffffffffffff16146111df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d690613a02565b60405180910390fd5b5f600a5f6101000a81548160ff0219169083151502179055506001905090565b611207612052565b73ffffffffffffffffffffffffffffffffffffffff1661122561145e565b73ffffffffffffffffffffffffffffffffffffffff161461127b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127290613a02565b60405180910390fd5b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6112db612052565b73ffffffffffffffffffffffffffffffffffffffff166112f961145e565b73ffffffffffffffffffffffffffffffffffffffff161461134f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134690613a02565b60405180910390fd5b80600d819055506001600a60016101000a81548160ff0219169083151502179055506001600a60026101000a81548160ff02191690831515021790555043600b8190555042600c8190555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113dd612052565b73ffffffffffffffffffffffffffffffffffffffff16146113fc575f80fd5b61140530610fc1565b811115801561141357505f81115b611452576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144990613da1565b60405180910390fd5b61145b81612dae565b50565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b611494612052565b73ffffffffffffffffffffffffffffffffffffffff166114b261145e565b73ffffffffffffffffffffffffffffffffffffffff1614611508576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ff90613a02565b60405180910390fd5b80600a60026101000a81548160ff02191690831515021790555050565b60606004805461153490613988565b80601f016020809104026020016040519081016040528092919081815260200182805461156090613988565b80156115ab5780601f10611582576101008083540402835291602001916115ab565b820191905f5260205f20905b81548152906001019060200180831161158e57829003601f168201915b5050505050905090565b6115bd612052565b73ffffffffffffffffffffffffffffffffffffffff166115db61145e565b73ffffffffffffffffffffffffffffffffffffffff1614611631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162890613a02565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b690613e2f565b60405180910390fd5b6116c98282612fe1565b5050565b5f8060015f6116da612052565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611794576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178b90613ebd565b60405180910390fd5b6117a861179f612052565b85858403612059565b600191505092915050565b6117bb612052565b73ffffffffffffffffffffffffffffffffffffffff166117d961145e565b73ffffffffffffffffffffffffffffffffffffffff161461182f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182690613a02565b60405180910390fd5b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f6118ee6118e7612052565b848461221c565b6001905092915050565b611900612052565b73ffffffffffffffffffffffffffffffffffffffff1661191e61145e565b73ffffffffffffffffffffffffffffffffffffffff1614611974576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196b90613a02565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a38060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6015602052805f5260405f205f915054906101000a900460ff1681565b600a60019054906101000a900460ff1681565b611a6a612052565b73ffffffffffffffffffffffffffffffffffffffff16611a8861145e565b73ffffffffffffffffffffffffffffffffffffffff1614611ade576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad590613a02565b60405180910390fd5b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611b78919061359f565b60405180910390a25050565b611b8c612052565b73ffffffffffffffffffffffffffffffffffffffff16611baa61145e565b73ffffffffffffffffffffffffffffffffffffffff1614611c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf790613a02565b60405180910390fd5b670de0b6b3a76400006103e86005611c16610b7c565b611c209190613a4d565b611c2a9190613abb565b611c349190613abb565b811015611c76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6d90613f4b565b60405180910390fd5b670de0b6b3a764000081611c8a9190613a4d565b60098190555050565b60075481565b5f611ca2612052565b73ffffffffffffffffffffffffffffffffffffffff16611cc061145e565b73ffffffffffffffffffffffffffffffffffffffff1614611d16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0d90613a02565b60405180910390fd5b620186a06001611d24610b7c565b611d2e9190613a4d565b611d389190613abb565b821015611d7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7190613fd9565b60405180910390fd5b6103e86005611d87610b7c565b611d919190613a4d565b611d9b9190613abb565b821115611ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd490614067565b60405180910390fd5b8160088190555060019050919050565b600e5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60085481565b611e83612052565b73ffffffffffffffffffffffffffffffffffffffff16611ea161145e565b73ffffffffffffffffffffffffffffffffffffffff1614611ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eee90613a02565b60405180910390fd5b80601181905550601154601081905550600a6010541115611f4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4490613d39565b60405180910390fd5b50565b611f58612052565b73ffffffffffffffffffffffffffffffffffffffff16611f7661145e565b73ffffffffffffffffffffffffffffffffffffffff1614611fcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc390613a02565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361203a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612031906140f5565b60405180910390fd5b61204381612ceb565b50565b60095481565b600d5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036120c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120be90614183565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212c90614211565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161220f919061368e565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361228a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122819061429f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ef9061432d565b60405180910390fd5b5f810361230f5761230a83835f61307f565b612ce6565b5f439050600a5f9054906101000a900460ff161561291c5761232f61145e565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561239d575061236d61145e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156123d557505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561240f575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156124285750600560149054906101000a900460ff16155b1561291b5780600d54600b5461243e9190613c07565b1061248e576a108b2a2c280290940000006007819055506a108b2a2c28029094000000600981905550601e600f81905550600f54600e81905550601e601181905550601154601081905550612552565b600d54600b5461249e9190613c07565b811180156124ba57506008600b546124b69190613c07565b8111155b1561250a576a108b2a2c280290940000006007819055506a108b2a2c28029094000000600981905550600a600f81905550600f54600e81905550600a601181905550601154601081905550612551565b6a108b2a2c280290940000006007819055506a108b2a2c280290940000006009819055506002600f81905550600f54600e8190555060026011819055506011546010819055505b5b600a60019054906101000a900460ff166126415760125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612601575060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263790614395565b60405180910390fd5b5b60155f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156126de575060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561278557600754821115612728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271f90614423565b60405180910390fd5b60095461273484610fc1565b8361273f9190613c07565b1115612780576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127779061448b565b60405180910390fd5b61291a565b60155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612822575060145f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156128715760075482111561286c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286390614519565b60405180910390fd5b612919565b60145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612918576009546128cb84610fc1565b836128d69190613c07565b1115612917576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290e9061448b565b60405180910390fd5b5b5b5b5b5b5f61292630610fc1565b90505f600854821015905080801561294a5750600a60029054906101000a900460ff165b80156129635750600560149054906101000a900460ff16155b80156129805750600260135f8581526020019081526020015f2054105b80156129d3575060155f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612a26575060125f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612a79575060125f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612ae0576001600560146101000a81548160ff021916908315150217905550612aa16132f4565b60135f8481526020019081526020015f205f8154612abe90613c67565b919050819055505f600560146101000a81548160ff0219169083151502179055505b5f600560149054906101000a900460ff1615905060125f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612b8f575060125f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612b98575f90505b5f8115612cd55760155f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612bf657505f601054115b15612c2a57612c236064612c15601054896133d490919063ffffffff16565b6133e990919063ffffffff16565b9050612cb2565b60155f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612c8157505f600e54115b15612cb157612cae6064612ca0600e54896133d490919063ffffffff16565b6133e990919063ffffffff16565b90505b5b5f811115612cc657612cc588308361307f565b5b8086612cd29190614537565b95505b612ce088888861307f565b50505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f600267ffffffffffffffff811115612dca57612dc961456a565b5b604051908082528060200260200182016040528015612df85781602001602082028036833780820191505090505b50905030815f81518110612e0f57612e0e613c3a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612eb2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ed691906145ab565b81600181518110612eea57612ee9613c3a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612f4f307f000000000000000000000000000000000000000000000000000000000000000084612059565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612fb09594939291906146c6565b5f604051808303815f87803b158015612fc7575f80fd5b505af1158015612fd9573d5f803e3d5ffd5b505050505050565b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036130ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130e49061429f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361315b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131529061432d565b60405180910390fd5b6131668383836133fe565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156131e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131e09061478e565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546132779190613c07565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516132db919061368e565b60405180910390a36132ee848484613403565b50505050565b5f6132fe30610fc1565b90505f80820361330f5750506133d2565b601460085461331e9190613a4d565b8211156133375760146008546133349190613a4d565b91505b5f82905061334481612dae565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161338990613cdb565b5f6040518083038185875af1925050503d805f81146133c3576040519150601f19603f3d011682016040523d82523d5f602084013e6133c8565b606091505b5050809250505050505b565b5f81836133e19190613a4d565b905092915050565b5f81836133f69190613abb565b905092915050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561343f578082015181840152602081019050613424565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61346482613408565b61346e8185613412565b935061347e818560208601613422565b6134878161344a565b840191505092915050565b5f6020820190508181035f8301526134aa818461345a565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6134e3826134ba565b9050919050565b6134f3816134d9565b81146134fd575f80fd5b50565b5f8135905061350e816134ea565b92915050565b5f819050919050565b61352681613514565b8114613530575f80fd5b50565b5f813590506135418161351d565b92915050565b5f806040838503121561355d5761355c6134b2565b5b5f61356a85828601613500565b925050602061357b85828601613533565b9150509250929050565b5f8115159050919050565b61359981613585565b82525050565b5f6020820190506135b25f830184613590565b92915050565b6135c1816134d9565b82525050565b5f6020820190506135da5f8301846135b8565b92915050565b5f602082840312156135f5576135f46134b2565b5b5f61360284828501613500565b91505092915050565b5f819050919050565b5f61362e613629613624846134ba565b61360b565b6134ba565b9050919050565b5f61363f82613614565b9050919050565b5f61365082613635565b9050919050565b61366081613646565b82525050565b5f6020820190506136795f830184613657565b92915050565b61368881613514565b82525050565b5f6020820190506136a15f83018461367f565b92915050565b5f602082840312156136bc576136bb6134b2565b5b5f6136c984828501613533565b91505092915050565b5f805f606084860312156136e9576136e86134b2565b5b5f6136f686828701613500565b935050602061370786828701613500565b925050604061371886828701613533565b9150509250925092565b5f60ff82169050919050565b61373781613722565b82525050565b5f6020820190506137505f83018461372e565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261377757613776613756565b5b8235905067ffffffffffffffff8111156137945761379361375a565b5b6020830191508360208202830111156137b0576137af61375e565b5b9250929050565b5f8083601f8401126137cc576137cb613756565b5b8235905067ffffffffffffffff8111156137e9576137e861375a565b5b6020830191508360208202830111156138055761380461375e565b5b9250929050565b5f805f8060408587031215613824576138236134b2565b5b5f85013567ffffffffffffffff811115613841576138406134b6565b5b61384d87828801613762565b9450945050602085013567ffffffffffffffff8111156138705761386f6134b6565b5b61387c878288016137b7565b925092505092959194509250565b61389381613585565b811461389d575f80fd5b50565b5f813590506138ae8161388a565b92915050565b5f80604083850312156138ca576138c96134b2565b5b5f6138d785828601613500565b92505060206138e8858286016138a0565b9150509250929050565b5f60208284031215613907576139066134b2565b5b5f613914848285016138a0565b91505092915050565b5f8060408385031215613933576139326134b2565b5b5f61394085828601613500565b925050602061395185828601613500565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061399f57607f821691505b6020821081036139b2576139b161395b565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6139ec602083613412565b91506139f7826139b8565b602082019050919050565b5f6020820190508181035f830152613a19816139e0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613a5782613514565b9150613a6283613514565b9250828202613a7081613514565b91508282048414831517613a8757613a86613a20565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613ac582613514565b9150613ad083613514565b925082613ae057613adf613a8e565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f613b45602f83613412565b9150613b5082613aeb565b604082019050919050565b5f6020820190508181035f830152613b7281613b39565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613bd3602883613412565b9150613bde82613b79565b604082019050919050565b5f6020820190508181035f830152613c0081613bc7565b9050919050565b5f613c1182613514565b9150613c1c83613514565b9250828201905080821115613c3457613c33613a20565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f613c7182613514565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613ca357613ca2613a20565b5b600182019050919050565b5f81905092915050565b50565b5f613cc65f83613cae565b9150613cd182613cb8565b5f82019050919050565b5f613ce582613cbb565b9150819050919050565b7f4d757374206b6565702066656573206174203525206f72206c657373000000005f82015250565b5f613d23601c83613412565b9150613d2e82613cef565b602082019050919050565b5f6020820190508181035f830152613d5081613d17565b9050919050565b7f57726f6e6720616d6f756e7400000000000000000000000000000000000000005f82015250565b5f613d8b600c83613412565b9150613d9682613d57565b602082019050919050565b5f6020820190508181035f830152613db881613d7f565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613e19603983613412565b9150613e2482613dbf565b604082019050919050565b5f6020820190508181035f830152613e4681613e0d565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613ea7602583613412565b9150613eb282613e4d565b604082019050919050565b5f6020820190508181035f830152613ed481613e9b565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f613f35602483613412565b9150613f4082613edb565b604082019050919050565b5f6020820190508181035f830152613f6281613f29565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f613fc3603583613412565b9150613fce82613f69565b604082019050919050565b5f6020820190508181035f830152613ff081613fb7565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f614051603483613412565b915061405c82613ff7565b604082019050919050565b5f6020820190508181035f83015261407e81614045565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6140df602683613412565b91506140ea82614085565b604082019050919050565b5f6020820190508181035f83015261410c816140d3565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61416d602483613412565b915061417882614113565b604082019050919050565b5f6020820190508181035f83015261419a81614161565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6141fb602283613412565b9150614206826141a1565b604082019050919050565b5f6020820190508181035f830152614228816141ef565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f614289602583613412565b91506142948261422f565b604082019050919050565b5f6020820190508181035f8301526142b68161427d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f614317602383613412565b9150614322826142bd565b604082019050919050565b5f6020820190508181035f8301526143448161430b565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f61437f601683613412565b915061438a8261434b565b602082019050919050565b5f6020820190508181035f8301526143ac81614373565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f61440d603583613412565b9150614418826143b3565b604082019050919050565b5f6020820190508181035f83015261443a81614401565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614475601383613412565b915061448082614441565b602082019050919050565b5f6020820190508181035f8301526144a281614469565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f614503603683613412565b915061450e826144a9565b604082019050919050565b5f6020820190508181035f830152614530816144f7565b9050919050565b5f61454182613514565b915061454c83613514565b925082820390508181111561456457614563613a20565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f815190506145a5816134ea565b92915050565b5f602082840312156145c0576145bf6134b2565b5b5f6145cd84828501614597565b91505092915050565b5f819050919050565b5f6145f96145f46145ef846145d6565b61360b565b613514565b9050919050565b614609816145df565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614641816134d9565b82525050565b5f6146528383614638565b60208301905092915050565b5f602082019050919050565b5f6146748261460f565b61467e8185614619565b935061468983614629565b805f5b838110156146b95781516146a08882614647565b97506146ab8361465e565b92505060018101905061468c565b5085935050505092915050565b5f60a0820190506146d95f83018861367f565b6146e66020830187614600565b81810360408301526146f8818661466a565b905061470760608301856135b8565b614714608083018461367f565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614778602683613412565b91506147838261471e565b604082019050919050565b5f6020820190508181035f8301526147a58161476c565b905091905056fea2646970667358221220d6c5d60495dd02364bdd39dbfa0b47c82397da606b8aacf5bbeed607b736320e64736f6c634300081500330000000000000000000000007c1b6432ebfec8c638dbf3fa9dff20dc45c5584a

Deployed Bytecode

0x608060405260043610610280575f3560e01c8063881dce601161014e578063bbc0c742116100c0578063dd62ed3e11610079578063dd62ed3e1461097d578063e2f45605146109b9578063eba4c333146109e3578063f2fde38b14610a0b578063f8b45b0514610a33578063fabb0b4f14610a5d57610287565b8063bbc0c74214610873578063c02466681461089d578063c18bc195146108c5578063c8c8ebe4146108ed578063d257b34f14610917578063d85ba0631461095357610287565b80639a7a23d6116101125780639a7a23d614610747578063a457c2d71461076f578063a672990c146107ab578063a9059cbb146107d3578063aacebbe31461080f578063b62496f51461083757610287565b8063881dce60146106795780638da5cb5b146106a157806392136913146106cb578063924de9b7146106f557806395d89b411461071d57610287565b806349bd5a5e116101f257806370a08231116101ab57806370a0823114610585578063715018a6146105c157806371fc4688146105d7578063751039fc146105ff5780637571336a1461062957806382aa7c681461065157610287565b806349bd5a5e1461049f5780634a62bb65146104c957806367243482146104f35780636a486a8e1461051b5780636ddd1713146105455780636fc3eaec1461056f57610287565b806318160ddd1161024457806318160ddd14610381578063203e727e146103ab57806323b872dd146103d357806327c8f8351461040f578063313ce56714610439578063395093511461046357610287565b806306fdde031461028b578063095ea7b3146102b557806310bc3c75146102f157806310d5de531461031b5780631694505e1461035757610287565b3661028757005b5f80fd5b348015610296575f80fd5b5061029f610a87565b6040516102ac9190613492565b60405180910390f35b3480156102c0575f80fd5b506102db60048036038101906102d69190613547565b610b17565b6040516102e8919061359f565b60405180910390f35b3480156102fc575f80fd5b50610305610b34565b60405161031291906135c7565b60405180910390f35b348015610326575f80fd5b50610341600480360381019061033c91906135e0565b610b3b565b60405161034e919061359f565b60405180910390f35b348015610362575f80fd5b5061036b610b58565b6040516103789190613666565b60405180910390f35b34801561038c575f80fd5b50610395610b7c565b6040516103a2919061368e565b60405180910390f35b3480156103b6575f80fd5b506103d160048036038101906103cc91906136a7565b610b85565b005b3480156103de575f80fd5b506103f960048036038101906103f491906136d2565b610c94565b604051610406919061359f565b60405180910390f35b34801561041a575f80fd5b50610423610d86565b60405161043091906135c7565b60405180910390f35b348015610444575f80fd5b5061044d610d8c565b60405161045a919061373d565b60405180910390f35b34801561046e575f80fd5b5061048960048036038101906104849190613547565b610d94565b604051610496919061359f565b60405180910390f35b3480156104aa575f80fd5b506104b3610e3b565b6040516104c091906135c7565b60405180910390f35b3480156104d4575f80fd5b506104dd610e5f565b6040516104ea919061359f565b60405180910390f35b3480156104fe575f80fd5b506105196004803603810190610514919061380c565b610e71565b005b348015610526575f80fd5b5061052f610f1a565b60405161053c919061368e565b60405180910390f35b348015610550575f80fd5b50610559610f20565b604051610566919061359f565b60405180910390f35b34801561057a575f80fd5b50610583610f33565b005b348015610590575f80fd5b506105ab60048036038101906105a691906135e0565b610fc1565b6040516105b8919061368e565b60405180910390f35b3480156105cc575f80fd5b506105d5611006565b005b3480156105e2575f80fd5b506105fd60048036038101906105f891906136a7565b61108d565b005b34801561060a575f80fd5b50610613611162565b604051610620919061359f565b60405180910390f35b348015610634575f80fd5b5061064f600480360381019061064a91906138b4565b6111ff565b005b34801561065c575f80fd5b50610677600480360381019061067291906136a7565b6112d3565b005b348015610684575f80fd5b5061069f600480360381019061069a91906136a7565b61139d565b005b3480156106ac575f80fd5b506106b561145e565b6040516106c291906135c7565b60405180910390f35b3480156106d6575f80fd5b506106df611486565b6040516106ec919061368e565b60405180910390f35b348015610700575f80fd5b5061071b600480360381019061071691906138f2565b61148c565b005b348015610728575f80fd5b50610731611525565b60405161073e9190613492565b60405180910390f35b348015610752575f80fd5b5061076d600480360381019061076891906138b4565b6115b5565b005b34801561077a575f80fd5b5061079560048036038101906107909190613547565b6116cd565b6040516107a2919061359f565b60405180910390f35b3480156107b6575f80fd5b506107d160048036038101906107cc91906138b4565b6117b3565b005b3480156107de575f80fd5b506107f960048036038101906107f49190613547565b6118db565b604051610806919061359f565b60405180910390f35b34801561081a575f80fd5b50610835600480360381019061083091906135e0565b6118f8565b005b348015610842575f80fd5b5061085d600480360381019061085891906135e0565b611a32565b60405161086a919061359f565b60405180910390f35b34801561087e575f80fd5b50610887611a4f565b604051610894919061359f565b60405180910390f35b3480156108a8575f80fd5b506108c360048036038101906108be91906138b4565b611a62565b005b3480156108d0575f80fd5b506108eb60048036038101906108e691906136a7565b611b84565b005b3480156108f8575f80fd5b50610901611c93565b60405161090e919061368e565b60405180910390f35b348015610922575f80fd5b5061093d600480360381019061093891906136a7565b611c99565b60405161094a919061359f565b60405180910390f35b34801561095e575f80fd5b50610967611ded565b604051610974919061368e565b60405180910390f35b348015610988575f80fd5b506109a3600480360381019061099e919061391d565b611df3565b6040516109b0919061368e565b60405180910390f35b3480156109c4575f80fd5b506109cd611e75565b6040516109da919061368e565b60405180910390f35b3480156109ee575f80fd5b50610a096004803603810190610a0491906136a7565b611e7b565b005b348015610a16575f80fd5b50610a316004803603810190610a2c91906135e0565b611f50565b005b348015610a3e575f80fd5b50610a47612046565b604051610a54919061368e565b60405180910390f35b348015610a68575f80fd5b50610a7161204c565b604051610a7e919061368e565b60405180910390f35b606060038054610a9690613988565b80601f0160208091040260200160405190810160405280929190818152602001828054610ac290613988565b8015610b0d5780601f10610ae457610100808354040283529160200191610b0d565b820191905f5260205f20905b815481529060010190602001808311610af057829003601f168201915b5050505050905090565b5f610b2a610b23612052565b8484612059565b6001905092915050565b5f41905090565b6014602052805f5260405f205f915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600254905090565b610b8d612052565b73ffffffffffffffffffffffffffffffffffffffff16610bab61145e565b73ffffffffffffffffffffffffffffffffffffffff1614610c01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf890613a02565b60405180910390fd5b670de0b6b3a76400006103e86001610c17610b7c565b610c219190613a4d565b610c2b9190613abb565b610c359190613abb565b811015610c77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6e90613b5b565b60405180910390fd5b670de0b6b3a764000081610c8b9190613a4d565b60078190555050565b5f610ca084848461221c565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610ce7612052565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5d90613be9565b60405180910390fd5b610d7a85610d72612052565b858403612059565b60019150509392505050565b61dead81565b5f6012905090565b5f610e31610da0612052565b848460015f610dad612052565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610e2c9190613c07565b612059565b6001905092915050565b7f00000000000000000000000096a0e584d8f99dec32b9d2f4edfa7c2036769c8d81565b600a5f9054906101000a900460ff1681565b5f84849050118015610e8857508383905082829050145b610e90575f80fd5b5f3390505f5b85859050811015610f1257610eff82878784818110610eb857610eb7613c3a565b5b9050602002016020810190610ecd91906135e0565b670de0b6b3a7640000878786818110610ee957610ee8613c3a565b5b90506020020135610efa9190613a4d565b61221c565b8080610f0a90613c67565b915050610e96565b505050505050565b60105481565b600a60029054906101000a900460ff1681565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051610f7990613cdb565b5f6040518083038185875af1925050503d805f8114610fb3576040519150601f19603f3d011682016040523d82523d5f602084013e610fb8565b606091505b50508091505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61100e612052565b73ffffffffffffffffffffffffffffffffffffffff1661102c61145e565b73ffffffffffffffffffffffffffffffffffffffff1614611082576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107990613a02565b60405180910390fd5b61108b5f612ceb565b565b611095612052565b73ffffffffffffffffffffffffffffffffffffffff166110b361145e565b73ffffffffffffffffffffffffffffffffffffffff1614611109576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110090613a02565b60405180910390fd5b80600f81905550600f54600e81905550600a600e54111561115f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115690613d39565b60405180910390fd5b50565b5f61116b612052565b73ffffffffffffffffffffffffffffffffffffffff1661118961145e565b73ffffffffffffffffffffffffffffffffffffffff16146111df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d690613a02565b60405180910390fd5b5f600a5f6101000a81548160ff0219169083151502179055506001905090565b611207612052565b73ffffffffffffffffffffffffffffffffffffffff1661122561145e565b73ffffffffffffffffffffffffffffffffffffffff161461127b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127290613a02565b60405180910390fd5b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6112db612052565b73ffffffffffffffffffffffffffffffffffffffff166112f961145e565b73ffffffffffffffffffffffffffffffffffffffff161461134f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134690613a02565b60405180910390fd5b80600d819055506001600a60016101000a81548160ff0219169083151502179055506001600a60026101000a81548160ff02191690831515021790555043600b8190555042600c8190555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113dd612052565b73ffffffffffffffffffffffffffffffffffffffff16146113fc575f80fd5b61140530610fc1565b811115801561141357505f81115b611452576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144990613da1565b60405180910390fd5b61145b81612dae565b50565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b611494612052565b73ffffffffffffffffffffffffffffffffffffffff166114b261145e565b73ffffffffffffffffffffffffffffffffffffffff1614611508576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ff90613a02565b60405180910390fd5b80600a60026101000a81548160ff02191690831515021790555050565b60606004805461153490613988565b80601f016020809104026020016040519081016040528092919081815260200182805461156090613988565b80156115ab5780601f10611582576101008083540402835291602001916115ab565b820191905f5260205f20905b81548152906001019060200180831161158e57829003601f168201915b5050505050905090565b6115bd612052565b73ffffffffffffffffffffffffffffffffffffffff166115db61145e565b73ffffffffffffffffffffffffffffffffffffffff1614611631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162890613a02565b60405180910390fd5b7f00000000000000000000000096a0e584d8f99dec32b9d2f4edfa7c2036769c8d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b690613e2f565b60405180910390fd5b6116c98282612fe1565b5050565b5f8060015f6116da612052565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611794576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178b90613ebd565b60405180910390fd5b6117a861179f612052565b85858403612059565b600191505092915050565b6117bb612052565b73ffffffffffffffffffffffffffffffffffffffff166117d961145e565b73ffffffffffffffffffffffffffffffffffffffff161461182f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182690613a02565b60405180910390fd5b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f6118ee6118e7612052565b848461221c565b6001905092915050565b611900612052565b73ffffffffffffffffffffffffffffffffffffffff1661191e61145e565b73ffffffffffffffffffffffffffffffffffffffff1614611974576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196b90613a02565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a38060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6015602052805f5260405f205f915054906101000a900460ff1681565b600a60019054906101000a900460ff1681565b611a6a612052565b73ffffffffffffffffffffffffffffffffffffffff16611a8861145e565b73ffffffffffffffffffffffffffffffffffffffff1614611ade576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad590613a02565b60405180910390fd5b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611b78919061359f565b60405180910390a25050565b611b8c612052565b73ffffffffffffffffffffffffffffffffffffffff16611baa61145e565b73ffffffffffffffffffffffffffffffffffffffff1614611c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf790613a02565b60405180910390fd5b670de0b6b3a76400006103e86005611c16610b7c565b611c209190613a4d565b611c2a9190613abb565b611c349190613abb565b811015611c76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6d90613f4b565b60405180910390fd5b670de0b6b3a764000081611c8a9190613a4d565b60098190555050565b60075481565b5f611ca2612052565b73ffffffffffffffffffffffffffffffffffffffff16611cc061145e565b73ffffffffffffffffffffffffffffffffffffffff1614611d16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0d90613a02565b60405180910390fd5b620186a06001611d24610b7c565b611d2e9190613a4d565b611d389190613abb565b821015611d7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7190613fd9565b60405180910390fd5b6103e86005611d87610b7c565b611d919190613a4d565b611d9b9190613abb565b821115611ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd490614067565b60405180910390fd5b8160088190555060019050919050565b600e5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60085481565b611e83612052565b73ffffffffffffffffffffffffffffffffffffffff16611ea161145e565b73ffffffffffffffffffffffffffffffffffffffff1614611ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eee90613a02565b60405180910390fd5b80601181905550601154601081905550600a6010541115611f4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4490613d39565b60405180910390fd5b50565b611f58612052565b73ffffffffffffffffffffffffffffffffffffffff16611f7661145e565b73ffffffffffffffffffffffffffffffffffffffff1614611fcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc390613a02565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361203a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612031906140f5565b60405180910390fd5b61204381612ceb565b50565b60095481565b600d5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036120c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120be90614183565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212c90614211565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161220f919061368e565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361228a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122819061429f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ef9061432d565b60405180910390fd5b5f810361230f5761230a83835f61307f565b612ce6565b5f439050600a5f9054906101000a900460ff161561291c5761232f61145e565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561239d575061236d61145e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156123d557505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561240f575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156124285750600560149054906101000a900460ff16155b1561291b5780600d54600b5461243e9190613c07565b1061248e576a108b2a2c280290940000006007819055506a108b2a2c28029094000000600981905550601e600f81905550600f54600e81905550601e601181905550601154601081905550612552565b600d54600b5461249e9190613c07565b811180156124ba57506008600b546124b69190613c07565b8111155b1561250a576a108b2a2c280290940000006007819055506a108b2a2c28029094000000600981905550600a600f81905550600f54600e81905550600a601181905550601154601081905550612551565b6a108b2a2c280290940000006007819055506a108b2a2c280290940000006009819055506002600f81905550600f54600e8190555060026011819055506011546010819055505b5b600a60019054906101000a900460ff166126415760125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612601575060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263790614395565b60405180910390fd5b5b60155f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156126de575060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561278557600754821115612728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271f90614423565b60405180910390fd5b60095461273484610fc1565b8361273f9190613c07565b1115612780576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127779061448b565b60405180910390fd5b61291a565b60155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612822575060145f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156128715760075482111561286c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286390614519565b60405180910390fd5b612919565b60145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612918576009546128cb84610fc1565b836128d69190613c07565b1115612917576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290e9061448b565b60405180910390fd5b5b5b5b5b5b5f61292630610fc1565b90505f600854821015905080801561294a5750600a60029054906101000a900460ff165b80156129635750600560149054906101000a900460ff16155b80156129805750600260135f8581526020019081526020015f2054105b80156129d3575060155f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612a26575060125f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612a79575060125f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612ae0576001600560146101000a81548160ff021916908315150217905550612aa16132f4565b60135f8481526020019081526020015f205f8154612abe90613c67565b919050819055505f600560146101000a81548160ff0219169083151502179055505b5f600560149054906101000a900460ff1615905060125f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612b8f575060125f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612b98575f90505b5f8115612cd55760155f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612bf657505f601054115b15612c2a57612c236064612c15601054896133d490919063ffffffff16565b6133e990919063ffffffff16565b9050612cb2565b60155f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612c8157505f600e54115b15612cb157612cae6064612ca0600e54896133d490919063ffffffff16565b6133e990919063ffffffff16565b90505b5b5f811115612cc657612cc588308361307f565b5b8086612cd29190614537565b95505b612ce088888861307f565b50505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f600267ffffffffffffffff811115612dca57612dc961456a565b5b604051908082528060200260200182016040528015612df85781602001602082028036833780820191505090505b50905030815f81518110612e0f57612e0e613c3a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612eb2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ed691906145ab565b81600181518110612eea57612ee9613c3a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612f4f307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612059565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612fb09594939291906146c6565b5f604051808303815f87803b158015612fc7575f80fd5b505af1158015612fd9573d5f803e3d5ffd5b505050505050565b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036130ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130e49061429f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361315b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131529061432d565b60405180910390fd5b6131668383836133fe565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156131e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131e09061478e565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546132779190613c07565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516132db919061368e565b60405180910390a36132ee848484613403565b50505050565b5f6132fe30610fc1565b90505f80820361330f5750506133d2565b601460085461331e9190613a4d565b8211156133375760146008546133349190613a4d565b91505b5f82905061334481612dae565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161338990613cdb565b5f6040518083038185875af1925050503d805f81146133c3576040519150601f19603f3d011682016040523d82523d5f602084013e6133c8565b606091505b5050809250505050505b565b5f81836133e19190613a4d565b905092915050565b5f81836133f69190613abb565b905092915050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561343f578082015181840152602081019050613424565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61346482613408565b61346e8185613412565b935061347e818560208601613422565b6134878161344a565b840191505092915050565b5f6020820190508181035f8301526134aa818461345a565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6134e3826134ba565b9050919050565b6134f3816134d9565b81146134fd575f80fd5b50565b5f8135905061350e816134ea565b92915050565b5f819050919050565b61352681613514565b8114613530575f80fd5b50565b5f813590506135418161351d565b92915050565b5f806040838503121561355d5761355c6134b2565b5b5f61356a85828601613500565b925050602061357b85828601613533565b9150509250929050565b5f8115159050919050565b61359981613585565b82525050565b5f6020820190506135b25f830184613590565b92915050565b6135c1816134d9565b82525050565b5f6020820190506135da5f8301846135b8565b92915050565b5f602082840312156135f5576135f46134b2565b5b5f61360284828501613500565b91505092915050565b5f819050919050565b5f61362e613629613624846134ba565b61360b565b6134ba565b9050919050565b5f61363f82613614565b9050919050565b5f61365082613635565b9050919050565b61366081613646565b82525050565b5f6020820190506136795f830184613657565b92915050565b61368881613514565b82525050565b5f6020820190506136a15f83018461367f565b92915050565b5f602082840312156136bc576136bb6134b2565b5b5f6136c984828501613533565b91505092915050565b5f805f606084860312156136e9576136e86134b2565b5b5f6136f686828701613500565b935050602061370786828701613500565b925050604061371886828701613533565b9150509250925092565b5f60ff82169050919050565b61373781613722565b82525050565b5f6020820190506137505f83018461372e565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261377757613776613756565b5b8235905067ffffffffffffffff8111156137945761379361375a565b5b6020830191508360208202830111156137b0576137af61375e565b5b9250929050565b5f8083601f8401126137cc576137cb613756565b5b8235905067ffffffffffffffff8111156137e9576137e861375a565b5b6020830191508360208202830111156138055761380461375e565b5b9250929050565b5f805f8060408587031215613824576138236134b2565b5b5f85013567ffffffffffffffff811115613841576138406134b6565b5b61384d87828801613762565b9450945050602085013567ffffffffffffffff8111156138705761386f6134b6565b5b61387c878288016137b7565b925092505092959194509250565b61389381613585565b811461389d575f80fd5b50565b5f813590506138ae8161388a565b92915050565b5f80604083850312156138ca576138c96134b2565b5b5f6138d785828601613500565b92505060206138e8858286016138a0565b9150509250929050565b5f60208284031215613907576139066134b2565b5b5f613914848285016138a0565b91505092915050565b5f8060408385031215613933576139326134b2565b5b5f61394085828601613500565b925050602061395185828601613500565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061399f57607f821691505b6020821081036139b2576139b161395b565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6139ec602083613412565b91506139f7826139b8565b602082019050919050565b5f6020820190508181035f830152613a19816139e0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613a5782613514565b9150613a6283613514565b9250828202613a7081613514565b91508282048414831517613a8757613a86613a20565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613ac582613514565b9150613ad083613514565b925082613ae057613adf613a8e565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f613b45602f83613412565b9150613b5082613aeb565b604082019050919050565b5f6020820190508181035f830152613b7281613b39565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613bd3602883613412565b9150613bde82613b79565b604082019050919050565b5f6020820190508181035f830152613c0081613bc7565b9050919050565b5f613c1182613514565b9150613c1c83613514565b9250828201905080821115613c3457613c33613a20565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f613c7182613514565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613ca357613ca2613a20565b5b600182019050919050565b5f81905092915050565b50565b5f613cc65f83613cae565b9150613cd182613cb8565b5f82019050919050565b5f613ce582613cbb565b9150819050919050565b7f4d757374206b6565702066656573206174203525206f72206c657373000000005f82015250565b5f613d23601c83613412565b9150613d2e82613cef565b602082019050919050565b5f6020820190508181035f830152613d5081613d17565b9050919050565b7f57726f6e6720616d6f756e7400000000000000000000000000000000000000005f82015250565b5f613d8b600c83613412565b9150613d9682613d57565b602082019050919050565b5f6020820190508181035f830152613db881613d7f565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613e19603983613412565b9150613e2482613dbf565b604082019050919050565b5f6020820190508181035f830152613e4681613e0d565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613ea7602583613412565b9150613eb282613e4d565b604082019050919050565b5f6020820190508181035f830152613ed481613e9b565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f613f35602483613412565b9150613f4082613edb565b604082019050919050565b5f6020820190508181035f830152613f6281613f29565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f613fc3603583613412565b9150613fce82613f69565b604082019050919050565b5f6020820190508181035f830152613ff081613fb7565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f614051603483613412565b915061405c82613ff7565b604082019050919050565b5f6020820190508181035f83015261407e81614045565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6140df602683613412565b91506140ea82614085565b604082019050919050565b5f6020820190508181035f83015261410c816140d3565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61416d602483613412565b915061417882614113565b604082019050919050565b5f6020820190508181035f83015261419a81614161565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6141fb602283613412565b9150614206826141a1565b604082019050919050565b5f6020820190508181035f830152614228816141ef565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f614289602583613412565b91506142948261422f565b604082019050919050565b5f6020820190508181035f8301526142b68161427d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f614317602383613412565b9150614322826142bd565b604082019050919050565b5f6020820190508181035f8301526143448161430b565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f61437f601683613412565b915061438a8261434b565b602082019050919050565b5f6020820190508181035f8301526143ac81614373565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f61440d603583613412565b9150614418826143b3565b604082019050919050565b5f6020820190508181035f83015261443a81614401565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614475601383613412565b915061448082614441565b602082019050919050565b5f6020820190508181035f8301526144a281614469565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f614503603683613412565b915061450e826144a9565b604082019050919050565b5f6020820190508181035f830152614530816144f7565b9050919050565b5f61454182613514565b915061454c83613514565b925082820390508181111561456457614563613a20565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f815190506145a5816134ea565b92915050565b5f602082840312156145c0576145bf6134b2565b5b5f6145cd84828501614597565b91505092915050565b5f819050919050565b5f6145f96145f46145ef846145d6565b61360b565b613514565b9050919050565b614609816145df565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614641816134d9565b82525050565b5f6146528383614638565b60208301905092915050565b5f602082019050919050565b5f6146748261460f565b61467e8185614619565b935061468983614629565b805f5b838110156146b95781516146a08882614647565b97506146ab8361465e565b92505060018101905061468c565b5085935050505092915050565b5f60a0820190506146d95f83018861367f565b6146e66020830187614600565b81810360408301526146f8818661466a565b905061470760608301856135b8565b614714608083018461367f565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614778602683613412565b91506147838261471e565b604082019050919050565b5f6020820190508181035f8301526147a58161476c565b905091905056fea2646970667358221220d6c5d60495dd02364bdd39dbfa0b47c82397da606b8aacf5bbeed607b736320e64736f6c63430008150033

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

0000000000000000000000007c1b6432ebfec8c638dbf3fa9dff20dc45c5584a

-----Decoded View---------------
Arg [0] : _wallet1 (address): 0x7C1b6432eBfeC8C638dBF3fa9DFF20DC45c5584A

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007c1b6432ebfec8c638dbf3fa9dff20dc45c5584a


Deployed Bytecode Sourcemap

18266:13033:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5963:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6877:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30599:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19181:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18347:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6284:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21951:275;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7054:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18450:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6183:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7554:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18405:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18697:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24941:353;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18993:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18777:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23503:174;;;;;;;;;;;;;:::i;:::-;;6400:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4081:103;;;;;;;;;;;;;:::i;:::-;;24197:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21317:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22713:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21066:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23274:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3856:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19028:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22976:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6071:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23689:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7777:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22498:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6535:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24702:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19253:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18737:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23084:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22234:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18582:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21446:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18919:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6718:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18624:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24447:247;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4194:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18664:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18885:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5963:100;6017:13;6050:5;6043:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5963:100;:::o;6877:169::-;6960:4;6977:39;6986:12;:10;:12::i;:::-;7000:7;7009:6;6977:8;:39::i;:::-;7034:4;7027:11;;6877:169;;;;:::o;30599:98::-;30648:7;30675:14;30668:21;;30599:98;:::o;19181:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;18347:51::-;;;:::o;6284:108::-;6345:7;6372:12;;6365:19;;6284:108;:::o;21951:275::-;4004:12;:10;:12::i;:::-;3993:23;;:7;:5;:7::i;:::-;:23;;;3985:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22088:4:::1;22080;22075:1;22059:13;:11;:13::i;:::-;:17;;;;:::i;:::-;22058:26;;;;:::i;:::-;22057:35;;;;:::i;:::-;22047:6;:45;;22025:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;22211:6;22201;:17;;;;:::i;:::-;22178:20;:40;;;;21951:275:::0;:::o;7054:492::-;7194:4;7211:36;7221:6;7229:9;7240:6;7211:9;:36::i;:::-;7260:24;7287:11;:19;7299:6;7287:19;;;;;;;;;;;;;;;:33;7307:12;:10;:12::i;:::-;7287:33;;;;;;;;;;;;;;;;7260:60;;7359:6;7339:16;:26;;7331:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;7446:57;7455:6;7463:12;:10;:12::i;:::-;7496:6;7477:16;:25;7446:8;:57::i;:::-;7534:4;7527:11;;;7054:492;;;;;:::o;18450:53::-;18496:6;18450:53;:::o;6183:93::-;6241:5;6266:2;6259:9;;6183:93;:::o;7554:215::-;7642:4;7659:80;7668:12;:10;:12::i;:::-;7682:7;7728:10;7691:11;:25;7703:12;:10;:12::i;:::-;7691:25;;;;;;;;;;;;;;;:34;7717:7;7691:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;7659:8;:80::i;:::-;7757:4;7750:11;;7554:215;;;;:::o;18405:38::-;;;:::o;18697:33::-;;;;;;;;;;;;;:::o;24941:353::-;25065:1;25046:9;;:16;;:20;:58;;;;;25088:9;;:16;;25070:7;;:14;;:34;25046:58;25038:67;;;;;;25118:12;25133:10;25118:25;;25163:6;25158:129;25179:9;;:16;;25175:1;:20;25158:129;;;25219:52;25229:4;25235:9;;25245:1;25235:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;25263:6;25249:7;;25257:1;25249:10;;;;;;;:::i;:::-;;;;;;;;:21;;;;:::i;:::-;25219:9;:52::i;:::-;25197:3;;;;;:::i;:::-;;;;25158:129;;;;25025:269;24941:353;;;;:::o;18993:28::-;;;;:::o;18777:31::-;;;;;;;;;;;;;:::o;23503:174::-;23545:12;23590:15;;;;;;;;;;;23582:29;;23633:21;23582:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23568:101;;;;;23534:143;23503:174::o;6400:127::-;6474:7;6501:9;:18;6511:7;6501:18;;;;;;;;;;;;;;;;6494:25;;6400:127;;;:::o;4081:103::-;4004:12;:10;:12::i;:::-;3993:23;;:7;:5;:7::i;:::-;:23;;;3985:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4146:30:::1;4173:1;4146:18;:30::i;:::-;4081:103::o:0;24197:242::-;4004:12;:10;:12::i;:::-;3993:23;;:7;:5;:7::i;:::-;:23;;;3985:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24307:13:::1;24289:15;:31;;;;24346:15;;24331:12;:30;;;;24396:2;24380:12;;:18;;24372:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;24197:242:::0;:::o;21317:121::-;21369:4;4004:12;:10;:12::i;:::-;3993:23;;:7;:5;:7::i;:::-;:23;;;3985:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21403:5:::1;21386:14;;:22;;;;;;;;;;;;;;;;;;21426:4;21419:11;;21317:121:::0;:::o;22713:167::-;4004:12;:10;:12::i;:::-;3993:23;;:7;:5;:7::i;:::-;:23;;;3985:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22868:4:::1;22826:31;:39;22858:6;22826:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;22713:167:::0;;:::o;21066:243::-;4004:12;:10;:12::i;:::-;3993:23;;:7;:5;:7::i;:::-;:23;;;3985:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21153:11:::1;21140:10;:24;;;;21191:4;21175:13;;:20;;;;;;;;;;;;;;;;;;21220:4;21206:11;;:18;;;;;;;;;;;;;;;;;;21248:12;21235:10;:25;;;;21286:15;21271:12;:30;;;;21066:243:::0;:::o;23274:221::-;23352:15;;;;;;;;;;;23336:31;;:12;:10;:12::i;:::-;:31;;;23328:40;;;;;;23397:24;23415:4;23397:9;:24::i;:::-;23387:6;:34;;:48;;;;;23434:1;23425:6;:10;23387:48;23379:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;23463:24;23480:6;23463:16;:24::i;:::-;23274:221;:::o;3856:87::-;3902:7;3929:6;;;;;;;;;;;3922:13;;3856:87;:::o;19028:31::-;;;;:::o;22976:100::-;4004:12;:10;:12::i;:::-;3993:23;;:7;:5;:7::i;:::-;:23;;;3985:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23061:7:::1;23047:11;;:21;;;;;;;;;;;;;;;;;;22976:100:::0;:::o;6071:104::-;6127:13;6160:7;6153:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6071:104;:::o;23689:304::-;4004:12;:10;:12::i;:::-;3993:23;;:7;:5;:7::i;:::-;:23;;;3985:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23833:13:::1;23825:21;;:4;:21;;::::0;23803:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;23944:41;23973:4;23979:5;23944:28;:41::i;:::-;23689:304:::0;;:::o;7777:413::-;7870:4;7887:24;7914:11;:25;7926:12;:10;:12::i;:::-;7914:25;;;;;;;;;;;;;;;:34;7940:7;7914:34;;;;;;;;;;;;;;;;7887:61;;7987:15;7967:16;:35;;7959:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;8080:67;8089:12;:10;:12::i;:::-;8103:7;8131:15;8112:16;:34;8080:8;:67::i;:::-;8178:4;8171:11;;;7777:413;;;;:::o;22498:207::-;4004:12;:10;:12::i;:::-;3993:23;;:7;:5;:7::i;:::-;:23;;;3985:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22642:4:::1;22596:31;:43;22628:10;22596:43;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;22691:4;22657:19;:31;22677:10;22657:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;22498:207:::0;;:::o;6535:175::-;6621:4;6638:42;6648:12;:10;:12::i;:::-;6662:9;6673:6;6638:9;:42::i;:::-;6698:4;6691:11;;6535:175;;;;:::o;24702:231::-;4004:12;:10;:12::i;:::-;3993:23;;:7;:5;:7::i;:::-;:23;;;3985:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24862:15:::1;;;;;;;;;;;24819:59;;24842:18;24819:59;;;;;;;;;;;;24907:18;24889:15;;:36;;;;;;;;;;;;;;;;;;24702:231:::0;:::o;19253:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;18737:33::-;;;;;;;;;;;;;:::o;23084:182::-;4004:12;:10;:12::i;:::-;3993:23;;:7;:5;:7::i;:::-;:23;;;3985:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23200:8:::1;23169:19;:28;23189:7;23169:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;23240:7;23224:34;;;23249:8;23224:34;;;;;;:::i;:::-;;;;;;;;23084:182:::0;;:::o;22234:256::-;4004:12;:10;:12::i;:::-;3993:23;;:7;:5;:7::i;:::-;:23;;;3985:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22374:4:::1;22366;22361:1;22345:13;:11;:13::i;:::-;:17;;;;:::i;:::-;22344:26;;;;:::i;:::-;22343:35;;;;:::i;:::-;22333:6;:45;;22311:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;22475:6;22465;:17;;;;:::i;:::-;22453:9;:29;;;;22234:256:::0;:::o;18582:35::-;;;;:::o;21446:497::-;21554:4;4004:12;:10;:12::i;:::-;3993:23;;:7;:5;:7::i;:::-;:23;;;3985:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21633:6:::1;21628:1;21612:13;:11;:13::i;:::-;:17;;;;:::i;:::-;21611:28;;;;:::i;:::-;21598:9;:41;;21576:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;21788:4;21783:1;21767:13;:11;:13::i;:::-;:17;;;;:::i;:::-;21766:26;;;;:::i;:::-;21753:9;:39;;21731:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;21904:9;21883:18;:30;;;;21931:4;21924:11;;21446:497:::0;;;:::o;18919:27::-;;;;:::o;6718:151::-;6807:7;6834:11;:18;6846:5;6834:18;;;;;;;;;;;;;;;:27;6853:7;6834:27;;;;;;;;;;;;;;;;6827:34;;6718:151;;;;:::o;18624:33::-;;;;:::o;24447:247::-;4004:12;:10;:12::i;:::-;3993:23;;:7;:5;:7::i;:::-;:23;;;3985:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24559:13:::1;24540:16;:32;;;;24599:16;;24583:13;:32;;;;24651:2;24634:13;;:19;;24626:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;24447:247:::0;:::o;4194:201::-;4004:12;:10;:12::i;:::-;3993:23;;:7;:5;:7::i;:::-;:23;;;3985:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4303:1:::1;4283:22;;:8;:22;;::::0;4275:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;4359:28;4378:8;4359:18;:28::i;:::-;4194:201:::0;:::o;18664:24::-;;;;:::o;18885:25::-;;;;:::o;3396:98::-;3449:7;3476:10;3469:17;;3396:98;:::o;9945:380::-;10098:1;10081:19;;:5;:19;;;10073:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10179:1;10160:21;;:7;:21;;;10152:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10263:6;10233:11;:18;10245:5;10233:18;;;;;;;;;;;;;;;:27;10252:7;10233:27;;;;;;;;;;;;;;;:36;;;;10301:7;10285:32;;10294:5;10285:32;;;10310:6;10285:32;;;;;;:::i;:::-;;;;;;;;9945:380;;;:::o;25302:4741::-;25450:1;25434:18;;:4;:18;;;25426:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25527:1;25513:16;;:2;:16;;;25505:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;25596:1;25586:6;:11;25582:93;;25614:28;25630:4;25636:2;25640:1;25614:15;:28::i;:::-;25657:7;;25582:93;25687:16;25706:12;25687:31;;25735:14;;;;;;;;;;;25731:2845;;;25796:7;:5;:7::i;:::-;25788:15;;:4;:15;;;;:49;;;;;25830:7;:5;:7::i;:::-;25824:13;;:2;:13;;;;25788:49;:86;;;;;25872:1;25858:16;;:2;:16;;;;25788:86;:128;;;;;25909:6;25895:21;;:2;:21;;;;25788:128;:158;;;;;25938:8;;;;;;;;;;;25937:9;25788:158;25766:2799;;;26029:8;26014:10;;26001;;:23;;;;:::i;:::-;26000:37;25979:1133;;26097:17;26073:20;:41;;;;26146:17;26133:9;:30;;;;26202:2;26184:15;:20;;;;26238:15;;26223:12;:30;;;;26293:2;26274:16;:21;;;;26330:16;;26314:13;:32;;;;25979:1133;;;26400:10;;26387;;:23;;;;:::i;:::-;26375:8;:36;:66;;;;;26440:1;26427:10;;:14;;;;:::i;:::-;26415:8;:26;;26375:66;26372:740;;;26501:17;26477:20;:41;;;;26550:17;26537:9;:30;;;;26606:2;26588:15;:20;;;;26642:15;;26627:12;:30;;;;26697:2;26678:16;:21;;;;26734:16;;26718:13;:32;;;;26372:740;;;26847:17;26823:20;:41;;;;26896:17;26883:9;:30;;;;26952:1;26934:15;:19;;;;26987:15;;26972:12;:30;;;;27042:1;27023:16;:20;;;;27078:16;;27062:13;:32;;;;26372:740;25979:1133;27137:13;;;;;;;;;;;27132:223;;27209:19;:25;27229:4;27209:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;27238:19;:23;27258:2;27238:23;;;;;;;;;;;;;;;;;;;;;;;;;27209:52;27175:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;27132:223;27429:25;:31;27455:4;27429:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;27486:31;:35;27518:2;27486:35;;;;;;;;;;;;;;;;;;;;;;;;;27485:36;27429:92;27403:1147;;;27608:20;;27598:6;:30;;27564:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;27816:9;;27799:13;27809:2;27799:9;:13::i;:::-;27790:6;:22;;;;:::i;:::-;:35;;27756:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;27403:1147;;;27994:25;:29;28020:2;27994:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;28049:31;:37;28081:4;28049:37;;;;;;;;;;;;;;;;;;;;;;;;;28048:38;27994:92;27968:582;;;28173:20;;28163:6;:30;;28129:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;27968:582;;;28330:31;:35;28362:2;28330:35;;;;;;;;;;;;;;;;;;;;;;;;;28325:225;;28450:9;;28433:13;28443:2;28433:9;:13::i;:::-;28424:6;:22;;;;:::i;:::-;:35;;28390:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;28325:225;27968:582;27403:1147;25766:2799;25731:2845;28588:28;28619:24;28637:4;28619:9;:24::i;:::-;28588:55;;28656:12;28695:18;;28671:20;:42;;28656:57;;28744:7;:35;;;;;28768:11;;;;;;;;;;;28744:35;:61;;;;;28797:8;;;;;;;;;;;28796:9;28744:61;:105;;;;;28847:1;28823:11;:21;28835:8;28823:21;;;;;;;;;;;;:25;28744:105;:154;;;;;28867:25;:31;28893:4;28867:31;;;;;;;;;;;;;;;;;;;;;;;;;28866:32;28744:154;:197;;;;;28916:19;:25;28936:4;28916:25;;;;;;;;;;;;;;;;;;;;;;;;;28915:26;28744:197;:238;;;;;28959:19;:23;28979:2;28959:23;;;;;;;;;;;;;;;;;;;;;;;;;28958:24;28744:238;28726:410;;;29020:4;29009:8;;:15;;;;;;;;;;;;;;;;;;29041:10;:8;:10::i;:::-;29070:11;:21;29082:8;29070:21;;;;;;;;;;;;29068:23;;;;;:::i;:::-;;;;;;;;29119:5;29108:8;;:16;;;;;;;;;;;;;;;;;;28726:410;29148:12;29164:8;;;;;;;;;;;29163:9;29148:24;;29274:19;:25;29294:4;29274:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;29303:19;:23;29323:2;29303:23;;;;;;;;;;;;;;;;;;;;;;;;;29274:52;29270:100;;;29353:5;29343:15;;29270:100;29382:12;29487:7;29483:507;;;29539:25;:29;29565:2;29539:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;29588:1;29572:13;;:17;29539:50;29535:306;;;29617:34;29647:3;29617:25;29628:13;;29617:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;29610:41;;29535:306;;;29713:25;:31;29739:4;29713:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;29763:1;29748:12;;:16;29713:51;29709:132;;;29792:33;29821:3;29792:24;29803:12;;29792:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;29785:40;;29709:132;29535:306;29868:1;29861:4;:8;29857:91;;;29890:42;29906:4;29920;29927;29890:15;:42::i;:::-;29857:91;29974:4;29964:14;;;;;:::i;:::-;;;29483:507;30002:33;30018:4;30024:2;30028:6;30002:15;:33::i;:::-;25415:4628;;;;;25302:4741;;;;:::o;4403:191::-;4477:16;4496:6;;;;;;;;;;;4477:25;;4522:8;4513:6;;:17;;;;;;;;;;;;;;;;;;4577:8;4546:40;;4567:8;4546:40;;;;;;;;;;;;4466:128;4403:191;:::o;30705:589::-;30831:21;30869:1;30855:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30831:40;;30900:4;30882;30887:1;30882:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;30926:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30916:4;30921:1;30916:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;30961:62;30978:4;30993:15;31011:11;30961:8;:62::i;:::-;31062:15;:66;;;31143:11;31169:1;31213:4;31240;31260:15;31062:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30760:534;30705:589;:::o;24001:188::-;24118:5;24084:25;:31;24110:4;24084:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;24175:5;24141:40;;24169:4;24141:40;;;;;;;;;;;;24001:188;;:::o;8198:733::-;8356:1;8338:20;;:6;:20;;;8330:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;8440:1;8419:23;;:9;:23;;;8411:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8495:47;8516:6;8524:9;8535:6;8495:20;:47::i;:::-;8555:21;8579:9;:17;8589:6;8579:17;;;;;;;;;;;;;;;;8555:41;;8632:6;8615:13;:23;;8607:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;8753:6;8737:13;:22;8717:9;:17;8727:6;8717:17;;;;;;;;;;;;;;;:42;;;;8805:6;8781:9;:20;8791:9;8781:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;8846:9;8829:35;;8838:6;8829:35;;;8857:6;8829:35;;;;;;:::i;:::-;;;;;;;;8877:46;8897:6;8905:9;8916:6;8877:19;:46::i;:::-;8319:612;8198:733;;;:::o;30051:540::-;30090:23;30116:24;30134:4;30116:9;:24::i;:::-;30090:50;;30151:12;30199:1;30180:15;:20;30176:59;;30217:7;;;;30176:59;30290:2;30269:18;;:23;;;;:::i;:::-;30251:15;:41;30247:115;;;30348:2;30327:18;;:23;;;;:::i;:::-;30309:41;;30247:115;30376:26;30405:15;30376:44;;30433:36;30450:18;30433:16;:36::i;:::-;30504:15;;;;;;;;;;;30496:29;;30547:21;30496:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30482:101;;;;;30079:512;;;30051:540;:::o;11951:98::-;12009:7;12040:1;12036;:5;;;;:::i;:::-;12029:12;;11951:98;;;;:::o;12057:::-;12115:7;12146:1;12142;:5;;;;:::i;:::-;12135:12;;12057:98;;;;:::o;10333:125::-;;;;:::o;10466:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:329::-;3857:6;3906:2;3894:9;3885:7;3881:23;3877:32;3874:119;;;3912:79;;:::i;:::-;3874:119;4032:1;4057:53;4102:7;4093:6;4082:9;4078:22;4057:53;:::i;:::-;4047:63;;4003:117;3798:329;;;;:::o;4133:60::-;4161:3;4182:5;4175:12;;4133:60;;;:::o;4199:142::-;4249:9;4282:53;4300:34;4309:24;4327:5;4309:24;:::i;:::-;4300:34;:::i;:::-;4282:53;:::i;:::-;4269:66;;4199:142;;;:::o;4347:126::-;4397:9;4430:37;4461:5;4430:37;:::i;:::-;4417:50;;4347:126;;;:::o;4479:153::-;4556:9;4589:37;4620:5;4589:37;:::i;:::-;4576:50;;4479:153;;;:::o;4638:185::-;4752:64;4810:5;4752:64;:::i;:::-;4747:3;4740:77;4638:185;;:::o;4829:276::-;4949:4;4987:2;4976:9;4972:18;4964:26;;5000:98;5095:1;5084:9;5080:17;5071:6;5000:98;:::i;:::-;4829:276;;;;:::o;5111:118::-;5198:24;5216:5;5198:24;:::i;:::-;5193:3;5186:37;5111:118;;:::o;5235:222::-;5328:4;5366:2;5355:9;5351:18;5343:26;;5379:71;5447:1;5436:9;5432:17;5423:6;5379:71;:::i;:::-;5235:222;;;;:::o;5463:329::-;5522:6;5571:2;5559:9;5550:7;5546:23;5542:32;5539:119;;;5577:79;;:::i;:::-;5539:119;5697:1;5722:53;5767:7;5758:6;5747:9;5743:22;5722:53;:::i;:::-;5712:63;;5668:117;5463:329;;;;:::o;5798:619::-;5875:6;5883;5891;5940:2;5928:9;5919:7;5915:23;5911:32;5908:119;;;5946:79;;:::i;:::-;5908:119;6066:1;6091:53;6136:7;6127:6;6116:9;6112:22;6091:53;:::i;:::-;6081:63;;6037:117;6193:2;6219:53;6264:7;6255:6;6244:9;6240:22;6219:53;:::i;:::-;6209:63;;6164:118;6321:2;6347:53;6392:7;6383:6;6372:9;6368:22;6347:53;:::i;:::-;6337:63;;6292:118;5798:619;;;;;:::o;6423:86::-;6458:7;6498:4;6491:5;6487:16;6476:27;;6423:86;;;:::o;6515:112::-;6598:22;6614:5;6598:22;:::i;:::-;6593:3;6586:35;6515:112;;:::o;6633:214::-;6722:4;6760:2;6749:9;6745:18;6737:26;;6773:67;6837:1;6826:9;6822:17;6813:6;6773:67;:::i;:::-;6633:214;;;;:::o;6853:117::-;6962:1;6959;6952:12;6976:117;7085:1;7082;7075:12;7099:117;7208:1;7205;7198:12;7239:568;7312:8;7322:6;7372:3;7365:4;7357:6;7353:17;7349:27;7339:122;;7380:79;;:::i;:::-;7339:122;7493:6;7480:20;7470:30;;7523:18;7515:6;7512:30;7509:117;;;7545:79;;:::i;:::-;7509:117;7659:4;7651:6;7647:17;7635:29;;7713:3;7705:4;7697:6;7693:17;7683:8;7679:32;7676:41;7673:128;;;7720:79;;:::i;:::-;7673:128;7239:568;;;;;:::o;7830:::-;7903:8;7913:6;7963:3;7956:4;7948:6;7944:17;7940:27;7930:122;;7971:79;;:::i;:::-;7930:122;8084:6;8071:20;8061:30;;8114:18;8106:6;8103:30;8100:117;;;8136:79;;:::i;:::-;8100:117;8250:4;8242:6;8238:17;8226:29;;8304:3;8296:4;8288:6;8284:17;8274:8;8270:32;8267:41;8264:128;;;8311:79;;:::i;:::-;8264:128;7830:568;;;;;:::o;8404:934::-;8526:6;8534;8542;8550;8599:2;8587:9;8578:7;8574:23;8570:32;8567:119;;;8605:79;;:::i;:::-;8567:119;8753:1;8742:9;8738:17;8725:31;8783:18;8775:6;8772:30;8769:117;;;8805:79;;:::i;:::-;8769:117;8918:80;8990:7;8981:6;8970:9;8966:22;8918:80;:::i;:::-;8900:98;;;;8696:312;9075:2;9064:9;9060:18;9047:32;9106:18;9098:6;9095:30;9092:117;;;9128:79;;:::i;:::-;9092:117;9241:80;9313:7;9304:6;9293:9;9289:22;9241:80;:::i;:::-;9223:98;;;;9018:313;8404:934;;;;;;;:::o;9344:116::-;9414:21;9429:5;9414:21;:::i;:::-;9407:5;9404:32;9394:60;;9450:1;9447;9440:12;9394:60;9344:116;:::o;9466:133::-;9509:5;9547:6;9534:20;9525:29;;9563:30;9587:5;9563:30;:::i;:::-;9466:133;;;;:::o;9605:468::-;9670:6;9678;9727:2;9715:9;9706:7;9702:23;9698:32;9695:119;;;9733:79;;:::i;:::-;9695:119;9853:1;9878:53;9923:7;9914:6;9903:9;9899:22;9878:53;:::i;:::-;9868:63;;9824:117;9980:2;10006:50;10048:7;10039:6;10028:9;10024:22;10006:50;:::i;:::-;9996:60;;9951:115;9605:468;;;;;:::o;10079:323::-;10135:6;10184:2;10172:9;10163:7;10159:23;10155:32;10152:119;;;10190:79;;:::i;:::-;10152:119;10310:1;10335:50;10377:7;10368:6;10357:9;10353:22;10335:50;:::i;:::-;10325:60;;10281:114;10079:323;;;;:::o;10408:474::-;10476:6;10484;10533:2;10521:9;10512:7;10508:23;10504:32;10501:119;;;10539:79;;:::i;:::-;10501:119;10659:1;10684:53;10729:7;10720:6;10709:9;10705:22;10684:53;:::i;:::-;10674:63;;10630:117;10786:2;10812:53;10857:7;10848:6;10837:9;10833:22;10812:53;:::i;:::-;10802:63;;10757:118;10408:474;;;;;:::o;10888:180::-;10936:77;10933:1;10926:88;11033:4;11030:1;11023:15;11057:4;11054:1;11047:15;11074:320;11118:6;11155:1;11149:4;11145:12;11135:22;;11202:1;11196:4;11192:12;11223:18;11213:81;;11279:4;11271:6;11267:17;11257:27;;11213:81;11341:2;11333:6;11330:14;11310:18;11307:38;11304:84;;11360:18;;:::i;:::-;11304:84;11125:269;11074:320;;;:::o;11400:182::-;11540:34;11536:1;11528:6;11524:14;11517:58;11400:182;:::o;11588:366::-;11730:3;11751:67;11815:2;11810:3;11751:67;:::i;:::-;11744:74;;11827:93;11916:3;11827:93;:::i;:::-;11945:2;11940:3;11936:12;11929:19;;11588:366;;;:::o;11960:419::-;12126:4;12164:2;12153:9;12149:18;12141:26;;12213:9;12207:4;12203:20;12199:1;12188:9;12184:17;12177:47;12241:131;12367:4;12241:131;:::i;:::-;12233:139;;11960:419;;;:::o;12385:180::-;12433:77;12430:1;12423:88;12530:4;12527:1;12520:15;12554:4;12551:1;12544:15;12571:410;12611:7;12634:20;12652:1;12634:20;:::i;:::-;12629:25;;12668:20;12686:1;12668:20;:::i;:::-;12663:25;;12723:1;12720;12716:9;12745:30;12763:11;12745:30;:::i;:::-;12734:41;;12924:1;12915:7;12911:15;12908:1;12905:22;12885:1;12878:9;12858:83;12835:139;;12954:18;;:::i;:::-;12835:139;12619:362;12571:410;;;;:::o;12987:180::-;13035:77;13032:1;13025:88;13132:4;13129:1;13122:15;13156:4;13153:1;13146:15;13173:185;13213:1;13230:20;13248:1;13230:20;:::i;:::-;13225:25;;13264:20;13282:1;13264:20;:::i;:::-;13259:25;;13303:1;13293:35;;13308:18;;:::i;:::-;13293:35;13350:1;13347;13343:9;13338:14;;13173:185;;;;:::o;13364:234::-;13504:34;13500:1;13492:6;13488:14;13481:58;13573:17;13568:2;13560:6;13556:15;13549:42;13364:234;:::o;13604:366::-;13746:3;13767:67;13831:2;13826:3;13767:67;:::i;:::-;13760:74;;13843:93;13932:3;13843:93;:::i;:::-;13961:2;13956:3;13952:12;13945:19;;13604:366;;;:::o;13976:419::-;14142:4;14180:2;14169:9;14165:18;14157:26;;14229:9;14223:4;14219:20;14215:1;14204:9;14200:17;14193:47;14257:131;14383:4;14257:131;:::i;:::-;14249:139;;13976:419;;;:::o;14401:227::-;14541:34;14537:1;14529:6;14525:14;14518:58;14610:10;14605:2;14597:6;14593:15;14586:35;14401:227;:::o;14634:366::-;14776:3;14797:67;14861:2;14856:3;14797:67;:::i;:::-;14790:74;;14873:93;14962:3;14873:93;:::i;:::-;14991:2;14986:3;14982:12;14975:19;;14634:366;;;:::o;15006:419::-;15172:4;15210:2;15199:9;15195:18;15187:26;;15259:9;15253:4;15249:20;15245:1;15234:9;15230:17;15223:47;15287:131;15413:4;15287:131;:::i;:::-;15279:139;;15006:419;;;:::o;15431:191::-;15471:3;15490:20;15508:1;15490:20;:::i;:::-;15485:25;;15524:20;15542:1;15524:20;:::i;:::-;15519:25;;15567:1;15564;15560:9;15553:16;;15588:3;15585:1;15582:10;15579:36;;;15595:18;;:::i;:::-;15579:36;15431:191;;;;:::o;15628:180::-;15676:77;15673:1;15666:88;15773:4;15770:1;15763:15;15797:4;15794:1;15787:15;15814:233;15853:3;15876:24;15894:5;15876:24;:::i;:::-;15867:33;;15922:66;15915:5;15912:77;15909:103;;15992:18;;:::i;:::-;15909:103;16039:1;16032:5;16028:13;16021:20;;15814:233;;;:::o;16053:147::-;16154:11;16191:3;16176:18;;16053:147;;;;:::o;16206:114::-;;:::o;16326:398::-;16485:3;16506:83;16587:1;16582:3;16506:83;:::i;:::-;16499:90;;16598:93;16687:3;16598:93;:::i;:::-;16716:1;16711:3;16707:11;16700:18;;16326:398;;;:::o;16730:379::-;16914:3;16936:147;17079:3;16936:147;:::i;:::-;16929:154;;17100:3;17093:10;;16730:379;;;:::o;17115:178::-;17255:30;17251:1;17243:6;17239:14;17232:54;17115:178;:::o;17299:366::-;17441:3;17462:67;17526:2;17521:3;17462:67;:::i;:::-;17455:74;;17538:93;17627:3;17538:93;:::i;:::-;17656:2;17651:3;17647:12;17640:19;;17299:366;;;:::o;17671:419::-;17837:4;17875:2;17864:9;17860:18;17852:26;;17924:9;17918:4;17914:20;17910:1;17899:9;17895:17;17888:47;17952:131;18078:4;17952:131;:::i;:::-;17944:139;;17671:419;;;:::o;18096:162::-;18236:14;18232:1;18224:6;18220:14;18213:38;18096:162;:::o;18264:366::-;18406:3;18427:67;18491:2;18486:3;18427:67;:::i;:::-;18420:74;;18503:93;18592:3;18503:93;:::i;:::-;18621:2;18616:3;18612:12;18605:19;;18264:366;;;:::o;18636:419::-;18802:4;18840:2;18829:9;18825:18;18817:26;;18889:9;18883:4;18879:20;18875:1;18864:9;18860:17;18853:47;18917:131;19043:4;18917:131;:::i;:::-;18909:139;;18636:419;;;:::o;19061:244::-;19201:34;19197:1;19189:6;19185:14;19178:58;19270:27;19265:2;19257:6;19253:15;19246:52;19061:244;:::o;19311:366::-;19453:3;19474:67;19538:2;19533:3;19474:67;:::i;:::-;19467:74;;19550:93;19639:3;19550:93;:::i;:::-;19668:2;19663:3;19659:12;19652:19;;19311:366;;;:::o;19683:419::-;19849:4;19887:2;19876:9;19872:18;19864:26;;19936:9;19930:4;19926:20;19922:1;19911:9;19907:17;19900:47;19964:131;20090:4;19964:131;:::i;:::-;19956:139;;19683:419;;;:::o;20108:224::-;20248:34;20244:1;20236:6;20232:14;20225:58;20317:7;20312:2;20304:6;20300:15;20293:32;20108:224;:::o;20338:366::-;20480:3;20501:67;20565:2;20560:3;20501:67;:::i;:::-;20494:74;;20577:93;20666:3;20577:93;:::i;:::-;20695:2;20690:3;20686:12;20679:19;;20338:366;;;:::o;20710:419::-;20876:4;20914:2;20903:9;20899:18;20891:26;;20963:9;20957:4;20953:20;20949:1;20938:9;20934:17;20927:47;20991:131;21117:4;20991:131;:::i;:::-;20983:139;;20710:419;;;:::o;21135:223::-;21275:34;21271:1;21263:6;21259:14;21252:58;21344:6;21339:2;21331:6;21327:15;21320:31;21135:223;:::o;21364:366::-;21506:3;21527:67;21591:2;21586:3;21527:67;:::i;:::-;21520:74;;21603:93;21692:3;21603:93;:::i;:::-;21721:2;21716:3;21712:12;21705:19;;21364:366;;;:::o;21736:419::-;21902:4;21940:2;21929:9;21925:18;21917:26;;21989:9;21983:4;21979:20;21975:1;21964:9;21960:17;21953:47;22017:131;22143:4;22017:131;:::i;:::-;22009:139;;21736:419;;;:::o;22161:240::-;22301:34;22297:1;22289:6;22285:14;22278:58;22370:23;22365:2;22357:6;22353:15;22346:48;22161:240;:::o;22407:366::-;22549:3;22570:67;22634:2;22629:3;22570:67;:::i;:::-;22563:74;;22646:93;22735:3;22646:93;:::i;:::-;22764:2;22759:3;22755:12;22748:19;;22407:366;;;:::o;22779:419::-;22945:4;22983:2;22972:9;22968:18;22960:26;;23032:9;23026:4;23022:20;23018:1;23007:9;23003:17;22996:47;23060:131;23186:4;23060:131;:::i;:::-;23052:139;;22779:419;;;:::o;23204:239::-;23344:34;23340:1;23332:6;23328:14;23321:58;23413:22;23408:2;23400:6;23396:15;23389:47;23204:239;:::o;23449:366::-;23591:3;23612:67;23676:2;23671:3;23612:67;:::i;:::-;23605:74;;23688:93;23777:3;23688:93;:::i;:::-;23806:2;23801:3;23797:12;23790:19;;23449:366;;;:::o;23821:419::-;23987:4;24025:2;24014:9;24010:18;24002:26;;24074:9;24068:4;24064:20;24060:1;24049:9;24045:17;24038:47;24102:131;24228:4;24102:131;:::i;:::-;24094:139;;23821:419;;;:::o;24246:225::-;24386:34;24382:1;24374:6;24370:14;24363:58;24455:8;24450:2;24442:6;24438:15;24431:33;24246:225;:::o;24477:366::-;24619:3;24640:67;24704:2;24699:3;24640:67;:::i;:::-;24633:74;;24716:93;24805:3;24716:93;:::i;:::-;24834:2;24829:3;24825:12;24818:19;;24477:366;;;:::o;24849:419::-;25015:4;25053:2;25042:9;25038:18;25030:26;;25102:9;25096:4;25092:20;25088:1;25077:9;25073:17;25066:47;25130:131;25256:4;25130:131;:::i;:::-;25122:139;;24849:419;;;:::o;25274:223::-;25414:34;25410:1;25402:6;25398:14;25391:58;25483:6;25478:2;25470:6;25466:15;25459:31;25274:223;:::o;25503:366::-;25645:3;25666:67;25730:2;25725:3;25666:67;:::i;:::-;25659:74;;25742:93;25831:3;25742:93;:::i;:::-;25860:2;25855:3;25851:12;25844:19;;25503:366;;;:::o;25875:419::-;26041:4;26079:2;26068:9;26064:18;26056:26;;26128:9;26122:4;26118:20;26114:1;26103:9;26099:17;26092:47;26156:131;26282:4;26156:131;:::i;:::-;26148:139;;25875:419;;;:::o;26300:221::-;26440:34;26436:1;26428:6;26424:14;26417:58;26509:4;26504:2;26496:6;26492:15;26485:29;26300:221;:::o;26527:366::-;26669:3;26690:67;26754:2;26749:3;26690:67;:::i;:::-;26683:74;;26766:93;26855:3;26766:93;:::i;:::-;26884:2;26879:3;26875:12;26868:19;;26527:366;;;:::o;26899:419::-;27065:4;27103:2;27092:9;27088:18;27080:26;;27152:9;27146:4;27142:20;27138:1;27127:9;27123:17;27116:47;27180:131;27306:4;27180:131;:::i;:::-;27172:139;;26899:419;;;:::o;27324:224::-;27464:34;27460:1;27452:6;27448:14;27441:58;27533:7;27528:2;27520:6;27516:15;27509:32;27324:224;:::o;27554:366::-;27696:3;27717:67;27781:2;27776:3;27717:67;:::i;:::-;27710:74;;27793:93;27882:3;27793:93;:::i;:::-;27911:2;27906:3;27902:12;27895:19;;27554:366;;;:::o;27926:419::-;28092:4;28130:2;28119:9;28115:18;28107:26;;28179:9;28173:4;28169:20;28165:1;28154:9;28150:17;28143:47;28207:131;28333:4;28207:131;:::i;:::-;28199:139;;27926:419;;;:::o;28351:222::-;28491:34;28487:1;28479:6;28475:14;28468:58;28560:5;28555:2;28547:6;28543:15;28536:30;28351:222;:::o;28579:366::-;28721:3;28742:67;28806:2;28801:3;28742:67;:::i;:::-;28735:74;;28818:93;28907:3;28818:93;:::i;:::-;28936:2;28931:3;28927:12;28920:19;;28579:366;;;:::o;28951:419::-;29117:4;29155:2;29144:9;29140:18;29132:26;;29204:9;29198:4;29194:20;29190:1;29179:9;29175:17;29168:47;29232:131;29358:4;29232:131;:::i;:::-;29224:139;;28951:419;;;:::o;29376:172::-;29516:24;29512:1;29504:6;29500:14;29493:48;29376:172;:::o;29554:366::-;29696:3;29717:67;29781:2;29776:3;29717:67;:::i;:::-;29710:74;;29793:93;29882:3;29793:93;:::i;:::-;29911:2;29906:3;29902:12;29895:19;;29554:366;;;:::o;29926:419::-;30092:4;30130:2;30119:9;30115:18;30107:26;;30179:9;30173:4;30169:20;30165:1;30154:9;30150:17;30143:47;30207:131;30333:4;30207:131;:::i;:::-;30199:139;;29926:419;;;:::o;30351:240::-;30491:34;30487:1;30479:6;30475:14;30468:58;30560:23;30555:2;30547:6;30543:15;30536:48;30351:240;:::o;30597:366::-;30739:3;30760:67;30824:2;30819:3;30760:67;:::i;:::-;30753:74;;30836:93;30925:3;30836:93;:::i;:::-;30954:2;30949:3;30945:12;30938:19;;30597:366;;;:::o;30969:419::-;31135:4;31173:2;31162:9;31158:18;31150:26;;31222:9;31216:4;31212:20;31208:1;31197:9;31193:17;31186:47;31250:131;31376:4;31250:131;:::i;:::-;31242:139;;30969:419;;;:::o;31394:169::-;31534:21;31530:1;31522:6;31518:14;31511:45;31394:169;:::o;31569:366::-;31711:3;31732:67;31796:2;31791:3;31732:67;:::i;:::-;31725:74;;31808:93;31897:3;31808:93;:::i;:::-;31926:2;31921:3;31917:12;31910:19;;31569:366;;;:::o;31941:419::-;32107:4;32145:2;32134:9;32130:18;32122:26;;32194:9;32188:4;32184:20;32180:1;32169:9;32165:17;32158:47;32222:131;32348:4;32222:131;:::i;:::-;32214:139;;31941:419;;;:::o;32366:241::-;32506:34;32502:1;32494:6;32490:14;32483:58;32575:24;32570:2;32562:6;32558:15;32551:49;32366:241;:::o;32613:366::-;32755:3;32776:67;32840:2;32835:3;32776:67;:::i;:::-;32769:74;;32852:93;32941:3;32852:93;:::i;:::-;32970:2;32965:3;32961:12;32954:19;;32613:366;;;:::o;32985:419::-;33151:4;33189:2;33178:9;33174:18;33166:26;;33238:9;33232:4;33228:20;33224:1;33213:9;33209:17;33202:47;33266:131;33392:4;33266:131;:::i;:::-;33258:139;;32985:419;;;:::o;33410:194::-;33450:4;33470:20;33488:1;33470:20;:::i;:::-;33465:25;;33504:20;33522:1;33504:20;:::i;:::-;33499:25;;33548:1;33545;33541:9;33533:17;;33572:1;33566:4;33563:11;33560:37;;;33577:18;;:::i;:::-;33560:37;33410:194;;;;:::o;33610:180::-;33658:77;33655:1;33648:88;33755:4;33752:1;33745:15;33779:4;33776:1;33769:15;33796:143;33853:5;33884:6;33878:13;33869:22;;33900:33;33927:5;33900:33;:::i;:::-;33796:143;;;;:::o;33945:351::-;34015:6;34064:2;34052:9;34043:7;34039:23;34035:32;34032:119;;;34070:79;;:::i;:::-;34032:119;34190:1;34215:64;34271:7;34262:6;34251:9;34247:22;34215:64;:::i;:::-;34205:74;;34161:128;33945:351;;;;:::o;34302:85::-;34347:7;34376:5;34365:16;;34302:85;;;:::o;34393:158::-;34451:9;34484:61;34502:42;34511:32;34537:5;34511:32;:::i;:::-;34502:42;:::i;:::-;34484:61;:::i;:::-;34471:74;;34393:158;;;:::o;34557:147::-;34652:45;34691:5;34652:45;:::i;:::-;34647:3;34640:58;34557:147;;:::o;34710:114::-;34777:6;34811:5;34805:12;34795:22;;34710:114;;;:::o;34830:184::-;34929:11;34963:6;34958:3;34951:19;35003:4;34998:3;34994:14;34979:29;;34830:184;;;;:::o;35020:132::-;35087:4;35110:3;35102:11;;35140:4;35135:3;35131:14;35123:22;;35020:132;;;:::o;35158:108::-;35235:24;35253:5;35235:24;:::i;:::-;35230:3;35223:37;35158:108;;:::o;35272:179::-;35341:10;35362:46;35404:3;35396:6;35362:46;:::i;:::-;35440:4;35435:3;35431:14;35417:28;;35272:179;;;;:::o;35457:113::-;35527:4;35559;35554:3;35550:14;35542:22;;35457:113;;;:::o;35606:732::-;35725:3;35754:54;35802:5;35754:54;:::i;:::-;35824:86;35903:6;35898:3;35824:86;:::i;:::-;35817:93;;35934:56;35984:5;35934:56;:::i;:::-;36013:7;36044:1;36029:284;36054:6;36051:1;36048:13;36029:284;;;36130:6;36124:13;36157:63;36216:3;36201:13;36157:63;:::i;:::-;36150:70;;36243:60;36296:6;36243:60;:::i;:::-;36233:70;;36089:224;36076:1;36073;36069:9;36064:14;;36029:284;;;36033:14;36329:3;36322:10;;35730:608;;;35606:732;;;;:::o;36344:831::-;36607:4;36645:3;36634:9;36630:19;36622:27;;36659:71;36727:1;36716:9;36712:17;36703:6;36659:71;:::i;:::-;36740:80;36816:2;36805:9;36801:18;36792:6;36740:80;:::i;:::-;36867:9;36861:4;36857:20;36852:2;36841:9;36837:18;36830:48;36895:108;36998:4;36989:6;36895:108;:::i;:::-;36887:116;;37013:72;37081:2;37070:9;37066:18;37057:6;37013:72;:::i;:::-;37095:73;37163:3;37152:9;37148:19;37139:6;37095:73;:::i;:::-;36344:831;;;;;;;;:::o;37181:225::-;37321:34;37317:1;37309:6;37305:14;37298:58;37390:8;37385:2;37377:6;37373:15;37366:33;37181:225;:::o;37412:366::-;37554:3;37575:67;37639:2;37634:3;37575:67;:::i;:::-;37568:74;;37651:93;37740:3;37651:93;:::i;:::-;37769:2;37764:3;37760:12;37753:19;;37412:366;;;:::o;37784:419::-;37950:4;37988:2;37977:9;37973:18;37965:26;;38037:9;38031:4;38027:20;38023:1;38012:9;38008:17;38001:47;38065:131;38191:4;38065:131;:::i;:::-;38057:139;;37784:419;;;:::o

Swarm Source

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