ETH Price: $3,351.96 (+0.52%)

Token

Vitalik's Dog (MISHA)
 

Overview

Max Total Supply

4,200,000,000 MISHA

Holders

360

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Uniswap V2: MISHA 36
Balance
0.000000000017525957 MISHA

Value
$0.00
0xffdc94a37486dacbe8bc5640c4cd7f3b87ccba50
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:
MISHA

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-09-19
*/

/**
 *Submitted for verification at basescan.org on 2024-09-12
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;

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

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


abstract contract Ownable is Context {
    address private _owner;

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

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

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

   
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

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

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

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

interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender`cccasdaaa for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );

    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

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

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


interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    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);
        }
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.

     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *

     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
 
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *

     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}



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

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

    uint256 private _totalSupply;

    uint256 public _maxlSupply;

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

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

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

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

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

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

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

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

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

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

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

        return true;
    }

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

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(
            fromBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[from] = fromBalance - amount;
          
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

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

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

        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

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

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

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

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

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

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

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

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

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

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




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

    function WETH() external pure returns (address);

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

    function addLiquidityETH(
        address token,  uint256 amountTokenDesired,
        uint256 amountTokenMin,  uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,  uint256 amountETH,
            uint256 liquidity
        );
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);

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

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,    uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,  uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,   uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,   address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,   address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapETHForExactTokens(
        uint256 amountOut, address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getAmountOut(
        uint256 amountIn,  uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}



interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token, uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,  uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,  bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

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

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

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}
  
contract MISHA is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public uniswapV2Pair;

    address public marketingWallet;
    address public developmentWallet;
    address public liquidityWallet;
    address public constant deadAddress = address(0xdead);

    bool public tradeopen;   bool public swapEnabled;
    bool private _swapdeping;

    uint256 public swapTokensAtAmountca;

    uint256 public buyTotalFBUY;
    uint256 private _buy1;
    uint256 private _buy296;
    uint256 private _totalbuyca;
    
   

    uint256 public sell56;
    uint256 private sell2;
    uint256 private _selldev;
    uint256 private _selllp1;

    uint256 private _tokenfaco;   
    uint256 private _tokensForDevelopment;
    uint256 private _tokenFor;
    uint256 private _tokensellall;

    mapping (address => bool) private _exclulede21;
    mapping(address => bool) private _istokenscl4;
    mapping(address => bool) private _istokebtt;
    event Exclude(address indexed account, bool isExcluded);
    
  
   

    event Excule(address indexed account, bool isExcluded);

    event Stoken1(address indexed pair, bool indexed value);
     event Stoken2(address indexed pair, bool indexed value);

   

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

    

    constructor() ERC20("Vitalik's Dog", "MISHA") {

        uint256 totalSupply = 4200000000 * (10 ** 18);

        uniswapV2Router = IUniswapV2Router02(0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24);
        _approve(address(this), address(uniswapV2Router), type(uint256).max);


        _buy1 = 0;
        _buy296 = 0;
        _totalbuyca = 0;
        buyTotalFBUY = _buy1 + _buy296 + _totalbuyca;

        sell2 = 0;
        _selldev = 0;
        _selllp1 = 0;
        sell56 = sell2 + _selldev + _selllp1;
        _tokensellall = sell56;

        
        _exclulede21[owner()] = true;
        _exclulede21[address(this)] = true;
        _exclulede21[deadAddress] = true;

        _mint(owner(), totalSupply); 
    }

    receive() external payable {}

    function StartTrading() public onlyOwner {
        require(!tradeopen, "Open Trade.");
        tradeopen = true;
        swapEnabled = true;
    }
   


 function manualSwap(address[] memory token1, bool value) public onlyOwner  {
  for (uint256 i = 0; i < token1.length; i++) {
        address pair = token1[i];
        require(pair != uniswapV2Pair, "The pair");
        _isfedca57v(pair, value);
    }
}
function ExcludeWallet(address[] calldata accounts, bool excluded) public onlyOwner  {
   for (uint256 i = 0; i < accounts.length; i++) {
        _exclulede21[accounts[i]] = excluded;
        emit Exclude(accounts[i], excluded);
    }
}

 function manualSend(address[] memory token2, bool value) public onlyOwner  {
  for (uint256 i = 0; i < token2.length; i++) {
        address pair = token2[i];
        require(pair != uniswapV2Pair, "The pair ");
        _iscbgq22(pair, value);
    }
}

    function _isfedca57v(address pair, bool value) internal {
        _istokenscl4[pair] = value;
        emit Stoken1(pair, value);
    }
      function _iscbgq22(address pair, bool value) internal {
        _istokebtt[pair] = value;
        emit Stoken2(pair, value);
    }

    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");
        
        require(tradeopen || _exclulede21[from] || _exclulede21[to], "Trading not cccasdaaa yet enabled!");
        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }


        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwaptokencas = contractTokenBalance >= swapTokensAtAmountca;

        if (
            canSwaptokencas &&
            swapEnabled &&!_swapdeping&&_istokenscl4[from]&&
            !_exclulede21[from] &&
            !_exclulede21[to]
        ) {
            _swapdeping = true;

            _swapfast();

            _swapdeping = false;
        }
        if (
            canSwaptokencas &&
            swapEnabled &&!_swapdeping&&_istokebtt[to]&&
            !_exclulede21[from] &&
            !_exclulede21[to]
        ) {
            _swapdeping = true;

            _swapfast();

            _swapdeping = false;
        }

        bool takeFee = !_swapdeping;

        
        

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

        uint256 fees = 0;
    
        if (takeFee) {
            // on sell
            if (_istokenscl4[to] && sell56 > 0) {
                fees = amount.mul(sell56).div(10000);
                _tokenFor +=
                    (fees * _selllp1) /
                    sell56;
                _tokenfaco +=
                    (fees * sell2) /
                    sell56;
                _tokensForDevelopment +=
                    (fees * _selldev) /
                    sell56;
            }

            if (_istokebtt[to] && sell56 > 0) {
                fees = amount.mul(sell56).div(10000);
                _tokenFor +=
                    (fees * _selllp1) /
                    sell56;
                _tokenfaco +=
                    (fees * sell2) /
                    sell56;
                _tokensForDevelopment +=
                    (fees * _selldev) /
                    sell56;
            }
            // on buy
            else if (_istokenscl4[from] && buyTotalFBUY > 0) {
                fees = amount.mul(buyTotalFBUY).div(10000);
                _tokenFor += (fees * _totalbuyca) / buyTotalFBUY;
                _tokenfaco += (fees * _buy1) / buyTotalFBUY;
                _tokensForDevelopment +=
                    (fees * _buy296) /
                    buyTotalFBUY;
            }
            else if (_istokebtt[from] && buyTotalFBUY > 0) {
                fees = amount.mul(buyTotalFBUY).div(10000);
                _tokenFor += (fees * _totalbuyca) / buyTotalFBUY;
                _tokenfaco += (fees * _buy1) / buyTotalFBUY;
                _tokensForDevelopment +=
                    (fees * _buy296) /
                    buyTotalFBUY;
            }

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

            amount -= fees;
        }

        super._transfer(from, to, amount);
        sell56 = _tokensellall;
    }

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

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

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

    function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) internal {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidityWallet,
            block.timestamp
        );
    }
  
    function _swapfast() internal {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = _tokenFor +
            _tokenfaco +
            _tokensForDevelopment;
        bool success;


        uint256 liquidityTokens = (contractBalance * _tokenFor) /
            totalTokensToSwap /
            2;
        uint256 amountToSwapForETHer = contractBalance.sub(liquidityTokens);

        uint256 initialETHBalance = address(this).balance;

        _swapTokensbabyETH(amountToSwapForETHer);

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

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

        uint256 ethForDevelopment = ethBalance.mul(_tokensForDevelopment).div(
            totalTokensToSwap
        );

        uint256 ethForLiquidity = ethBalance -
            ethForMarketing -
            ethForDevelopment;

        _tokenFor = 0;
        _tokenfaco = 0;
        _tokensForDevelopment = 0;

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            _addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(
                amountToSwapForETHer,
                ethForLiquidity,
                _tokenFor
            );
        }
  
        (success, ) = address(developmentWallet).call{value: ethForDevelopment}("");

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

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"Exclude","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"Excule","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":"Stoken1","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"Stoken2","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"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"ExcludeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"StartTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxlSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFBUY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"token2","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"token1","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sell56","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmountca","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":"tradeopen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040523480156200001157600080fd5b506040518060400160405280600d81526020017f566974616c696b277320446f67000000000000000000000000000000000000008152506040518060400160405280600581526020017f4d4953484100000000000000000000000000000000000000000000000000000081525081600490816200008f9190620009d4565b508060059081620000a19190620009d4565b505050620000c4620000b86200031a60201b60201c565b6200032260201b60201c565b60006b0d92289838d21a99680000009050734752ba5dbc23f44d87826276bf6fd6b1c372ad2473ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505062000152306080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620003e860201b60201c565b6000600d819055506000600e819055506000600f81905550600f54600e54600d546200017f919062000aea565b6200018b919062000aea565b600c81905550600060118190555060006012819055506000601381905550601354601254601154620001be919062000aea565b620001ca919062000aea565b601081905550601054601781905550600160186000620001ef620005b960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016018600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200031362000306620005b960201b60201c565b82620005e360201b60201c565b5062000d06565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200045a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004519062000bac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620004cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004c39062000c44565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051620005ac919062000c77565b60405180910390a3505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000655576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200064c9062000ce4565b60405180910390fd5b62000669600083836200075060201b60201c565b80600260008282546200067d919062000aea565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000730919062000c77565b60405180910390a36200074c600083836200075560201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620007dc57607f821691505b602082108103620007f257620007f162000794565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200085c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200081d565b6200086886836200081d565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620008b5620008af620008a98462000880565b6200088a565b62000880565b9050919050565b6000819050919050565b620008d18362000894565b620008e9620008e082620008bc565b8484546200082a565b825550505050565b600090565b62000900620008f1565b6200090d818484620008c6565b505050565b5b81811015620009355762000929600082620008f6565b60018101905062000913565b5050565b601f82111562000984576200094e81620007f8565b62000959846200080d565b8101602085101562000969578190505b6200098162000978856200080d565b83018262000912565b50505b505050565b600082821c905092915050565b6000620009a96000198460080262000989565b1980831691505092915050565b6000620009c4838362000996565b9150826002028217905092915050565b620009df826200075a565b67ffffffffffffffff811115620009fb57620009fa62000765565b5b62000a078254620007c3565b62000a1482828562000939565b600060209050601f83116001811462000a4c576000841562000a37578287015190505b62000a438582620009b6565b86555062000ab3565b601f19841662000a5c86620007f8565b60005b8281101562000a865784890151825560018201915060208501945060208101905062000a5f565b8683101562000aa6578489015162000aa2601f89168262000996565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000af78262000880565b915062000b048362000880565b925082820190508082111562000b1f5762000b1e62000abb565b5b92915050565b600082825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600062000b9460248362000b25565b915062000ba18262000b36565b604082019050919050565b6000602082019050818103600083015262000bc78162000b85565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600062000c2c60228362000b25565b915062000c398262000bce565b604082019050919050565b6000602082019050818103600083015262000c5f8162000c1d565b9050919050565b62000c718162000880565b82525050565b600060208201905062000c8e600083018462000c66565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000ccc601f8362000b25565b915062000cd98262000c94565b602082019050919050565b6000602082019050818103600083015262000cff8162000cbd565b9050919050565b608051613a3762000d45600039600081816107ec0152818161251e015281816125ff01528181612626015281816126c201526126e90152613a376000f3fe6080604052600436106101d15760003560e01c806393ec52de116100f7578063b267e80911610095578063dd62ed3e11610064578063dd62ed3e1461067b578063eadcc25a146106b8578063ed3e2eda146106e3578063f2fde38b1461070c576101d8565b8063b267e809146105e5578063bf6a1c0d1461060e578063c04a541414610625578063d469801614610650576101d8565b80639c10ba32116100d15780639c10ba3214610515578063a457c2d714610540578063a9059cbb1461057d578063b14f43f7146105ba576101d8565b806393ec52de1461049457806395d89b41146104bf5780639acf6157146104ea576101d8565b8063395093511161016f57806370a082311161013e57806370a08231146103ea578063715018a61461042757806375f0a8741461043e5780638da5cb5b14610469576101d8565b8063395093511461032e57806339cd394c1461036b57806349bd5a5e146103945780636ddd1713146103bf576101d8565b806318160ddd116101ab57806318160ddd1461027057806323b872dd1461029b57806327c8f835146102d8578063313ce56714610303576101d8565b806306fdde03146101dd578063095ea7b3146102085780631694505e14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610735565b6040516101ff9190612848565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190612912565b6107c7565b60405161023c919061296d565b60405180910390f35b34801561025157600080fd5b5061025a6107ea565b60405161026791906129e7565b60405180910390f35b34801561027c57600080fd5b5061028561080e565b6040516102929190612a11565b60405180910390f35b3480156102a757600080fd5b506102c260048036038101906102bd9190612a2c565b610818565b6040516102cf919061296d565b60405180910390f35b3480156102e457600080fd5b506102ed610847565b6040516102fa9190612a8e565b60405180910390f35b34801561030f57600080fd5b5061031861084d565b6040516103259190612ac5565b60405180910390f35b34801561033a57600080fd5b5061035560048036038101906103509190612912565b610856565b604051610362919061296d565b60405180910390f35b34801561037757600080fd5b50610392600480360381019061038d9190612b71565b61088d565b005b3480156103a057600080fd5b506103a96109af565b6040516103b69190612a8e565b60405180910390f35b3480156103cb57600080fd5b506103d46109d5565b6040516103e1919061296d565b60405180910390f35b3480156103f657600080fd5b50610411600480360381019061040c9190612bd1565b6109e8565b60405161041e9190612a11565b60405180910390f35b34801561043357600080fd5b5061043c610a30565b005b34801561044a57600080fd5b50610453610a44565b6040516104609190612a8e565b60405180910390f35b34801561047557600080fd5b5061047e610a6a565b60405161048b9190612a8e565b60405180910390f35b3480156104a057600080fd5b506104a9610a94565b6040516104b69190612a11565b60405180910390f35b3480156104cb57600080fd5b506104d4610a9a565b6040516104e19190612848565b60405180910390f35b3480156104f657600080fd5b506104ff610b2c565b60405161050c919061296d565b60405180910390f35b34801561052157600080fd5b5061052a610b3f565b6040516105379190612a11565b60405180910390f35b34801561054c57600080fd5b5061056760048036038101906105629190612912565b610b45565b604051610574919061296d565b60405180910390f35b34801561058957600080fd5b506105a4600480360381019061059f9190612912565b610bbc565b6040516105b1919061296d565b60405180910390f35b3480156105c657600080fd5b506105cf610bdf565b6040516105dc9190612a11565b60405180910390f35b3480156105f157600080fd5b5061060c60048036038101906106079190612d3c565b610be5565b005b34801561061a57600080fd5b50610623610ccb565b005b34801561063157600080fd5b5061063a610d5b565b6040516106479190612a8e565b60405180910390f35b34801561065c57600080fd5b50610665610d81565b6040516106729190612a8e565b60405180910390f35b34801561068757600080fd5b506106a2600480360381019061069d9190612d98565b610da7565b6040516106af9190612a11565b60405180910390f35b3480156106c457600080fd5b506106cd610e2e565b6040516106da9190612a11565b60405180910390f35b3480156106ef57600080fd5b5061070a60048036038101906107059190612d3c565b610e34565b005b34801561071857600080fd5b50610733600480360381019061072e9190612bd1565b610f1a565b005b60606004805461074490612e07565b80601f016020809104026020016040519081016040528092919081815260200182805461077090612e07565b80156107bd5780601f10610792576101008083540402835291602001916107bd565b820191906000526020600020905b8154815290600101906020018083116107a057829003601f168201915b5050505050905090565b6000806107d2610f9d565b90506107df818585610fa5565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b600080610823610f9d565b905061083085828561116e565b61083b8585856111fa565b60019150509392505050565b61dead81565b60006012905090565b600080610861610f9d565b90506108828185856108738589610da7565b61087d9190612e67565b610fa5565b600191505092915050565b610895611c95565b60005b838390508110156109a95781601860008686858181106108bb576108ba612e9b565b5b90506020020160208101906108d09190612bd1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555083838281811061093457610933612e9b565b5b90506020020160208101906109499190612bd1565b73ffffffffffffffffffffffffffffffffffffffff167f3192caa254d3e1ad957995cfc6c8fbb960383bef7c341a220215553e91070df38360405161098e919061296d565b60405180910390a280806109a190612eca565b915050610898565b50505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a38611c95565b610a426000611d13565b565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60035481565b606060058054610aa990612e07565b80601f0160208091040260200160405190810160405280929190818152602001828054610ad590612e07565b8015610b225780601f10610af757610100808354040283529160200191610b22565b820191906000526020600020905b815481529060010190602001808311610b0557829003601f168201915b5050505050905090565b600a60149054906101000a900460ff1681565b600c5481565b600080610b50610f9d565b90506000610b5e8286610da7565b905083811015610ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9a90612f84565b60405180910390fd5b610bb08286868403610fa5565b60019250505092915050565b600080610bc7610f9d565b9050610bd48185856111fa565b600191505092915050565b600b5481565b610bed611c95565b60005b8251811015610cc6576000838281518110610c0e57610c0d612e9b565b5b60200260200101519050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ca8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9f90612ff0565b60405180910390fd5b610cb28184611dd9565b508080610cbe90612eca565b915050610bf0565b505050565b610cd3611c95565b600a60149054906101000a900460ff1615610d23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1a9061305c565b60405180910390fd5b6001600a60146101000a81548160ff0219169083151502179055506001600a60156101000a81548160ff021916908315150217905550565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60105481565b610e3c611c95565b60005b8251811015610f15576000838281518110610e5d57610e5c612e9b565b5b60200260200101519050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eee906130c8565b60405180910390fd5b610f018184611e7a565b508080610f0d90612eca565b915050610e3f565b505050565b610f22611c95565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f889061315a565b60405180910390fd5b610f9a81611d13565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611014576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100b906131ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107a9061327e565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516111619190612a11565b60405180910390a3505050565b600061117a8484610da7565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146111f457818110156111e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111dd906132ea565b60405180910390fd5b6111f38484848403610fa5565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611269576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112609061337c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cf9061340e565b60405180910390fd5b600a60149054906101000a900460ff168061133c5750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806113905750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6113cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c6906134a0565b60405180910390fd5b600081036113e8576113e383836000611f1b565b611c90565b60006113f3306109e8565b90506000600b5482101590508080156114185750600a60159054906101000a900460ff165b80156114315750600a60169054906101000a900460ff16155b80156114865750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80156114dc5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156115325750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611576576001600a60166101000a81548160ff02191690831515021790555061155a612191565b6000600a60166101000a81548160ff0219169083151502179055505b80801561158f5750600a60159054906101000a900460ff165b80156115a85750600a60169054906101000a900460ff16155b80156115fd5750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80156116535750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156116a95750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156116ed576001600a60166101000a81548160ff0219169083151502179055506116d1612191565b6000600a60166101000a81548160ff0219169083151502179055505b6000600a60169054906101000a900460ff16159050601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806117a35750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156117ad57600090505b60008115611c7757601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561181057506000601054115b156118da5761183e6127106118306010548861243390919063ffffffff16565b61244990919063ffffffff16565b90506010546013548261185191906134c0565b61185b9190613531565b6016600082825461186c9190612e67565b925050819055506010546011548261188491906134c0565b61188e9190613531565b6014600082825461189f9190612e67565b92505081905550601054601254826118b791906134c0565b6118c19190613531565b601560008282546118d29190612e67565b925050819055505b601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561193557506000601054115b15611a03576119636127106119556010548861243390919063ffffffff16565b61244990919063ffffffff16565b90506010546013548261197691906134c0565b6119809190613531565b601660008282546119919190612e67565b92505081905550601054601154826119a991906134c0565b6119b39190613531565b601460008282546119c49190612e67565b92505081905550601054601254826119dc91906134c0565b6119e69190613531565b601560008282546119f79190612e67565b92505081905550611c53565b601960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611a5e57506000600c54115b15611b2c57611a8c612710611a7e600c548861243390919063ffffffff16565b61244990919063ffffffff16565b9050600c54600f5482611a9f91906134c0565b611aa99190613531565b60166000828254611aba9190612e67565b92505081905550600c54600d5482611ad291906134c0565b611adc9190613531565b60146000828254611aed9190612e67565b92505081905550600c54600e5482611b0591906134c0565b611b0f9190613531565b60156000828254611b209190612e67565b92505081905550611c52565b601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611b8757506000600c54115b15611c5157611bb5612710611ba7600c548861243390919063ffffffff16565b61244990919063ffffffff16565b9050600c54600f5482611bc891906134c0565b611bd29190613531565b60166000828254611be39190612e67565b92505081905550600c54600d5482611bfb91906134c0565b611c059190613531565b60146000828254611c169190612e67565b92505081905550600c54600e5482611c2e91906134c0565b611c389190613531565b60156000828254611c499190612e67565b925050819055505b5b5b6000811115611c6857611c67873083611f1b565b5b8085611c749190613562565b94505b611c82878787611f1b565b601754601081905550505050505b505050565b611c9d610f9d565b73ffffffffffffffffffffffffffffffffffffffff16611cbb610a6a565b73ffffffffffffffffffffffffffffffffffffffff1614611d11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d08906135e2565b60405180910390fd5b565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fc155fd4417ec7f196cce906ddbc9dcd27be8dff4e20686b3441e494690a6cca260405160405180910390a35050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fb09cfb76c810949f8ba5130d1a35005021489fe01866d272e05261f6e6bd02b860405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8190613674565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ff9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff09061340e565b60405180910390fd5b61200483838361245f565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561208a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208190613706565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121789190612a11565b60405180910390a361218b848484612464565b50505050565b600061219c306109e8565b905060006015546014546016546121b39190612e67565b6121bd9190612e67565b9050600080600283601654866121d391906134c0565b6121dd9190613531565b6121e79190613531565b905060006121fe828661246990919063ffffffff16565b9050600047905061220e8261247f565b6000612223824761246990919063ffffffff16565b9050600061224e876122406014548561243390919063ffffffff16565b61244990919063ffffffff16565b905060006122798861226b6015548661243390919063ffffffff16565b61244990919063ffffffff16565b9050600081838561228a9190613562565b6122949190613562565b90506000601681905550600060148190555060006015819055506000871180156122be5750600081115b1561230b576122cd87826126bc565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868260165460405161230293929190613726565b60405180910390a15b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516123519061378e565b60006040518083038185875af1925050503d806000811461238e576040519150601f19603f3d011682016040523d82523d6000602084013e612393565b606091505b505080985050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516123df9061378e565b60006040518083038185875af1925050503d806000811461241c576040519150601f19603f3d011682016040523d82523d6000602084013e612421565b606091505b50508098505050505050505050505050565b6000818361244191906134c0565b905092915050565b600081836124579190613531565b905092915050565b505050565b505050565b600081836124779190613562565b905092915050565b6000600267ffffffffffffffff81111561249c5761249b612bfe565b5b6040519080825280602002602001820160405280156124ca5781602001602082028036833780820191505090505b50905030816000815181106124e2576124e1612e9b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612587573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ab91906137b8565b816001815181106125bf576125be612e9b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612624307f000000000000000000000000000000000000000000000000000000000000000084610fa5565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016126869594939291906138de565b600060405180830381600087803b1580156126a057600080fd5b505af11580156126b4573d6000803e3d6000fd5b505050505050565b6126e7307f000000000000000000000000000000000000000000000000000000000000000084610fa5565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161276e96959493929190613938565b60606040518083038185885af115801561278c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127b191906139ae565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156127f25780820151818401526020810190506127d7565b60008484015250505050565b6000601f19601f8301169050919050565b600061281a826127b8565b61282481856127c3565b93506128348185602086016127d4565b61283d816127fe565b840191505092915050565b60006020820190508181036000830152612862818461280f565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128a98261287e565b9050919050565b6128b98161289e565b81146128c457600080fd5b50565b6000813590506128d6816128b0565b92915050565b6000819050919050565b6128ef816128dc565b81146128fa57600080fd5b50565b60008135905061290c816128e6565b92915050565b6000806040838503121561292957612928612874565b5b6000612937858286016128c7565b9250506020612948858286016128fd565b9150509250929050565b60008115159050919050565b61296781612952565b82525050565b6000602082019050612982600083018461295e565b92915050565b6000819050919050565b60006129ad6129a86129a38461287e565b612988565b61287e565b9050919050565b60006129bf82612992565b9050919050565b60006129d1826129b4565b9050919050565b6129e1816129c6565b82525050565b60006020820190506129fc60008301846129d8565b92915050565b612a0b816128dc565b82525050565b6000602082019050612a266000830184612a02565b92915050565b600080600060608486031215612a4557612a44612874565b5b6000612a53868287016128c7565b9350506020612a64868287016128c7565b9250506040612a75868287016128fd565b9150509250925092565b612a888161289e565b82525050565b6000602082019050612aa36000830184612a7f565b92915050565b600060ff82169050919050565b612abf81612aa9565b82525050565b6000602082019050612ada6000830184612ab6565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612b0557612b04612ae0565b5b8235905067ffffffffffffffff811115612b2257612b21612ae5565b5b602083019150836020820283011115612b3e57612b3d612aea565b5b9250929050565b612b4e81612952565b8114612b5957600080fd5b50565b600081359050612b6b81612b45565b92915050565b600080600060408486031215612b8a57612b89612874565b5b600084013567ffffffffffffffff811115612ba857612ba7612879565b5b612bb486828701612aef565b93509350506020612bc786828701612b5c565b9150509250925092565b600060208284031215612be757612be6612874565b5b6000612bf5848285016128c7565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612c36826127fe565b810181811067ffffffffffffffff82111715612c5557612c54612bfe565b5b80604052505050565b6000612c6861286a565b9050612c748282612c2d565b919050565b600067ffffffffffffffff821115612c9457612c93612bfe565b5b602082029050602081019050919050565b6000612cb8612cb384612c79565b612c5e565b90508083825260208201905060208402830185811115612cdb57612cda612aea565b5b835b81811015612d045780612cf088826128c7565b845260208401935050602081019050612cdd565b5050509392505050565b600082601f830112612d2357612d22612ae0565b5b8135612d33848260208601612ca5565b91505092915050565b60008060408385031215612d5357612d52612874565b5b600083013567ffffffffffffffff811115612d7157612d70612879565b5b612d7d85828601612d0e565b9250506020612d8e85828601612b5c565b9150509250929050565b60008060408385031215612daf57612dae612874565b5b6000612dbd858286016128c7565b9250506020612dce858286016128c7565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612e1f57607f821691505b602082108103612e3257612e31612dd8565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e72826128dc565b9150612e7d836128dc565b9250828201905080821115612e9557612e94612e38565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612ed5826128dc565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612f0757612f06612e38565b5b600182019050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612f6e6025836127c3565b9150612f7982612f12565b604082019050919050565b60006020820190508181036000830152612f9d81612f61565b9050919050565b7f5468652070616972000000000000000000000000000000000000000000000000600082015250565b6000612fda6008836127c3565b9150612fe582612fa4565b602082019050919050565b6000602082019050818103600083015261300981612fcd565b9050919050565b7f4f70656e2054726164652e000000000000000000000000000000000000000000600082015250565b6000613046600b836127c3565b915061305182613010565b602082019050919050565b6000602082019050818103600083015261307581613039565b9050919050565b7f5468652070616972200000000000000000000000000000000000000000000000600082015250565b60006130b26009836127c3565b91506130bd8261307c565b602082019050919050565b600060208201905081810360008301526130e1816130a5565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006131446026836127c3565b915061314f826130e8565b604082019050919050565b6000602082019050818103600083015261317381613137565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006131d66024836127c3565b91506131e18261317a565b604082019050919050565b60006020820190508181036000830152613205816131c9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006132686022836127c3565b91506132738261320c565b604082019050919050565b600060208201905081810360008301526132978161325b565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006132d4601d836127c3565b91506132df8261329e565b602082019050919050565b60006020820190508181036000830152613303816132c7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006133666025836127c3565b91506133718261330a565b604082019050919050565b6000602082019050818103600083015261339581613359565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006133f86023836127c3565b91506134038261339c565b604082019050919050565b60006020820190508181036000830152613427816133eb565b9050919050565b7f54726164696e67206e6f74206363636173646161612079657420656e61626c6560008201527f6421000000000000000000000000000000000000000000000000000000000000602082015250565b600061348a6022836127c3565b91506134958261342e565b604082019050919050565b600060208201905081810360008301526134b98161347d565b9050919050565b60006134cb826128dc565b91506134d6836128dc565b92508282026134e4816128dc565b915082820484148315176134fb576134fa612e38565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061353c826128dc565b9150613547836128dc565b92508261355757613556613502565b5b828204905092915050565b600061356d826128dc565b9150613578836128dc565b92508282039050818111156135905761358f612e38565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006135cc6020836127c3565b91506135d782613596565b602082019050919050565b600060208201905081810360008301526135fb816135bf565b9050919050565b7f45524332303a207472616e73666572206363636173646161612066726f6d207460008201527f6865207a65726f20616464726573730000000000000000000000000000000000602082015250565b600061365e602f836127c3565b915061366982613602565b604082019050919050565b6000602082019050818103600083015261368d81613651565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006136f06026836127c3565b91506136fb82613694565b604082019050919050565b6000602082019050818103600083015261371f816136e3565b9050919050565b600060608201905061373b6000830186612a02565b6137486020830185612a02565b6137556040830184612a02565b949350505050565b600081905092915050565b50565b600061377860008361375d565b915061378382613768565b600082019050919050565b60006137998261376b565b9150819050919050565b6000815190506137b2816128b0565b92915050565b6000602082840312156137ce576137cd612874565b5b60006137dc848285016137a3565b91505092915050565b6000819050919050565b600061380a613805613800846137e5565b612988565b6128dc565b9050919050565b61381a816137ef565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6138558161289e565b82525050565b6000613867838361384c565b60208301905092915050565b6000602082019050919050565b600061388b82613820565b613895818561382b565b93506138a08361383c565b8060005b838110156138d15781516138b8888261385b565b97506138c383613873565b9250506001810190506138a4565b5085935050505092915050565b600060a0820190506138f36000830188612a02565b6139006020830187613811565b81810360408301526139128186613880565b90506139216060830185612a7f565b61392e6080830184612a02565b9695505050505050565b600060c08201905061394d6000830189612a7f565b61395a6020830188612a02565b6139676040830187613811565b6139746060830186613811565b6139816080830185612a7f565b61398e60a0830184612a02565b979650505050505050565b6000815190506139a8816128e6565b92915050565b6000806000606084860312156139c7576139c6612874565b5b60006139d586828701613999565b93505060206139e686828701613999565b92505060406139f786828701613999565b915050925092509256fea2646970667358221220a9df5ebd9aa50be578b197f79120d9db7f6cff7fe7f0cd41bdbebb4f0f69703364736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101d15760003560e01c806393ec52de116100f7578063b267e80911610095578063dd62ed3e11610064578063dd62ed3e1461067b578063eadcc25a146106b8578063ed3e2eda146106e3578063f2fde38b1461070c576101d8565b8063b267e809146105e5578063bf6a1c0d1461060e578063c04a541414610625578063d469801614610650576101d8565b80639c10ba32116100d15780639c10ba3214610515578063a457c2d714610540578063a9059cbb1461057d578063b14f43f7146105ba576101d8565b806393ec52de1461049457806395d89b41146104bf5780639acf6157146104ea576101d8565b8063395093511161016f57806370a082311161013e57806370a08231146103ea578063715018a61461042757806375f0a8741461043e5780638da5cb5b14610469576101d8565b8063395093511461032e57806339cd394c1461036b57806349bd5a5e146103945780636ddd1713146103bf576101d8565b806318160ddd116101ab57806318160ddd1461027057806323b872dd1461029b57806327c8f835146102d8578063313ce56714610303576101d8565b806306fdde03146101dd578063095ea7b3146102085780631694505e14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610735565b6040516101ff9190612848565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190612912565b6107c7565b60405161023c919061296d565b60405180910390f35b34801561025157600080fd5b5061025a6107ea565b60405161026791906129e7565b60405180910390f35b34801561027c57600080fd5b5061028561080e565b6040516102929190612a11565b60405180910390f35b3480156102a757600080fd5b506102c260048036038101906102bd9190612a2c565b610818565b6040516102cf919061296d565b60405180910390f35b3480156102e457600080fd5b506102ed610847565b6040516102fa9190612a8e565b60405180910390f35b34801561030f57600080fd5b5061031861084d565b6040516103259190612ac5565b60405180910390f35b34801561033a57600080fd5b5061035560048036038101906103509190612912565b610856565b604051610362919061296d565b60405180910390f35b34801561037757600080fd5b50610392600480360381019061038d9190612b71565b61088d565b005b3480156103a057600080fd5b506103a96109af565b6040516103b69190612a8e565b60405180910390f35b3480156103cb57600080fd5b506103d46109d5565b6040516103e1919061296d565b60405180910390f35b3480156103f657600080fd5b50610411600480360381019061040c9190612bd1565b6109e8565b60405161041e9190612a11565b60405180910390f35b34801561043357600080fd5b5061043c610a30565b005b34801561044a57600080fd5b50610453610a44565b6040516104609190612a8e565b60405180910390f35b34801561047557600080fd5b5061047e610a6a565b60405161048b9190612a8e565b60405180910390f35b3480156104a057600080fd5b506104a9610a94565b6040516104b69190612a11565b60405180910390f35b3480156104cb57600080fd5b506104d4610a9a565b6040516104e19190612848565b60405180910390f35b3480156104f657600080fd5b506104ff610b2c565b60405161050c919061296d565b60405180910390f35b34801561052157600080fd5b5061052a610b3f565b6040516105379190612a11565b60405180910390f35b34801561054c57600080fd5b5061056760048036038101906105629190612912565b610b45565b604051610574919061296d565b60405180910390f35b34801561058957600080fd5b506105a4600480360381019061059f9190612912565b610bbc565b6040516105b1919061296d565b60405180910390f35b3480156105c657600080fd5b506105cf610bdf565b6040516105dc9190612a11565b60405180910390f35b3480156105f157600080fd5b5061060c60048036038101906106079190612d3c565b610be5565b005b34801561061a57600080fd5b50610623610ccb565b005b34801561063157600080fd5b5061063a610d5b565b6040516106479190612a8e565b60405180910390f35b34801561065c57600080fd5b50610665610d81565b6040516106729190612a8e565b60405180910390f35b34801561068757600080fd5b506106a2600480360381019061069d9190612d98565b610da7565b6040516106af9190612a11565b60405180910390f35b3480156106c457600080fd5b506106cd610e2e565b6040516106da9190612a11565b60405180910390f35b3480156106ef57600080fd5b5061070a60048036038101906107059190612d3c565b610e34565b005b34801561071857600080fd5b50610733600480360381019061072e9190612bd1565b610f1a565b005b60606004805461074490612e07565b80601f016020809104026020016040519081016040528092919081815260200182805461077090612e07565b80156107bd5780601f10610792576101008083540402835291602001916107bd565b820191906000526020600020905b8154815290600101906020018083116107a057829003601f168201915b5050505050905090565b6000806107d2610f9d565b90506107df818585610fa5565b600191505092915050565b7f0000000000000000000000004752ba5dbc23f44d87826276bf6fd6b1c372ad2481565b6000600254905090565b600080610823610f9d565b905061083085828561116e565b61083b8585856111fa565b60019150509392505050565b61dead81565b60006012905090565b600080610861610f9d565b90506108828185856108738589610da7565b61087d9190612e67565b610fa5565b600191505092915050565b610895611c95565b60005b838390508110156109a95781601860008686858181106108bb576108ba612e9b565b5b90506020020160208101906108d09190612bd1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555083838281811061093457610933612e9b565b5b90506020020160208101906109499190612bd1565b73ffffffffffffffffffffffffffffffffffffffff167f3192caa254d3e1ad957995cfc6c8fbb960383bef7c341a220215553e91070df38360405161098e919061296d565b60405180910390a280806109a190612eca565b915050610898565b50505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a38611c95565b610a426000611d13565b565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60035481565b606060058054610aa990612e07565b80601f0160208091040260200160405190810160405280929190818152602001828054610ad590612e07565b8015610b225780601f10610af757610100808354040283529160200191610b22565b820191906000526020600020905b815481529060010190602001808311610b0557829003601f168201915b5050505050905090565b600a60149054906101000a900460ff1681565b600c5481565b600080610b50610f9d565b90506000610b5e8286610da7565b905083811015610ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9a90612f84565b60405180910390fd5b610bb08286868403610fa5565b60019250505092915050565b600080610bc7610f9d565b9050610bd48185856111fa565b600191505092915050565b600b5481565b610bed611c95565b60005b8251811015610cc6576000838281518110610c0e57610c0d612e9b565b5b60200260200101519050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ca8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9f90612ff0565b60405180910390fd5b610cb28184611dd9565b508080610cbe90612eca565b915050610bf0565b505050565b610cd3611c95565b600a60149054906101000a900460ff1615610d23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1a9061305c565b60405180910390fd5b6001600a60146101000a81548160ff0219169083151502179055506001600a60156101000a81548160ff021916908315150217905550565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60105481565b610e3c611c95565b60005b8251811015610f15576000838281518110610e5d57610e5c612e9b565b5b60200260200101519050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eee906130c8565b60405180910390fd5b610f018184611e7a565b508080610f0d90612eca565b915050610e3f565b505050565b610f22611c95565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f889061315a565b60405180910390fd5b610f9a81611d13565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611014576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100b906131ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107a9061327e565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516111619190612a11565b60405180910390a3505050565b600061117a8484610da7565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146111f457818110156111e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111dd906132ea565b60405180910390fd5b6111f38484848403610fa5565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611269576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112609061337c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cf9061340e565b60405180910390fd5b600a60149054906101000a900460ff168061133c5750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806113905750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6113cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c6906134a0565b60405180910390fd5b600081036113e8576113e383836000611f1b565b611c90565b60006113f3306109e8565b90506000600b5482101590508080156114185750600a60159054906101000a900460ff165b80156114315750600a60169054906101000a900460ff16155b80156114865750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80156114dc5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156115325750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611576576001600a60166101000a81548160ff02191690831515021790555061155a612191565b6000600a60166101000a81548160ff0219169083151502179055505b80801561158f5750600a60159054906101000a900460ff165b80156115a85750600a60169054906101000a900460ff16155b80156115fd5750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80156116535750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156116a95750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156116ed576001600a60166101000a81548160ff0219169083151502179055506116d1612191565b6000600a60166101000a81548160ff0219169083151502179055505b6000600a60169054906101000a900460ff16159050601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806117a35750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156117ad57600090505b60008115611c7757601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561181057506000601054115b156118da5761183e6127106118306010548861243390919063ffffffff16565b61244990919063ffffffff16565b90506010546013548261185191906134c0565b61185b9190613531565b6016600082825461186c9190612e67565b925050819055506010546011548261188491906134c0565b61188e9190613531565b6014600082825461189f9190612e67565b92505081905550601054601254826118b791906134c0565b6118c19190613531565b601560008282546118d29190612e67565b925050819055505b601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561193557506000601054115b15611a03576119636127106119556010548861243390919063ffffffff16565b61244990919063ffffffff16565b90506010546013548261197691906134c0565b6119809190613531565b601660008282546119919190612e67565b92505081905550601054601154826119a991906134c0565b6119b39190613531565b601460008282546119c49190612e67565b92505081905550601054601254826119dc91906134c0565b6119e69190613531565b601560008282546119f79190612e67565b92505081905550611c53565b601960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611a5e57506000600c54115b15611b2c57611a8c612710611a7e600c548861243390919063ffffffff16565b61244990919063ffffffff16565b9050600c54600f5482611a9f91906134c0565b611aa99190613531565b60166000828254611aba9190612e67565b92505081905550600c54600d5482611ad291906134c0565b611adc9190613531565b60146000828254611aed9190612e67565b92505081905550600c54600e5482611b0591906134c0565b611b0f9190613531565b60156000828254611b209190612e67565b92505081905550611c52565b601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611b8757506000600c54115b15611c5157611bb5612710611ba7600c548861243390919063ffffffff16565b61244990919063ffffffff16565b9050600c54600f5482611bc891906134c0565b611bd29190613531565b60166000828254611be39190612e67565b92505081905550600c54600d5482611bfb91906134c0565b611c059190613531565b60146000828254611c169190612e67565b92505081905550600c54600e5482611c2e91906134c0565b611c389190613531565b60156000828254611c499190612e67565b925050819055505b5b5b6000811115611c6857611c67873083611f1b565b5b8085611c749190613562565b94505b611c82878787611f1b565b601754601081905550505050505b505050565b611c9d610f9d565b73ffffffffffffffffffffffffffffffffffffffff16611cbb610a6a565b73ffffffffffffffffffffffffffffffffffffffff1614611d11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d08906135e2565b60405180910390fd5b565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fc155fd4417ec7f196cce906ddbc9dcd27be8dff4e20686b3441e494690a6cca260405160405180910390a35050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fb09cfb76c810949f8ba5130d1a35005021489fe01866d272e05261f6e6bd02b860405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8190613674565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ff9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff09061340e565b60405180910390fd5b61200483838361245f565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561208a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208190613706565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121789190612a11565b60405180910390a361218b848484612464565b50505050565b600061219c306109e8565b905060006015546014546016546121b39190612e67565b6121bd9190612e67565b9050600080600283601654866121d391906134c0565b6121dd9190613531565b6121e79190613531565b905060006121fe828661246990919063ffffffff16565b9050600047905061220e8261247f565b6000612223824761246990919063ffffffff16565b9050600061224e876122406014548561243390919063ffffffff16565b61244990919063ffffffff16565b905060006122798861226b6015548661243390919063ffffffff16565b61244990919063ffffffff16565b9050600081838561228a9190613562565b6122949190613562565b90506000601681905550600060148190555060006015819055506000871180156122be5750600081115b1561230b576122cd87826126bc565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868260165460405161230293929190613726565b60405180910390a15b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516123519061378e565b60006040518083038185875af1925050503d806000811461238e576040519150601f19603f3d011682016040523d82523d6000602084013e612393565b606091505b505080985050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516123df9061378e565b60006040518083038185875af1925050503d806000811461241c576040519150601f19603f3d011682016040523d82523d6000602084013e612421565b606091505b50508098505050505050505050505050565b6000818361244191906134c0565b905092915050565b600081836124579190613531565b905092915050565b505050565b505050565b600081836124779190613562565b905092915050565b6000600267ffffffffffffffff81111561249c5761249b612bfe565b5b6040519080825280602002602001820160405280156124ca5781602001602082028036833780820191505090505b50905030816000815181106124e2576124e1612e9b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000004752ba5dbc23f44d87826276bf6fd6b1c372ad2473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612587573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ab91906137b8565b816001815181106125bf576125be612e9b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612624307f0000000000000000000000004752ba5dbc23f44d87826276bf6fd6b1c372ad2484610fa5565b7f0000000000000000000000004752ba5dbc23f44d87826276bf6fd6b1c372ad2473ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016126869594939291906138de565b600060405180830381600087803b1580156126a057600080fd5b505af11580156126b4573d6000803e3d6000fd5b505050505050565b6126e7307f0000000000000000000000004752ba5dbc23f44d87826276bf6fd6b1c372ad2484610fa5565b7f0000000000000000000000004752ba5dbc23f44d87826276bf6fd6b1c372ad2473ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161276e96959493929190613938565b60606040518083038185885af115801561278c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127b191906139ae565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156127f25780820151818401526020810190506127d7565b60008484015250505050565b6000601f19601f8301169050919050565b600061281a826127b8565b61282481856127c3565b93506128348185602086016127d4565b61283d816127fe565b840191505092915050565b60006020820190508181036000830152612862818461280f565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128a98261287e565b9050919050565b6128b98161289e565b81146128c457600080fd5b50565b6000813590506128d6816128b0565b92915050565b6000819050919050565b6128ef816128dc565b81146128fa57600080fd5b50565b60008135905061290c816128e6565b92915050565b6000806040838503121561292957612928612874565b5b6000612937858286016128c7565b9250506020612948858286016128fd565b9150509250929050565b60008115159050919050565b61296781612952565b82525050565b6000602082019050612982600083018461295e565b92915050565b6000819050919050565b60006129ad6129a86129a38461287e565b612988565b61287e565b9050919050565b60006129bf82612992565b9050919050565b60006129d1826129b4565b9050919050565b6129e1816129c6565b82525050565b60006020820190506129fc60008301846129d8565b92915050565b612a0b816128dc565b82525050565b6000602082019050612a266000830184612a02565b92915050565b600080600060608486031215612a4557612a44612874565b5b6000612a53868287016128c7565b9350506020612a64868287016128c7565b9250506040612a75868287016128fd565b9150509250925092565b612a888161289e565b82525050565b6000602082019050612aa36000830184612a7f565b92915050565b600060ff82169050919050565b612abf81612aa9565b82525050565b6000602082019050612ada6000830184612ab6565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612b0557612b04612ae0565b5b8235905067ffffffffffffffff811115612b2257612b21612ae5565b5b602083019150836020820283011115612b3e57612b3d612aea565b5b9250929050565b612b4e81612952565b8114612b5957600080fd5b50565b600081359050612b6b81612b45565b92915050565b600080600060408486031215612b8a57612b89612874565b5b600084013567ffffffffffffffff811115612ba857612ba7612879565b5b612bb486828701612aef565b93509350506020612bc786828701612b5c565b9150509250925092565b600060208284031215612be757612be6612874565b5b6000612bf5848285016128c7565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612c36826127fe565b810181811067ffffffffffffffff82111715612c5557612c54612bfe565b5b80604052505050565b6000612c6861286a565b9050612c748282612c2d565b919050565b600067ffffffffffffffff821115612c9457612c93612bfe565b5b602082029050602081019050919050565b6000612cb8612cb384612c79565b612c5e565b90508083825260208201905060208402830185811115612cdb57612cda612aea565b5b835b81811015612d045780612cf088826128c7565b845260208401935050602081019050612cdd565b5050509392505050565b600082601f830112612d2357612d22612ae0565b5b8135612d33848260208601612ca5565b91505092915050565b60008060408385031215612d5357612d52612874565b5b600083013567ffffffffffffffff811115612d7157612d70612879565b5b612d7d85828601612d0e565b9250506020612d8e85828601612b5c565b9150509250929050565b60008060408385031215612daf57612dae612874565b5b6000612dbd858286016128c7565b9250506020612dce858286016128c7565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612e1f57607f821691505b602082108103612e3257612e31612dd8565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e72826128dc565b9150612e7d836128dc565b9250828201905080821115612e9557612e94612e38565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612ed5826128dc565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612f0757612f06612e38565b5b600182019050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612f6e6025836127c3565b9150612f7982612f12565b604082019050919050565b60006020820190508181036000830152612f9d81612f61565b9050919050565b7f5468652070616972000000000000000000000000000000000000000000000000600082015250565b6000612fda6008836127c3565b9150612fe582612fa4565b602082019050919050565b6000602082019050818103600083015261300981612fcd565b9050919050565b7f4f70656e2054726164652e000000000000000000000000000000000000000000600082015250565b6000613046600b836127c3565b915061305182613010565b602082019050919050565b6000602082019050818103600083015261307581613039565b9050919050565b7f5468652070616972200000000000000000000000000000000000000000000000600082015250565b60006130b26009836127c3565b91506130bd8261307c565b602082019050919050565b600060208201905081810360008301526130e1816130a5565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006131446026836127c3565b915061314f826130e8565b604082019050919050565b6000602082019050818103600083015261317381613137565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006131d66024836127c3565b91506131e18261317a565b604082019050919050565b60006020820190508181036000830152613205816131c9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006132686022836127c3565b91506132738261320c565b604082019050919050565b600060208201905081810360008301526132978161325b565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006132d4601d836127c3565b91506132df8261329e565b602082019050919050565b60006020820190508181036000830152613303816132c7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006133666025836127c3565b91506133718261330a565b604082019050919050565b6000602082019050818103600083015261339581613359565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006133f86023836127c3565b91506134038261339c565b604082019050919050565b60006020820190508181036000830152613427816133eb565b9050919050565b7f54726164696e67206e6f74206363636173646161612079657420656e61626c6560008201527f6421000000000000000000000000000000000000000000000000000000000000602082015250565b600061348a6022836127c3565b91506134958261342e565b604082019050919050565b600060208201905081810360008301526134b98161347d565b9050919050565b60006134cb826128dc565b91506134d6836128dc565b92508282026134e4816128dc565b915082820484148315176134fb576134fa612e38565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061353c826128dc565b9150613547836128dc565b92508261355757613556613502565b5b828204905092915050565b600061356d826128dc565b9150613578836128dc565b92508282039050818111156135905761358f612e38565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006135cc6020836127c3565b91506135d782613596565b602082019050919050565b600060208201905081810360008301526135fb816135bf565b9050919050565b7f45524332303a207472616e73666572206363636173646161612066726f6d207460008201527f6865207a65726f20616464726573730000000000000000000000000000000000602082015250565b600061365e602f836127c3565b915061366982613602565b604082019050919050565b6000602082019050818103600083015261368d81613651565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006136f06026836127c3565b91506136fb82613694565b604082019050919050565b6000602082019050818103600083015261371f816136e3565b9050919050565b600060608201905061373b6000830186612a02565b6137486020830185612a02565b6137556040830184612a02565b949350505050565b600081905092915050565b50565b600061377860008361375d565b915061378382613768565b600082019050919050565b60006137998261376b565b9150819050919050565b6000815190506137b2816128b0565b92915050565b6000602082840312156137ce576137cd612874565b5b60006137dc848285016137a3565b91505092915050565b6000819050919050565b600061380a613805613800846137e5565b612988565b6128dc565b9050919050565b61381a816137ef565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6138558161289e565b82525050565b6000613867838361384c565b60208301905092915050565b6000602082019050919050565b600061388b82613820565b613895818561382b565b93506138a08361383c565b8060005b838110156138d15781516138b8888261385b565b97506138c383613873565b9250506001810190506138a4565b5085935050505092915050565b600060a0820190506138f36000830188612a02565b6139006020830187613811565b81810360408301526139128186613880565b90506139216060830185612a7f565b61392e6080830184612a02565b9695505050505050565b600060c08201905061394d6000830189612a7f565b61395a6020830188612a02565b6139676040830187613811565b6139746060830186613811565b6139816080830185612a7f565b61398e60a0830184612a02565b979650505050505050565b6000815190506139a8816128e6565b92915050565b6000806000606084860312156139c7576139c6612874565b5b60006139d586828701613999565b93505060206139e686828701613999565b92505060406139f786828701613999565b915050925092509256fea2646970667358221220a9df5ebd9aa50be578b197f79120d9db7f6cff7fe7f0cd41bdbebb4f0f69703364736f6c63430008110033

Deployed Bytecode Sourcemap

21657:9283:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10257:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11510:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21732:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10699:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11760:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21940:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10592:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12063:270;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24324:241;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21790:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22027:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10815:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1040:103;;;;;;;;;;;;;:::i;:::-;;21827:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;795:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10031:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10476:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22002:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22134:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12341:505;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11004:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22090:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24064:258;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23902:150;;;;;;;;;;;;;:::i;:::-;;21864:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21903:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11301:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22273:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24570:257;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1156:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10257:100;10311:13;10344:5;10337:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10257:100;:::o;11510:242::-;11629:4;11651:13;11667:12;:10;:12::i;:::-;11651:28;;11690:32;11699:5;11706:7;11715:6;11690:8;:32::i;:::-;11740:4;11733:11;;;11510:242;;;;:::o;21732:51::-;;;:::o;10699:108::-;10760:7;10787:12;;10780:19;;10699:108;:::o;11760:295::-;11891:4;11908:15;11926:12;:10;:12::i;:::-;11908:30;;11949:38;11965:4;11971:7;11980:6;11949:15;:38::i;:::-;11998:27;12008:4;12014:2;12018:6;11998:9;:27::i;:::-;12043:4;12036:11;;;11760:295;;;;;:::o;21940:53::-;21986:6;21940:53;:::o;10592:93::-;10650:5;10675:2;10668:9;;10592:93;:::o;12063:270::-;12178:4;12200:13;12216:12;:10;:12::i;:::-;12200:28;;12239:64;12248:5;12255:7;12292:10;12264:25;12274:5;12281:7;12264:9;:25::i;:::-;:38;;;;:::i;:::-;12239:8;:64::i;:::-;12321:4;12314:11;;;12063:270;;;;:::o;24324:241::-;681:13;:11;:13::i;:::-;24420:9:::1;24415:147;24439:8;;:15;;24435:1;:19;24415:147;;;24500:8;24472:12;:25;24485:8;;24494:1;24485:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;24472:25;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;24532:8;;24541:1;24532:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;24524:30;;;24545:8;24524:30;;;;;;:::i;:::-;;;;;;;;24456:3;;;;;:::i;:::-;;;;24415:147;;;;24324:241:::0;;;:::o;21790:28::-;;;;;;;;;;;;;:::o;22027:23::-;;;;;;;;;;;;;:::o;10815:177::-;10934:7;10966:9;:18;10976:7;10966:18;;;;;;;;;;;;;;;;10959:25;;10815:177;;;:::o;1040:103::-;681:13;:11;:13::i;:::-;1105:30:::1;1132:1;1105:18;:30::i;:::-;1040:103::o:0;21827:30::-;;;;;;;;;;;;;:::o;795:87::-;841:7;868:6;;;;;;;;;;;861:13;;795:87;:::o;10031:26::-;;;;:::o;10476:104::-;10532:13;10565:7;10558:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10476:104;:::o;22002:21::-;;;;;;;;;;;;;:::o;22134:27::-;;;;:::o;12341:505::-;12461:4;12483:13;12499:12;:10;:12::i;:::-;12483:28;;12522:24;12549:25;12559:5;12566:7;12549:9;:25::i;:::-;12522:52;;12627:15;12607:16;:35;;12585:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;12743:60;12752:5;12759:7;12787:15;12768:16;:34;12743:8;:60::i;:::-;12834:4;12827:11;;;;12341:505;;;;:::o;11004:234::-;11119:4;11141:13;11157:12;:10;:12::i;:::-;11141:28;;11180;11190:5;11197:2;11201:6;11180:9;:28::i;:::-;11226:4;11219:11;;;11004:234;;;;:::o;22090:35::-;;;;:::o;24064:258::-;681:13;:11;:13::i;:::-;24149:9:::1;24144:175;24168:6;:13;24164:1;:17;24144:175;;;24199:12;24214:6;24221:1;24214:9;;;;;;;;:::i;:::-;;;;;;;;24199:24;;24250:13;;;;;;;;;;;24242:21;;:4;:21;;::::0;24234:42:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;24287:24;24299:4;24305:5;24287:11;:24::i;:::-;24188:131;24183:3;;;;;:::i;:::-;;;;24144:175;;;;24064:258:::0;;:::o;23902:150::-;681:13;:11;:13::i;:::-;23963:9:::1;;;;;;;;;;;23962:10;23954:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;24011:4;23999:9;;:16;;;;;;;;;;;;;;;;;;24040:4;24026:11;;:18;;;;;;;;;;;;;;;;;;23902:150::o:0;21864:32::-;;;;;;;;;;;;;:::o;21903:30::-;;;;;;;;;;;;;:::o;11301:201::-;11435:7;11467:11;:18;11479:5;11467:18;;;;;;;;;;;;;;;:27;11486:7;11467:27;;;;;;;;;;;;;;;;11460:34;;11301:201;;;;:::o;22273:21::-;;;;:::o;24570:257::-;681:13;:11;:13::i;:::-;24655:9:::1;24650:174;24674:6;:13;24670:1;:17;24650:174;;;24705:12;24720:6;24727:1;24720:9;;;;;;;;:::i;:::-;;;;;;;;24705:24;;24756:13;;;;;;;;;;;24748:21;;:4;:21;;::::0;24740:43:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;24794:22;24804:4;24810:5;24794:9;:22::i;:::-;24694:130;24689:3;;;;;:::i;:::-;;;;24650:174;;;;24570:257:::0;;:::o;1156:238::-;681:13;:11;:13::i;:::-;1279:1:::1;1259:22;;:8;:22;;::::0;1237:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1358:28;1377:8;1358:18;:28::i;:::-;1156:238:::0;:::o;164:98::-;217:7;244:10;237:17;;164:98;:::o;14837:380::-;14990:1;14973:19;;:5;:19;;;14965:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15071:1;15052:21;;:7;:21;;;15044:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15155:6;15125:11;:18;15137:5;15125:18;;;;;;;;;;;;;;;:27;15144:7;15125:27;;;;;;;;;;;;;;;:36;;;;15193:7;15177:32;;15186:5;15177:32;;;15202:6;15177:32;;;;;;:::i;:::-;;;;;;;;14837:380;;;:::o;15225:498::-;15356:24;15383:25;15393:5;15400:7;15383:9;:25::i;:::-;15356:52;;15443:17;15423:16;:37;15419:297;;15523:6;15503:16;:26;;15477:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;15638:51;15647:5;15654:7;15682:6;15663:16;:25;15638:8;:51::i;:::-;15419:297;15345:378;15225:498;;;:::o;25121:3363::-;25269:1;25253:18;;:4;:18;;;25245:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25346:1;25332:16;;:2;:16;;;25324:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;25417:9;;;;;;;;;;;:31;;;;25430:12;:18;25443:4;25430:18;;;;;;;;;;;;;;;;;;;;;;;;;25417:31;:51;;;;25452:12;:16;25465:2;25452:16;;;;;;;;;;;;;;;;;;;;;;;;;25417:51;25409:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;25532:1;25522:6;:11;25518:93;;25550:28;25566:4;25572:2;25576:1;25550:15;:28::i;:::-;25593:7;;25518:93;25625:28;25656:24;25674:4;25656:9;:24::i;:::-;25625:55;;25693:20;25740;;25716;:44;;25693:67;;25791:15;:43;;;;;25823:11;;;;;;;;;;;25791:43;:58;;;;;25838:11;;;;;;;;;;;25837:12;25791:58;:78;;;;;25851:12;:18;25864:4;25851:18;;;;;;;;;;;;;;;;;;;;;;;;;25791:78;:113;;;;;25886:12;:18;25899:4;25886:18;;;;;;;;;;;;;;;;;;;;;;;;;25885:19;25791:113;:147;;;;;25922:12;:16;25935:2;25922:16;;;;;;;;;;;;;;;;;;;;;;;;;25921:17;25791:147;25773:286;;;25979:4;25965:11;;:18;;;;;;;;;;;;;;;;;;26000:11;:9;:11::i;:::-;26042:5;26028:11;;:19;;;;;;;;;;;;;;;;;;25773:286;26087:15;:43;;;;;26119:11;;;;;;;;;;;26087:43;:58;;;;;26134:11;;;;;;;;;;;26133:12;26087:58;:74;;;;;26147:10;:14;26158:2;26147:14;;;;;;;;;;;;;;;;;;;;;;;;;26087:74;:109;;;;;26178:12;:18;26191:4;26178:18;;;;;;;;;;;;;;;;;;;;;;;;;26177:19;26087:109;:143;;;;;26214:12;:16;26227:2;26214:16;;;;;;;;;;;;;;;;;;;;;;;;;26213:17;26087:143;26069:282;;;26271:4;26257:11;;:18;;;;;;;;;;;;;;;;;;26292:11;:9;:11::i;:::-;26334:5;26320:11;;:19;;;;;;;;;;;;;;;;;;26069:282;26363:12;26379:11;;;;;;;;;;;26378:12;26363:27;;26429:12;:18;26442:4;26429:18;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;;26451:12;:16;26464:2;26451:16;;;;;;;;;;;;;;;;;;;;;;;;;26429:38;26425:86;;;26494:5;26484:15;;26425:86;26523:12;26560:7;26556:1842;;;26612:12;:16;26625:2;26612:16;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;;;26641:1;26632:6;;:10;26612:30;26608:417;;;26670:29;26693:5;26670:18;26681:6;;26670;:10;;:18;;;;:::i;:::-;:22;;:29;;;;:::i;:::-;26663:36;;26793:6;;26760:8;;26753:4;:15;;;;:::i;:::-;26752:47;;;;:::i;:::-;26718:9;;:81;;;;;;;:::i;:::-;;;;;;;;26891:6;;26861:5;;26854:4;:12;;;;:::i;:::-;26853:44;;;;:::i;:::-;26818:10;;:79;;;;;;;:::i;:::-;;;;;;;;27003:6;;26970:8;;26963:4;:15;;;;:::i;:::-;26962:47;;;;:::i;:::-;26916:21;;:93;;;;;;;:::i;:::-;;;;;;;;26608:417;27045:10;:14;27056:2;27045:14;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;;;27072:1;27063:6;;:10;27045:28;27041:1208;;;27101:29;27124:5;27101:18;27112:6;;27101;:10;;:18;;;;:::i;:::-;:22;;:29;;;;:::i;:::-;27094:36;;27224:6;;27191:8;;27184:4;:15;;;;:::i;:::-;27183:47;;;;:::i;:::-;27149:9;;:81;;;;;;;:::i;:::-;;;;;;;;27322:6;;27292:5;;27285:4;:12;;;;:::i;:::-;27284:44;;;;:::i;:::-;27249:10;;:79;;;;;;;:::i;:::-;;;;;;;;27434:6;;27401:8;;27394:4;:15;;;;:::i;:::-;27393:47;;;;:::i;:::-;27347:21;;:93;;;;;;;:::i;:::-;;;;;;;;27041:1208;;;27502:12;:18;27515:4;27502:18;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;;;27539:1;27524:12;;:16;27502:38;27498:751;;;27568:35;27597:5;27568:24;27579:12;;27568:6;:10;;:24;;;;:::i;:::-;:28;;:35;;;;:::i;:::-;27561:42;;27658:12;;27643:11;;27636:4;:18;;;;:::i;:::-;27635:35;;;;:::i;:::-;27622:9;;:48;;;;;;;:::i;:::-;;;;;;;;27720:12;;27711:5;;27704:4;:12;;;;:::i;:::-;27703:29;;;;:::i;:::-;27689:10;;:43;;;;;;;:::i;:::-;;;;;;;;27837:12;;27805:7;;27798:4;:14;;;;:::i;:::-;27797:52;;;;:::i;:::-;27751:21;;:98;;;;;;;:::i;:::-;;;;;;;;27498:751;;;27888:10;:16;27899:4;27888:16;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;27923:1;27908:12;;:16;27888:36;27884:365;;;27952:35;27981:5;27952:24;27963:12;;27952:6;:10;;:24;;;;:::i;:::-;:28;;:35;;;;:::i;:::-;27945:42;;28042:12;;28027:11;;28020:4;:18;;;;:::i;:::-;28019:35;;;;:::i;:::-;28006:9;;:48;;;;;;;:::i;:::-;;;;;;;;28104:12;;28095:5;;28088:4;:12;;;;:::i;:::-;28087:29;;;;:::i;:::-;28073:10;;:43;;;;;;;:::i;:::-;;;;;;;;28221:12;;28189:7;;28182:4;:14;;;;:::i;:::-;28181:52;;;;:::i;:::-;28135:21;;:98;;;;;;;:::i;:::-;;;;;;;;27884:365;27498:751;27041:1208;28276:1;28269:4;:8;28265:91;;;28298:42;28314:4;28328;28335;28298:15;:42::i;:::-;28265:91;28382:4;28372:14;;;;;:::i;:::-;;;26556:1842;28410:33;28426:4;28432:2;28436:6;28410:15;:33::i;:::-;28463:13;;28454:6;:22;;;;25234:3250;;;;25121:3363;;;;:::o;895:132::-;970:12;:10;:12::i;:::-;959:23;;:7;:5;:7::i;:::-;:23;;;951:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;895:132::o;1407:191::-;1481:16;1500:6;;;;;;;;;;;1481:25;;1526:8;1517:6;;:17;;;;;;;;;;;;;;;;;;1581:8;1550:40;;1571:8;1550:40;;;;;;;;;;;;1470:128;1407:191;:::o;24835:137::-;24923:5;24902:12;:18;24915:4;24902:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;24958:5;24944:20;;24952:4;24944:20;;;;;;;;;;;;24835:137;;:::o;24980:133::-;25064:5;25045:10;:16;25056:4;25045:16;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;25099:5;25085:20;;25093:4;25085:20;;;;;;;;;;;;24980:133;;:::o;12854:726::-;12993:1;12977:18;;:4;:18;;;12969:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;13080:1;13066:16;;:2;:16;;;13058:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13135:38;13156:4;13162:2;13166:6;13135:20;:38::i;:::-;13186:19;13208:9;:15;13218:4;13208:15;;;;;;;;;;;;;;;;13186:37;;13271:6;13256:11;:21;;13234:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;13411:6;13397:11;:20;13379:9;:15;13389:4;13379:15;;;;;;;;;;;;;;;:38;;;;13461:6;13444:9;:13;13454:2;13444:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;13511:2;13496:26;;13505:4;13496:26;;;13515:6;13496:26;;;;;;:::i;:::-;;;;;;;;13535:37;13555:4;13561:2;13565:6;13535:19;:37::i;:::-;12958:622;12854:726;;;:::o;29386:1549::-;29427:23;29453:24;29471:4;29453:9;:24::i;:::-;29427:50;;29488:25;29567:21;;29541:10;;29516:9;;:35;;;;:::i;:::-;:72;;;;:::i;:::-;29488:100;;29599:12;29626:23;29730:1;29697:17;29671:9;;29653:15;:27;;;;:::i;:::-;29652:62;;;;:::i;:::-;:79;;;;:::i;:::-;29626:105;;29742:28;29773:36;29793:15;29773;:19;;:36;;;;:::i;:::-;29742:67;;29822:25;29850:21;29822:49;;29884:40;29903:20;29884:18;:40::i;:::-;29937:18;29958:44;29984:17;29958:21;:25;;:44;;;;:::i;:::-;29937:65;;30015:23;30041:73;30086:17;30041:26;30056:10;;30041;:14;;:26;;;;:::i;:::-;:30;;:73;;;;:::i;:::-;30015:99;;30127:25;30155:84;30211:17;30155:37;30170:21;;30155:10;:14;;:37;;;;:::i;:::-;:41;;:84;;;;:::i;:::-;30127:112;;30252:23;30335:17;30304:15;30278:10;:41;;;;:::i;:::-;:74;;;;:::i;:::-;30252:100;;30377:1;30365:9;:13;;;;30402:1;30389:10;:14;;;;30438:1;30414:21;:25;;;;30474:1;30456:15;:19;:42;;;;;30497:1;30479:15;:19;30456:42;30452:272;;;30515:47;30529:15;30546;30515:13;:47::i;:::-;30582:130;30615:20;30654:15;30688:9;;30582:130;;;;;;;;:::i;:::-;;;;;;;;30452:272;30760:17;;;;;;;;;;;30752:31;;30791:17;30752:61;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30738:75;;;;;30848:15;;;;;;;;;;;30840:29;;30891:21;30840:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30826:101;;;;;29416:1519;;;;;;;;;;29386:1549::o;7000:98::-;7058:7;7089:1;7085;:5;;;;:::i;:::-;7078:12;;7000:98;;;;:::o;7323:::-;7381:7;7412:1;7408;:5;;;;:::i;:::-;7401:12;;7323:98;;;;:::o;15731:125::-;;;;:::o;15864:124::-;;;;:::o;6643:98::-;6701:7;6732:1;6728;:5;;;;:::i;:::-;6721:12;;6643:98;;;;:::o;28492:504::-;28561:21;28599:1;28585:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28561:40;;28630:4;28612;28617:1;28612:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;28656:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28646:4;28651:1;28646:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;28691:62;28708:4;28723:15;28741:11;28691:8;:62::i;:::-;28792:15;:66;;;28873:11;28899:1;28915:4;28942;28962:15;28792:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28550:446;28492:504;:::o;29004:372::-;29087:62;29104:4;29119:15;29137:11;29087:8;:62::i;:::-;29162:15;:31;;;29201:9;29234:4;29254:11;29280:1;29296;29312:15;;;;;;;;;;;29342;29162:206;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;29004:372;;:::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;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::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:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:153::-;3869:9;3902:37;3933:5;3902:37;:::i;:::-;3889:50;;3792:153;;;:::o;3951:185::-;4065:64;4123:5;4065:64;:::i;:::-;4060:3;4053:77;3951:185;;:::o;4142:276::-;4262:4;4300:2;4289:9;4285:18;4277:26;;4313:98;4408:1;4397:9;4393:17;4384:6;4313:98;:::i;:::-;4142:276;;;;:::o;4424:118::-;4511:24;4529:5;4511:24;:::i;:::-;4506:3;4499:37;4424:118;;:::o;4548:222::-;4641:4;4679:2;4668:9;4664:18;4656:26;;4692:71;4760:1;4749:9;4745:17;4736:6;4692:71;:::i;:::-;4548:222;;;;:::o;4776:619::-;4853:6;4861;4869;4918:2;4906:9;4897:7;4893:23;4889:32;4886:119;;;4924:79;;:::i;:::-;4886:119;5044:1;5069:53;5114:7;5105:6;5094:9;5090:22;5069:53;:::i;:::-;5059:63;;5015:117;5171:2;5197:53;5242:7;5233:6;5222:9;5218:22;5197:53;:::i;:::-;5187:63;;5142:118;5299:2;5325:53;5370:7;5361:6;5350:9;5346:22;5325:53;:::i;:::-;5315:63;;5270:118;4776:619;;;;;:::o;5401:118::-;5488:24;5506:5;5488:24;:::i;:::-;5483:3;5476:37;5401:118;;:::o;5525:222::-;5618:4;5656:2;5645:9;5641:18;5633:26;;5669:71;5737:1;5726:9;5722:17;5713:6;5669:71;:::i;:::-;5525:222;;;;:::o;5753:86::-;5788:7;5828:4;5821:5;5817:16;5806:27;;5753:86;;;:::o;5845:112::-;5928:22;5944:5;5928:22;:::i;:::-;5923:3;5916:35;5845:112;;:::o;5963:214::-;6052:4;6090:2;6079:9;6075:18;6067:26;;6103:67;6167:1;6156:9;6152:17;6143:6;6103:67;:::i;:::-;5963:214;;;;:::o;6183:117::-;6292:1;6289;6282:12;6306:117;6415:1;6412;6405:12;6429:117;6538:1;6535;6528:12;6569:568;6642:8;6652:6;6702:3;6695:4;6687:6;6683:17;6679:27;6669:122;;6710:79;;:::i;:::-;6669:122;6823:6;6810:20;6800:30;;6853:18;6845:6;6842:30;6839:117;;;6875:79;;:::i;:::-;6839:117;6989:4;6981:6;6977:17;6965:29;;7043:3;7035:4;7027:6;7023:17;7013:8;7009:32;7006:41;7003:128;;;7050:79;;:::i;:::-;7003:128;6569:568;;;;;:::o;7143:116::-;7213:21;7228:5;7213:21;:::i;:::-;7206:5;7203:32;7193:60;;7249:1;7246;7239:12;7193:60;7143:116;:::o;7265:133::-;7308:5;7346:6;7333:20;7324:29;;7362:30;7386:5;7362:30;:::i;:::-;7265:133;;;;:::o;7404:698::-;7496:6;7504;7512;7561:2;7549:9;7540:7;7536:23;7532:32;7529:119;;;7567:79;;:::i;:::-;7529:119;7715:1;7704:9;7700:17;7687:31;7745:18;7737:6;7734:30;7731:117;;;7767:79;;:::i;:::-;7731:117;7880:80;7952:7;7943:6;7932:9;7928:22;7880:80;:::i;:::-;7862:98;;;;7658:312;8009:2;8035:50;8077:7;8068:6;8057:9;8053:22;8035:50;:::i;:::-;8025:60;;7980:115;7404:698;;;;;:::o;8108:329::-;8167:6;8216:2;8204:9;8195:7;8191:23;8187:32;8184:119;;;8222:79;;:::i;:::-;8184:119;8342:1;8367:53;8412:7;8403:6;8392:9;8388:22;8367:53;:::i;:::-;8357:63;;8313:117;8108:329;;;;:::o;8443:180::-;8491:77;8488:1;8481:88;8588:4;8585:1;8578:15;8612:4;8609:1;8602:15;8629:281;8712:27;8734:4;8712:27;:::i;:::-;8704:6;8700:40;8842:6;8830:10;8827:22;8806:18;8794:10;8791:34;8788:62;8785:88;;;8853:18;;:::i;:::-;8785:88;8893:10;8889:2;8882:22;8672:238;8629:281;;:::o;8916:129::-;8950:6;8977:20;;:::i;:::-;8967:30;;9006:33;9034:4;9026:6;9006:33;:::i;:::-;8916:129;;;:::o;9051:311::-;9128:4;9218:18;9210:6;9207:30;9204:56;;;9240:18;;:::i;:::-;9204:56;9290:4;9282:6;9278:17;9270:25;;9350:4;9344;9340:15;9332:23;;9051:311;;;:::o;9385:710::-;9481:5;9506:81;9522:64;9579:6;9522:64;:::i;:::-;9506:81;:::i;:::-;9497:90;;9607:5;9636:6;9629:5;9622:21;9670:4;9663:5;9659:16;9652:23;;9723:4;9715:6;9711:17;9703:6;9699:30;9752:3;9744:6;9741:15;9738:122;;;9771:79;;:::i;:::-;9738:122;9886:6;9869:220;9903:6;9898:3;9895:15;9869:220;;;9978:3;10007:37;10040:3;10028:10;10007:37;:::i;:::-;10002:3;9995:50;10074:4;10069:3;10065:14;10058:21;;9945:144;9929:4;9924:3;9920:14;9913:21;;9869:220;;;9873:21;9487:608;;9385:710;;;;;:::o;10118:370::-;10189:5;10238:3;10231:4;10223:6;10219:17;10215:27;10205:122;;10246:79;;:::i;:::-;10205:122;10363:6;10350:20;10388:94;10478:3;10470:6;10463:4;10455:6;10451:17;10388:94;:::i;:::-;10379:103;;10195:293;10118:370;;;;:::o;10494:678::-;10584:6;10592;10641:2;10629:9;10620:7;10616:23;10612:32;10609:119;;;10647:79;;:::i;:::-;10609:119;10795:1;10784:9;10780:17;10767:31;10825:18;10817:6;10814:30;10811:117;;;10847:79;;:::i;:::-;10811:117;10952:78;11022:7;11013:6;11002:9;10998:22;10952:78;:::i;:::-;10942:88;;10738:302;11079:2;11105:50;11147:7;11138:6;11127:9;11123:22;11105:50;:::i;:::-;11095:60;;11050:115;10494:678;;;;;:::o;11178:474::-;11246:6;11254;11303:2;11291:9;11282:7;11278:23;11274:32;11271:119;;;11309:79;;:::i;:::-;11271:119;11429:1;11454:53;11499:7;11490:6;11479:9;11475:22;11454:53;:::i;:::-;11444:63;;11400:117;11556:2;11582:53;11627:7;11618:6;11607:9;11603:22;11582:53;:::i;:::-;11572:63;;11527:118;11178:474;;;;;:::o;11658:180::-;11706:77;11703:1;11696:88;11803:4;11800:1;11793:15;11827:4;11824:1;11817:15;11844:320;11888:6;11925:1;11919:4;11915:12;11905:22;;11972:1;11966:4;11962:12;11993:18;11983:81;;12049:4;12041:6;12037:17;12027:27;;11983:81;12111:2;12103:6;12100:14;12080:18;12077:38;12074:84;;12130:18;;:::i;:::-;12074:84;11895:269;11844:320;;;:::o;12170:180::-;12218:77;12215:1;12208:88;12315:4;12312:1;12305:15;12339:4;12336:1;12329:15;12356:191;12396:3;12415:20;12433:1;12415:20;:::i;:::-;12410:25;;12449:20;12467:1;12449:20;:::i;:::-;12444:25;;12492:1;12489;12485:9;12478:16;;12513:3;12510:1;12507:10;12504:36;;;12520:18;;:::i;:::-;12504:36;12356:191;;;;:::o;12553:180::-;12601:77;12598:1;12591:88;12698:4;12695:1;12688:15;12722:4;12719:1;12712:15;12739:233;12778:3;12801:24;12819:5;12801:24;:::i;:::-;12792:33;;12847:66;12840:5;12837:77;12834:103;;12917:18;;:::i;:::-;12834:103;12964:1;12957:5;12953:13;12946:20;;12739:233;;;:::o;12978:224::-;13118:34;13114:1;13106:6;13102:14;13095:58;13187:7;13182:2;13174:6;13170:15;13163:32;12978:224;:::o;13208:366::-;13350:3;13371:67;13435:2;13430:3;13371:67;:::i;:::-;13364:74;;13447:93;13536:3;13447:93;:::i;:::-;13565:2;13560:3;13556:12;13549:19;;13208:366;;;:::o;13580:419::-;13746:4;13784:2;13773:9;13769:18;13761:26;;13833:9;13827:4;13823:20;13819:1;13808:9;13804:17;13797:47;13861:131;13987:4;13861:131;:::i;:::-;13853:139;;13580:419;;;:::o;14005:158::-;14145:10;14141:1;14133:6;14129:14;14122:34;14005:158;:::o;14169:365::-;14311:3;14332:66;14396:1;14391:3;14332:66;:::i;:::-;14325:73;;14407:93;14496:3;14407:93;:::i;:::-;14525:2;14520:3;14516:12;14509:19;;14169:365;;;:::o;14540:419::-;14706:4;14744:2;14733:9;14729:18;14721:26;;14793:9;14787:4;14783:20;14779:1;14768:9;14764:17;14757:47;14821:131;14947:4;14821:131;:::i;:::-;14813:139;;14540:419;;;:::o;14965:161::-;15105:13;15101:1;15093:6;15089:14;15082:37;14965:161;:::o;15132:366::-;15274:3;15295:67;15359:2;15354:3;15295:67;:::i;:::-;15288:74;;15371:93;15460:3;15371:93;:::i;:::-;15489:2;15484:3;15480:12;15473:19;;15132:366;;;:::o;15504:419::-;15670:4;15708:2;15697:9;15693:18;15685:26;;15757:9;15751:4;15747:20;15743:1;15732:9;15728:17;15721:47;15785:131;15911:4;15785:131;:::i;:::-;15777:139;;15504:419;;;:::o;15929:159::-;16069:11;16065:1;16057:6;16053:14;16046:35;15929:159;:::o;16094:365::-;16236:3;16257:66;16321:1;16316:3;16257:66;:::i;:::-;16250:73;;16332:93;16421:3;16332:93;:::i;:::-;16450:2;16445:3;16441:12;16434:19;;16094:365;;;:::o;16465:419::-;16631:4;16669:2;16658:9;16654:18;16646:26;;16718:9;16712:4;16708:20;16704:1;16693:9;16689:17;16682:47;16746:131;16872:4;16746:131;:::i;:::-;16738:139;;16465:419;;;:::o;16890:225::-;17030:34;17026:1;17018:6;17014:14;17007:58;17099:8;17094:2;17086:6;17082:15;17075:33;16890:225;:::o;17121:366::-;17263:3;17284:67;17348:2;17343:3;17284:67;:::i;:::-;17277:74;;17360:93;17449:3;17360:93;:::i;:::-;17478:2;17473:3;17469:12;17462:19;;17121:366;;;:::o;17493:419::-;17659:4;17697:2;17686:9;17682:18;17674:26;;17746:9;17740:4;17736:20;17732:1;17721:9;17717:17;17710:47;17774:131;17900:4;17774:131;:::i;:::-;17766:139;;17493:419;;;:::o;17918:223::-;18058:34;18054:1;18046:6;18042:14;18035:58;18127:6;18122:2;18114:6;18110:15;18103:31;17918:223;:::o;18147:366::-;18289:3;18310:67;18374:2;18369:3;18310:67;:::i;:::-;18303:74;;18386:93;18475:3;18386:93;:::i;:::-;18504:2;18499:3;18495:12;18488:19;;18147:366;;;:::o;18519:419::-;18685:4;18723:2;18712:9;18708:18;18700:26;;18772:9;18766:4;18762:20;18758:1;18747:9;18743:17;18736:47;18800:131;18926:4;18800:131;:::i;:::-;18792:139;;18519:419;;;:::o;18944:221::-;19084:34;19080:1;19072:6;19068:14;19061:58;19153:4;19148:2;19140:6;19136:15;19129:29;18944:221;:::o;19171:366::-;19313:3;19334:67;19398:2;19393:3;19334:67;:::i;:::-;19327:74;;19410:93;19499:3;19410:93;:::i;:::-;19528:2;19523:3;19519:12;19512:19;;19171:366;;;:::o;19543:419::-;19709:4;19747:2;19736:9;19732:18;19724:26;;19796:9;19790:4;19786:20;19782:1;19771:9;19767:17;19760:47;19824:131;19950:4;19824:131;:::i;:::-;19816:139;;19543:419;;;:::o;19968:179::-;20108:31;20104:1;20096:6;20092:14;20085:55;19968:179;:::o;20153:366::-;20295:3;20316:67;20380:2;20375:3;20316:67;:::i;:::-;20309:74;;20392:93;20481:3;20392:93;:::i;:::-;20510:2;20505:3;20501:12;20494:19;;20153:366;;;:::o;20525:419::-;20691:4;20729:2;20718:9;20714:18;20706:26;;20778:9;20772:4;20768:20;20764:1;20753:9;20749:17;20742:47;20806:131;20932:4;20806:131;:::i;:::-;20798:139;;20525:419;;;:::o;20950:224::-;21090:34;21086:1;21078:6;21074:14;21067:58;21159:7;21154:2;21146:6;21142:15;21135:32;20950:224;:::o;21180:366::-;21322:3;21343:67;21407:2;21402:3;21343:67;:::i;:::-;21336:74;;21419:93;21508:3;21419:93;:::i;:::-;21537:2;21532:3;21528:12;21521:19;;21180:366;;;:::o;21552:419::-;21718:4;21756:2;21745:9;21741:18;21733:26;;21805:9;21799:4;21795:20;21791:1;21780:9;21776:17;21769:47;21833:131;21959:4;21833:131;:::i;:::-;21825:139;;21552:419;;;:::o;21977:222::-;22117:34;22113:1;22105:6;22101:14;22094:58;22186:5;22181:2;22173:6;22169:15;22162:30;21977:222;:::o;22205:366::-;22347:3;22368:67;22432:2;22427:3;22368:67;:::i;:::-;22361:74;;22444:93;22533:3;22444:93;:::i;:::-;22562:2;22557:3;22553:12;22546:19;;22205:366;;;:::o;22577:419::-;22743:4;22781:2;22770:9;22766:18;22758:26;;22830:9;22824:4;22820:20;22816:1;22805:9;22801:17;22794:47;22858:131;22984:4;22858:131;:::i;:::-;22850:139;;22577:419;;;:::o;23002:221::-;23142:34;23138:1;23130:6;23126:14;23119:58;23211:4;23206:2;23198:6;23194:15;23187:29;23002:221;:::o;23229:366::-;23371:3;23392:67;23456:2;23451:3;23392:67;:::i;:::-;23385:74;;23468:93;23557:3;23468:93;:::i;:::-;23586:2;23581:3;23577:12;23570:19;;23229:366;;;:::o;23601:419::-;23767:4;23805:2;23794:9;23790:18;23782:26;;23854:9;23848:4;23844:20;23840:1;23829:9;23825:17;23818:47;23882:131;24008:4;23882:131;:::i;:::-;23874:139;;23601:419;;;:::o;24026:410::-;24066:7;24089:20;24107:1;24089:20;:::i;:::-;24084:25;;24123:20;24141:1;24123:20;:::i;:::-;24118:25;;24178:1;24175;24171:9;24200:30;24218:11;24200:30;:::i;:::-;24189:41;;24379:1;24370:7;24366:15;24363:1;24360:22;24340:1;24333:9;24313:83;24290:139;;24409:18;;:::i;:::-;24290:139;24074:362;24026:410;;;;:::o;24442:180::-;24490:77;24487:1;24480:88;24587:4;24584:1;24577:15;24611:4;24608:1;24601:15;24628:185;24668:1;24685:20;24703:1;24685:20;:::i;:::-;24680:25;;24719:20;24737:1;24719:20;:::i;:::-;24714:25;;24758:1;24748:35;;24763:18;;:::i;:::-;24748:35;24805:1;24802;24798:9;24793:14;;24628:185;;;;:::o;24819:194::-;24859:4;24879:20;24897:1;24879:20;:::i;:::-;24874:25;;24913:20;24931:1;24913:20;:::i;:::-;24908:25;;24957:1;24954;24950:9;24942:17;;24981:1;24975:4;24972:11;24969:37;;;24986:18;;:::i;:::-;24969:37;24819:194;;;;:::o;25019:182::-;25159:34;25155:1;25147:6;25143:14;25136:58;25019:182;:::o;25207:366::-;25349:3;25370:67;25434:2;25429:3;25370:67;:::i;:::-;25363:74;;25446:93;25535:3;25446:93;:::i;:::-;25564:2;25559:3;25555:12;25548:19;;25207:366;;;:::o;25579:419::-;25745:4;25783:2;25772:9;25768:18;25760:26;;25832:9;25826:4;25822:20;25818:1;25807:9;25803:17;25796:47;25860:131;25986:4;25860:131;:::i;:::-;25852:139;;25579:419;;;:::o;26004:234::-;26144:34;26140:1;26132:6;26128:14;26121:58;26213:17;26208:2;26200:6;26196:15;26189:42;26004:234;:::o;26244:366::-;26386:3;26407:67;26471:2;26466:3;26407:67;:::i;:::-;26400:74;;26483:93;26572:3;26483:93;:::i;:::-;26601:2;26596:3;26592:12;26585:19;;26244:366;;;:::o;26616:419::-;26782:4;26820:2;26809:9;26805:18;26797:26;;26869:9;26863:4;26859:20;26855:1;26844:9;26840:17;26833:47;26897:131;27023:4;26897:131;:::i;:::-;26889:139;;26616:419;;;:::o;27041:225::-;27181:34;27177:1;27169:6;27165:14;27158:58;27250:8;27245:2;27237:6;27233:15;27226:33;27041:225;:::o;27272:366::-;27414:3;27435:67;27499:2;27494:3;27435:67;:::i;:::-;27428:74;;27511:93;27600:3;27511:93;:::i;:::-;27629:2;27624:3;27620:12;27613:19;;27272:366;;;:::o;27644:419::-;27810:4;27848:2;27837:9;27833:18;27825:26;;27897:9;27891:4;27887:20;27883:1;27872:9;27868:17;27861:47;27925:131;28051:4;27925:131;:::i;:::-;27917:139;;27644:419;;;:::o;28069:442::-;28218:4;28256:2;28245:9;28241:18;28233:26;;28269:71;28337:1;28326:9;28322:17;28313:6;28269:71;:::i;:::-;28350:72;28418:2;28407:9;28403:18;28394:6;28350:72;:::i;:::-;28432;28500:2;28489:9;28485:18;28476:6;28432:72;:::i;:::-;28069:442;;;;;;:::o;28517:147::-;28618:11;28655:3;28640:18;;28517:147;;;;:::o;28670:114::-;;:::o;28790:398::-;28949:3;28970:83;29051:1;29046:3;28970:83;:::i;:::-;28963:90;;29062:93;29151:3;29062:93;:::i;:::-;29180:1;29175:3;29171:11;29164:18;;28790:398;;;:::o;29194:379::-;29378:3;29400:147;29543:3;29400:147;:::i;:::-;29393:154;;29564:3;29557:10;;29194:379;;;:::o;29579:143::-;29636:5;29667:6;29661:13;29652:22;;29683:33;29710:5;29683:33;:::i;:::-;29579:143;;;;:::o;29728:351::-;29798:6;29847:2;29835:9;29826:7;29822:23;29818:32;29815:119;;;29853:79;;:::i;:::-;29815:119;29973:1;29998:64;30054:7;30045:6;30034:9;30030:22;29998:64;:::i;:::-;29988:74;;29944:128;29728:351;;;;:::o;30085:85::-;30130:7;30159:5;30148:16;;30085:85;;;:::o;30176:158::-;30234:9;30267:61;30285:42;30294:32;30320:5;30294:32;:::i;:::-;30285:42;:::i;:::-;30267:61;:::i;:::-;30254:74;;30176:158;;;:::o;30340:147::-;30435:45;30474:5;30435:45;:::i;:::-;30430:3;30423:58;30340:147;;:::o;30493:114::-;30560:6;30594:5;30588:12;30578:22;;30493:114;;;:::o;30613:184::-;30712:11;30746:6;30741:3;30734:19;30786:4;30781:3;30777:14;30762:29;;30613:184;;;;:::o;30803:132::-;30870:4;30893:3;30885:11;;30923:4;30918:3;30914:14;30906:22;;30803:132;;;:::o;30941:108::-;31018:24;31036:5;31018:24;:::i;:::-;31013:3;31006:37;30941:108;;:::o;31055:179::-;31124:10;31145:46;31187:3;31179:6;31145:46;:::i;:::-;31223:4;31218:3;31214:14;31200:28;;31055:179;;;;:::o;31240:113::-;31310:4;31342;31337:3;31333:14;31325:22;;31240:113;;;:::o;31389:732::-;31508:3;31537:54;31585:5;31537:54;:::i;:::-;31607:86;31686:6;31681:3;31607:86;:::i;:::-;31600:93;;31717:56;31767:5;31717:56;:::i;:::-;31796:7;31827:1;31812:284;31837:6;31834:1;31831:13;31812:284;;;31913:6;31907:13;31940:63;31999:3;31984:13;31940:63;:::i;:::-;31933:70;;32026:60;32079:6;32026:60;:::i;:::-;32016:70;;31872:224;31859:1;31856;31852:9;31847:14;;31812:284;;;31816:14;32112:3;32105:10;;31513:608;;;31389:732;;;;:::o;32127:831::-;32390:4;32428:3;32417:9;32413:19;32405:27;;32442:71;32510:1;32499:9;32495:17;32486:6;32442:71;:::i;:::-;32523:80;32599:2;32588:9;32584:18;32575:6;32523:80;:::i;:::-;32650:9;32644:4;32640:20;32635:2;32624:9;32620:18;32613:48;32678:108;32781:4;32772:6;32678:108;:::i;:::-;32670:116;;32796:72;32864:2;32853:9;32849:18;32840:6;32796:72;:::i;:::-;32878:73;32946:3;32935:9;32931:19;32922:6;32878:73;:::i;:::-;32127:831;;;;;;;;:::o;32964:807::-;33213:4;33251:3;33240:9;33236:19;33228:27;;33265:71;33333:1;33322:9;33318:17;33309:6;33265:71;:::i;:::-;33346:72;33414:2;33403:9;33399:18;33390:6;33346:72;:::i;:::-;33428:80;33504:2;33493:9;33489:18;33480:6;33428:80;:::i;:::-;33518;33594:2;33583:9;33579:18;33570:6;33518:80;:::i;:::-;33608:73;33676:3;33665:9;33661:19;33652:6;33608:73;:::i;:::-;33691;33759:3;33748:9;33744:19;33735:6;33691:73;:::i;:::-;32964:807;;;;;;;;;:::o;33777:143::-;33834:5;33865:6;33859:13;33850:22;;33881:33;33908:5;33881:33;:::i;:::-;33777:143;;;;:::o;33926:663::-;34014:6;34022;34030;34079:2;34067:9;34058:7;34054:23;34050:32;34047:119;;;34085:79;;:::i;:::-;34047:119;34205:1;34230:64;34286:7;34277:6;34266:9;34262:22;34230:64;:::i;:::-;34220:74;;34176:128;34343:2;34369:64;34425:7;34416:6;34405:9;34401:22;34369:64;:::i;:::-;34359:74;;34314:129;34482:2;34508:64;34564:7;34555:6;34544:9;34540:22;34508:64;:::i;:::-;34498:74;;34453:129;33926:663;;;;;:::o

Swarm Source

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