ETH Price: $3,310.76 (-1.31%)

Token

Degen Ballz (BALLZ)
 

Overview

Max Total Supply

8,000,000,000 BALLZ

Holders

115

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.006380638485443329 BALLZ

Value
$0.00
0x54cf2fc9b1de5108645ff513f6c65570a4d0897d
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:
Ballz

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-01-14
*/

// SPDX-License-Identifier: MIT


/* 
TG: https://t.me/DegenBallZeth
*/ 

pragma solidity ^0.8.19;

interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address from, address to, uint256 amount) external returns (bool);
}
interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

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

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;


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


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

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

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

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

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


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

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

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        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 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 {
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

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

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

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

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

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

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

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

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


    function _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 {}
}



abstract contract Ownable is Context {
    address private _owner;

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


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

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

  
    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 IUniswapV2Router02 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address UNISWAP_V2_PAIR);
}

contract Ballz is IERC20, Ownable {
    event Reflect(uint256 amountReflected, uint256 newTotalProportion);


    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;

    IUniswapV2Router02 public constant UNISWAP_V2_ROUTER =
        IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public immutable UNISWAP_V2_PAIR;

    struct Fee {
        uint8 reflection;
        uint8 dev;
        uint128 total;
    }

    string _name = "Degen Ballz";
    string _symbol = "BALLZ"; 

    uint256 _totalSupply = 8000000000 * 10 ** 18;
    address private marketingWallet;

    uint256 public _maxTxAmount = (_totalSupply * 1) / 100;
    uint256 public _maxWalletSize =  (_totalSupply * 1) / 100; 
    mapping(address => uint256) public _rOwned;
    uint256 public _totalProportion = _totalSupply;

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

    bool public limitsEnabled = true;
    mapping(address => bool) isFeeExempt;
    mapping(address => bool) isTxLimitExempt;

    Fee public initialBuyFee = Fee({ reflection: 0, dev: 33, total: 33});
    Fee public initialSellFee = Fee({ reflection: 0, dev: 33, total: 33});
    Fee public finalBuyFee = Fee({ reflection: 1, dev: 4, total: 5});
    Fee public finalSellFee =  Fee({ reflection: 1, dev: 4, total: 5});
    Fee public buyFee;
    Fee public sellFee;
    address private ballz;

    bool public claimingFees = true;
    uint256 public swapThreshold = (_totalSupply * 3) / 10000; // 0.05%
    uint256 public customMultiplier = 20;
    bool inSwap;

    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }


 constructor() {
    buyFee = initialBuyFee;
    sellFee = initialSellFee;
    address _uniswapPair = IUniswapV2Factory(UNISWAP_V2_ROUTER.factory()).createPair(address(this), UNISWAP_V2_ROUTER.WETH());
    UNISWAP_V2_PAIR = _uniswapPair;

    _allowances[address(this)][address(UNISWAP_V2_ROUTER)] = type(uint256).max;
    _allowances[address(this)][tx.origin] = type(uint256).max;

    isTxLimitExempt[address(this)] = true;
    isTxLimitExempt[address(UNISWAP_V2_ROUTER)] = true;
    isTxLimitExempt[_uniswapPair] = true;
    isTxLimitExempt[tx.origin] = true;
    isFeeExempt[tx.origin] = true;
    isFeeExempt[address(this)] = true;

    // Set the marketing wallet address here
    marketingWallet = 0x0CA6C5C11fFCfFe4aA35191bd2daDd7AC43Df445;
    isFeeExempt[marketingWallet] = true;
    isTxLimitExempt[marketingWallet] = true;

    // Allocate tokens to marketing wallet
    uint256 marketingWalletSupply = _totalSupply * 5 / 100; // 5% of total supply
    _rOwned[marketingWallet] = marketingWalletSupply;

    // Burn 50% of total supply
    uint256 burnAmount = _totalSupply * 50 / 100;
    _rOwned[DEAD] = burnAmount; // address(0) typically represents the burn address

    // Allocate the remaining supply (45%) to the tx.origin
    _rOwned[tx.origin] = _totalSupply - marketingWalletSupply - burnAmount;

    // Emit transfer events
    emit Transfer(address(0), marketingWallet, marketingWalletSupply);
    emit Transfer(address(0), DEAD, burnAmount); // Burn event
    emit Transfer(address(0), tx.origin, _rOwned[tx.origin]);
}


    receive() external payable {}

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }
    function setFees(uint8 buyReflection, uint8 buyDev, uint8 sellReflection, uint8 sellDev) public onlyOwner {
        buyFee = Fee({reflection: buyReflection, dev: buyDev, total: uint128(buyReflection) + uint128(buyDev)});
        sellFee = Fee({reflection: sellReflection, dev: sellDev, total: uint128(sellReflection) + uint128(sellDev)});
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            require(_allowances[sender][msg.sender] >= amount, "ERC20: insufficient allowance");
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
        }

        return _transferFrom(sender, recipient, amount);
    }


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

    function decimals() external pure returns (uint8) {
        return 18;
    }

    function name() external view returns (string memory) {
        return _name;
    }

    function symbol() external view returns (string memory) {
        return _symbol;
    }

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

    function allowance(address holder, address spender) external view override returns (uint256) {
        return _allowances[holder][spender];
    }

    function tokensToProportion(uint256 tokens) public view returns (uint256) {
        return tokens * _totalProportion / _totalSupply;
    }

    function tokenFromReflection(uint256 proportion) public view returns (uint256) {
        return proportion * _totalSupply / _totalProportion;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply - balanceOf(DEAD) - balanceOf(ZERO);
    }


    function clearStuckBalance() external onlyOwner {
        (bool success,) = payable(msg.sender).call{value: address(this).balance}("");
        require(success);
    }

    function clearStuckToken() external onlyOwner {
        _transferFrom(address(this), msg.sender, balanceOf(address(this)));
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external onlyOwner {
        claimingFees = _enabled;
        swapThreshold =  (_totalSupply * _amount) / 10000;
    }

  function setCustomMultiplier(uint256 _customMultiplier) public onlyOwner {
        customMultiplier = _customMultiplier;
    }

    function setIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }

    function setFeeReceivers(address m_) external onlyOwner {
        ballz = m_;
    }

    function setMaxTxBasisPoint(uint256 p_) external onlyOwner {
        _maxTxAmount = _totalSupply * p_ / 10000;
    }

    function removeLimits() external onlyOwner {
        limitsEnabled = false;
        buyFee = finalBuyFee;
        sellFee = finalSellFee;
    }

    
   function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
    if (inSwap) {
        return _basicTransfer(sender, recipient, amount);
    }


    if (sender == UNISWAP_V2_PAIR && !isTxLimitExempt[recipient]) {
        require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            require(balanceOf(recipient) + amount <= _maxWalletSize, "Exceeds maxWalletSize.");
        }
    if (_shouldSwapBack()) {
        _swapBack();
    }

    uint256 proportionAmount = tokensToProportion(amount);
    require(_rOwned[sender] >= proportionAmount, "Insufficient Balance");
    _rOwned[sender] = _rOwned[sender] - proportionAmount;


    uint256 proportionReceived = _shouldTakeFee(sender, recipient)
        ? _takeFeeInProportions(sender == UNISWAP_V2_PAIR ? true : false, sender, proportionAmount)
        : proportionAmount;
    _rOwned[recipient] = _rOwned[recipient] + proportionReceived;

    emit Transfer(sender, recipient, tokenFromReflection(proportionReceived));
    return true;
    }
 
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        uint256 proportionAmount = tokensToProportion(amount);
        require(_rOwned[sender] >= proportionAmount, "Insufficient Balance");
        _rOwned[sender] = _rOwned[sender] - proportionAmount;
        _rOwned[recipient] = _rOwned[recipient] + proportionAmount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    
    function _takeFeeInProportions(bool buying, address sender, uint256 proportionAmount) internal returns (uint256) {
        Fee memory __buyFee = buyFee;
        Fee memory __sellFee = sellFee;

        uint256 proportionFeeAmount =
            buying == true ? proportionAmount * __buyFee.total / 100 : proportionAmount * __sellFee.total / 100;


        uint256 proportionReflected = buying == true
            ? proportionFeeAmount * __buyFee.reflection / __buyFee.total
            : proportionFeeAmount * __sellFee.reflection / __sellFee.total;

        _totalProportion = _totalProportion - proportionReflected;

       
        uint256 _proportionToContract = proportionFeeAmount - proportionReflected;
        if (_proportionToContract > 0) {
            _rOwned[address(this)] = _rOwned[address(this)] + _proportionToContract;

            emit Transfer(sender, address(this), tokenFromReflection(_proportionToContract));
        }
        emit Reflect(proportionReflected, _totalProportion);
        return proportionAmount - proportionFeeAmount;
    }

    function _shouldSwapBack() internal view returns (bool) {
        return msg.sender != UNISWAP_V2_PAIR && !inSwap && claimingFees && balanceOf(address(this)) >= swapThreshold;
    }

    function _swapBack() internal swapping {
        Fee memory __sellFee = sellFee;
        uint256 contractBalance = balanceOf(address(this));
        uint256 __swapThreshold = swapThreshold;
        uint256 amountToSwap = __swapThreshold;

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

        if (contractBalance > swapThreshold * customMultiplier) {
            contractBalance = swapThreshold * customMultiplier;
        }
        approve(address(UNISWAP_V2_ROUTER), contractBalance);


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

        UNISWAP_V2_ROUTER.swapExactTokensForETHSupportingFeeOnTransferTokens(
            contractBalance, 0, path, address(this), block.timestamp
        );

        uint256 amountETH = address(this).balance;

        uint256 totalSwapFee = __sellFee.total - __sellFee.reflection;
        uint256 ballzcash = amountETH * __sellFee.dev / totalSwapFee;


     (bool tmpSuccess,) = payable(ballz).call{value: ballzcash}("");
    require(tmpSuccess, "Transfer failed.");

    }

  function _shouldTakeFee(address sender, address recipient) internal view returns (bool) {
    // Check if either sender or recipient is the DEX pair (indicating a buy or sell transaction)
    bool isBuy = sender == UNISWAP_V2_PAIR && !isFeeExempt[recipient];
    bool isSell = recipient == UNISWAP_V2_PAIR && !isFeeExempt[sender];

    // Apply fees only for buy or sell transactions
    return isBuy || isSell;
}
}

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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountReflected","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTotalProportion","type":"uint256"}],"name":"Reflect","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":[],"name":"UNISWAP_V2_PAIR","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNISWAP_V2_ROUTER","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_rOwned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalProportion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","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":"buyFee","outputs":[{"internalType":"uint8","name":"reflection","type":"uint8"},{"internalType":"uint8","name":"dev","type":"uint8"},{"internalType":"uint128","name":"total","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimingFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"customMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"finalBuyFee","outputs":[{"internalType":"uint8","name":"reflection","type":"uint8"},{"internalType":"uint8","name":"dev","type":"uint8"},{"internalType":"uint128","name":"total","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"finalSellFee","outputs":[{"internalType":"uint8","name":"reflection","type":"uint8"},{"internalType":"uint8","name":"dev","type":"uint8"},{"internalType":"uint128","name":"total","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialBuyFee","outputs":[{"internalType":"uint8","name":"reflection","type":"uint8"},{"internalType":"uint8","name":"dev","type":"uint8"},{"internalType":"uint128","name":"total","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialSellFee","outputs":[{"internalType":"uint8","name":"reflection","type":"uint8"},{"internalType":"uint8","name":"dev","type":"uint8"},{"internalType":"uint128","name":"total","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint8","name":"reflection","type":"uint8"},{"internalType":"uint8","name":"dev","type":"uint8"},{"internalType":"uint128","name":"total","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_customMultiplier","type":"uint256"}],"name":"setCustomMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"m_","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"buyReflection","type":"uint8"},{"internalType":"uint8","name":"buyDev","type":"uint8"},{"internalType":"uint8","name":"sellReflection","type":"uint8"},{"internalType":"uint8","name":"sellDev","type":"uint8"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"p_","type":"uint256"}],"name":"setMaxTxBasisPoint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proportion","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"tokensToProportion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526040518060400160405280600b81526020017f446567656e2042616c6c7a000000000000000000000000000000000000000000815250600190816200004a9190620012a3565b506040518060400160405280600581526020017f42414c4c5a00000000000000000000000000000000000000000000000000000081525060029081620000919190620012a3565b506b19d971e4fe8401e74000000060035560646001600354620000b59190620013b9565b620000c1919062001433565b60055560646001600354620000d79190620013b9565b620000e3919062001433565b6006556003546008556001600a60006101000a81548160ff0219169083151502179055506040518060600160405280600060ff168152602001602160ff16815260200160216fffffffffffffffffffffffffffffffff16815250600d60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050506040518060600160405280600060ff168152602001602160ff16815260200160216fffffffffffffffffffffffffffffffff16815250600e60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050506040518060600160405280600160ff168152602001600460ff16815260200160056fffffffffffffffffffffffffffffffff16815250600f60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050506040518060600160405280600160ff168152602001600460ff16815260200160056fffffffffffffffffffffffffffffffff16815250601060008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050506001601360146101000a81548160ff02191690831515021790555061271060038054620004219190620013b9565b6200042d919062001433565b60145560146015553480156200044257600080fd5b50620004636200045762000f5d60201b60201c565b62000f6560201b60201c565b600d60116000820160009054906101000a900460ff168160000160006101000a81548160ff021916908360ff1602179055506000820160019054906101000a900460ff168160000160016101000a81548160ff021916908360ff1602179055506000820160029054906101000a90046fffffffffffffffffffffffffffffffff168160000160026101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550905050600e60126000820160009054906101000a900460ff168160000160006101000a81548160ff021916908360ff1602179055506000820160019054906101000a900460ff168160000160016101000a81548160ff021916908360ff1602179055506000820160029054906101000a90046fffffffffffffffffffffffffffffffff168160000160026101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055509050506000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000641573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006679190620014d5565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620006e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007099190620014d5565b6040518363ffffffff1660e01b81526004016200072892919062001518565b6020604051808303816000875af115801562000748573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200076e9190620014d5565b90508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550730ca6c5c11ffcffe4aa35191bd2dadd7ac43df445600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060006064600560035462000c7c9190620013b9565b62000c88919062001433565b90508060076000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006064603260035462000d059190620013b9565b62000d11919062001433565b9050806007600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808260035462000d6a919062001545565b62000d76919062001545565b600760003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405162000e3b919062001591565b60405180910390a361dead73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000ea5919062001591565b60405180910390a33273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600760003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405162000f4c919062001591565b60405180910390a3505050620015ae565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620010ab57607f821691505b602082108103620010c157620010c062001063565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200112b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620010ec565b620011378683620010ec565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620011846200117e62001178846200114f565b62001159565b6200114f565b9050919050565b6000819050919050565b620011a08362001163565b620011b8620011af826200118b565b848454620010f9565b825550505050565b600090565b620011cf620011c0565b620011dc81848462001195565b505050565b5b818110156200120457620011f8600082620011c5565b600181019050620011e2565b5050565b601f82111562001253576200121d81620010c7565b6200122884620010dc565b8101602085101562001238578190505b620012506200124785620010dc565b830182620011e1565b50505b505050565b600082821c905092915050565b6000620012786000198460080262001258565b1980831691505092915050565b600062001293838362001265565b9150826002028217905092915050565b620012ae8262001029565b67ffffffffffffffff811115620012ca57620012c962001034565b5b620012d6825462001092565b620012e382828562001208565b600060209050601f8311600181146200131b576000841562001306578287015190505b62001312858262001285565b86555062001382565b601f1984166200132b86620010c7565b60005b8281101562001355578489015182556001820191506020850194506020810190506200132e565b8683101562001375578489015162001371601f89168262001265565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620013c6826200114f565b9150620013d3836200114f565b9250828202620013e3816200114f565b91508282048414831517620013fd57620013fc6200138a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062001440826200114f565b91506200144d836200114f565b92508262001460576200145f62001404565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200149d8262001470565b9050919050565b620014af8162001490565b8114620014bb57600080fd5b50565b600081519050620014cf81620014a4565b92915050565b600060208284031215620014ee57620014ed6200146b565b5b6000620014fe84828501620014be565b91505092915050565b620015128162001490565b82525050565b60006040820190506200152f600083018562001507565b6200153e602083018462001507565b9392505050565b600062001552826200114f565b91506200155f836200114f565b92508282039050818111156200157a57620015796200138a565b5b92915050565b6200158b816200114f565b82525050565b6000602082019050620015a8600083018462001580565b92915050565b608051613793620015ed60003960008181611822015281816118d201528181611b66015281816120370152818161254401526125ed01526137936000f3fe6080604052600436106102555760003560e01c8063751039fc11610139578063b0f7ec38116100b6578063e186ec741161007a578063e186ec74146108bd578063e6990a90146108e6578063e6d40d6014610913578063f2fde38b14610940578063f40acc3d14610969578063f84ba65d146109945761025c565b8063b0f7ec38146107ec578063d85a282814610817578063dd62ed3e1461082e578063df20fd491461086b578063e01bb688146108945761025c565b80638f9a55c0116100fd5780638f9a55c01461070557806395d89b41146107305780639faa7cfd1461075b578063a82ed9ec14610784578063a9059cbb146107af5761025c565b8063751039fc1461064457806378de607b1461065b5780637d1db4a514610686578063875fa085146106b15780638da5cb5b146106da5761025c565b80632d838119116101d257806345ce53651161019657806345ce536514610520578063470624021461055d578063571ac8b01461058a578063658d4b7f146105c757806370a08231146105f0578063715018a61461062d5761025c565b80632d83811914610449578063313ce5671461048657806331e02e0b146104b15780633582ad23146104de578063364333f4146105095761025c565b806318160ddd1161021957806318160ddd1461035c57806323b872dd146103875780632b112e49146103c45780632b14ca56146103ef5780632b36a6d21461041c5761025c565b80630445b6671461026157806306fdde031461028c578063095ea7b3146102b75780630cfc15f9146102f457806317800287146103315761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b506102766109bd565b6040516102839190612a5f565b60405180910390f35b34801561029857600080fd5b506102a16109c3565b6040516102ae9190612b0a565b60405180910390f35b3480156102c357600080fd5b506102de60048036038101906102d99190612bbb565b610a55565b6040516102eb9190612c16565b60405180910390f35b34801561030057600080fd5b5061031b60048036038101906103169190612c31565b610b47565b6040516103289190612a5f565b60405180910390f35b34801561033d57600080fd5b50610346610b5f565b6040516103539190612a5f565b60405180910390f35b34801561036857600080fd5b50610371610b65565b60405161037e9190612a5f565b60405180910390f35b34801561039357600080fd5b506103ae60048036038101906103a99190612c5e565b610b6f565b6040516103bb9190612c16565b60405180910390f35b3480156103d057600080fd5b506103d9610df0565b6040516103e69190612a5f565b60405180910390f35b3480156103fb57600080fd5b50610404610e23565b60405161041393929190612cf8565b60405180910390f35b34801561042857600080fd5b50610431610e71565b60405161044093929190612cf8565b60405180910390f35b34801561045557600080fd5b50610470600480360381019061046b9190612d2f565b610ebf565b60405161047d9190612a5f565b60405180910390f35b34801561049257600080fd5b5061049b610ee3565b6040516104a89190612d5c565b60405180910390f35b3480156104bd57600080fd5b506104c6610eec565b6040516104d593929190612cf8565b60405180910390f35b3480156104ea57600080fd5b506104f3610f3a565b6040516105009190612c16565b60405180910390f35b34801561051557600080fd5b5061051e610f4d565b005b34801561052c57600080fd5b5061054760048036038101906105429190612d2f565b610fce565b6040516105549190612a5f565b60405180910390f35b34801561056957600080fd5b50610572610ff2565b60405161058193929190612cf8565b60405180910390f35b34801561059657600080fd5b506105b160048036038101906105ac9190612c31565b611040565b6040516105be9190612c16565b60405180910390f35b3480156105d357600080fd5b506105ee60048036038101906105e99190612da3565b611073565b005b3480156105fc57600080fd5b5061061760048036038101906106129190612c31565b6110d6565b6040516106249190612a5f565b60405180910390f35b34801561063957600080fd5b50610642611127565b005b34801561065057600080fd5b5061065961113b565b005b34801561066757600080fd5b506106706112dc565b60405161067d9190612a5f565b60405180910390f35b34801561069257600080fd5b5061069b6112e2565b6040516106a89190612a5f565b60405180910390f35b3480156106bd57600080fd5b506106d860048036038101906106d39190612d2f565b6112e8565b005b3480156106e657600080fd5b506106ef6112fa565b6040516106fc9190612df2565b60405180910390f35b34801561071157600080fd5b5061071a611323565b6040516107279190612a5f565b60405180910390f35b34801561073c57600080fd5b50610745611329565b6040516107529190612b0a565b60405180910390f35b34801561076757600080fd5b50610782600480360381019061077d9190612e39565b6113bb565b005b34801561079057600080fd5b5061079961155d565b6040516107a69190612eff565b60405180910390f35b3480156107bb57600080fd5b506107d660048036038101906107d19190612bbb565b611575565b6040516107e39190612c16565b60405180910390f35b3480156107f857600080fd5b5061080161158a565b60405161080e9190612c16565b60405180910390f35b34801561082357600080fd5b5061082c61159d565b005b34801561083a57600080fd5b5061085560048036038101906108509190612f1a565b6115bb565b6040516108629190612a5f565b60405180910390f35b34801561087757600080fd5b50610892600480360381019061088d9190612f5a565b611642565b005b3480156108a057600080fd5b506108bb60048036038101906108b69190612c31565b611689565b005b3480156108c957600080fd5b506108e460048036038101906108df9190612d2f565b6116d5565b005b3480156108f257600080fd5b506108fb611701565b60405161090a93929190612cf8565b60405180910390f35b34801561091f57600080fd5b5061092861174f565b60405161093793929190612cf8565b60405180910390f35b34801561094c57600080fd5b5061096760048036038101906109629190612c31565b61179d565b005b34801561097557600080fd5b5061097e611820565b60405161098b9190612df2565b60405180910390f35b3480156109a057600080fd5b506109bb60048036038101906109b69190612da3565b611844565b005b60145481565b6060600180546109d290612fc9565b80601f01602080910402602001604051908101604052809291908181526020018280546109fe90612fc9565b8015610a4b5780601f10610a2057610100808354040283529160200191610a4b565b820191906000526020600020905b815481529060010190602001808311610a2e57829003601f168201915b5050505050905090565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b359190612a5f565b60405180910390a36001905092915050565b60076020528060005260406000206000915090505481565b60085481565b6000600354905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610ddc5781600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610cd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cca90613046565b60405180910390fd5b81600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d5b9190613095565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610de78484846118a7565b90509392505050565b6000610dfc60006110d6565b610e0761dead6110d6565b600354610e149190613095565b610e1e9190613095565b905090565b60128060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a90046fffffffffffffffffffffffffffffffff16905083565b600e8060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a90046fffffffffffffffffffffffffffffffff16905083565b600060085460035483610ed291906130c9565b610edc919061313a565b9050919050565b60006012905090565b600d8060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a90046fffffffffffffffffffffffffffffffff16905083565b600a60009054906101000a900460ff1681565b610f55611cd4565b60003373ffffffffffffffffffffffffffffffffffffffff1647604051610f7b9061319c565b60006040518083038185875af1925050503d8060008114610fb8576040519150601f19603f3d011682016040523d82523d6000602084013e610fbd565b606091505b5050905080610fcb57600080fd5b50565b600060035460085483610fe191906130c9565b610feb919061313a565b9050919050565b60118060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a90046fffffffffffffffffffffffffffffffff16905083565b600061106c827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610a55565b9050919050565b61107b611cd4565b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611120600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ebf565b9050919050565b61112f611cd4565b6111396000611d52565b565b611143611cd4565b6000600a60006101000a81548160ff021916908315150217905550600f60116000820160009054906101000a900460ff168160000160006101000a81548160ff021916908360ff1602179055506000820160019054906101000a900460ff168160000160016101000a81548160ff021916908360ff1602179055506000820160029054906101000a90046fffffffffffffffffffffffffffffffff168160000160026101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550905050601060126000820160009054906101000a900460ff168160000160006101000a81548160ff021916908360ff1602179055506000820160019054906101000a900460ff168160000160016101000a81548160ff021916908360ff1602179055506000820160029054906101000a90046fffffffffffffffffffffffffffffffff168160000160026101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550905050565b60155481565b60055481565b6112f0611cd4565b8060158190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60065481565b60606002805461133890612fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461136490612fc9565b80156113b15780601f10611386576101008083540402835291602001916113b1565b820191906000526020600020905b81548152906001019060200180831161139457829003601f168201915b5050505050905090565b6113c3611cd4565b60405180606001604052808560ff1681526020018460ff1681526020018460ff168660ff166113f291906131b1565b6fffffffffffffffffffffffffffffffff16815250601160008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180606001604052808360ff1681526020018260ff1681526020018260ff168460ff166114bc91906131b1565b6fffffffffffffffffffffffffffffffff16815250601260008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505050505050565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b60006115823384846118a7565b905092915050565b601360149054906101000a900460ff1681565b6115a5611cd4565b6115b830336115b3306110d6565b6118a7565b50565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61164a611cd4565b81601360146101000a81548160ff0219169083151502179055506127108160035461167591906130c9565b61167f919061313a565b6014819055505050565b611691611cd4565b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6116dd611cd4565b612710816003546116ee91906130c9565b6116f8919061313a565b60058190555050565b60108060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a90046fffffffffffffffffffffffffffffffff16905083565b600f8060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a90046fffffffffffffffffffffffffffffffff16905083565b6117a5611cd4565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611814576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180b90613267565b60405180910390fd5b61181d81611d52565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b61184c611cd4565b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601660009054906101000a900460ff16156118d0576118c9848484611e16565b9050611ccd565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156119755750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611a18576005548211156119bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b6906132f9565b60405180910390fd5b600654826119cc856110d6565b6119d69190613319565b1115611a17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0e90613399565b60405180910390fd5b5b611a20612033565b15611a2e57611a2d6120d1565b5b6000611a3983610fce565b905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611abd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab490613405565b60405180910390fd5b80600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b089190613095565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611b57868661253f565b611b615781611bc9565b611bc87f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614611bbe576000611bc1565b60015b87846126a5565b5b905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c169190613319565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611cb184610ebf565b604051611cbe9190612a5f565b60405180910390a36001925050505b9392505050565b611cdc612a3e565b73ffffffffffffffffffffffffffffffffffffffff16611cfa6112fa565b73ffffffffffffffffffffffffffffffffffffffff1614611d50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4790613471565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080611e2283610fce565b905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611ea6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9d90613405565b60405180910390fd5b80600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ef19190613095565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f7f9190613319565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161201f9190612a5f565b60405180910390a360019150509392505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561209e5750601660009054906101000a900460ff16155b80156120b65750601360149054906101000a900460ff165b80156120cc57506014546120c9306110d6565b10155b905090565b6001601660006101000a81548160ff021916908315150217905550600060126040518060600160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff1681526020016000820160029054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16815250509050600061218c306110d6565b905060006014549050600081905060008314806121a95750600081145b156121b75750505050612522565b6015546014546121c791906130c9565b8311156121e1576015546014546121de91906130c9565b92505b6121ff737a250d5630b4cf539739df2c5dacb4c659f2488d84610a55565b506000600267ffffffffffffffff81111561221d5761221c613491565b5b60405190808252806020026020018201604052801561224b5781602001602082028036833780820191505090505b5090503081600081518110612263576122626134c0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123209190613504565b81600181518110612334576123336134c0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008430426040518663ffffffff1660e01b81526004016123c495949392919061362a565b600060405180830381600087803b1580156123de57600080fd5b505af11580156123f2573d6000803e3d6000fd5b5050505060004790506000866000015160ff1687604001516124149190613684565b6fffffffffffffffffffffffffffffffff169050600081886020015160ff168461243e91906130c9565b612448919061313a565b90506000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516124929061319c565b60006040518083038185875af1925050503d80600081146124cf576040519150601f19603f3d011682016040523d82523d6000602084013e6124d4565b606091505b5050905080612518576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250f90613714565b60405180910390fd5b5050505050505050505b6000601660006101000a81548160ff021916908315150217905550565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156125e75750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156126905750600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b9050818061269b5750805b9250505092915050565b60008060116040518060600160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff1681526020016000820160029054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16815250509050600060126040518060600160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff1681526020016000820160029054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090506000600115158715151461281157606482604001516fffffffffffffffffffffffffffffffff168661280291906130c9565b61280c919061313a565b612840565b606483604001516fffffffffffffffffffffffffffffffff168661283591906130c9565b61283f919061313a565b5b9050600060011515881515146128895782604001516fffffffffffffffffffffffffffffffff16836000015160ff168361287a91906130c9565b612884919061313a565b6128be565b83604001516fffffffffffffffffffffffffffffffff16846000015160ff16836128b391906130c9565b6128bd919061313a565b5b9050806008546128ce9190613095565b600881905550600081836128e29190613095565b905060008111156129e95780600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129389190613319565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6129d384610ebf565b6040516129e09190612a5f565b60405180910390a35b7fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac82600854604051612a1c929190613734565b60405180910390a18287612a309190613095565b955050505050509392505050565b600033905090565b6000819050919050565b612a5981612a46565b82525050565b6000602082019050612a746000830184612a50565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612ab4578082015181840152602081019050612a99565b60008484015250505050565b6000601f19601f8301169050919050565b6000612adc82612a7a565b612ae68185612a85565b9350612af6818560208601612a96565b612aff81612ac0565b840191505092915050565b60006020820190508181036000830152612b248184612ad1565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b5c82612b31565b9050919050565b612b6c81612b51565b8114612b7757600080fd5b50565b600081359050612b8981612b63565b92915050565b612b9881612a46565b8114612ba357600080fd5b50565b600081359050612bb581612b8f565b92915050565b60008060408385031215612bd257612bd1612b2c565b5b6000612be085828601612b7a565b9250506020612bf185828601612ba6565b9150509250929050565b60008115159050919050565b612c1081612bfb565b82525050565b6000602082019050612c2b6000830184612c07565b92915050565b600060208284031215612c4757612c46612b2c565b5b6000612c5584828501612b7a565b91505092915050565b600080600060608486031215612c7757612c76612b2c565b5b6000612c8586828701612b7a565b9350506020612c9686828701612b7a565b9250506040612ca786828701612ba6565b9150509250925092565b600060ff82169050919050565b612cc781612cb1565b82525050565b60006fffffffffffffffffffffffffffffffff82169050919050565b612cf281612ccd565b82525050565b6000606082019050612d0d6000830186612cbe565b612d1a6020830185612cbe565b612d276040830184612ce9565b949350505050565b600060208284031215612d4557612d44612b2c565b5b6000612d5384828501612ba6565b91505092915050565b6000602082019050612d716000830184612cbe565b92915050565b612d8081612bfb565b8114612d8b57600080fd5b50565b600081359050612d9d81612d77565b92915050565b60008060408385031215612dba57612db9612b2c565b5b6000612dc885828601612b7a565b9250506020612dd985828601612d8e565b9150509250929050565b612dec81612b51565b82525050565b6000602082019050612e076000830184612de3565b92915050565b612e1681612cb1565b8114612e2157600080fd5b50565b600081359050612e3381612e0d565b92915050565b60008060008060808587031215612e5357612e52612b2c565b5b6000612e6187828801612e24565b9450506020612e7287828801612e24565b9350506040612e8387828801612e24565b9250506060612e9487828801612e24565b91505092959194509250565b6000819050919050565b6000612ec5612ec0612ebb84612b31565b612ea0565b612b31565b9050919050565b6000612ed782612eaa565b9050919050565b6000612ee982612ecc565b9050919050565b612ef981612ede565b82525050565b6000602082019050612f146000830184612ef0565b92915050565b60008060408385031215612f3157612f30612b2c565b5b6000612f3f85828601612b7a565b9250506020612f5085828601612b7a565b9150509250929050565b60008060408385031215612f7157612f70612b2c565b5b6000612f7f85828601612d8e565b9250506020612f9085828601612ba6565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612fe157607f821691505b602082108103612ff457612ff3612f9a565b5b50919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613030601d83612a85565b915061303b82612ffa565b602082019050919050565b6000602082019050818103600083015261305f81613023565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006130a082612a46565b91506130ab83612a46565b92508282039050818111156130c3576130c2613066565b5b92915050565b60006130d482612a46565b91506130df83612a46565b92508282026130ed81612a46565b9150828204841483151761310457613103613066565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061314582612a46565b915061315083612a46565b9250826131605761315f61310b565b5b828204905092915050565b600081905092915050565b50565b600061318660008361316b565b915061319182613176565b600082019050919050565b60006131a782613179565b9150819050919050565b60006131bc82612ccd565b91506131c783612ccd565b925082820190506fffffffffffffffffffffffffffffffff8111156131ef576131ee613066565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613251602683612a85565b915061325c826131f5565b604082019050919050565b6000602082019050818103600083015261328081613244565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b60006132e3602883612a85565b91506132ee82613287565b604082019050919050565b60006020820190508181036000830152613312816132d6565b9050919050565b600061332482612a46565b915061332f83612a46565b925082820190508082111561334757613346613066565b5b92915050565b7f45786365656473206d617857616c6c657453697a652e00000000000000000000600082015250565b6000613383601683612a85565b915061338e8261334d565b602082019050919050565b600060208201905081810360008301526133b281613376565b9050919050565b7f496e73756666696369656e742042616c616e6365000000000000000000000000600082015250565b60006133ef601483612a85565b91506133fa826133b9565b602082019050919050565b6000602082019050818103600083015261341e816133e2565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061345b602083612a85565b915061346682613425565b602082019050919050565b6000602082019050818103600083015261348a8161344e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506134fe81612b63565b92915050565b60006020828403121561351a57613519612b2c565b5b6000613528848285016134ef565b91505092915050565b6000819050919050565b600061355661355161354c84613531565b612ea0565b612a46565b9050919050565b6135668161353b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6135a181612b51565b82525050565b60006135b38383613598565b60208301905092915050565b6000602082019050919050565b60006135d78261356c565b6135e18185613577565b93506135ec83613588565b8060005b8381101561361d57815161360488826135a7565b975061360f836135bf565b9250506001810190506135f0565b5085935050505092915050565b600060a08201905061363f6000830188612a50565b61364c602083018761355d565b818103604083015261365e81866135cc565b905061366d6060830185612de3565b61367a6080830184612a50565b9695505050505050565b600061368f82612ccd565b915061369a83612ccd565b925082820390506fffffffffffffffffffffffffffffffff8111156136c2576136c1613066565b5b92915050565b7f5472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b60006136fe601083612a85565b9150613709826136c8565b602082019050919050565b6000602082019050818103600083015261372d816136f1565b9050919050565b60006040820190506137496000830185612a50565b6137566020830184612a50565b939250505056fea264697066735822122088580c43d01d8eaa9c403c560897fb0adbc4e460a4d2f49ab99a5464a0f6e27a64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102555760003560e01c8063751039fc11610139578063b0f7ec38116100b6578063e186ec741161007a578063e186ec74146108bd578063e6990a90146108e6578063e6d40d6014610913578063f2fde38b14610940578063f40acc3d14610969578063f84ba65d146109945761025c565b8063b0f7ec38146107ec578063d85a282814610817578063dd62ed3e1461082e578063df20fd491461086b578063e01bb688146108945761025c565b80638f9a55c0116100fd5780638f9a55c01461070557806395d89b41146107305780639faa7cfd1461075b578063a82ed9ec14610784578063a9059cbb146107af5761025c565b8063751039fc1461064457806378de607b1461065b5780637d1db4a514610686578063875fa085146106b15780638da5cb5b146106da5761025c565b80632d838119116101d257806345ce53651161019657806345ce536514610520578063470624021461055d578063571ac8b01461058a578063658d4b7f146105c757806370a08231146105f0578063715018a61461062d5761025c565b80632d83811914610449578063313ce5671461048657806331e02e0b146104b15780633582ad23146104de578063364333f4146105095761025c565b806318160ddd1161021957806318160ddd1461035c57806323b872dd146103875780632b112e49146103c45780632b14ca56146103ef5780632b36a6d21461041c5761025c565b80630445b6671461026157806306fdde031461028c578063095ea7b3146102b75780630cfc15f9146102f457806317800287146103315761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b506102766109bd565b6040516102839190612a5f565b60405180910390f35b34801561029857600080fd5b506102a16109c3565b6040516102ae9190612b0a565b60405180910390f35b3480156102c357600080fd5b506102de60048036038101906102d99190612bbb565b610a55565b6040516102eb9190612c16565b60405180910390f35b34801561030057600080fd5b5061031b60048036038101906103169190612c31565b610b47565b6040516103289190612a5f565b60405180910390f35b34801561033d57600080fd5b50610346610b5f565b6040516103539190612a5f565b60405180910390f35b34801561036857600080fd5b50610371610b65565b60405161037e9190612a5f565b60405180910390f35b34801561039357600080fd5b506103ae60048036038101906103a99190612c5e565b610b6f565b6040516103bb9190612c16565b60405180910390f35b3480156103d057600080fd5b506103d9610df0565b6040516103e69190612a5f565b60405180910390f35b3480156103fb57600080fd5b50610404610e23565b60405161041393929190612cf8565b60405180910390f35b34801561042857600080fd5b50610431610e71565b60405161044093929190612cf8565b60405180910390f35b34801561045557600080fd5b50610470600480360381019061046b9190612d2f565b610ebf565b60405161047d9190612a5f565b60405180910390f35b34801561049257600080fd5b5061049b610ee3565b6040516104a89190612d5c565b60405180910390f35b3480156104bd57600080fd5b506104c6610eec565b6040516104d593929190612cf8565b60405180910390f35b3480156104ea57600080fd5b506104f3610f3a565b6040516105009190612c16565b60405180910390f35b34801561051557600080fd5b5061051e610f4d565b005b34801561052c57600080fd5b5061054760048036038101906105429190612d2f565b610fce565b6040516105549190612a5f565b60405180910390f35b34801561056957600080fd5b50610572610ff2565b60405161058193929190612cf8565b60405180910390f35b34801561059657600080fd5b506105b160048036038101906105ac9190612c31565b611040565b6040516105be9190612c16565b60405180910390f35b3480156105d357600080fd5b506105ee60048036038101906105e99190612da3565b611073565b005b3480156105fc57600080fd5b5061061760048036038101906106129190612c31565b6110d6565b6040516106249190612a5f565b60405180910390f35b34801561063957600080fd5b50610642611127565b005b34801561065057600080fd5b5061065961113b565b005b34801561066757600080fd5b506106706112dc565b60405161067d9190612a5f565b60405180910390f35b34801561069257600080fd5b5061069b6112e2565b6040516106a89190612a5f565b60405180910390f35b3480156106bd57600080fd5b506106d860048036038101906106d39190612d2f565b6112e8565b005b3480156106e657600080fd5b506106ef6112fa565b6040516106fc9190612df2565b60405180910390f35b34801561071157600080fd5b5061071a611323565b6040516107279190612a5f565b60405180910390f35b34801561073c57600080fd5b50610745611329565b6040516107529190612b0a565b60405180910390f35b34801561076757600080fd5b50610782600480360381019061077d9190612e39565b6113bb565b005b34801561079057600080fd5b5061079961155d565b6040516107a69190612eff565b60405180910390f35b3480156107bb57600080fd5b506107d660048036038101906107d19190612bbb565b611575565b6040516107e39190612c16565b60405180910390f35b3480156107f857600080fd5b5061080161158a565b60405161080e9190612c16565b60405180910390f35b34801561082357600080fd5b5061082c61159d565b005b34801561083a57600080fd5b5061085560048036038101906108509190612f1a565b6115bb565b6040516108629190612a5f565b60405180910390f35b34801561087757600080fd5b50610892600480360381019061088d9190612f5a565b611642565b005b3480156108a057600080fd5b506108bb60048036038101906108b69190612c31565b611689565b005b3480156108c957600080fd5b506108e460048036038101906108df9190612d2f565b6116d5565b005b3480156108f257600080fd5b506108fb611701565b60405161090a93929190612cf8565b60405180910390f35b34801561091f57600080fd5b5061092861174f565b60405161093793929190612cf8565b60405180910390f35b34801561094c57600080fd5b5061096760048036038101906109629190612c31565b61179d565b005b34801561097557600080fd5b5061097e611820565b60405161098b9190612df2565b60405180910390f35b3480156109a057600080fd5b506109bb60048036038101906109b69190612da3565b611844565b005b60145481565b6060600180546109d290612fc9565b80601f01602080910402602001604051908101604052809291908181526020018280546109fe90612fc9565b8015610a4b5780601f10610a2057610100808354040283529160200191610a4b565b820191906000526020600020905b815481529060010190602001808311610a2e57829003601f168201915b5050505050905090565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b359190612a5f565b60405180910390a36001905092915050565b60076020528060005260406000206000915090505481565b60085481565b6000600354905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610ddc5781600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610cd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cca90613046565b60405180910390fd5b81600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d5b9190613095565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610de78484846118a7565b90509392505050565b6000610dfc60006110d6565b610e0761dead6110d6565b600354610e149190613095565b610e1e9190613095565b905090565b60128060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a90046fffffffffffffffffffffffffffffffff16905083565b600e8060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a90046fffffffffffffffffffffffffffffffff16905083565b600060085460035483610ed291906130c9565b610edc919061313a565b9050919050565b60006012905090565b600d8060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a90046fffffffffffffffffffffffffffffffff16905083565b600a60009054906101000a900460ff1681565b610f55611cd4565b60003373ffffffffffffffffffffffffffffffffffffffff1647604051610f7b9061319c565b60006040518083038185875af1925050503d8060008114610fb8576040519150601f19603f3d011682016040523d82523d6000602084013e610fbd565b606091505b5050905080610fcb57600080fd5b50565b600060035460085483610fe191906130c9565b610feb919061313a565b9050919050565b60118060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a90046fffffffffffffffffffffffffffffffff16905083565b600061106c827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610a55565b9050919050565b61107b611cd4565b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611120600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ebf565b9050919050565b61112f611cd4565b6111396000611d52565b565b611143611cd4565b6000600a60006101000a81548160ff021916908315150217905550600f60116000820160009054906101000a900460ff168160000160006101000a81548160ff021916908360ff1602179055506000820160019054906101000a900460ff168160000160016101000a81548160ff021916908360ff1602179055506000820160029054906101000a90046fffffffffffffffffffffffffffffffff168160000160026101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550905050601060126000820160009054906101000a900460ff168160000160006101000a81548160ff021916908360ff1602179055506000820160019054906101000a900460ff168160000160016101000a81548160ff021916908360ff1602179055506000820160029054906101000a90046fffffffffffffffffffffffffffffffff168160000160026101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550905050565b60155481565b60055481565b6112f0611cd4565b8060158190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60065481565b60606002805461133890612fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461136490612fc9565b80156113b15780601f10611386576101008083540402835291602001916113b1565b820191906000526020600020905b81548152906001019060200180831161139457829003601f168201915b5050505050905090565b6113c3611cd4565b60405180606001604052808560ff1681526020018460ff1681526020018460ff168660ff166113f291906131b1565b6fffffffffffffffffffffffffffffffff16815250601160008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180606001604052808360ff1681526020018260ff1681526020018260ff168460ff166114bc91906131b1565b6fffffffffffffffffffffffffffffffff16815250601260008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505050505050565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b60006115823384846118a7565b905092915050565b601360149054906101000a900460ff1681565b6115a5611cd4565b6115b830336115b3306110d6565b6118a7565b50565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61164a611cd4565b81601360146101000a81548160ff0219169083151502179055506127108160035461167591906130c9565b61167f919061313a565b6014819055505050565b611691611cd4565b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6116dd611cd4565b612710816003546116ee91906130c9565b6116f8919061313a565b60058190555050565b60108060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a90046fffffffffffffffffffffffffffffffff16905083565b600f8060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a90046fffffffffffffffffffffffffffffffff16905083565b6117a5611cd4565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611814576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180b90613267565b60405180910390fd5b61181d81611d52565b50565b7f0000000000000000000000001a17b10aaa183990c70171dc86ef80b29df4da1681565b61184c611cd4565b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601660009054906101000a900460ff16156118d0576118c9848484611e16565b9050611ccd565b7f0000000000000000000000001a17b10aaa183990c70171dc86ef80b29df4da1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156119755750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611a18576005548211156119bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b6906132f9565b60405180910390fd5b600654826119cc856110d6565b6119d69190613319565b1115611a17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0e90613399565b60405180910390fd5b5b611a20612033565b15611a2e57611a2d6120d1565b5b6000611a3983610fce565b905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611abd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab490613405565b60405180910390fd5b80600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b089190613095565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611b57868661253f565b611b615781611bc9565b611bc87f0000000000000000000000001a17b10aaa183990c70171dc86ef80b29df4da1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614611bbe576000611bc1565b60015b87846126a5565b5b905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c169190613319565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611cb184610ebf565b604051611cbe9190612a5f565b60405180910390a36001925050505b9392505050565b611cdc612a3e565b73ffffffffffffffffffffffffffffffffffffffff16611cfa6112fa565b73ffffffffffffffffffffffffffffffffffffffff1614611d50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4790613471565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080611e2283610fce565b905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611ea6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9d90613405565b60405180910390fd5b80600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ef19190613095565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f7f9190613319565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161201f9190612a5f565b60405180910390a360019150509392505050565b60007f0000000000000000000000001a17b10aaa183990c70171dc86ef80b29df4da1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561209e5750601660009054906101000a900460ff16155b80156120b65750601360149054906101000a900460ff165b80156120cc57506014546120c9306110d6565b10155b905090565b6001601660006101000a81548160ff021916908315150217905550600060126040518060600160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff1681526020016000820160029054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16815250509050600061218c306110d6565b905060006014549050600081905060008314806121a95750600081145b156121b75750505050612522565b6015546014546121c791906130c9565b8311156121e1576015546014546121de91906130c9565b92505b6121ff737a250d5630b4cf539739df2c5dacb4c659f2488d84610a55565b506000600267ffffffffffffffff81111561221d5761221c613491565b5b60405190808252806020026020018201604052801561224b5781602001602082028036833780820191505090505b5090503081600081518110612263576122626134c0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123209190613504565b81600181518110612334576123336134c0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008430426040518663ffffffff1660e01b81526004016123c495949392919061362a565b600060405180830381600087803b1580156123de57600080fd5b505af11580156123f2573d6000803e3d6000fd5b5050505060004790506000866000015160ff1687604001516124149190613684565b6fffffffffffffffffffffffffffffffff169050600081886020015160ff168461243e91906130c9565b612448919061313a565b90506000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516124929061319c565b60006040518083038185875af1925050503d80600081146124cf576040519150601f19603f3d011682016040523d82523d6000602084013e6124d4565b606091505b5050905080612518576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250f90613714565b60405180910390fd5b5050505050505050505b6000601660006101000a81548160ff021916908315150217905550565b6000807f0000000000000000000000001a17b10aaa183990c70171dc86ef80b29df4da1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156125e75750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905060007f0000000000000000000000001a17b10aaa183990c70171dc86ef80b29df4da1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156126905750600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b9050818061269b5750805b9250505092915050565b60008060116040518060600160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff1681526020016000820160029054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16815250509050600060126040518060600160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff1681526020016000820160029054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090506000600115158715151461281157606482604001516fffffffffffffffffffffffffffffffff168661280291906130c9565b61280c919061313a565b612840565b606483604001516fffffffffffffffffffffffffffffffff168661283591906130c9565b61283f919061313a565b5b9050600060011515881515146128895782604001516fffffffffffffffffffffffffffffffff16836000015160ff168361287a91906130c9565b612884919061313a565b6128be565b83604001516fffffffffffffffffffffffffffffffff16846000015160ff16836128b391906130c9565b6128bd919061313a565b5b9050806008546128ce9190613095565b600881905550600081836128e29190613095565b905060008111156129e95780600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129389190613319565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6129d384610ebf565b6040516129e09190612a5f565b60405180910390a35b7fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac82600854604051612a1c929190613734565b60405180910390a18287612a309190613095565b955050505050509392505050565b600033905090565b6000819050919050565b612a5981612a46565b82525050565b6000602082019050612a746000830184612a50565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612ab4578082015181840152602081019050612a99565b60008484015250505050565b6000601f19601f8301169050919050565b6000612adc82612a7a565b612ae68185612a85565b9350612af6818560208601612a96565b612aff81612ac0565b840191505092915050565b60006020820190508181036000830152612b248184612ad1565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b5c82612b31565b9050919050565b612b6c81612b51565b8114612b7757600080fd5b50565b600081359050612b8981612b63565b92915050565b612b9881612a46565b8114612ba357600080fd5b50565b600081359050612bb581612b8f565b92915050565b60008060408385031215612bd257612bd1612b2c565b5b6000612be085828601612b7a565b9250506020612bf185828601612ba6565b9150509250929050565b60008115159050919050565b612c1081612bfb565b82525050565b6000602082019050612c2b6000830184612c07565b92915050565b600060208284031215612c4757612c46612b2c565b5b6000612c5584828501612b7a565b91505092915050565b600080600060608486031215612c7757612c76612b2c565b5b6000612c8586828701612b7a565b9350506020612c9686828701612b7a565b9250506040612ca786828701612ba6565b9150509250925092565b600060ff82169050919050565b612cc781612cb1565b82525050565b60006fffffffffffffffffffffffffffffffff82169050919050565b612cf281612ccd565b82525050565b6000606082019050612d0d6000830186612cbe565b612d1a6020830185612cbe565b612d276040830184612ce9565b949350505050565b600060208284031215612d4557612d44612b2c565b5b6000612d5384828501612ba6565b91505092915050565b6000602082019050612d716000830184612cbe565b92915050565b612d8081612bfb565b8114612d8b57600080fd5b50565b600081359050612d9d81612d77565b92915050565b60008060408385031215612dba57612db9612b2c565b5b6000612dc885828601612b7a565b9250506020612dd985828601612d8e565b9150509250929050565b612dec81612b51565b82525050565b6000602082019050612e076000830184612de3565b92915050565b612e1681612cb1565b8114612e2157600080fd5b50565b600081359050612e3381612e0d565b92915050565b60008060008060808587031215612e5357612e52612b2c565b5b6000612e6187828801612e24565b9450506020612e7287828801612e24565b9350506040612e8387828801612e24565b9250506060612e9487828801612e24565b91505092959194509250565b6000819050919050565b6000612ec5612ec0612ebb84612b31565b612ea0565b612b31565b9050919050565b6000612ed782612eaa565b9050919050565b6000612ee982612ecc565b9050919050565b612ef981612ede565b82525050565b6000602082019050612f146000830184612ef0565b92915050565b60008060408385031215612f3157612f30612b2c565b5b6000612f3f85828601612b7a565b9250506020612f5085828601612b7a565b9150509250929050565b60008060408385031215612f7157612f70612b2c565b5b6000612f7f85828601612d8e565b9250506020612f9085828601612ba6565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612fe157607f821691505b602082108103612ff457612ff3612f9a565b5b50919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613030601d83612a85565b915061303b82612ffa565b602082019050919050565b6000602082019050818103600083015261305f81613023565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006130a082612a46565b91506130ab83612a46565b92508282039050818111156130c3576130c2613066565b5b92915050565b60006130d482612a46565b91506130df83612a46565b92508282026130ed81612a46565b9150828204841483151761310457613103613066565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061314582612a46565b915061315083612a46565b9250826131605761315f61310b565b5b828204905092915050565b600081905092915050565b50565b600061318660008361316b565b915061319182613176565b600082019050919050565b60006131a782613179565b9150819050919050565b60006131bc82612ccd565b91506131c783612ccd565b925082820190506fffffffffffffffffffffffffffffffff8111156131ef576131ee613066565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613251602683612a85565b915061325c826131f5565b604082019050919050565b6000602082019050818103600083015261328081613244565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b60006132e3602883612a85565b91506132ee82613287565b604082019050919050565b60006020820190508181036000830152613312816132d6565b9050919050565b600061332482612a46565b915061332f83612a46565b925082820190508082111561334757613346613066565b5b92915050565b7f45786365656473206d617857616c6c657453697a652e00000000000000000000600082015250565b6000613383601683612a85565b915061338e8261334d565b602082019050919050565b600060208201905081810360008301526133b281613376565b9050919050565b7f496e73756666696369656e742042616c616e6365000000000000000000000000600082015250565b60006133ef601483612a85565b91506133fa826133b9565b602082019050919050565b6000602082019050818103600083015261341e816133e2565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061345b602083612a85565b915061346682613425565b602082019050919050565b6000602082019050818103600083015261348a8161344e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506134fe81612b63565b92915050565b60006020828403121561351a57613519612b2c565b5b6000613528848285016134ef565b91505092915050565b6000819050919050565b600061355661355161354c84613531565b612ea0565b612a46565b9050919050565b6135668161353b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6135a181612b51565b82525050565b60006135b38383613598565b60208301905092915050565b6000602082019050919050565b60006135d78261356c565b6135e18185613577565b93506135ec83613588565b8060005b8381101561361d57815161360488826135a7565b975061360f836135bf565b9250506001810190506135f0565b5085935050505092915050565b600060a08201905061363f6000830188612a50565b61364c602083018761355d565b818103604083015261365e81866135cc565b905061366d6060830185612de3565b61367a6080830184612a50565b9695505050505050565b600061368f82612ccd565b915061369a83612ccd565b925082820390506fffffffffffffffffffffffffffffffff8111156136c2576136c1613066565b5b92915050565b7f5472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b60006136fe601083612a85565b9150613709826136c8565b602082019050919050565b6000602082019050818103600083015261372d816136f1565b9050919050565b60006040820190506137496000830185612a50565b6137566020830184612a50565b939250505056fea264697066735822122088580c43d01d8eaa9c403c560897fb0adbc4e460a4d2f49ab99a5464a0f6e27a64736f6c63430008130033

Deployed Bytecode Sourcemap

8059:11586:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9606:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12983:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11465:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8891:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8940:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12787:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12336:441;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13779:136;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9513:18;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;9269:69;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;13622:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12897:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9194:68;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;9063:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13925:170;;;;;;;;;;;;;:::i;:::-;;13474:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9489:17;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;11689:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14566:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13173:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7029:103;;;;;;;;;;;;;:::i;:::-;;15047:147;;;;;;;;;;;;;:::i;:::-;;9679:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8765:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14430:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6789:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8826:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13076:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11981:347;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8325:126;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11819:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9568:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14103:131;;;;;;;;;;;;;:::i;:::-;;13319:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14242:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14828:85;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14921:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9416:66;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;9345:64;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;7140:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8458:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14693:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9606:57;;;;:::o;12983:85::-;13022:13;13055:5;13048:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12983:85;:::o;11465:216::-;11540:4;11592:6;11557:11;:23;11569:10;11557:23;;;;;;;;;;;;;;;:32;11581:7;11557:32;;;;;;;;;;;;;;;:41;;;;11635:7;11614:37;;11623:10;11614:37;;;11644:6;11614:37;;;;;;:::i;:::-;;;;;;;;11669:4;11662:11;;11465:216;;;;:::o;8891:42::-;;;;;;;;;;;;;;;;;:::o;8940:46::-;;;;:::o;12787:102::-;12842:7;12869:12;;12862:19;;12787:102;:::o;12336:441::-;12436:4;12492:17;12457:11;:19;12469:6;12457:19;;;;;;;;;;;;;;;:31;12477:10;12457:31;;;;;;;;;;;;;;;;:52;12453:257;;12569:6;12534:11;:19;12546:6;12534:19;;;;;;;;;;;;;;;:31;12554:10;12534:31;;;;;;;;;;;;;;;;:41;;12526:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;12692:6;12658:11;:19;12670:6;12658:19;;;;;;;;;;;;;;;:31;12678:10;12658:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;12624:11;:19;12636:6;12624:19;;;;;;;;;;;;;;;:31;12644:10;12624:31;;;;;;;;;;;;;;;:74;;;;12453:257;12729:40;12743:6;12751:9;12762:6;12729:13;:40::i;:::-;12722:47;;12336:441;;;;;:::o;13779:136::-;13832:7;13892:15;8274:42;13892:9;:15::i;:::-;13874;8201:42;13874:9;:15::i;:::-;13859:12;;:30;;;;:::i;:::-;:48;;;;:::i;:::-;13852:55;;13779:136;:::o;9513:18::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9269:69::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;13622:149::-;13692:7;13747:16;;13732:12;;13719:10;:25;;;;:::i;:::-;:44;;;;:::i;:::-;13712:51;;13622:149;;;:::o;12897:78::-;12940:5;12965:2;12958:9;;12897:78;:::o;9194:68::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9063:32::-;;;;;;;;;;;;;:::o;13925:170::-;6744:13;:11;:13::i;:::-;13985:12:::1;14010:10;14002:24;;14034:21;14002:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13984:76;;;14079:7;14071:16;;;::::0;::::1;;13973:122;13925:170::o:0;13474:140::-;13539:7;13594:12;;13575:16;;13566:6;:25;;;;:::i;:::-;:40;;;;:::i;:::-;13559:47;;13474:140;;;:::o;9489:17::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11689:122::-;11744:4;11768:35;11776:7;11785:17;11768:7;:35::i;:::-;11761:42;;11689:122;;;:::o;14566:119::-;6744:13;:11;:13::i;:::-;14671:6:::1;14649:11;:19;14661:6;14649:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;14566:119:::0;;:::o;13173:138::-;13239:7;13266:37;13286:7;:16;13294:7;13286:16;;;;;;;;;;;;;;;;13266:19;:37::i;:::-;13259:44;;13173:138;;;:::o;7029:103::-;6744:13;:11;:13::i;:::-;7094:30:::1;7121:1;7094:18;:30::i;:::-;7029:103::o:0;15047:147::-;6744:13;:11;:13::i;:::-;15117:5:::1;15101:13;;:21;;;;;;;;;;;;;;;;;;15142:11;15133:6;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15174:12;15164:7;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15047:147::o:0;9679:36::-;;;;:::o;8765:54::-;;;;:::o;14430:128::-;6744:13;:11;:13::i;:::-;14533:17:::1;14514:16;:36;;;;14430:128:::0;:::o;6789:87::-;6835:7;6862:6;;;;;;;;;;;6855:13;;6789:87;:::o;8826:57::-;;;;:::o;13076:89::-;13117:13;13150:7;13143:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13076:89;:::o;11981:347::-;6744:13;:11;:13::i;:::-;12107:94:::1;;;;;;;;12124:13;12107:94;;;;;;12144:6;12107:94;;;;;;12192:6;12184:15;;12167:13;12159:22;;:40;;;;:::i;:::-;12107:94;;;;::::0;12098:6:::1;:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12222:98;;;;;;;;12239:14;12222:98;;;;;;12260:7;12222:98;;;;;;12310:7;12302:16;;12284:14;12276:23;;:42;;;;:::i;:::-;12222:98;;;;::::0;12212:7:::1;:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11981:347:::0;;;;:::o;8325:126::-;8408:42;8325:126;:::o;11819:156::-;11899:4;11923:44;11937:10;11949:9;11960:6;11923:13;:44::i;:::-;11916:51;;11819:156;;;;:::o;9568:31::-;;;;;;;;;;;;;:::o;14103:131::-;6744:13;:11;:13::i;:::-;14160:66:::1;14182:4;14189:10;14201:24;14219:4;14201:9;:24::i;:::-;14160:13;:66::i;:::-;;14103:131::o:0;13319:147::-;13403:7;13430:11;:19;13442:6;13430:19;;;;;;;;;;;;;;;:28;13450:7;13430:28;;;;;;;;;;;;;;;;13423:35;;13319:147;;;;:::o;14242:182::-;6744:13;:11;:13::i;:::-;14348:8:::1;14333:12;;:23;;;;;;;;;;;;;;;;;;14411:5;14400:7;14385:12;;:22;;;;:::i;:::-;14384:32;;;;:::i;:::-;14367:13;:49;;;;14242:182:::0;;:::o;14828:85::-;6744:13;:11;:13::i;:::-;14903:2:::1;14895:5;;:10;;;;;;;;;;;;;;;;;;14828:85:::0;:::o;14921:118::-;6744:13;:11;:13::i;:::-;15026:5:::1;15021:2;15006:12;;:17;;;;:::i;:::-;:25;;;;:::i;:::-;14991:12;:40;;;;14921:118:::0;:::o;9416:66::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9345:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7140:201::-;6744:13;:11;:13::i;:::-;7249:1:::1;7229:22;;:8;:22;;::::0;7221:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7305:28;7324:8;7305:18;:28::i;:::-;7140:201:::0;:::o;8458:40::-;;;:::o;14693:127::-;6744:13;:11;:13::i;:::-;14806:6:::1;14780:15;:23;14796:6;14780:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;14693:127:::0;;:::o;15207:1082::-;15299:4;15316:6;;;;;;;;;;;15312:79;;;15342:41;15357:6;15365:9;15376:6;15342:14;:41::i;:::-;15335:48;;;;15312:79;15415:15;15405:25;;:6;:25;;;:56;;;;;15435:15;:26;15451:9;15435:26;;;;;;;;;;;;;;;;;;;;;;;;;15434:27;15405:56;15401:257;;;15492:12;;15482:6;:22;;15474:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;15605:14;;15595:6;15572:20;15582:9;15572;:20::i;:::-;:29;;;;:::i;:::-;:47;;15564:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;15401:257;15668:17;:15;:17::i;:::-;15664:53;;;15698:11;:9;:11::i;:::-;15664:53;15725:24;15752:26;15771:6;15752:18;:26::i;:::-;15725:53;;15812:16;15793:7;:15;15801:6;15793:15;;;;;;;;;;;;;;;;:35;;15785:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15896:16;15878:7;:15;15886:6;15878:15;;;;;;;;;;;;;;;;:34;;;;:::i;:::-;15860:7;:15;15868:6;15860:15;;;;;;;;;;;;;;;:52;;;;15923:26;15952:33;15967:6;15975:9;15952:14;:33::i;:::-;:162;;16098:16;15952:162;;;15997:89;16029:15;16019:25;;:6;:25;;;:40;;16054:5;16019:40;;;16047:4;16019:40;16061:6;16069:16;15997:21;:89::i;:::-;15952:162;15923:191;;16163:18;16142:7;:18;16150:9;16142:18;;;;;;;;;;;;;;;;:39;;;;:::i;:::-;16121:7;:18;16129:9;16121:18;;;;;;;;;;;;;;;:60;;;;16212:9;16195:68;;16204:6;16195:68;;;16223:39;16243:18;16223:19;:39::i;:::-;16195:68;;;;;;:::i;:::-;;;;;;;;16277:4;16270:11;;;;15207:1082;;;;;;:::o;6886:132::-;6961:12;:10;:12::i;:::-;6950:23;;:7;:5;:7::i;:::-;:23;;;6942:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6886:132::o;7354:191::-;7428:16;7447:6;;;;;;;;;;;7428:25;;7473:8;7464:6;;:17;;;;;;;;;;;;;;;;;;7528:8;7497:40;;7518:8;7497:40;;;;;;;;;;;;7417:128;7354:191;:::o;16298:455::-;16391:4;16408:24;16435:26;16454:6;16435:18;:26::i;:::-;16408:53;;16499:16;16480:7;:15;16488:6;16480:15;;;;;;;;;;;;;;;;:35;;16472:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16587:16;16569:7;:15;16577:6;16569:15;;;;;;;;;;;;;;;;:34;;;;:::i;:::-;16551:7;:15;16559:6;16551:15;;;;;;;;;;;;;;;:52;;;;16656:16;16635:7;:18;16643:9;16635:18;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;16614:7;:18;16622:9;16614:18;;;;;;;;;;;;;;;:58;;;;16705:9;16688:35;;16697:6;16688:35;;;16716:6;16688:35;;;;;;:::i;:::-;;;;;;;;16741:4;16734:11;;;16298:455;;;;;:::o;17859:183::-;17909:4;17947:15;17933:29;;:10;:29;;;;:40;;;;;17967:6;;;;;;;;;;;17966:7;17933:40;:56;;;;;17977:12;;;;;;;;;;;17933:56;:101;;;;;18021:13;;17993:24;18011:4;17993:9;:24::i;:::-;:41;;17933:101;17926:108;;17859:183;:::o;18050:1166::-;9782:4;9773:6;;:13;;;;;;;;;;;;;;;;;;18100:20:::1;18123:7;18100:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;18141:23;18167:24;18185:4;18167:9;:24::i;:::-;18141:50;;18202:23;18228:13;;18202:39;;18252:20;18275:15;18252:38;;18326:1;18307:15;:20;:41;;;;18347:1;18331:12;:17;18307:41;18303:80;;;18365:7;;;;;;18303:80;18433:16;;18417:13;;:32;;;;:::i;:::-;18399:15;:50;18395:133;;;18500:16;;18484:13;;:32;;;;:::i;:::-;18466:50;;18395:133;18538:52;8408:42;18574:15;18538:7;:52::i;:::-;;18605:21;18643:1;18629:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18605:40;;18674:4;18656;18661:1;18656:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;8408:42;18700:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18690:4;18695:1;18690:7;;;;;;;;:::i;:::-;;;;;;;:34;;;;;;;;;::::0;::::1;8408:42;18737:68;;;18820:15;18837:1;18840:4;18854;18861:15;18737:150;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18900:17;18920:21;18900:41;;18954:20;18995:9;:20;;;18977:38;;:9;:15;;;:38;;;;:::i;:::-;18954:61;;;;19026:17;19074:12;19058:9;:13;;;19046:25;;:9;:25;;;;:::i;:::-;:40;;;;:::i;:::-;19026:60;;19099:15;19127:5;;;;;;;;;;;19119:19;;19146:9;19119:41;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19098:62;;;19175:10;19167:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;18089:1127;;;;;;;;;9797:1;9818:5:::0;9809:6;;:14;;;;;;;;;;;;;;;;;;18050:1166::o;19222:420::-;19304:4;19416:10;19439:15;19429:25;;:6;:25;;;:52;;;;;19459:11;:22;19471:9;19459:22;;;;;;;;;;;;;;;;;;;;;;;;;19458:23;19429:52;19416:65;;19488:11;19515:15;19502:28;;:9;:28;;;:52;;;;;19535:11;:19;19547:6;19535:19;;;;;;;;;;;;;;;;;;;;;;;;;19534:20;19502:52;19488:66;;19623:5;:15;;;;19632:6;19623:15;19616:22;;;;19222:420;;;;:::o;16767:1084::-;16871:7;16891:19;16913:6;16891:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16930:20;16953:7;16930:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16973:27;17026:4;17016:14;;:6;:14;;;:99;;17112:3;17094:9;:15;;;17075:34;;:16;:34;;;;:::i;:::-;:40;;;;:::i;:::-;17016:99;;;17069:3;17052:8;:14;;;17033:33;;:16;:33;;;;:::i;:::-;:39;;;;:::i;:::-;17016:99;16973:142;;17130:27;17170:4;17160:14;;:6;:14;;;:164;;17309:9;:15;;;17264:60;;17286:9;:20;;;17264:42;;:19;:42;;;;:::i;:::-;:60;;;;:::i;:::-;17160:164;;;17234:8;:14;;;17190:58;;17212:8;:19;;;17190:41;;:19;:41;;;;:::i;:::-;:58;;;;:::i;:::-;17160:164;17130:194;;17375:19;17356:16;;:38;;;;:::i;:::-;17337:16;:57;;;;17416:29;17470:19;17448;:41;;;;:::i;:::-;17416:73;;17528:1;17504:21;:25;17500:226;;;17596:21;17571:7;:22;17587:4;17571:22;;;;;;;;;;;;;;;;:46;;;;:::i;:::-;17546:7;:22;17562:4;17546:22;;;;;;;;;;;;;;;:71;;;;17664:4;17639:75;;17648:6;17639:75;;;17671:42;17691:21;17671:19;:42::i;:::-;17639:75;;;;;;:::i;:::-;;;;;;;;17500:226;17741:46;17749:19;17770:16;;17741:46;;;;;;;:::i;:::-;;;;;;;;17824:19;17805:16;:38;;;;:::i;:::-;17798:45;;;;;;;16767:1084;;;;;:::o;1022:98::-;1075:7;1102:10;1095:17;;1022:98;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:329::-;3857:6;3906:2;3894:9;3885:7;3881:23;3877:32;3874:119;;;3912:79;;:::i;:::-;3874:119;4032:1;4057:53;4102:7;4093:6;4082:9;4078:22;4057:53;:::i;:::-;4047:63;;4003:117;3798:329;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:118::-;5005:7;5045:34;5038:5;5034:46;5023:57;;4968:118;;;:::o;5092:::-;5179:24;5197:5;5179:24;:::i;:::-;5174:3;5167:37;5092:118;;:::o;5216:426::-;5357:4;5395:2;5384:9;5380:18;5372:26;;5408:67;5472:1;5461:9;5457:17;5448:6;5408:67;:::i;:::-;5485:68;5549:2;5538:9;5534:18;5525:6;5485:68;:::i;:::-;5563:72;5631:2;5620:9;5616:18;5607:6;5563:72;:::i;:::-;5216:426;;;;;;:::o;5648:329::-;5707:6;5756:2;5744:9;5735:7;5731:23;5727:32;5724:119;;;5762:79;;:::i;:::-;5724:119;5882:1;5907:53;5952:7;5943:6;5932:9;5928:22;5907:53;:::i;:::-;5897:63;;5853:117;5648:329;;;;:::o;5983:214::-;6072:4;6110:2;6099:9;6095:18;6087:26;;6123:67;6187:1;6176:9;6172:17;6163:6;6123:67;:::i;:::-;5983:214;;;;:::o;6203:116::-;6273:21;6288:5;6273:21;:::i;:::-;6266:5;6263:32;6253:60;;6309:1;6306;6299:12;6253:60;6203:116;:::o;6325:133::-;6368:5;6406:6;6393:20;6384:29;;6422:30;6446:5;6422:30;:::i;:::-;6325:133;;;;:::o;6464:468::-;6529:6;6537;6586:2;6574:9;6565:7;6561:23;6557:32;6554:119;;;6592:79;;:::i;:::-;6554:119;6712:1;6737:53;6782:7;6773:6;6762:9;6758:22;6737:53;:::i;:::-;6727:63;;6683:117;6839:2;6865:50;6907:7;6898:6;6887:9;6883:22;6865:50;:::i;:::-;6855:60;;6810:115;6464:468;;;;;:::o;6938:118::-;7025:24;7043:5;7025:24;:::i;:::-;7020:3;7013:37;6938:118;;:::o;7062:222::-;7155:4;7193:2;7182:9;7178:18;7170:26;;7206:71;7274:1;7263:9;7259:17;7250:6;7206:71;:::i;:::-;7062:222;;;;:::o;7290:118::-;7361:22;7377:5;7361:22;:::i;:::-;7354:5;7351:33;7341:61;;7398:1;7395;7388:12;7341:61;7290:118;:::o;7414:135::-;7458:5;7496:6;7483:20;7474:29;;7512:31;7537:5;7512:31;:::i;:::-;7414:135;;;;:::o;7555:749::-;7633:6;7641;7649;7657;7706:3;7694:9;7685:7;7681:23;7677:33;7674:120;;;7713:79;;:::i;:::-;7674:120;7833:1;7858:51;7901:7;7892:6;7881:9;7877:22;7858:51;:::i;:::-;7848:61;;7804:115;7958:2;7984:51;8027:7;8018:6;8007:9;8003:22;7984:51;:::i;:::-;7974:61;;7929:116;8084:2;8110:51;8153:7;8144:6;8133:9;8129:22;8110:51;:::i;:::-;8100:61;;8055:116;8210:2;8236:51;8279:7;8270:6;8259:9;8255:22;8236:51;:::i;:::-;8226:61;;8181:116;7555:749;;;;;;;:::o;8310:60::-;8338:3;8359:5;8352:12;;8310:60;;;:::o;8376:142::-;8426:9;8459:53;8477:34;8486:24;8504:5;8486:24;:::i;:::-;8477:34;:::i;:::-;8459:53;:::i;:::-;8446:66;;8376:142;;;:::o;8524:126::-;8574:9;8607:37;8638:5;8607:37;:::i;:::-;8594:50;;8524:126;;;:::o;8656:152::-;8732:9;8765:37;8796:5;8765:37;:::i;:::-;8752:50;;8656:152;;;:::o;8814:183::-;8927:63;8984:5;8927:63;:::i;:::-;8922:3;8915:76;8814:183;;:::o;9003:274::-;9122:4;9160:2;9149:9;9145:18;9137:26;;9173:97;9267:1;9256:9;9252:17;9243:6;9173:97;:::i;:::-;9003:274;;;;:::o;9283:474::-;9351:6;9359;9408:2;9396:9;9387:7;9383:23;9379:32;9376:119;;;9414:79;;:::i;:::-;9376:119;9534:1;9559:53;9604:7;9595:6;9584:9;9580:22;9559:53;:::i;:::-;9549:63;;9505:117;9661:2;9687:53;9732:7;9723:6;9712:9;9708:22;9687:53;:::i;:::-;9677:63;;9632:118;9283:474;;;;;:::o;9763:468::-;9828:6;9836;9885:2;9873:9;9864:7;9860:23;9856:32;9853:119;;;9891:79;;:::i;:::-;9853:119;10011:1;10036:50;10078:7;10069:6;10058:9;10054:22;10036:50;:::i;:::-;10026:60;;9982:114;10135:2;10161:53;10206:7;10197:6;10186:9;10182:22;10161:53;:::i;:::-;10151:63;;10106:118;9763:468;;;;;:::o;10237:180::-;10285:77;10282:1;10275:88;10382:4;10379:1;10372:15;10406:4;10403:1;10396:15;10423:320;10467:6;10504:1;10498:4;10494:12;10484:22;;10551:1;10545:4;10541:12;10572:18;10562:81;;10628:4;10620:6;10616:17;10606:27;;10562:81;10690:2;10682:6;10679:14;10659:18;10656:38;10653:84;;10709:18;;:::i;:::-;10653:84;10474:269;10423:320;;;:::o;10749:179::-;10889:31;10885:1;10877:6;10873:14;10866:55;10749:179;:::o;10934:366::-;11076:3;11097:67;11161:2;11156:3;11097:67;:::i;:::-;11090:74;;11173:93;11262:3;11173:93;:::i;:::-;11291:2;11286:3;11282:12;11275:19;;10934:366;;;:::o;11306:419::-;11472:4;11510:2;11499:9;11495:18;11487:26;;11559:9;11553:4;11549:20;11545:1;11534:9;11530:17;11523:47;11587:131;11713:4;11587:131;:::i;:::-;11579:139;;11306:419;;;:::o;11731:180::-;11779:77;11776:1;11769:88;11876:4;11873:1;11866:15;11900:4;11897:1;11890:15;11917:194;11957:4;11977:20;11995:1;11977:20;:::i;:::-;11972:25;;12011:20;12029:1;12011:20;:::i;:::-;12006:25;;12055:1;12052;12048:9;12040:17;;12079:1;12073:4;12070:11;12067:37;;;12084:18;;:::i;:::-;12067:37;11917:194;;;;:::o;12117:410::-;12157:7;12180:20;12198:1;12180:20;:::i;:::-;12175:25;;12214:20;12232:1;12214:20;:::i;:::-;12209:25;;12269:1;12266;12262:9;12291:30;12309:11;12291:30;:::i;:::-;12280:41;;12470:1;12461:7;12457:15;12454:1;12451:22;12431:1;12424:9;12404:83;12381:139;;12500:18;;:::i;:::-;12381:139;12165:362;12117:410;;;;:::o;12533:180::-;12581:77;12578:1;12571:88;12678:4;12675:1;12668:15;12702:4;12699:1;12692:15;12719:185;12759:1;12776:20;12794:1;12776:20;:::i;:::-;12771:25;;12810:20;12828:1;12810:20;:::i;:::-;12805:25;;12849:1;12839:35;;12854:18;;:::i;:::-;12839:35;12896:1;12893;12889:9;12884:14;;12719:185;;;;:::o;12910:147::-;13011:11;13048:3;13033:18;;12910:147;;;;:::o;13063:114::-;;:::o;13183:398::-;13342:3;13363:83;13444:1;13439:3;13363:83;:::i;:::-;13356:90;;13455:93;13544:3;13455:93;:::i;:::-;13573:1;13568:3;13564:11;13557:18;;13183:398;;;:::o;13587:379::-;13771:3;13793:147;13936:3;13793:147;:::i;:::-;13786:154;;13957:3;13950:10;;13587:379;;;:::o;13972:224::-;14012:3;14031:20;14049:1;14031:20;:::i;:::-;14026:25;;14065:20;14083:1;14065:20;:::i;:::-;14060:25;;14108:1;14105;14101:9;14094:16;;14131:34;14126:3;14123:43;14120:69;;;14169:18;;:::i;:::-;14120:69;13972:224;;;;:::o;14202:225::-;14342:34;14338:1;14330:6;14326:14;14319:58;14411:8;14406:2;14398:6;14394:15;14387:33;14202:225;:::o;14433:366::-;14575:3;14596:67;14660:2;14655:3;14596:67;:::i;:::-;14589:74;;14672:93;14761:3;14672:93;:::i;:::-;14790:2;14785:3;14781:12;14774:19;;14433:366;;;:::o;14805:419::-;14971:4;15009:2;14998:9;14994:18;14986:26;;15058:9;15052:4;15048:20;15044:1;15033:9;15029:17;15022:47;15086:131;15212:4;15086:131;:::i;:::-;15078:139;;14805:419;;;:::o;15230:227::-;15370:34;15366:1;15358:6;15354:14;15347:58;15439:10;15434:2;15426:6;15422:15;15415:35;15230:227;:::o;15463:366::-;15605:3;15626:67;15690:2;15685:3;15626:67;:::i;:::-;15619:74;;15702:93;15791:3;15702:93;:::i;:::-;15820:2;15815:3;15811:12;15804:19;;15463:366;;;:::o;15835:419::-;16001:4;16039:2;16028:9;16024:18;16016:26;;16088:9;16082:4;16078:20;16074:1;16063:9;16059:17;16052:47;16116:131;16242:4;16116:131;:::i;:::-;16108:139;;15835:419;;;:::o;16260:191::-;16300:3;16319:20;16337:1;16319:20;:::i;:::-;16314:25;;16353:20;16371:1;16353:20;:::i;:::-;16348:25;;16396:1;16393;16389:9;16382:16;;16417:3;16414:1;16411:10;16408:36;;;16424:18;;:::i;:::-;16408:36;16260:191;;;;:::o;16457:172::-;16597:24;16593:1;16585:6;16581:14;16574:48;16457:172;:::o;16635:366::-;16777:3;16798:67;16862:2;16857:3;16798:67;:::i;:::-;16791:74;;16874:93;16963:3;16874:93;:::i;:::-;16992:2;16987:3;16983:12;16976:19;;16635:366;;;:::o;17007:419::-;17173:4;17211:2;17200:9;17196:18;17188:26;;17260:9;17254:4;17250:20;17246:1;17235:9;17231:17;17224:47;17288:131;17414:4;17288:131;:::i;:::-;17280:139;;17007:419;;;:::o;17432:170::-;17572:22;17568:1;17560:6;17556:14;17549:46;17432:170;:::o;17608:366::-;17750:3;17771:67;17835:2;17830:3;17771:67;:::i;:::-;17764:74;;17847:93;17936:3;17847:93;:::i;:::-;17965:2;17960:3;17956:12;17949:19;;17608:366;;;:::o;17980:419::-;18146:4;18184:2;18173:9;18169:18;18161:26;;18233:9;18227:4;18223:20;18219:1;18208:9;18204:17;18197:47;18261:131;18387:4;18261:131;:::i;:::-;18253:139;;17980:419;;;:::o;18405:182::-;18545:34;18541:1;18533:6;18529:14;18522:58;18405:182;:::o;18593:366::-;18735:3;18756:67;18820:2;18815:3;18756:67;:::i;:::-;18749:74;;18832:93;18921:3;18832:93;:::i;:::-;18950:2;18945:3;18941:12;18934:19;;18593:366;;;:::o;18965:419::-;19131:4;19169:2;19158:9;19154:18;19146:26;;19218:9;19212:4;19208:20;19204:1;19193:9;19189:17;19182:47;19246:131;19372:4;19246:131;:::i;:::-;19238:139;;18965:419;;;:::o;19390:180::-;19438:77;19435:1;19428:88;19535:4;19532:1;19525:15;19559:4;19556:1;19549:15;19576:180;19624:77;19621:1;19614:88;19721:4;19718:1;19711:15;19745:4;19742:1;19735:15;19762:143;19819:5;19850:6;19844:13;19835:22;;19866:33;19893:5;19866:33;:::i;:::-;19762:143;;;;:::o;19911:351::-;19981:6;20030:2;20018:9;20009:7;20005:23;20001:32;19998:119;;;20036:79;;:::i;:::-;19998:119;20156:1;20181:64;20237:7;20228:6;20217:9;20213:22;20181:64;:::i;:::-;20171:74;;20127:128;19911:351;;;;:::o;20268:85::-;20313:7;20342:5;20331:16;;20268:85;;;:::o;20359:158::-;20417:9;20450:61;20468:42;20477:32;20503:5;20477:32;:::i;:::-;20468:42;:::i;:::-;20450:61;:::i;:::-;20437:74;;20359:158;;;:::o;20523:147::-;20618:45;20657:5;20618:45;:::i;:::-;20613:3;20606:58;20523:147;;:::o;20676:114::-;20743:6;20777:5;20771:12;20761:22;;20676:114;;;:::o;20796:184::-;20895:11;20929:6;20924:3;20917:19;20969:4;20964:3;20960:14;20945:29;;20796:184;;;;:::o;20986:132::-;21053:4;21076:3;21068:11;;21106:4;21101:3;21097:14;21089:22;;20986:132;;;:::o;21124:108::-;21201:24;21219:5;21201:24;:::i;:::-;21196:3;21189:37;21124:108;;:::o;21238:179::-;21307:10;21328:46;21370:3;21362:6;21328:46;:::i;:::-;21406:4;21401:3;21397:14;21383:28;;21238:179;;;;:::o;21423:113::-;21493:4;21525;21520:3;21516:14;21508:22;;21423:113;;;:::o;21572:732::-;21691:3;21720:54;21768:5;21720:54;:::i;:::-;21790:86;21869:6;21864:3;21790:86;:::i;:::-;21783:93;;21900:56;21950:5;21900:56;:::i;:::-;21979:7;22010:1;21995:284;22020:6;22017:1;22014:13;21995:284;;;22096:6;22090:13;22123:63;22182:3;22167:13;22123:63;:::i;:::-;22116:70;;22209:60;22262:6;22209:60;:::i;:::-;22199:70;;22055:224;22042:1;22039;22035:9;22030:14;;21995:284;;;21999:14;22295:3;22288:10;;21696:608;;;21572:732;;;;:::o;22310:831::-;22573:4;22611:3;22600:9;22596:19;22588:27;;22625:71;22693:1;22682:9;22678:17;22669:6;22625:71;:::i;:::-;22706:80;22782:2;22771:9;22767:18;22758:6;22706:80;:::i;:::-;22833:9;22827:4;22823:20;22818:2;22807:9;22803:18;22796:48;22861:108;22964:4;22955:6;22861:108;:::i;:::-;22853:116;;22979:72;23047:2;23036:9;23032:18;23023:6;22979:72;:::i;:::-;23061:73;23129:3;23118:9;23114:19;23105:6;23061:73;:::i;:::-;22310:831;;;;;;;;:::o;23147:227::-;23187:4;23207:20;23225:1;23207:20;:::i;:::-;23202:25;;23241:20;23259:1;23241:20;:::i;:::-;23236:25;;23285:1;23282;23278:9;23270:17;;23309:34;23303:4;23300:44;23297:70;;;23347:18;;:::i;:::-;23297:70;23147:227;;;;:::o;23380:166::-;23520:18;23516:1;23508:6;23504:14;23497:42;23380:166;:::o;23552:366::-;23694:3;23715:67;23779:2;23774:3;23715:67;:::i;:::-;23708:74;;23791:93;23880:3;23791:93;:::i;:::-;23909:2;23904:3;23900:12;23893:19;;23552:366;;;:::o;23924:419::-;24090:4;24128:2;24117:9;24113:18;24105:26;;24177:9;24171:4;24167:20;24163:1;24152:9;24148:17;24141:47;24205:131;24331:4;24205:131;:::i;:::-;24197:139;;23924:419;;;:::o;24349:332::-;24470:4;24508:2;24497:9;24493:18;24485:26;;24521:71;24589:1;24578:9;24574:17;24565:6;24521:71;:::i;:::-;24602:72;24670:2;24659:9;24655:18;24646:6;24602:72;:::i;:::-;24349:332;;;;;:::o

Swarm Source

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