ETH Price: $3,583.95 (-2.73%)

Token

ERC-20: BabyNeiro (BNeiro)
 

Overview

Max Total Supply

100,000,000 BNeiro

Holders

176

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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:
BabyNeiro

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-10-04
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not BabyNeiro 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 getTime() public view returns (uint256) {
        return block.timestamp;
    }

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


interface IERC20 {

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

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

    function decimals() external view returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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


library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMathBabyNeiro: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b,
         "SafeMath: subtraction overflow");
    }

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b,
         "SafeMath: division byBabyNeiro zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

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


contract ERC20 is Context, IERC20 {
    using SafeMath for uint256;

    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_,uint8 decimals_) {
        _name = name_;
        _symbol = symbol_;
        _decimals = decimals_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

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

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating BabyNeiro the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return _decimals;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens BabyNeiro of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    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);
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of `BabyNeiro`from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

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

    function WETH() external pure returns (address);

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


}

interface IUniswapV2Router02 is IUniswapV2Router01 {

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

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

}

interface IUniswapV2Factory {

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

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

interface IUniswapV2Pair {

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint);

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

    function token0() external view returns (address);

    function token1() external view returns (address);

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

}

contract usdtReceiver {
    address public usdt;
    address public owner;
    constructor(address _u) {
        usdt = _u;
        owner = msg.sender;
        IERC20(usdt).approve(msg.sender,~uint256(0));
    }
}

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

    IUniswapV2Router02 public uniswapV2Router;
    address public  uniswapPair;

    bool private swapping;

    uint256 public swapTokensAtAmount;

    uint256 public buyTokenRewardsFee;
    uint256 public sellTokenRewardsFee;

    uint256 public buyLiquidityFee;
    uint256 public sellLiquidityFee;

    uint256 public buyMarketingFee;
    uint256 public sellMarketingFee;

    uint256 public buyDeadFee;
    uint256 public sellDeadFee;

    uint256 public AmountLiquidityFee;
    uint256 public AmountTokenRewardsFee;
    uint256 public AmountMarketingFee;

    uint256 public addLiquidityFee;
    uint256 public removeLiquidityFee;


    address public deadWallet = 0x000000000000000000000000000000000000dEaD;
    address public usdtAddress;
    address public _marketingWalletAddress;
    address public rewardsAddress;
    uint256 public gasForProcessing;
    bool public swapAndLiquifyEnabled = true;

    usdtReceiver public _usdtReceiver;

    mapping(address => bool) private _isExcludedFromFees;
    // Whether to distribute dividends in local currency
    bool public currencyFlag;
    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping(address => bool) public automatedMarketMakerPairs;

    bool public TradingOpen;

    mapping(address => bool) private _updated;
    address[] public shareholders;
    mapping(address => uint256) shareholderIndexes;


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

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

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event ExcludeMultipleAccountsFromFees(address[] accounts, bool isExcluded);

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

    event LiquidityWalletUpdated(address indexed newLiquidityWallet, address indexed oldLiquidityWallet);

    event GasForProcessingUpdated(uint256 indexed newValue, uint256 indexed oldValue);

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

    event SendDividends(
        uint256 tokensSwapped,
        uint256 amount
    );

    event ProcessedDividendTracker(
        uint256 iterations,
        uint256 claims,
        uint256 lastProcessedIndex,
        bool indexed automatic,
        uint256 gas,
        address indexed processor
    );

    constructor() payable ERC20("BabyNeiro", "BNeiro",18)  {

        uint256 totalSupply = 100000000 * (10 ** 18);
        // use by default 300,000 gas to process auto-claiming dividends
        gasForProcessing = 300000;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(_marketingWalletAddress, true);
        excludeFromFees(address(this), true);

        
        _mint(owner(), totalSupply);
    }
    receive() external payable {}



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

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFees[accounts[i]] = excluded;
        }

        emit ExcludeMultipleAccountsFromFees(accounts, excluded);
    }
    

    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapPair, "The PancakeSwap pair cannot be removed from BabyNeiro automatedMarketMakerPairs");
        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        require(automatedMarketMakerPairs[pair] != value, "Automated market maker pair is already set to that value");
        automatedMarketMakerPairs[pair] = value;
        emit SetAutomatedMarketMakerPair(pair, value);
    }


    function updateGasForProcessing(uint256 newValue) public onlyOwner {
        require(newValue != gasForProcessing, "Cannot update gasForProcessing to same value");
        emit GasForProcessingUpdated(newValue, gasForProcessing);
        gasForProcessing = newValue;
    }


    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }
           
    function startTrading() public onlyOwner {
        TradingOpen = true;
    }


    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
    }


    function setSwapTokensAtAmount(uint256 amount) public onlyOwner {
        swapTokensAtAmount = amount;
    }

    function setRewardsAddr(address _addr) public onlyOwner {
        if(_addr == address(this)){
            currencyFlag = true;
        }else{
            currencyFlag = false;
        }
        rewardsAddress = _addr;
    }




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

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

        if(from != owner() && to != owner()){
            require(TradingOpen,"Trading not open yet");
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (canSwap &&
            !swapping &&
            automatedMarketMakerPairs[from] &&
            from != owner() &&
            to != owner() &&
            swapAndLiquifyEnabled
        ) {
            swapping = true;
            swapAndSendMarketing(AmountMarketingFee);
            swapAndLiquify(AmountLiquidityFee);
            swapAndSendDividends(AmountTokenRewardsFee);
            swapping = false;
        }


        bool takeFee = !swapping;

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


        if(takeFee) {
            uint256 fees;
            uint256 LFee; // Liquidity
            uint256 RFee; // Rewards
            uint256 MFee; // Marketing
            uint256 DFee; // Dead

            if(automatedMarketMakerPairs[from]){
                LFee = amount.mul(buyLiquidityFee).div(100);
                AmountLiquidityFee += LFee;
                RFee = amount.mul(buyTokenRewardsFee).div(100);
                AmountTokenRewardsFee += RFee;
                MFee = amount.mul(buyMarketingFee).div(100);
                AmountMarketingFee += MFee;
                DFee = amount.mul(buyDeadFee).div(100);
                fees = LFee.add(RFee).add(MFee).add(DFee);
            }else if(automatedMarketMakerPairs[to]){
                LFee = amount.mul(sellLiquidityFee).div(100);
                AmountLiquidityFee += LFee;
                RFee = amount.mul(sellTokenRewardsFee).div(100);
                AmountTokenRewardsFee += RFee;
                MFee = amount.mul(sellMarketingFee).div(100);
                AmountMarketingFee += MFee;
                DFee = amount.mul(sellDeadFee).div(100);
                fees = LFee.add(RFee).add(MFee).add(DFee);
            }


            amount = amount.sub(fees);
            if(DFee > 0) super._transfer(from, deadWallet, DFee);
            if(fees > 0) super._transfer(from, address(this), fees.sub(DFee));
        }


        super._transfer(from, to, amount);

    }



    function swapAndSendMarketing(uint256 tokens) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = usdtAddress;
        if(usdtAddress == uniswapV2Router.WETH()){
            // make the swap
            uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
                tokens,
                0, // accept any amount of ETH
                path,
                _marketingWalletAddress, // The contract
                block.timestamp
            );
        }else{
            // make the swap
            uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
                tokens,
                0, // accept any amount of USDT
                path,
                _marketingWalletAddress,
                block.timestamp
            );
        }
        AmountMarketingFee = AmountMarketingFee - tokens;
    }

    function swapAndLiquify(uint256 tokens) private {
       // split the contract balance into halves
        uint256 half = tokens.div(2);
        uint256 otherHalf = tokens.sub(half);

        uint256 initialBalance = IERC20(usdtAddress).balanceOf(address(this));

        // swap tokens for ETH
        swapTokensForUsdt(half,address(this)); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered

        // how much ETH did we just swap into?
        uint256 newBalance = IERC20(usdtAddress).balanceOf(address(this)).sub(initialBalance);

        // add liquidity to uniswap
        addLiquidityUSDT(otherHalf, newBalance);
        AmountLiquidityFee = AmountLiquidityFee - tokens;
        emit SwapAndLiquify(half, newBalance, otherHalf);
    }

    function addLiquidityUSDT(uint256 tokenAmount, uint256 USDTAmount) private {
        // approve token transfer to cover all possible scenarios
        IERC20(usdtAddress).approve(address(uniswapV2Router),USDTAmount);
        // add the liquidity
        uniswapV2Router.addLiquidity(
            address(this),
            usdtAddress,
            tokenAmount,
            USDTAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            _marketingWalletAddress,
            block.timestamp
        );
    }

    function swapTokensForUsdt(uint256 tokenAmount,address addr) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = usdtAddress;
        // make the swap
        uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of USDT
            path,
            address(_usdtReceiver),
            block.timestamp
        );
        uint256 amount = IERC20(usdtAddress).balanceOf(address(_usdtReceiver));
        IERC20(usdtAddress).transferFrom(address(_usdtReceiver),addr, amount);
    }

    function swapTokensForRewards(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth -> rewards
        address[] memory path = new address[](3);
        path[0] = address(this);
        path[1] = usdtAddress;
        path[2] = rewardsAddress;
        // make the swap
        try
            uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
                tokenAmount,
                0, // accept any amount of USDT
                path,
                address(this),
                block.timestamp
            )
        {}catch{}

    }

    function swapAndSendDividends(uint256 tokens) private {
        // Judging whether to distribute dividends in the local currency
        if(currencyFlag){
          AmountTokenRewardsFee = AmountTokenRewardsFee - tokens;
          return;
        }
        if(usdtAddress == rewardsAddress){
            swapTokensForUsdt(tokens,address(this));
        }else{
            swapTokensForRewards(tokens);
        }
        AmountTokenRewardsFee = AmountTokenRewardsFee - tokens;
    }


}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"accounts","type":"address[]"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeMultipleAccountsFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"GasForProcessingUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newLiquidityWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldLiquidityWallet","type":"address"}],"name":"LiquidityWalletUpdated","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":"iterations","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"claims","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lastProcessedIndex","type":"uint256"},{"indexed":true,"internalType":"bool","name":"automatic","type":"bool"},{"indexed":false,"internalType":"uint256","name":"gas","type":"uint256"},{"indexed":true,"internalType":"address","name":"processor","type":"address"}],"name":"ProcessedDividendTracker","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SendDividends","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateDividendTracker","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"inputs":[],"name":"AmountLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AmountMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AmountTokenRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWalletAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_usdtReceiver","outputs":[{"internalType":"contract usdtReceiver","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDeadFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTokenRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currencyFlag","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"gasForProcessing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","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":"removeLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardsAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDeadFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTokenRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"setRewardsAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"shareholders","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"updateGasForProcessing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"usdtAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405261dead601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601b60006101000a81548160ff0219169083151502179055506040518060400160405280600981526020017f426162794e6569726f00000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f424e6569726f000000000000000000000000000000000000000000000000000081525060128260039080519060200190620000e8929190620006e9565b50816004908051906020019062000101929190620006e9565b5080600560006101000a81548160ff021916908360ff16021790555050505062000140620001346200024760201b60201c565b6200024f60201b60201c565b60006a52b7d2dcc80cd2e40000009050620493e0601a819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001d6620001c86200031560201b60201c565b60016200033f60201b60201c565b6200020b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200033f60201b60201c565b6200021e3060016200033f60201b60201c565b6200023f620002326200031560201b60201c565b83620004d260201b60201c565b505062000aaf565b600033905090565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200034f6200024760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620003756200031560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620003ce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003c5906200084d565b60405180910390fd5b801515601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514620004ce5780601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620004c5919062000830565b60405180910390a25b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000545576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200053c9062000891565b60405180910390fd5b62000559600083836200068160201b60201c565b62000575816002546200068660201b62001c851790919060201c565b600281905550620005d3816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200068660201b62001c851790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620006759190620008b3565b60405180910390a35050565b505050565b6000808284620006979190620008e1565b905083811015620006df576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006d6906200086f565b60405180910390fd5b8091505092915050565b828054620006f79062000954565b90600052602060002090601f0160209004810192826200071b576000855562000767565b82601f106200073657805160ff191683800117855562000767565b8280016001018555821562000767579182015b828111156200076657825182559160200191906001019062000749565b5b5090506200077691906200077a565b5090565b5b80821115620007955760008160009055506001016200077b565b5090565b620007a4816200093e565b82525050565b6000620007b9602a83620008d0565b9150620007c682620009e8565b604082019050919050565b6000620007e0602483620008d0565b9150620007ed8262000a37565b604082019050919050565b600062000807601f83620008d0565b9150620008148262000a86565b602082019050919050565b6200082a816200094a565b82525050565b600060208201905062000847600083018462000799565b92915050565b600060208201905081810360008301526200086881620007aa565b9050919050565b600060208201905081810360008301526200088a81620007d1565b9050919050565b60006020820190508181036000830152620008ac81620007f8565b9050919050565b6000602082019050620008ca60008301846200081f565b92915050565b600082825260208201905092915050565b6000620008ee826200094a565b9150620008fb836200094a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200093357620009326200098a565b5b828201905092915050565b60008115159050919050565b6000819050919050565b600060028204905060018216806200096d57607f821691505b60208210811415620009845762000983620009b9565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4f776e61626c653a2063616c6c6572206973206e6f7420426162794e6569726f60008201527f20746865206f776e657200000000000000000000000000000000000000000000602082015250565b7f536166654d617468426162794e6569726f3a206164646974696f6e206f76657260008201527f666c6f7700000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b614dfa8062000abf6000396000f3fe6080604052600436106102e85760003560e01c80638da5cb5b11610190578063bfc3137e116100dc578063cfe0e61911610095578063f11a24d31161006f578063f11a24d314610b57578063f2fde38b14610b82578063f637434214610bab578063f832679514610bd6576102ef565b8063cfe0e61914610ac4578063dd62ed3e14610aef578063e2f4560514610b2c576102ef565b8063bfc3137e146109c8578063c0246668146109f3578063c0973eed14610a1c578063c492f04614610a47578063c49b9a8014610a70578063c816841b14610a99576102ef565b80639c1b8af511610149578063ab377daa11610123578063ab377daa146108fa578063afa4f3b214610937578063b340a95414610960578063b62496f51461098b576102ef565b80639c1b8af514610855578063a457c2d714610880578063a9059cbb146108bd576102ef565b80638da5cb5b146107555780638de743b31461078057806392136913146107ab57806395d89b41146107d65780639a7a23d6146108015780639ab4a4451461082a576102ef565b8063395093511161024f578063615223dc116102085780637bce5a04116101e25780637bce5a04146106ab57806385141a77146106d6578063871c128d14610701578063892400f31461072a576102ef565b8063615223dc1461062e57806370a0823114610657578063715018a614610694576102ef565b806339509351146105085780633b1cd187146105455780634144d9e4146105705780634a74bb021461059b5780634fbee193146105c6578063557ed1ba14610603576102ef565b806318160ddd116102a157806318160ddd1461040857806323b872dd1461043357806324942a0414610470578063293230b81461049b578063313ce567146104b25780633926876d146104dd576102ef565b806302df64d6146102f457806306fdde031461031f57806308b2a12c1461034a57806308fd3d0514610375578063095ea7b3146103a05780631694505e146103dd576102ef565b366102ef57005b600080fd5b34801561030057600080fd5b50610309610c01565b6040516103169190614464565b60405180910390f35b34801561032b57600080fd5b50610334610c07565b60405161034191906142c2565b60405180910390f35b34801561035657600080fd5b5061035f610c99565b60405161036c9190614464565b60405180910390f35b34801561038157600080fd5b5061038a610c9f565b6040516103979190614271565b60405180910390f35b3480156103ac57600080fd5b506103c760048036038101906103c29190613c77565b610cb2565b6040516103d49190614271565b60405180910390f35b3480156103e957600080fd5b506103f2610cd0565b6040516103ff919061428c565b60405180910390f35b34801561041457600080fd5b5061041d610cf6565b60405161042a9190614464565b60405180910390f35b34801561043f57600080fd5b5061045a60048036038101906104559190613be4565b610d00565b6040516104679190614271565b60405180910390f35b34801561047c57600080fd5b50610485610dd9565b6040516104929190614464565b60405180910390f35b3480156104a757600080fd5b506104b0610ddf565b005b3480156104be57600080fd5b506104c7610e78565b6040516104d49190614510565b60405180910390f35b3480156104e957600080fd5b506104f2610e8f565b6040516104ff9190614464565b60405180910390f35b34801561051457600080fd5b5061052f600480360381019061052a9190613c77565b610e95565b60405161053c9190614271565b60405180910390f35b34801561055157600080fd5b5061055a610f48565b6040516105679190614464565b60405180910390f35b34801561057c57600080fd5b50610585610f4e565b6040516105929190614146565b60405180910390f35b3480156105a757600080fd5b506105b0610f74565b6040516105bd9190614271565b60405180910390f35b3480156105d257600080fd5b506105ed60048036038101906105e89190613b4a565b610f87565b6040516105fa9190614271565b60405180910390f35b34801561060f57600080fd5b50610618610fdd565b6040516106259190614464565b60405180910390f35b34801561063a57600080fd5b5061065560048036038101906106509190613b4a565b610fe5565b005b34801561066357600080fd5b5061067e60048036038101906106799190613b4a565b611115565b60405161068b9190614464565b60405180910390f35b3480156106a057600080fd5b506106a961115d565b005b3480156106b757600080fd5b506106c06111e5565b6040516106cd9190614464565b60405180910390f35b3480156106e257600080fd5b506106eb6111eb565b6040516106f89190614146565b60405180910390f35b34801561070d57600080fd5b5061072860048036038101906107239190613d71565b611211565b005b34801561073657600080fd5b5061073f61130c565b60405161074c9190614271565b60405180910390f35b34801561076157600080fd5b5061076a61131f565b6040516107779190614146565b60405180910390f35b34801561078c57600080fd5b50610795611349565b6040516107a29190614464565b60405180910390f35b3480156107b757600080fd5b506107c061134f565b6040516107cd9190614464565b60405180910390f35b3480156107e257600080fd5b506107eb611355565b6040516107f891906142c2565b60405180910390f35b34801561080d57600080fd5b5061082860048036038101906108239190613c37565b6113e7565b005b34801561083657600080fd5b5061083f611502565b60405161084c9190614146565b60405180910390f35b34801561086157600080fd5b5061086a611528565b6040516108779190614464565b60405180910390f35b34801561088c57600080fd5b506108a760048036038101906108a29190613c77565b61152e565b6040516108b49190614271565b60405180910390f35b3480156108c957600080fd5b506108e460048036038101906108df9190613c77565b6115fb565b6040516108f19190614271565b60405180910390f35b34801561090657600080fd5b50610921600480360381019061091c9190613d71565b611619565b60405161092e9190614146565b60405180910390f35b34801561094357600080fd5b5061095e60048036038101906109599190613d71565b611658565b005b34801561096c57600080fd5b506109756116de565b60405161098291906142a7565b60405180910390f35b34801561099757600080fd5b506109b260048036038101906109ad9190613b4a565b611704565b6040516109bf9190614271565b60405180910390f35b3480156109d457600080fd5b506109dd611724565b6040516109ea9190614464565b60405180910390f35b3480156109ff57600080fd5b50610a1a6004803603810190610a159190613c37565b61172a565b005b348015610a2857600080fd5b50610a316118a7565b604051610a3e9190614146565b60405180910390f35b348015610a5357600080fd5b50610a6e6004803603810190610a699190613cb7565b6118cd565b005b348015610a7c57600080fd5b50610a976004803603810190610a929190613d17565b611a29565b005b348015610aa557600080fd5b50610aae611ac2565b604051610abb9190614146565b60405180910390f35b348015610ad057600080fd5b50610ad9611ae8565b604051610ae69190614464565b60405180910390f35b348015610afb57600080fd5b50610b166004803603810190610b119190613ba4565b611aee565b604051610b239190614464565b60405180910390f35b348015610b3857600080fd5b50610b41611b75565b604051610b4e9190614464565b60405180910390f35b348015610b6357600080fd5b50610b6c611b7b565b604051610b799190614464565b60405180910390f35b348015610b8e57600080fd5b50610ba96004803603810190610ba49190613b4a565b611b81565b005b348015610bb757600080fd5b50610bc0611c79565b604051610bcd9190614464565b60405180910390f35b348015610be257600080fd5b50610beb611c7f565b604051610bf89190614464565b60405180910390f35b60095481565b606060038054610c16906147a5565b80601f0160208091040260200160405190810160405280929190818152602001828054610c42906147a5565b8015610c8f5780601f10610c6457610100808354040283529160200191610c8f565b820191906000526020600020905b815481529060010190602001808311610c7257829003601f168201915b5050505050905090565b600a5481565b601f60009054906101000a900460ff1681565b6000610cc6610cbf611ce3565b8484611ceb565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6000610d0d848484611eb6565b610dce84610d19611ce3565b610dc985604051806060016040528060288152602001614d7860289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d7f611ce3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126529092919063ffffffff16565b611ceb565b600190509392505050565b60105481565b610de7611ce3565b73ffffffffffffffffffffffffffffffffffffffff16610e0561131f565b73ffffffffffffffffffffffffffffffffffffffff1614610e5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5290614384565b60405180910390fd5b6001601f60006101000a81548160ff021916908315150217905550565b6000600560009054906101000a900460ff16905090565b60125481565b6000610f3e610ea2611ce3565b84610f398560016000610eb3611ce3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c8590919063ffffffff16565b611ceb565b6001905092915050565b60145481565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b60009054906101000a900460ff1681565b6000601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600042905090565b610fed611ce3565b73ffffffffffffffffffffffffffffffffffffffff1661100b61131f565b73ffffffffffffffffffffffffffffffffffffffff1614611061576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105890614384565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156110b5576001601d60006101000a81548160ff0219169083151502179055506110d1565b6000601d60006101000a81548160ff0219169083151502179055505b80601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611165611ce3565b73ffffffffffffffffffffffffffffffffffffffff1661118361131f565b73ffffffffffffffffffffffffffffffffffffffff16146111d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d090614384565b60405180910390fd5b6111e360006126b6565b565b600d5481565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611219611ce3565b73ffffffffffffffffffffffffffffffffffffffff1661123761131f565b73ffffffffffffffffffffffffffffffffffffffff161461128d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128490614384565b60405180910390fd5b601a548114156112d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c990614364565b60405180910390fd5b601a54817f40d7e40e79af4e8e5a9b3c57030d8ea93f13d669c06d448c4d631d4ae7d23db760405160405180910390a380601a8190555050565b601d60009054906101000a900460ff1681565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f5481565b600e5481565b606060048054611364906147a5565b80601f0160208091040260200160405190810160405280929190818152602001828054611390906147a5565b80156113dd5780601f106113b2576101008083540402835291602001916113dd565b820191906000526020600020905b8154815290600101906020018083116113c057829003601f168201915b5050505050905090565b6113ef611ce3565b73ffffffffffffffffffffffffffffffffffffffff1661140d61131f565b73ffffffffffffffffffffffffffffffffffffffff1614611463576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145a90614384565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114eb906143e4565b60405180910390fd5b6114fe828261277c565b5050565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601a5481565b60006115f161153b611ce3565b846115ec85604051806060016040528060258152602001614da06025913960016000611565611ce3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126529092919063ffffffff16565b611ceb565b6001905092915050565b600061160f611608611ce3565b8484611eb6565b6001905092915050565b6021818154811061162957600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611660611ce3565b73ffffffffffffffffffffffffffffffffffffffff1661167e61131f565b73ffffffffffffffffffffffffffffffffffffffff16146116d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cb90614384565b60405180910390fd5b8060088190555050565b601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601e6020528060005260406000206000915054906101000a900460ff1681565b60155481565b611732611ce3565b73ffffffffffffffffffffffffffffffffffffffff1661175061131f565b73ffffffffffffffffffffffffffffffffffffffff16146117a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179d90614384565b60405180910390fd5b801515601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146118a35780601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161189a9190614271565b60405180910390a25b5050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6118d5611ce3565b73ffffffffffffffffffffffffffffffffffffffff166118f361131f565b73ffffffffffffffffffffffffffffffffffffffff1614611949576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194090614384565b60405180910390fd5b60005b838390508110156119e85781601c600086868581811061196f5761196e6148ad565b5b90506020020160208101906119849190613b4a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806119e0906147d7565b91505061194c565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b35838383604051611a1c9392919061423f565b60405180910390a1505050565b611a31611ce3565b73ffffffffffffffffffffffffffffffffffffffff16611a4f61131f565b73ffffffffffffffffffffffffffffffffffffffff1614611aa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9c90614384565b60405180910390fd5b80601b60006101000a81548160ff02191690831515021790555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b600b5481565b611b89611ce3565b73ffffffffffffffffffffffffffffffffffffffff16611ba761131f565b73ffffffffffffffffffffffffffffffffffffffff1614611bfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf490614384565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611c6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6490614304565b60405180910390fd5b611c76816126b6565b50565b600c5481565b60115481565b6000808284611c9491906145ae565b905083811015611cd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd090614444565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5290614424565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc290614324565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ea99190614464565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1d90614404565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8d906142e4565b60405180910390fd5b6000811415611fb057611fab838360006128b0565b61264d565b611fb861131f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156120265750611ff661131f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561207b57601f60009054906101000a900460ff1661207a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612071906143a4565b60405180910390fd5b5b600061208630611115565b9050600060085482101590508080156120ac5750600760149054906101000a900460ff16155b80156121015750601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8015612140575061211061131f565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561217f575061214f61131f565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156121975750601b60009054906101000a900460ff165b156121f4576001600760146101000a81548160ff0219169083151502179055506121c2601354612b45565b6121cd601154612ed6565b6121d86012546130df565b6000600760146101000a81548160ff0219169083151502179055505b6000600760149054906101000a900460ff16159050601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122aa5750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156122b457600090505b801561263e576000806000806000601e60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156124455761233c606461232e600b548c6131b690919063ffffffff16565b61323190919063ffffffff16565b9350836011600082825461235091906145ae565b9250508190555061237f60646123716009548c6131b690919063ffffffff16565b61323190919063ffffffff16565b9250826012600082825461239391906145ae565b925050819055506123c260646123b4600d548c6131b690919063ffffffff16565b61323190919063ffffffff16565b915081601360008282546123d691906145ae565b9250508190555061240560646123f7600f548c6131b690919063ffffffff16565b61323190919063ffffffff16565b905061243e81612430846124228789611c8590919063ffffffff16565b611c8590919063ffffffff16565b611c8590919063ffffffff16565b94506125c5565b601e60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156125c4576124bf60646124b1600c548c6131b690919063ffffffff16565b61323190919063ffffffff16565b935083601160008282546124d391906145ae565b9250508190555061250260646124f4600a548c6131b690919063ffffffff16565b61323190919063ffffffff16565b9250826012600082825461251691906145ae565b925050819055506125456064612537600e548c6131b690919063ffffffff16565b61323190919063ffffffff16565b9150816013600082825461255991906145ae565b92505081905550612588606461257a6010548c6131b690919063ffffffff16565b61323190919063ffffffff16565b90506125c1816125b3846125a58789611c8590919063ffffffff16565b611c8590919063ffffffff16565b611c8590919063ffffffff16565b94505b5b6125d8858a61325e90919063ffffffff16565b98506000811115612611576126108b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836128b0565b5b6000851115612638576126378b30612632848961325e90919063ffffffff16565b6128b0565b5b50505050505b6126498686866128b0565b5050505b505050565b600083831115829061269a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269191906142c2565b60405180910390fd5b50600083856126a9919061468f565b9050809150509392505050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b801515601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141561280f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280690614344565b60405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612920576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291790614404565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612990576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612987906142e4565b60405180910390fd5b61299b8383836132a8565b612a0681604051806060016040528060268152602001614d52602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126529092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a99816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c8590919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612b389190614464565b60405180910390a3505050565b6000600267ffffffffffffffff811115612b6257612b616148dc565b5b604051908082528060200260200182016040528015612b905781602001602082028036833780820191505090505b5090503081600081518110612ba857612ba76148ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612c1957612c186148ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612cbb57600080fd5b505afa158015612ccf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf39190613b77565b73ffffffffffffffffffffffffffffffffffffffff16601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612e0557600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612dce95949392919061447f565b600060405180830381600087803b158015612de857600080fd5b505af1158015612dfc573d6000803e3d6000fd5b50505050612ebe565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d79583600084601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612e8b95949392919061447f565b600060405180830381600087803b158015612ea557600080fd5b505af1158015612eb9573d6000803e3d6000fd5b505050505b81601354612ecc919061468f565b6013819055505050565b6000612eec60028361323190919063ffffffff16565b90506000612f03828461325e90919063ffffffff16565b90506000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612f629190614146565b60206040518083038186803b158015612f7a57600080fd5b505afa158015612f8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fb29190613d9e565b9050612fbe83306132ad565b600061307d82601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161301f9190614146565b60206040518083038186803b15801561303757600080fd5b505afa15801561304b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061306f9190613d9e565b61325e90919063ffffffff16565b9050613089838261361e565b84601154613097919061468f565b6011819055507f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618482856040516130d0939291906144d9565b60405180910390a15050505050565b601d60009054906101000a900460ff161561310d5780601254613102919061468f565b6012819055506131b3565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156131945761318f81306132ad565b61319e565b61319d816137f7565b5b806012546131ac919061468f565b6012819055505b50565b6000808314156131c9576000905061322b565b600082846131d79190614635565b90508284826131e69190614604565b14613226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161321d906143c4565b60405180910390fd5b809150505b92915050565b60006132568383604051806060016040528060238152602001614d2f60239139613a13565b905092915050565b60006132a083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612652565b905092915050565b505050565b6000600267ffffffffffffffff8111156132ca576132c96148dc565b5b6040519080825280602002602001820160405280156132f85781602001602082028036833780820191505090505b50905030816000815181106133105761330f6148ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110613381576133806148ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d79584600084601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b815260040161344195949392919061447f565b600060405180830381600087803b15801561345b57600080fd5b505af115801561346f573d6000803e3d6000fd5b505050506000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016134f29190614146565b60206040518083038186803b15801561350a57600080fd5b505afa15801561351e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135429190613d9e565b9050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685846040518463ffffffff1660e01b81526004016135c593929190614161565b602060405180830381600087803b1580156135df57600080fd5b505af11580156135f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136179190613d44565b5050505050565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161369d929190614216565b602060405180830381600087803b1580156136b757600080fd5b505af11580156136cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136ef9190613d44565b50600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8e3370030601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168585600080601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518963ffffffff1660e01b815260040161379e989796959493929190614198565b606060405180830381600087803b1580156137b857600080fd5b505af11580156137cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137f09190613dcb565b5050505050565b6000600367ffffffffffffffff811115613814576138136148dc565b5b6040519080825280602002602001820160405280156138425781602001602082028036833780820191505090505b509050308160008151811061385a576138596148ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106138cb576138ca6148ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160028151811061393c5761393b6148ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d7958360008430426040518663ffffffff1660e01b81526004016139da95949392919061447f565b600060405180830381600087803b1580156139f457600080fd5b505af1925050508015613a05575060015b613a0e57613a0f565b5b5050565b60008083118290613a5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a5191906142c2565b60405180910390fd5b5060008385613a699190614604565b9050809150509392505050565b600081359050613a8581614ce9565b92915050565b600081519050613a9a81614ce9565b92915050565b60008083601f840112613ab657613ab5614910565b5b8235905067ffffffffffffffff811115613ad357613ad261490b565b5b602083019150836020820283011115613aef57613aee614915565b5b9250929050565b600081359050613b0581614d00565b92915050565b600081519050613b1a81614d00565b92915050565b600081359050613b2f81614d17565b92915050565b600081519050613b4481614d17565b92915050565b600060208284031215613b6057613b5f61491f565b5b6000613b6e84828501613a76565b91505092915050565b600060208284031215613b8d57613b8c61491f565b5b6000613b9b84828501613a8b565b91505092915050565b60008060408385031215613bbb57613bba61491f565b5b6000613bc985828601613a76565b9250506020613bda85828601613a76565b9150509250929050565b600080600060608486031215613bfd57613bfc61491f565b5b6000613c0b86828701613a76565b9350506020613c1c86828701613a76565b9250506040613c2d86828701613b20565b9150509250925092565b60008060408385031215613c4e57613c4d61491f565b5b6000613c5c85828601613a76565b9250506020613c6d85828601613af6565b9150509250929050565b60008060408385031215613c8e57613c8d61491f565b5b6000613c9c85828601613a76565b9250506020613cad85828601613b20565b9150509250929050565b600080600060408486031215613cd057613ccf61491f565b5b600084013567ffffffffffffffff811115613cee57613ced61491a565b5b613cfa86828701613aa0565b93509350506020613d0d86828701613af6565b9150509250925092565b600060208284031215613d2d57613d2c61491f565b5b6000613d3b84828501613af6565b91505092915050565b600060208284031215613d5a57613d5961491f565b5b6000613d6884828501613b0b565b91505092915050565b600060208284031215613d8757613d8661491f565b5b6000613d9584828501613b20565b91505092915050565b600060208284031215613db457613db361491f565b5b6000613dc284828501613b35565b91505092915050565b600080600060608486031215613de457613de361491f565b5b6000613df286828701613b35565b9350506020613e0386828701613b35565b9250506040613e1486828701613b35565b9150509250925092565b6000613e2a8383613e36565b60208301905092915050565b613e3f816146c3565b82525050565b613e4e816146c3565b82525050565b6000613e608385614575565b9350613e6b8261452b565b8060005b85811015613ea457613e818284614597565b613e8b8882613e1e565b9750613e968361455b565b925050600181019050613e6f565b5085925050509392505050565b6000613ebc82614545565b613ec68185614575565b9350613ed183614535565b8060005b83811015613f02578151613ee98882613e1e565b9750613ef483614568565b925050600181019050613ed5565b5085935050505092915050565b613f18816146d5565b82525050565b613f2781614718565b82525050565b613f368161472a565b82525050565b613f458161473c565b82525050565b6000613f5682614550565b613f608185614586565b9350613f70818560208601614772565b613f7981614924565b840191505092915050565b6000613f91602383614586565b9150613f9c82614935565b604082019050919050565b6000613fb4602683614586565b9150613fbf82614984565b604082019050919050565b6000613fd7602283614586565b9150613fe2826149d3565b604082019050919050565b6000613ffa603883614586565b915061400582614a22565b604082019050919050565b600061401d602c83614586565b915061402882614a71565b604082019050919050565b6000614040602a83614586565b915061404b82614ac0565b604082019050919050565b6000614063601483614586565b915061406e82614b0f565b602082019050919050565b6000614086602183614586565b915061409182614b38565b604082019050919050565b60006140a9604f83614586565b91506140b482614b87565b606082019050919050565b60006140cc602583614586565b91506140d782614bfc565b604082019050919050565b60006140ef602483614586565b91506140fa82614c4b565b604082019050919050565b6000614112602483614586565b915061411d82614c9a565b604082019050919050565b61413181614701565b82525050565b6141408161470b565b82525050565b600060208201905061415b6000830184613e45565b92915050565b60006060820190506141766000830186613e45565b6141836020830185613e45565b6141906040830184614128565b949350505050565b6000610100820190506141ae600083018b613e45565b6141bb602083018a613e45565b6141c86040830189614128565b6141d56060830188614128565b6141e26080830187613f3c565b6141ef60a0830186613f3c565b6141fc60c0830185613e45565b61420960e0830184614128565b9998505050505050505050565b600060408201905061422b6000830185613e45565b6142386020830184614128565b9392505050565b6000604082019050818103600083015261425a818587613e54565b90506142696020830184613f0f565b949350505050565b60006020820190506142866000830184613f0f565b92915050565b60006020820190506142a16000830184613f1e565b92915050565b60006020820190506142bc6000830184613f2d565b92915050565b600060208201905081810360008301526142dc8184613f4b565b905092915050565b600060208201905081810360008301526142fd81613f84565b9050919050565b6000602082019050818103600083015261431d81613fa7565b9050919050565b6000602082019050818103600083015261433d81613fca565b9050919050565b6000602082019050818103600083015261435d81613fed565b9050919050565b6000602082019050818103600083015261437d81614010565b9050919050565b6000602082019050818103600083015261439d81614033565b9050919050565b600060208201905081810360008301526143bd81614056565b9050919050565b600060208201905081810360008301526143dd81614079565b9050919050565b600060208201905081810360008301526143fd8161409c565b9050919050565b6000602082019050818103600083015261441d816140bf565b9050919050565b6000602082019050818103600083015261443d816140e2565b9050919050565b6000602082019050818103600083015261445d81614105565b9050919050565b60006020820190506144796000830184614128565b92915050565b600060a0820190506144946000830188614128565b6144a16020830187613f3c565b81810360408301526144b38186613eb1565b90506144c26060830185613e45565b6144cf6080830184614128565b9695505050505050565b60006060820190506144ee6000830186614128565b6144fb6020830185614128565b6145086040830184614128565b949350505050565b60006020820190506145256000830184614137565b92915050565b6000819050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006145a66020840184613a76565b905092915050565b60006145b982614701565b91506145c483614701565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156145f9576145f8614820565b5b828201905092915050565b600061460f82614701565b915061461a83614701565b92508261462a5761462961484f565b5b828204905092915050565b600061464082614701565b915061464b83614701565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561468457614683614820565b5b828202905092915050565b600061469a82614701565b91506146a583614701565b9250828210156146b8576146b7614820565b5b828203905092915050565b60006146ce826146e1565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006147238261474e565b9050919050565b60006147358261474e565b9050919050565b600061474782614701565b9050919050565b600061475982614760565b9050919050565b600061476b826146e1565b9050919050565b60005b83811015614790578082015181840152602081019050614775565b8381111561479f576000848401525b50505050565b600060028204905060018216806147bd57607f821691505b602082108114156147d1576147d061487e565b5b50919050565b60006147e282614701565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561481557614814614820565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160008201527f6c72656164792073657420746f20746861742076616c75650000000000000000602082015250565b7f43616e6e6f742075706461746520676173466f7250726f63657373696e67207460008201527f6f2073616d652076616c75650000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420426162794e6569726f60008201527f20746865206f776e657200000000000000000000000000000000000000000000602082015250565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f5468652050616e63616b655377617020706169722063616e6e6f74206265207260008201527f656d6f7665642066726f6d20426162794e6569726f206175746f6d617465644d60208201527f61726b65744d616b657250616972730000000000000000000000000000000000604082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d617468426162794e6569726f3a206164646974696f6e206f76657260008201527f666c6f7700000000000000000000000000000000000000000000000000000000602082015250565b614cf2816146c3565b8114614cfd57600080fd5b50565b614d09816146d5565b8114614d1457600080fd5b50565b614d2081614701565b8114614d2b57600080fd5b5056fe536166654d6174683a206469766973696f6e206279426162794e6569726f207a65726f45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203eef224a328ac95a23044d4f1c1e4506a06e272ed7e961a6f5b702bb47988a4d64736f6c63430008070033

Deployed Bytecode

0x6080604052600436106102e85760003560e01c80638da5cb5b11610190578063bfc3137e116100dc578063cfe0e61911610095578063f11a24d31161006f578063f11a24d314610b57578063f2fde38b14610b82578063f637434214610bab578063f832679514610bd6576102ef565b8063cfe0e61914610ac4578063dd62ed3e14610aef578063e2f4560514610b2c576102ef565b8063bfc3137e146109c8578063c0246668146109f3578063c0973eed14610a1c578063c492f04614610a47578063c49b9a8014610a70578063c816841b14610a99576102ef565b80639c1b8af511610149578063ab377daa11610123578063ab377daa146108fa578063afa4f3b214610937578063b340a95414610960578063b62496f51461098b576102ef565b80639c1b8af514610855578063a457c2d714610880578063a9059cbb146108bd576102ef565b80638da5cb5b146107555780638de743b31461078057806392136913146107ab57806395d89b41146107d65780639a7a23d6146108015780639ab4a4451461082a576102ef565b8063395093511161024f578063615223dc116102085780637bce5a04116101e25780637bce5a04146106ab57806385141a77146106d6578063871c128d14610701578063892400f31461072a576102ef565b8063615223dc1461062e57806370a0823114610657578063715018a614610694576102ef565b806339509351146105085780633b1cd187146105455780634144d9e4146105705780634a74bb021461059b5780634fbee193146105c6578063557ed1ba14610603576102ef565b806318160ddd116102a157806318160ddd1461040857806323b872dd1461043357806324942a0414610470578063293230b81461049b578063313ce567146104b25780633926876d146104dd576102ef565b806302df64d6146102f457806306fdde031461031f57806308b2a12c1461034a57806308fd3d0514610375578063095ea7b3146103a05780631694505e146103dd576102ef565b366102ef57005b600080fd5b34801561030057600080fd5b50610309610c01565b6040516103169190614464565b60405180910390f35b34801561032b57600080fd5b50610334610c07565b60405161034191906142c2565b60405180910390f35b34801561035657600080fd5b5061035f610c99565b60405161036c9190614464565b60405180910390f35b34801561038157600080fd5b5061038a610c9f565b6040516103979190614271565b60405180910390f35b3480156103ac57600080fd5b506103c760048036038101906103c29190613c77565b610cb2565b6040516103d49190614271565b60405180910390f35b3480156103e957600080fd5b506103f2610cd0565b6040516103ff919061428c565b60405180910390f35b34801561041457600080fd5b5061041d610cf6565b60405161042a9190614464565b60405180910390f35b34801561043f57600080fd5b5061045a60048036038101906104559190613be4565b610d00565b6040516104679190614271565b60405180910390f35b34801561047c57600080fd5b50610485610dd9565b6040516104929190614464565b60405180910390f35b3480156104a757600080fd5b506104b0610ddf565b005b3480156104be57600080fd5b506104c7610e78565b6040516104d49190614510565b60405180910390f35b3480156104e957600080fd5b506104f2610e8f565b6040516104ff9190614464565b60405180910390f35b34801561051457600080fd5b5061052f600480360381019061052a9190613c77565b610e95565b60405161053c9190614271565b60405180910390f35b34801561055157600080fd5b5061055a610f48565b6040516105679190614464565b60405180910390f35b34801561057c57600080fd5b50610585610f4e565b6040516105929190614146565b60405180910390f35b3480156105a757600080fd5b506105b0610f74565b6040516105bd9190614271565b60405180910390f35b3480156105d257600080fd5b506105ed60048036038101906105e89190613b4a565b610f87565b6040516105fa9190614271565b60405180910390f35b34801561060f57600080fd5b50610618610fdd565b6040516106259190614464565b60405180910390f35b34801561063a57600080fd5b5061065560048036038101906106509190613b4a565b610fe5565b005b34801561066357600080fd5b5061067e60048036038101906106799190613b4a565b611115565b60405161068b9190614464565b60405180910390f35b3480156106a057600080fd5b506106a961115d565b005b3480156106b757600080fd5b506106c06111e5565b6040516106cd9190614464565b60405180910390f35b3480156106e257600080fd5b506106eb6111eb565b6040516106f89190614146565b60405180910390f35b34801561070d57600080fd5b5061072860048036038101906107239190613d71565b611211565b005b34801561073657600080fd5b5061073f61130c565b60405161074c9190614271565b60405180910390f35b34801561076157600080fd5b5061076a61131f565b6040516107779190614146565b60405180910390f35b34801561078c57600080fd5b50610795611349565b6040516107a29190614464565b60405180910390f35b3480156107b757600080fd5b506107c061134f565b6040516107cd9190614464565b60405180910390f35b3480156107e257600080fd5b506107eb611355565b6040516107f891906142c2565b60405180910390f35b34801561080d57600080fd5b5061082860048036038101906108239190613c37565b6113e7565b005b34801561083657600080fd5b5061083f611502565b60405161084c9190614146565b60405180910390f35b34801561086157600080fd5b5061086a611528565b6040516108779190614464565b60405180910390f35b34801561088c57600080fd5b506108a760048036038101906108a29190613c77565b61152e565b6040516108b49190614271565b60405180910390f35b3480156108c957600080fd5b506108e460048036038101906108df9190613c77565b6115fb565b6040516108f19190614271565b60405180910390f35b34801561090657600080fd5b50610921600480360381019061091c9190613d71565b611619565b60405161092e9190614146565b60405180910390f35b34801561094357600080fd5b5061095e60048036038101906109599190613d71565b611658565b005b34801561096c57600080fd5b506109756116de565b60405161098291906142a7565b60405180910390f35b34801561099757600080fd5b506109b260048036038101906109ad9190613b4a565b611704565b6040516109bf9190614271565b60405180910390f35b3480156109d457600080fd5b506109dd611724565b6040516109ea9190614464565b60405180910390f35b3480156109ff57600080fd5b50610a1a6004803603810190610a159190613c37565b61172a565b005b348015610a2857600080fd5b50610a316118a7565b604051610a3e9190614146565b60405180910390f35b348015610a5357600080fd5b50610a6e6004803603810190610a699190613cb7565b6118cd565b005b348015610a7c57600080fd5b50610a976004803603810190610a929190613d17565b611a29565b005b348015610aa557600080fd5b50610aae611ac2565b604051610abb9190614146565b60405180910390f35b348015610ad057600080fd5b50610ad9611ae8565b604051610ae69190614464565b60405180910390f35b348015610afb57600080fd5b50610b166004803603810190610b119190613ba4565b611aee565b604051610b239190614464565b60405180910390f35b348015610b3857600080fd5b50610b41611b75565b604051610b4e9190614464565b60405180910390f35b348015610b6357600080fd5b50610b6c611b7b565b604051610b799190614464565b60405180910390f35b348015610b8e57600080fd5b50610ba96004803603810190610ba49190613b4a565b611b81565b005b348015610bb757600080fd5b50610bc0611c79565b604051610bcd9190614464565b60405180910390f35b348015610be257600080fd5b50610beb611c7f565b604051610bf89190614464565b60405180910390f35b60095481565b606060038054610c16906147a5565b80601f0160208091040260200160405190810160405280929190818152602001828054610c42906147a5565b8015610c8f5780601f10610c6457610100808354040283529160200191610c8f565b820191906000526020600020905b815481529060010190602001808311610c7257829003601f168201915b5050505050905090565b600a5481565b601f60009054906101000a900460ff1681565b6000610cc6610cbf611ce3565b8484611ceb565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6000610d0d848484611eb6565b610dce84610d19611ce3565b610dc985604051806060016040528060288152602001614d7860289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d7f611ce3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126529092919063ffffffff16565b611ceb565b600190509392505050565b60105481565b610de7611ce3565b73ffffffffffffffffffffffffffffffffffffffff16610e0561131f565b73ffffffffffffffffffffffffffffffffffffffff1614610e5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5290614384565b60405180910390fd5b6001601f60006101000a81548160ff021916908315150217905550565b6000600560009054906101000a900460ff16905090565b60125481565b6000610f3e610ea2611ce3565b84610f398560016000610eb3611ce3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c8590919063ffffffff16565b611ceb565b6001905092915050565b60145481565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b60009054906101000a900460ff1681565b6000601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600042905090565b610fed611ce3565b73ffffffffffffffffffffffffffffffffffffffff1661100b61131f565b73ffffffffffffffffffffffffffffffffffffffff1614611061576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105890614384565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156110b5576001601d60006101000a81548160ff0219169083151502179055506110d1565b6000601d60006101000a81548160ff0219169083151502179055505b80601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611165611ce3565b73ffffffffffffffffffffffffffffffffffffffff1661118361131f565b73ffffffffffffffffffffffffffffffffffffffff16146111d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d090614384565b60405180910390fd5b6111e360006126b6565b565b600d5481565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611219611ce3565b73ffffffffffffffffffffffffffffffffffffffff1661123761131f565b73ffffffffffffffffffffffffffffffffffffffff161461128d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128490614384565b60405180910390fd5b601a548114156112d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c990614364565b60405180910390fd5b601a54817f40d7e40e79af4e8e5a9b3c57030d8ea93f13d669c06d448c4d631d4ae7d23db760405160405180910390a380601a8190555050565b601d60009054906101000a900460ff1681565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f5481565b600e5481565b606060048054611364906147a5565b80601f0160208091040260200160405190810160405280929190818152602001828054611390906147a5565b80156113dd5780601f106113b2576101008083540402835291602001916113dd565b820191906000526020600020905b8154815290600101906020018083116113c057829003601f168201915b5050505050905090565b6113ef611ce3565b73ffffffffffffffffffffffffffffffffffffffff1661140d61131f565b73ffffffffffffffffffffffffffffffffffffffff1614611463576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145a90614384565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114eb906143e4565b60405180910390fd5b6114fe828261277c565b5050565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601a5481565b60006115f161153b611ce3565b846115ec85604051806060016040528060258152602001614da06025913960016000611565611ce3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126529092919063ffffffff16565b611ceb565b6001905092915050565b600061160f611608611ce3565b8484611eb6565b6001905092915050565b6021818154811061162957600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611660611ce3565b73ffffffffffffffffffffffffffffffffffffffff1661167e61131f565b73ffffffffffffffffffffffffffffffffffffffff16146116d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cb90614384565b60405180910390fd5b8060088190555050565b601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601e6020528060005260406000206000915054906101000a900460ff1681565b60155481565b611732611ce3565b73ffffffffffffffffffffffffffffffffffffffff1661175061131f565b73ffffffffffffffffffffffffffffffffffffffff16146117a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179d90614384565b60405180910390fd5b801515601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146118a35780601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161189a9190614271565b60405180910390a25b5050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6118d5611ce3565b73ffffffffffffffffffffffffffffffffffffffff166118f361131f565b73ffffffffffffffffffffffffffffffffffffffff1614611949576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194090614384565b60405180910390fd5b60005b838390508110156119e85781601c600086868581811061196f5761196e6148ad565b5b90506020020160208101906119849190613b4a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806119e0906147d7565b91505061194c565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b35838383604051611a1c9392919061423f565b60405180910390a1505050565b611a31611ce3565b73ffffffffffffffffffffffffffffffffffffffff16611a4f61131f565b73ffffffffffffffffffffffffffffffffffffffff1614611aa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9c90614384565b60405180910390fd5b80601b60006101000a81548160ff02191690831515021790555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b600b5481565b611b89611ce3565b73ffffffffffffffffffffffffffffffffffffffff16611ba761131f565b73ffffffffffffffffffffffffffffffffffffffff1614611bfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf490614384565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611c6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6490614304565b60405180910390fd5b611c76816126b6565b50565b600c5481565b60115481565b6000808284611c9491906145ae565b905083811015611cd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd090614444565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5290614424565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc290614324565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ea99190614464565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1d90614404565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8d906142e4565b60405180910390fd5b6000811415611fb057611fab838360006128b0565b61264d565b611fb861131f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156120265750611ff661131f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561207b57601f60009054906101000a900460ff1661207a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612071906143a4565b60405180910390fd5b5b600061208630611115565b9050600060085482101590508080156120ac5750600760149054906101000a900460ff16155b80156121015750601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8015612140575061211061131f565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561217f575061214f61131f565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156121975750601b60009054906101000a900460ff165b156121f4576001600760146101000a81548160ff0219169083151502179055506121c2601354612b45565b6121cd601154612ed6565b6121d86012546130df565b6000600760146101000a81548160ff0219169083151502179055505b6000600760149054906101000a900460ff16159050601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122aa5750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156122b457600090505b801561263e576000806000806000601e60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156124455761233c606461232e600b548c6131b690919063ffffffff16565b61323190919063ffffffff16565b9350836011600082825461235091906145ae565b9250508190555061237f60646123716009548c6131b690919063ffffffff16565b61323190919063ffffffff16565b9250826012600082825461239391906145ae565b925050819055506123c260646123b4600d548c6131b690919063ffffffff16565b61323190919063ffffffff16565b915081601360008282546123d691906145ae565b9250508190555061240560646123f7600f548c6131b690919063ffffffff16565b61323190919063ffffffff16565b905061243e81612430846124228789611c8590919063ffffffff16565b611c8590919063ffffffff16565b611c8590919063ffffffff16565b94506125c5565b601e60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156125c4576124bf60646124b1600c548c6131b690919063ffffffff16565b61323190919063ffffffff16565b935083601160008282546124d391906145ae565b9250508190555061250260646124f4600a548c6131b690919063ffffffff16565b61323190919063ffffffff16565b9250826012600082825461251691906145ae565b925050819055506125456064612537600e548c6131b690919063ffffffff16565b61323190919063ffffffff16565b9150816013600082825461255991906145ae565b92505081905550612588606461257a6010548c6131b690919063ffffffff16565b61323190919063ffffffff16565b90506125c1816125b3846125a58789611c8590919063ffffffff16565b611c8590919063ffffffff16565b611c8590919063ffffffff16565b94505b5b6125d8858a61325e90919063ffffffff16565b98506000811115612611576126108b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836128b0565b5b6000851115612638576126378b30612632848961325e90919063ffffffff16565b6128b0565b5b50505050505b6126498686866128b0565b5050505b505050565b600083831115829061269a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269191906142c2565b60405180910390fd5b50600083856126a9919061468f565b9050809150509392505050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b801515601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141561280f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280690614344565b60405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612920576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291790614404565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612990576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612987906142e4565b60405180910390fd5b61299b8383836132a8565b612a0681604051806060016040528060268152602001614d52602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126529092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a99816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c8590919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612b389190614464565b60405180910390a3505050565b6000600267ffffffffffffffff811115612b6257612b616148dc565b5b604051908082528060200260200182016040528015612b905781602001602082028036833780820191505090505b5090503081600081518110612ba857612ba76148ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612c1957612c186148ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612cbb57600080fd5b505afa158015612ccf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf39190613b77565b73ffffffffffffffffffffffffffffffffffffffff16601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612e0557600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612dce95949392919061447f565b600060405180830381600087803b158015612de857600080fd5b505af1158015612dfc573d6000803e3d6000fd5b50505050612ebe565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d79583600084601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612e8b95949392919061447f565b600060405180830381600087803b158015612ea557600080fd5b505af1158015612eb9573d6000803e3d6000fd5b505050505b81601354612ecc919061468f565b6013819055505050565b6000612eec60028361323190919063ffffffff16565b90506000612f03828461325e90919063ffffffff16565b90506000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612f629190614146565b60206040518083038186803b158015612f7a57600080fd5b505afa158015612f8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fb29190613d9e565b9050612fbe83306132ad565b600061307d82601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161301f9190614146565b60206040518083038186803b15801561303757600080fd5b505afa15801561304b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061306f9190613d9e565b61325e90919063ffffffff16565b9050613089838261361e565b84601154613097919061468f565b6011819055507f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618482856040516130d0939291906144d9565b60405180910390a15050505050565b601d60009054906101000a900460ff161561310d5780601254613102919061468f565b6012819055506131b3565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156131945761318f81306132ad565b61319e565b61319d816137f7565b5b806012546131ac919061468f565b6012819055505b50565b6000808314156131c9576000905061322b565b600082846131d79190614635565b90508284826131e69190614604565b14613226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161321d906143c4565b60405180910390fd5b809150505b92915050565b60006132568383604051806060016040528060238152602001614d2f60239139613a13565b905092915050565b60006132a083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612652565b905092915050565b505050565b6000600267ffffffffffffffff8111156132ca576132c96148dc565b5b6040519080825280602002602001820160405280156132f85781602001602082028036833780820191505090505b50905030816000815181106133105761330f6148ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110613381576133806148ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d79584600084601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b815260040161344195949392919061447f565b600060405180830381600087803b15801561345b57600080fd5b505af115801561346f573d6000803e3d6000fd5b505050506000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016134f29190614146565b60206040518083038186803b15801561350a57600080fd5b505afa15801561351e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135429190613d9e565b9050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685846040518463ffffffff1660e01b81526004016135c593929190614161565b602060405180830381600087803b1580156135df57600080fd5b505af11580156135f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136179190613d44565b5050505050565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161369d929190614216565b602060405180830381600087803b1580156136b757600080fd5b505af11580156136cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136ef9190613d44565b50600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8e3370030601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168585600080601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518963ffffffff1660e01b815260040161379e989796959493929190614198565b606060405180830381600087803b1580156137b857600080fd5b505af11580156137cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137f09190613dcb565b5050505050565b6000600367ffffffffffffffff811115613814576138136148dc565b5b6040519080825280602002602001820160405280156138425781602001602082028036833780820191505090505b509050308160008151811061385a576138596148ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106138cb576138ca6148ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160028151811061393c5761393b6148ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d7958360008430426040518663ffffffff1660e01b81526004016139da95949392919061447f565b600060405180830381600087803b1580156139f457600080fd5b505af1925050508015613a05575060015b613a0e57613a0f565b5b5050565b60008083118290613a5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a5191906142c2565b60405180910390fd5b5060008385613a699190614604565b9050809150509392505050565b600081359050613a8581614ce9565b92915050565b600081519050613a9a81614ce9565b92915050565b60008083601f840112613ab657613ab5614910565b5b8235905067ffffffffffffffff811115613ad357613ad261490b565b5b602083019150836020820283011115613aef57613aee614915565b5b9250929050565b600081359050613b0581614d00565b92915050565b600081519050613b1a81614d00565b92915050565b600081359050613b2f81614d17565b92915050565b600081519050613b4481614d17565b92915050565b600060208284031215613b6057613b5f61491f565b5b6000613b6e84828501613a76565b91505092915050565b600060208284031215613b8d57613b8c61491f565b5b6000613b9b84828501613a8b565b91505092915050565b60008060408385031215613bbb57613bba61491f565b5b6000613bc985828601613a76565b9250506020613bda85828601613a76565b9150509250929050565b600080600060608486031215613bfd57613bfc61491f565b5b6000613c0b86828701613a76565b9350506020613c1c86828701613a76565b9250506040613c2d86828701613b20565b9150509250925092565b60008060408385031215613c4e57613c4d61491f565b5b6000613c5c85828601613a76565b9250506020613c6d85828601613af6565b9150509250929050565b60008060408385031215613c8e57613c8d61491f565b5b6000613c9c85828601613a76565b9250506020613cad85828601613b20565b9150509250929050565b600080600060408486031215613cd057613ccf61491f565b5b600084013567ffffffffffffffff811115613cee57613ced61491a565b5b613cfa86828701613aa0565b93509350506020613d0d86828701613af6565b9150509250925092565b600060208284031215613d2d57613d2c61491f565b5b6000613d3b84828501613af6565b91505092915050565b600060208284031215613d5a57613d5961491f565b5b6000613d6884828501613b0b565b91505092915050565b600060208284031215613d8757613d8661491f565b5b6000613d9584828501613b20565b91505092915050565b600060208284031215613db457613db361491f565b5b6000613dc284828501613b35565b91505092915050565b600080600060608486031215613de457613de361491f565b5b6000613df286828701613b35565b9350506020613e0386828701613b35565b9250506040613e1486828701613b35565b9150509250925092565b6000613e2a8383613e36565b60208301905092915050565b613e3f816146c3565b82525050565b613e4e816146c3565b82525050565b6000613e608385614575565b9350613e6b8261452b565b8060005b85811015613ea457613e818284614597565b613e8b8882613e1e565b9750613e968361455b565b925050600181019050613e6f565b5085925050509392505050565b6000613ebc82614545565b613ec68185614575565b9350613ed183614535565b8060005b83811015613f02578151613ee98882613e1e565b9750613ef483614568565b925050600181019050613ed5565b5085935050505092915050565b613f18816146d5565b82525050565b613f2781614718565b82525050565b613f368161472a565b82525050565b613f458161473c565b82525050565b6000613f5682614550565b613f608185614586565b9350613f70818560208601614772565b613f7981614924565b840191505092915050565b6000613f91602383614586565b9150613f9c82614935565b604082019050919050565b6000613fb4602683614586565b9150613fbf82614984565b604082019050919050565b6000613fd7602283614586565b9150613fe2826149d3565b604082019050919050565b6000613ffa603883614586565b915061400582614a22565b604082019050919050565b600061401d602c83614586565b915061402882614a71565b604082019050919050565b6000614040602a83614586565b915061404b82614ac0565b604082019050919050565b6000614063601483614586565b915061406e82614b0f565b602082019050919050565b6000614086602183614586565b915061409182614b38565b604082019050919050565b60006140a9604f83614586565b91506140b482614b87565b606082019050919050565b60006140cc602583614586565b91506140d782614bfc565b604082019050919050565b60006140ef602483614586565b91506140fa82614c4b565b604082019050919050565b6000614112602483614586565b915061411d82614c9a565b604082019050919050565b61413181614701565b82525050565b6141408161470b565b82525050565b600060208201905061415b6000830184613e45565b92915050565b60006060820190506141766000830186613e45565b6141836020830185613e45565b6141906040830184614128565b949350505050565b6000610100820190506141ae600083018b613e45565b6141bb602083018a613e45565b6141c86040830189614128565b6141d56060830188614128565b6141e26080830187613f3c565b6141ef60a0830186613f3c565b6141fc60c0830185613e45565b61420960e0830184614128565b9998505050505050505050565b600060408201905061422b6000830185613e45565b6142386020830184614128565b9392505050565b6000604082019050818103600083015261425a818587613e54565b90506142696020830184613f0f565b949350505050565b60006020820190506142866000830184613f0f565b92915050565b60006020820190506142a16000830184613f1e565b92915050565b60006020820190506142bc6000830184613f2d565b92915050565b600060208201905081810360008301526142dc8184613f4b565b905092915050565b600060208201905081810360008301526142fd81613f84565b9050919050565b6000602082019050818103600083015261431d81613fa7565b9050919050565b6000602082019050818103600083015261433d81613fca565b9050919050565b6000602082019050818103600083015261435d81613fed565b9050919050565b6000602082019050818103600083015261437d81614010565b9050919050565b6000602082019050818103600083015261439d81614033565b9050919050565b600060208201905081810360008301526143bd81614056565b9050919050565b600060208201905081810360008301526143dd81614079565b9050919050565b600060208201905081810360008301526143fd8161409c565b9050919050565b6000602082019050818103600083015261441d816140bf565b9050919050565b6000602082019050818103600083015261443d816140e2565b9050919050565b6000602082019050818103600083015261445d81614105565b9050919050565b60006020820190506144796000830184614128565b92915050565b600060a0820190506144946000830188614128565b6144a16020830187613f3c565b81810360408301526144b38186613eb1565b90506144c26060830185613e45565b6144cf6080830184614128565b9695505050505050565b60006060820190506144ee6000830186614128565b6144fb6020830185614128565b6145086040830184614128565b949350505050565b60006020820190506145256000830184614137565b92915050565b6000819050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006145a66020840184613a76565b905092915050565b60006145b982614701565b91506145c483614701565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156145f9576145f8614820565b5b828201905092915050565b600061460f82614701565b915061461a83614701565b92508261462a5761462961484f565b5b828204905092915050565b600061464082614701565b915061464b83614701565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561468457614683614820565b5b828202905092915050565b600061469a82614701565b91506146a583614701565b9250828210156146b8576146b7614820565b5b828203905092915050565b60006146ce826146e1565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006147238261474e565b9050919050565b60006147358261474e565b9050919050565b600061474782614701565b9050919050565b600061475982614760565b9050919050565b600061476b826146e1565b9050919050565b60005b83811015614790578082015181840152602081019050614775565b8381111561479f576000848401525b50505050565b600060028204905060018216806147bd57607f821691505b602082108114156147d1576147d061487e565b5b50919050565b60006147e282614701565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561481557614814614820565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160008201527f6c72656164792073657420746f20746861742076616c75650000000000000000602082015250565b7f43616e6e6f742075706461746520676173466f7250726f63657373696e67207460008201527f6f2073616d652076616c75650000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420426162794e6569726f60008201527f20746865206f776e657200000000000000000000000000000000000000000000602082015250565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f5468652050616e63616b655377617020706169722063616e6e6f74206265207260008201527f656d6f7665642066726f6d20426162794e6569726f206175746f6d617465644d60208201527f61726b65744d616b657250616972730000000000000000000000000000000000604082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d617468426162794e6569726f3a206164646974696f6e206f76657260008201527f666c6f7700000000000000000000000000000000000000000000000000000000602082015250565b614cf2816146c3565b8114614cfd57600080fd5b50565b614d09816146d5565b8114614d1457600080fd5b50565b614d2081614701565b8114614d2b57600080fd5b5056fe536166654d6174683a206469766973696f6e206279426162794e6569726f207a65726f45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203eef224a328ac95a23044d4f1c1e4506a06e272ed7e961a6f5b702bb47988a4d64736f6c63430008070033

Deployed Bytecode Sourcemap

15499:12548:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15734:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5001:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15774:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16927:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7185:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15578:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6138:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7846:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16003:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20479:78;;;;;;;;;;;;;:::i;:::-;;5973:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16078:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8610:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16163:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16354:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16473:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20334:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1100:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20812:230;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6309:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;780:103;;;;;;;;;;;;;:::i;:::-;;15894:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16244:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20048:276;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16681:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;547:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15971:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15931:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5220:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19462:262;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16321:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16435:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9331:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6649:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17007:29;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20694:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16522:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16861:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16200:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18877:258;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16399:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19143:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20567:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15626:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16121:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6887:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15692:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15817:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;891:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15854:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16038:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15734;;;;:::o;5001:100::-;5055:13;5088:5;5081:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5001:100;:::o;15774:34::-;;;;:::o;16927:23::-;;;;;;;;;;;;;:::o;7185:169::-;7268:4;7285:39;7294:12;:10;:12::i;:::-;7308:7;7317:6;7285:8;:39::i;:::-;7342:4;7335:11;;7185:169;;;;:::o;15578:41::-;;;;;;;;;;;;;:::o;6138:108::-;6199:7;6226:12;;6219:19;;6138:108;:::o;7846:355::-;7986:4;8003:36;8013:6;8021:9;8032:6;8003:9;:36::i;:::-;8050:121;8059:6;8067:12;:10;:12::i;:::-;8081:89;8119:6;8081:89;;;;;;;;;;;;;;;;;:11;:19;8093:6;8081:19;;;;;;;;;;;;;;;:33;8101:12;:10;:12::i;:::-;8081:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;8050:8;:121::i;:::-;8189:4;8182:11;;7846:355;;;;;:::o;16003:26::-;;;;:::o;20479:78::-;693:12;:10;:12::i;:::-;682:23;;:7;:5;:7::i;:::-;:23;;;674:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;20545:4:::1;20531:11;;:18;;;;;;;;;;;;;;;;;;20479:78::o:0;5973:100::-;6031:5;6056:9;;;;;;;;;;;6049:16;;5973:100;:::o;16078:36::-;;;;:::o;8610:218::-;8698:4;8715:83;8724:12;:10;:12::i;:::-;8738:7;8747:50;8786:10;8747:11;:25;8759:12;:10;:12::i;:::-;8747:25;;;;;;;;;;;;;;;:34;8773:7;8747:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;8715:8;:83::i;:::-;8816:4;8809:11;;8610:218;;;;:::o;16163:30::-;;;;:::o;16354:38::-;;;;;;;;;;;;;:::o;16473:40::-;;;;;;;;;;;;;:::o;20334:126::-;20400:4;20424:19;:28;20444:7;20424:28;;;;;;;;;;;;;;;;;;;;;;;;;20417:35;;20334:126;;;:::o;1100:90::-;1140:7;1167:15;1160:22;;1100:90;:::o;20812:230::-;693:12;:10;:12::i;:::-;682:23;;:7;:5;:7::i;:::-;:23;;;674:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;20899:4:::1;20882:22;;:5;:22;;;20879:123;;;20935:4;20920:12;;:19;;;;;;;;;;;;;;;;;;20879:123;;;20985:5;20970:12;;:20;;;;;;;;;;;;;;;;;;20879:123;21029:5;21012:14;;:22;;;;;;;;;;;;;;;;;;20812:230:::0;:::o;6309:127::-;6383:7;6410:9;:18;6420:7;6410:18;;;;;;;;;;;;;;;;6403:25;;6309:127;;;:::o;780:103::-;693:12;:10;:12::i;:::-;682:23;;:7;:5;:7::i;:::-;:23;;;674:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;845:30:::1;872:1;845:18;:30::i;:::-;780:103::o:0;15894:30::-;;;;:::o;16244:70::-;;;;;;;;;;;;;:::o;20048:276::-;693:12;:10;:12::i;:::-;682:23;;:7;:5;:7::i;:::-;:23;;;674:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;20146:16:::1;;20134:8;:28;;20126:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;20261:16;;20251:8;20227:51;;;;;;;;;;20308:8;20289:16;:27;;;;20048:276:::0;:::o;16681:24::-;;;;;;;;;;;;;:::o;547:87::-;593:7;620:6;;;;;;;;;;;613:13;;547:87;:::o;15971:25::-;;;;:::o;15931:31::-;;;;:::o;5220:104::-;5276:13;5309:7;5302:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5220:104;:::o;19462:262::-;693:12;:10;:12::i;:::-;682:23;;:7;:5;:7::i;:::-;:23;;;674:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;19569:11:::1;;;;;;;;;;;19561:19;;:4;:19;;;;19553:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;19675:41;19704:4;19710:5;19675:28;:41::i;:::-;19462:262:::0;;:::o;16321:26::-;;;;;;;;;;;;;:::o;16435:31::-;;;;:::o;9331:269::-;9424:4;9441:129;9450:12;:10;:12::i;:::-;9464:7;9473:96;9512:15;9473:96;;;;;;;;;;;;;;;;;:11;:25;9485:12;:10;:12::i;:::-;9473:25;;;;;;;;;;;;;;;:34;9499:7;9473:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;9441:8;:129::i;:::-;9588:4;9581:11;;9331:269;;;;:::o;6649:175::-;6735:4;6752:42;6762:12;:10;:12::i;:::-;6776:9;6787:6;6752:9;:42::i;:::-;6812:4;6805:11;;6649:175;;;;:::o;17007:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;20694:110::-;693:12;:10;:12::i;:::-;682:23;;:7;:5;:7::i;:::-;:23;;;674:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;20790:6:::1;20769:18;:27;;;;20694:110:::0;:::o;16522:33::-;;;;;;;;;;;;;:::o;16861:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;16200:33::-;;;;:::o;18877:258::-;693:12;:10;:12::i;:::-;682:23;;:7;:5;:7::i;:::-;:23;;;674:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;18998:8:::1;18966:40;;:19;:28;18986:7;18966:28;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;18962:166;;19054:8;19023:19;:28;19043:7;19023:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19098:7;19082:34;;;19107:8;19082:34;;;;;;:::i;:::-;;;;;;;;18962:166;18877:258:::0;;:::o;16399:29::-;;;;;;;;;;;;;:::o;19143:305::-;693:12;:10;:12::i;:::-;682:23;;:7;:5;:7::i;:::-;:23;;;674:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;19261:9:::1;19256:116;19280:8;;:15;;19276:1;:19;19256:116;;;19352:8;19317:19;:32;19337:8;;19346:1;19337:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;19317:32;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;19297:3;;;;;:::i;:::-;;;;19256:116;;;;19389:51;19421:8;;19431;19389:51;;;;;;;;:::i;:::-;;;;;;;;19143:305:::0;;;:::o;20567:117::-;693:12;:10;:12::i;:::-;682:23;;:7;:5;:7::i;:::-;:23;;;674:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;20668:8:::1;20644:21;;:32;;;;;;;;;;;;;;;;;;20567:117:::0;:::o;15626:27::-;;;;;;;;;;;;;:::o;16121:33::-;;;;:::o;6887:151::-;6976:7;7003:11;:18;7015:5;7003:18;;;;;;;;;;;;;;;:27;7022:7;7003:27;;;;;;;;;;;;;;;;6996:34;;6887:151;;;;:::o;15692:33::-;;;;:::o;15817:30::-;;;;:::o;891:201::-;693:12;:10;:12::i;:::-;682:23;;:7;:5;:7::i;:::-;:23;;;674:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;1000:1:::1;980:22;;:8;:22;;;;972:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1056:28;1075:8;1056:18;:28::i;:::-;891:201:::0;:::o;15854:31::-;;;;:::o;16038:33::-;;;;:::o;2335:190::-;2393:7;2413:9;2429:1;2425;:5;;;;:::i;:::-;2413:17;;2454:1;2449;:6;;2441:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;2516:1;2509:8;;;2335:190;;;;:::o;93:98::-;146:7;173:10;166:17;;93:98;:::o;12517:380::-;12670:1;12653:19;;:5;:19;;;;12645:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12751:1;12732:21;;:7;:21;;;;12724:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12835:6;12805:11;:18;12817:5;12805:18;;;;;;;;;;;;;;;:27;12824:7;12805:27;;;;;;;;;;;;;;;:36;;;;12873:7;12857:32;;12866:5;12857:32;;;12882:6;12857:32;;;;;;:::i;:::-;;;;;;;;12517:380;;;:::o;21056:2798::-;21204:1;21188:18;;:4;:18;;;;21180:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21281:1;21267:16;;:2;:16;;;;21259:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;21360:1;21350:6;:11;21346:93;;;21378:28;21394:4;21400:2;21404:1;21378:15;:28::i;:::-;21421:7;;21346:93;21462:7;:5;:7::i;:::-;21454:15;;:4;:15;;;;:32;;;;;21479:7;:5;:7::i;:::-;21473:13;;:2;:13;;;;21454:32;21451:106;;;21510:11;;;;;;;;;;;21502:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;21451:106;21569:28;21600:24;21618:4;21600:9;:24::i;:::-;21569:55;;21637:12;21676:18;;21652:20;:42;;21637:57;;21711:7;:33;;;;;21736:8;;;;;;;;;;;21735:9;21711:33;:81;;;;;21761:25;:31;21787:4;21761:31;;;;;;;;;;;;;;;;;;;;;;;;;21711:81;:113;;;;;21817:7;:5;:7::i;:::-;21809:15;;:4;:15;;;;21711:113;:143;;;;;21847:7;:5;:7::i;:::-;21841:13;;:2;:13;;;;21711:143;:181;;;;;21871:21;;;;;;;;;;;21711:181;21707:432;;;21930:4;21919:8;;:15;;;;;;;;;;;;;;;;;;21949:40;21970:18;;21949:20;:40::i;:::-;22004:34;22019:18;;22004:14;:34::i;:::-;22053:43;22074:21;;22053:20;:43::i;:::-;22122:5;22111:8;;:16;;;;;;;;;;;;;;;;;;21707:432;22153:12;22169:8;;;;;;;;;;;22168:9;22153:24;;22279:19;:25;22299:4;22279:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;22308:19;:23;22328:2;22308:23;;;;;;;;;;;;;;;;;;;;;;;;;22279:52;22275:100;;;22358:5;22348:15;;22275:100;22392:7;22389:1408;;;22416:12;22443;22483;22521;22561;22601:25;:31;22627:4;22601:31;;;;;;;;;;;;;;;;;;;;;;;;;22598:997;;;22659:36;22691:3;22659:27;22670:15;;22659:6;:10;;:27;;;;:::i;:::-;:31;;:36;;;;:::i;:::-;22652:43;;22736:4;22714:18;;:26;;;;;;;:::i;:::-;;;;;;;;22766:39;22801:3;22766:30;22777:18;;22766:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;22759:46;;22849:4;22824:21;;:29;;;;;;;:::i;:::-;;;;;;;;22879:36;22911:3;22879:27;22890:15;;22879:6;:10;;:27;;;;:::i;:::-;:31;;:36;;;;:::i;:::-;22872:43;;22956:4;22934:18;;:26;;;;;;;:::i;:::-;;;;;;;;22986:31;23013:3;22986:22;22997:10;;22986:6;:10;;:22;;;;:::i;:::-;:26;;:31;;;;:::i;:::-;22979:38;;23043:34;23072:4;23043:24;23062:4;23043:14;23052:4;23043;:8;;:14;;;;:::i;:::-;:18;;:24;;;;:::i;:::-;:28;;:34;;;;:::i;:::-;23036:41;;22598:997;;;23101:25;:29;23127:2;23101:29;;;;;;;;;;;;;;;;;;;;;;;;;23098:497;;;23157:37;23190:3;23157:28;23168:16;;23157:6;:10;;:28;;;;:::i;:::-;:32;;:37;;;;:::i;:::-;23150:44;;23235:4;23213:18;;:26;;;;;;;:::i;:::-;;;;;;;;23265:40;23301:3;23265:31;23276:19;;23265:6;:10;;:31;;;;:::i;:::-;:35;;:40;;;;:::i;:::-;23258:47;;23349:4;23324:21;;:29;;;;;;;:::i;:::-;;;;;;;;23379:37;23412:3;23379:28;23390:16;;23379:6;:10;;:28;;;;:::i;:::-;:32;;:37;;;;:::i;:::-;23372:44;;23457:4;23435:18;;:26;;;;;;;:::i;:::-;;;;;;;;23487:32;23515:3;23487:23;23498:11;;23487:6;:10;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;23480:39;;23545:34;23574:4;23545:24;23564:4;23545:14;23554:4;23545;:8;;:14;;;;:::i;:::-;:18;;:24;;;;:::i;:::-;:28;;:34;;;;:::i;:::-;23538:41;;23098:497;22598:997;23622:16;23633:4;23622:6;:10;;:16;;;;:::i;:::-;23613:25;;23663:1;23656:4;:8;23653:52;;;23666:39;23682:4;23688:10;;;;;;;;;;;23700:4;23666:15;:39::i;:::-;23653:52;23730:1;23723:4;:8;23720:65;;;23733:52;23749:4;23763;23770:14;23779:4;23770;:8;;:14;;;;:::i;:::-;23733:15;:52::i;:::-;23720:65;22401:1396;;;;;22389:1408;23811:33;23827:4;23833:2;23837:6;23811:15;:33::i;:::-;21169:2685;;;21056:2798;;;;:::o;2687:192::-;2773:7;2806:1;2801;:6;;2809:12;2793:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2833:9;2849:1;2845;:5;;;;:::i;:::-;2833:17;;2870:1;2863:8;;;2687:192;;;;;:::o;1198:191::-;1272:16;1291:6;;;;;;;;;;;1272:25;;1317:8;1308:6;;:17;;;;;;;;;;;;;;;;;;1372:8;1341:40;;1362:8;1341:40;;;;;;;;;;;;1261:128;1198:191;:::o;19732:306::-;19858:5;19823:40;;:25;:31;19849:4;19823:31;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;;19815:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;19969:5;19935:25;:31;19961:4;19935:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20024:5;19990:40;;20018:4;19990:40;;;;;;;;;;;;19732:306;;:::o;10090:573::-;10248:1;10230:20;;:6;:20;;;;10222:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;10332:1;10311:23;;:9;:23;;;;10303:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;10387:47;10408:6;10416:9;10427:6;10387:20;:47::i;:::-;10467:71;10489:6;10467:71;;;;;;;;;;;;;;;;;:9;:17;10477:6;10467:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;10447:9;:17;10457:6;10447:17;;;;;;;;;;;;;;;:91;;;;10572:32;10597:6;10572:9;:20;10582:9;10572:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;10549:9;:20;10559:9;10549:20;;;;;;;;;;;;;;;:55;;;;10637:9;10620:35;;10629:6;10620:35;;;10648:6;10620:35;;;;;;:::i;:::-;;;;;;;;10090:573;;;:::o;23866:993::-;23991:21;24029:1;24015:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23991:40;;24060:4;24042;24047:1;24042:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;24086:11;;;;;;;;;;;24076:4;24081:1;24076:7;;;;;;;;:::i;:::-;;;;;;;:21;;;;;;;;;;;24126:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24111:37;;:11;;;;;;;;;;;:37;;;24108:685;;;24194:15;;;;;;;;;;;:66;;;24279:6;24304:1;24352:4;24375:23;;;;;;;;;;;24433:15;24194:269;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24108:685;;;24524:15;;;;;;;;;;;:69;;;24612:6;24637:1;24686:4;24709:23;;;;;;;;;;;24751:15;24524:257;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24108:685;24845:6;24824:18;;:27;;;;:::i;:::-;24803:18;:48;;;;23920:939;23866:993;:::o;24867:779::-;24976:12;24991:13;25002:1;24991:6;:10;;:13;;;;:::i;:::-;24976:28;;25015:17;25035:16;25046:4;25035:6;:10;;:16;;;;:::i;:::-;25015:36;;25064:22;25096:11;;;;;;;;;;;25089:29;;;25127:4;25089:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25064:69;;25178:37;25196:4;25209;25178:17;:37::i;:::-;25346:18;25367:64;25416:14;25374:11;;;;;;;;;;;25367:29;;;25405:4;25367:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;;:64;;;;:::i;:::-;25346:85;;25481:39;25498:9;25509:10;25481:16;:39::i;:::-;25573:6;25552:18;;:27;;;;:::i;:::-;25531:18;:48;;;;25595:43;25610:4;25616:10;25628:9;25595:43;;;;;;;;:::i;:::-;;;;;;;;24915:731;;;;24867:779;:::o;27547:493::-;27689:12;;;;;;;;;;;27686:114;;;27763:6;27739:21;;:30;;;;:::i;:::-;27715:21;:54;;;;27782:7;;27686:114;27828:14;;;;;;;;;;;27813:29;;:11;;;;;;;;;;;:29;;;27810:158;;;27858:39;27876:6;27891:4;27858:17;:39::i;:::-;27810:158;;;27928:28;27949:6;27928:20;:28::i;:::-;27810:158;28026:6;28002:21;;:30;;;;:::i;:::-;27978:21;:54;;;;27547:493;;:::o;2887:471::-;2945:7;3195:1;3190;:6;3186:47;;;3220:1;3213:8;;;;3186:47;3245:9;3261:1;3257;:5;;;;:::i;:::-;3245:17;;3290:1;3285;3281;:5;;;;:::i;:::-;:10;3273:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3349:1;3342:8;;;2887:471;;;;;:::o;3366:151::-;3424:7;3451:58;3455:1;3458;3451:58;;;;;;;;;;;;;;;;;:3;:58::i;:::-;3444:65;;3366:151;;;;:::o;2533:146::-;2591:7;2618:53;2622:1;2625;2618:53;;;;;;;;;;;;;;;;;:3;:53::i;:::-;2611:60;;2533:146;;;;:::o;13509:125::-;;;;:::o;26226:689::-;26366:21;26404:1;26390:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26366:40;;26435:4;26417;26422:1;26417:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;26461:11;;;;;;;;;;;26451:4;26456:1;26451:7;;;;;;;;:::i;:::-;;;;;;;:21;;;;;;;;;;;26509:15;;;;;;;;;;;:69;;;26593:11;26619:1;26664:4;26691:13;;;;;;;;;;;26720:15;26509:237;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26757:14;26781:11;;;;;;;;;;;26774:29;;;26812:13;;;;;;;;;;;26774:53;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26757:70;;26845:11;;;;;;;;;;;26838:32;;;26879:13;;;;;;;;;;;26894:4;26900:6;26838:69;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26295:620;;26226:689;;:::o;25654:564::-;25814:11;;;;;;;;;;;25807:27;;;25843:15;;;;;;;;;;;25860:10;25807:64;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25912:15;;;;;;;;;;;:28;;;25963:4;25983:11;;;;;;;;;;;26009;26035:10;26060:1;26103;26146:23;;;;;;;;;;;26184:15;25912:298;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;25654:564;;:::o;26923:616::-;27064:21;27102:1;27088:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27064:40;;27133:4;27115;27120:1;27115:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;27159:11;;;;;;;;;;;27149:4;27154:1;27149:7;;;;;;;;:::i;:::-;;;;;;;:21;;;;;;;;;;;27191:14;;;;;;;;;;;27181:4;27186:1;27181:7;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;;;27259:15;;;;;;;;;;;:69;;;27347:11;27377:1;27426:4;27457;27481:15;27259:252;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27242:288;;;;;;26982:557;26923:616;:::o;3525:278::-;3611:7;3643:1;3639;:5;3646:12;3631:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3670:9;3686:1;3682;:5;;;;:::i;:::-;3670:17;;3794:1;3787:8;;;3525:278;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;318:568::-;391:8;401:6;451:3;444:4;436:6;432:17;428:27;418:122;;459:79;;:::i;:::-;418:122;572:6;559:20;549:30;;602:18;594:6;591:30;588:117;;;624:79;;:::i;:::-;588:117;738:4;730:6;726:17;714:29;;792:3;784:4;776:6;772:17;762:8;758:32;755:41;752:128;;;799:79;;:::i;:::-;752:128;318:568;;;;;:::o;892:133::-;935:5;973:6;960:20;951:29;;989:30;1013:5;989:30;:::i;:::-;892:133;;;;:::o;1031:137::-;1085:5;1116:6;1110:13;1101:22;;1132:30;1156:5;1132:30;:::i;:::-;1031:137;;;;:::o;1174:139::-;1220:5;1258:6;1245:20;1236:29;;1274:33;1301:5;1274:33;:::i;:::-;1174:139;;;;:::o;1319:143::-;1376:5;1407:6;1401:13;1392:22;;1423:33;1450:5;1423:33;:::i;:::-;1319:143;;;;:::o;1468:329::-;1527:6;1576:2;1564:9;1555:7;1551:23;1547:32;1544:119;;;1582:79;;:::i;:::-;1544:119;1702:1;1727:53;1772:7;1763:6;1752:9;1748:22;1727:53;:::i;:::-;1717:63;;1673:117;1468:329;;;;:::o;1803:351::-;1873:6;1922:2;1910:9;1901:7;1897:23;1893:32;1890:119;;;1928:79;;:::i;:::-;1890:119;2048:1;2073:64;2129:7;2120:6;2109:9;2105:22;2073:64;:::i;:::-;2063:74;;2019:128;1803:351;;;;:::o;2160:474::-;2228:6;2236;2285:2;2273:9;2264:7;2260:23;2256:32;2253:119;;;2291:79;;:::i;:::-;2253:119;2411:1;2436:53;2481:7;2472:6;2461:9;2457:22;2436:53;:::i;:::-;2426:63;;2382:117;2538:2;2564:53;2609:7;2600:6;2589:9;2585:22;2564:53;:::i;:::-;2554:63;;2509:118;2160:474;;;;;:::o;2640:619::-;2717:6;2725;2733;2782:2;2770:9;2761:7;2757:23;2753:32;2750:119;;;2788:79;;:::i;:::-;2750:119;2908:1;2933:53;2978:7;2969:6;2958:9;2954:22;2933:53;:::i;:::-;2923:63;;2879:117;3035:2;3061:53;3106:7;3097:6;3086:9;3082:22;3061:53;:::i;:::-;3051:63;;3006:118;3163:2;3189:53;3234:7;3225:6;3214:9;3210:22;3189:53;:::i;:::-;3179:63;;3134:118;2640:619;;;;;:::o;3265:468::-;3330:6;3338;3387:2;3375:9;3366:7;3362:23;3358:32;3355:119;;;3393:79;;:::i;:::-;3355:119;3513:1;3538:53;3583:7;3574:6;3563:9;3559:22;3538:53;:::i;:::-;3528:63;;3484:117;3640:2;3666:50;3708:7;3699:6;3688:9;3684:22;3666:50;:::i;:::-;3656:60;;3611:115;3265:468;;;;;:::o;3739:474::-;3807:6;3815;3864:2;3852:9;3843:7;3839:23;3835:32;3832:119;;;3870:79;;:::i;:::-;3832:119;3990:1;4015:53;4060:7;4051:6;4040:9;4036:22;4015:53;:::i;:::-;4005:63;;3961:117;4117:2;4143:53;4188:7;4179:6;4168:9;4164:22;4143:53;:::i;:::-;4133:63;;4088:118;3739:474;;;;;:::o;4219:698::-;4311:6;4319;4327;4376:2;4364:9;4355:7;4351:23;4347:32;4344:119;;;4382:79;;:::i;:::-;4344:119;4530:1;4519:9;4515:17;4502:31;4560:18;4552:6;4549:30;4546:117;;;4582:79;;:::i;:::-;4546:117;4695:80;4767:7;4758:6;4747:9;4743:22;4695:80;:::i;:::-;4677:98;;;;4473:312;4824:2;4850:50;4892:7;4883:6;4872:9;4868:22;4850:50;:::i;:::-;4840:60;;4795:115;4219:698;;;;;:::o;4923:323::-;4979:6;5028:2;5016:9;5007:7;5003:23;4999:32;4996:119;;;5034:79;;:::i;:::-;4996:119;5154:1;5179:50;5221:7;5212:6;5201:9;5197:22;5179:50;:::i;:::-;5169:60;;5125:114;4923:323;;;;:::o;5252:345::-;5319:6;5368:2;5356:9;5347:7;5343:23;5339:32;5336:119;;;5374:79;;:::i;:::-;5336:119;5494:1;5519:61;5572:7;5563:6;5552:9;5548:22;5519:61;:::i;:::-;5509:71;;5465:125;5252:345;;;;:::o;5603:329::-;5662:6;5711:2;5699:9;5690:7;5686:23;5682:32;5679:119;;;5717:79;;:::i;:::-;5679:119;5837:1;5862:53;5907:7;5898:6;5887:9;5883:22;5862:53;:::i;:::-;5852:63;;5808:117;5603:329;;;;:::o;5938:351::-;6008:6;6057:2;6045:9;6036:7;6032:23;6028:32;6025:119;;;6063:79;;:::i;:::-;6025:119;6183:1;6208:64;6264:7;6255:6;6244:9;6240:22;6208:64;:::i;:::-;6198:74;;6154:128;5938:351;;;;:::o;6295:663::-;6383:6;6391;6399;6448:2;6436:9;6427:7;6423:23;6419:32;6416:119;;;6454:79;;:::i;:::-;6416:119;6574:1;6599:64;6655:7;6646:6;6635:9;6631:22;6599:64;:::i;:::-;6589:74;;6545:128;6712:2;6738:64;6794:7;6785:6;6774:9;6770:22;6738:64;:::i;:::-;6728:74;;6683:129;6851:2;6877:64;6933:7;6924:6;6913:9;6909:22;6877:64;:::i;:::-;6867:74;;6822:129;6295:663;;;;;:::o;6964:179::-;7033:10;7054:46;7096:3;7088:6;7054:46;:::i;:::-;7132:4;7127:3;7123:14;7109:28;;6964:179;;;;:::o;7149:108::-;7226:24;7244:5;7226:24;:::i;:::-;7221:3;7214:37;7149:108;;:::o;7263:118::-;7350:24;7368:5;7350:24;:::i;:::-;7345:3;7338:37;7263:118;;:::o;7417:699::-;7546:3;7569:86;7648:6;7643:3;7569:86;:::i;:::-;7562:93;;7679:58;7731:5;7679:58;:::i;:::-;7760:7;7791:1;7776:315;7801:6;7798:1;7795:13;7776:315;;;7871:42;7906:6;7897:7;7871:42;:::i;:::-;7933:63;7992:3;7977:13;7933:63;:::i;:::-;7926:70;;8019:62;8074:6;8019:62;:::i;:::-;8009:72;;7836:255;7823:1;7820;7816:9;7811:14;;7776:315;;;7780:14;8107:3;8100:10;;7551:565;;7417:699;;;;;:::o;8152:732::-;8271:3;8300:54;8348:5;8300:54;:::i;:::-;8370:86;8449:6;8444:3;8370:86;:::i;:::-;8363:93;;8480:56;8530:5;8480:56;:::i;:::-;8559:7;8590:1;8575:284;8600:6;8597:1;8594:13;8575:284;;;8676:6;8670:13;8703:63;8762:3;8747:13;8703:63;:::i;:::-;8696:70;;8789:60;8842:6;8789:60;:::i;:::-;8779:70;;8635:224;8622:1;8619;8615:9;8610:14;;8575:284;;;8579:14;8875:3;8868:10;;8276:608;;;8152:732;;;;:::o;8890:109::-;8971:21;8986:5;8971:21;:::i;:::-;8966:3;8959:34;8890:109;;:::o;9005:183::-;9118:63;9175:5;9118:63;:::i;:::-;9113:3;9106:76;9005:183;;:::o;9194:173::-;9302:58;9354:5;9302:58;:::i;:::-;9297:3;9290:71;9194:173;;:::o;9373:147::-;9468:45;9507:5;9468:45;:::i;:::-;9463:3;9456:58;9373:147;;:::o;9526:364::-;9614:3;9642:39;9675:5;9642:39;:::i;:::-;9697:71;9761:6;9756:3;9697:71;:::i;:::-;9690:78;;9777:52;9822:6;9817:3;9810:4;9803:5;9799:16;9777:52;:::i;:::-;9854:29;9876:6;9854:29;:::i;:::-;9849:3;9845:39;9838:46;;9618:272;9526:364;;;;:::o;9896:366::-;10038:3;10059:67;10123:2;10118:3;10059:67;:::i;:::-;10052:74;;10135:93;10224:3;10135:93;:::i;:::-;10253:2;10248:3;10244:12;10237:19;;9896:366;;;:::o;10268:::-;10410:3;10431:67;10495:2;10490:3;10431:67;:::i;:::-;10424:74;;10507:93;10596:3;10507:93;:::i;:::-;10625:2;10620:3;10616:12;10609:19;;10268:366;;;:::o;10640:::-;10782:3;10803:67;10867:2;10862:3;10803:67;:::i;:::-;10796:74;;10879:93;10968:3;10879:93;:::i;:::-;10997:2;10992:3;10988:12;10981:19;;10640:366;;;:::o;11012:::-;11154:3;11175:67;11239:2;11234:3;11175:67;:::i;:::-;11168:74;;11251:93;11340:3;11251:93;:::i;:::-;11369:2;11364:3;11360:12;11353:19;;11012:366;;;:::o;11384:::-;11526:3;11547:67;11611:2;11606:3;11547:67;:::i;:::-;11540:74;;11623:93;11712:3;11623:93;:::i;:::-;11741:2;11736:3;11732:12;11725:19;;11384:366;;;:::o;11756:::-;11898:3;11919:67;11983:2;11978:3;11919:67;:::i;:::-;11912:74;;11995:93;12084:3;11995:93;:::i;:::-;12113:2;12108:3;12104:12;12097:19;;11756:366;;;:::o;12128:::-;12270:3;12291:67;12355:2;12350:3;12291:67;:::i;:::-;12284:74;;12367:93;12456:3;12367:93;:::i;:::-;12485:2;12480:3;12476:12;12469:19;;12128:366;;;:::o;12500:::-;12642:3;12663:67;12727:2;12722:3;12663:67;:::i;:::-;12656:74;;12739:93;12828:3;12739:93;:::i;:::-;12857:2;12852:3;12848:12;12841:19;;12500:366;;;:::o;12872:::-;13014:3;13035:67;13099:2;13094:3;13035:67;:::i;:::-;13028:74;;13111:93;13200:3;13111:93;:::i;:::-;13229:2;13224:3;13220:12;13213:19;;12872:366;;;:::o;13244:::-;13386:3;13407:67;13471:2;13466:3;13407:67;:::i;:::-;13400:74;;13483:93;13572:3;13483:93;:::i;:::-;13601:2;13596:3;13592:12;13585:19;;13244:366;;;:::o;13616:::-;13758:3;13779:67;13843:2;13838:3;13779:67;:::i;:::-;13772:74;;13855:93;13944:3;13855:93;:::i;:::-;13973:2;13968:3;13964:12;13957:19;;13616:366;;;:::o;13988:::-;14130:3;14151:67;14215:2;14210:3;14151:67;:::i;:::-;14144:74;;14227:93;14316:3;14227:93;:::i;:::-;14345:2;14340:3;14336:12;14329:19;;13988:366;;;:::o;14360:118::-;14447:24;14465:5;14447:24;:::i;:::-;14442:3;14435:37;14360:118;;:::o;14484:112::-;14567:22;14583:5;14567:22;:::i;:::-;14562:3;14555:35;14484:112;;:::o;14602:222::-;14695:4;14733:2;14722:9;14718:18;14710:26;;14746:71;14814:1;14803:9;14799:17;14790:6;14746:71;:::i;:::-;14602:222;;;;:::o;14830:442::-;14979:4;15017:2;15006:9;15002:18;14994:26;;15030:71;15098:1;15087:9;15083:17;15074:6;15030:71;:::i;:::-;15111:72;15179:2;15168:9;15164:18;15155:6;15111:72;:::i;:::-;15193;15261:2;15250:9;15246:18;15237:6;15193:72;:::i;:::-;14830:442;;;;;;:::o;15278:1029::-;15583:4;15621:3;15610:9;15606:19;15598:27;;15635:71;15703:1;15692:9;15688:17;15679:6;15635:71;:::i;:::-;15716:72;15784:2;15773:9;15769:18;15760:6;15716:72;:::i;:::-;15798;15866:2;15855:9;15851:18;15842:6;15798:72;:::i;:::-;15880;15948:2;15937:9;15933:18;15924:6;15880:72;:::i;:::-;15962:81;16038:3;16027:9;16023:19;16014:6;15962:81;:::i;:::-;16053;16129:3;16118:9;16114:19;16105:6;16053:81;:::i;:::-;16144:73;16212:3;16201:9;16197:19;16188:6;16144:73;:::i;:::-;16227;16295:3;16284:9;16280:19;16271:6;16227:73;:::i;:::-;15278:1029;;;;;;;;;;;:::o;16313:332::-;16434:4;16472:2;16461:9;16457:18;16449:26;;16485:71;16553:1;16542:9;16538:17;16529:6;16485:71;:::i;:::-;16566:72;16634:2;16623:9;16619:18;16610:6;16566:72;:::i;:::-;16313:332;;;;;:::o;16651:491::-;16826:4;16864:2;16853:9;16849:18;16841:26;;16913:9;16907:4;16903:20;16899:1;16888:9;16884:17;16877:47;16941:118;17054:4;17045:6;17037;16941:118;:::i;:::-;16933:126;;17069:66;17131:2;17120:9;17116:18;17107:6;17069:66;:::i;:::-;16651:491;;;;;;:::o;17148:210::-;17235:4;17273:2;17262:9;17258:18;17250:26;;17286:65;17348:1;17337:9;17333:17;17324:6;17286:65;:::i;:::-;17148:210;;;;:::o;17364:274::-;17483:4;17521:2;17510:9;17506:18;17498:26;;17534:97;17628:1;17617:9;17613:17;17604:6;17534:97;:::i;:::-;17364:274;;;;:::o;17644:264::-;17758:4;17796:2;17785:9;17781:18;17773:26;;17809:92;17898:1;17887:9;17883:17;17874:6;17809:92;:::i;:::-;17644:264;;;;:::o;17914:313::-;18027:4;18065:2;18054:9;18050:18;18042:26;;18114:9;18108:4;18104:20;18100:1;18089:9;18085:17;18078:47;18142:78;18215:4;18206:6;18142:78;:::i;:::-;18134:86;;17914:313;;;;:::o;18233:419::-;18399:4;18437:2;18426:9;18422:18;18414:26;;18486:9;18480:4;18476:20;18472:1;18461:9;18457:17;18450:47;18514:131;18640:4;18514:131;:::i;:::-;18506:139;;18233:419;;;:::o;18658:::-;18824:4;18862:2;18851:9;18847:18;18839:26;;18911:9;18905:4;18901:20;18897:1;18886:9;18882:17;18875:47;18939:131;19065:4;18939:131;:::i;:::-;18931:139;;18658:419;;;:::o;19083:::-;19249:4;19287:2;19276:9;19272:18;19264:26;;19336:9;19330:4;19326:20;19322:1;19311:9;19307:17;19300:47;19364:131;19490:4;19364:131;:::i;:::-;19356:139;;19083:419;;;:::o;19508:::-;19674:4;19712:2;19701:9;19697:18;19689:26;;19761:9;19755:4;19751:20;19747:1;19736:9;19732:17;19725:47;19789:131;19915:4;19789:131;:::i;:::-;19781:139;;19508:419;;;:::o;19933:::-;20099:4;20137:2;20126:9;20122:18;20114:26;;20186:9;20180:4;20176:20;20172:1;20161:9;20157:17;20150:47;20214:131;20340:4;20214:131;:::i;:::-;20206:139;;19933:419;;;:::o;20358:::-;20524:4;20562:2;20551:9;20547:18;20539:26;;20611:9;20605:4;20601:20;20597:1;20586:9;20582:17;20575:47;20639:131;20765:4;20639:131;:::i;:::-;20631:139;;20358:419;;;:::o;20783:::-;20949:4;20987:2;20976:9;20972:18;20964:26;;21036:9;21030:4;21026:20;21022:1;21011:9;21007:17;21000:47;21064:131;21190:4;21064:131;:::i;:::-;21056:139;;20783:419;;;:::o;21208:::-;21374:4;21412:2;21401:9;21397:18;21389:26;;21461:9;21455:4;21451:20;21447:1;21436:9;21432:17;21425:47;21489:131;21615:4;21489:131;:::i;:::-;21481:139;;21208:419;;;:::o;21633:::-;21799:4;21837:2;21826:9;21822:18;21814:26;;21886:9;21880:4;21876:20;21872:1;21861:9;21857:17;21850:47;21914:131;22040:4;21914:131;:::i;:::-;21906:139;;21633:419;;;:::o;22058:::-;22224:4;22262:2;22251:9;22247:18;22239:26;;22311:9;22305:4;22301:20;22297:1;22286:9;22282:17;22275:47;22339:131;22465:4;22339:131;:::i;:::-;22331:139;;22058:419;;;:::o;22483:::-;22649:4;22687:2;22676:9;22672:18;22664:26;;22736:9;22730:4;22726:20;22722:1;22711:9;22707:17;22700:47;22764:131;22890:4;22764:131;:::i;:::-;22756:139;;22483:419;;;:::o;22908:::-;23074:4;23112:2;23101:9;23097:18;23089:26;;23161:9;23155:4;23151:20;23147:1;23136:9;23132:17;23125:47;23189:131;23315:4;23189:131;:::i;:::-;23181:139;;22908:419;;;:::o;23333:222::-;23426:4;23464:2;23453:9;23449:18;23441:26;;23477:71;23545:1;23534:9;23530:17;23521:6;23477:71;:::i;:::-;23333:222;;;;:::o;23561:831::-;23824:4;23862:3;23851:9;23847:19;23839:27;;23876:71;23944:1;23933:9;23929:17;23920:6;23876:71;:::i;:::-;23957:80;24033:2;24022:9;24018:18;24009:6;23957:80;:::i;:::-;24084:9;24078:4;24074:20;24069:2;24058:9;24054:18;24047:48;24112:108;24215:4;24206:6;24112:108;:::i;:::-;24104:116;;24230:72;24298:2;24287:9;24283:18;24274:6;24230:72;:::i;:::-;24312:73;24380:3;24369:9;24365:19;24356:6;24312:73;:::i;:::-;23561:831;;;;;;;;:::o;24398:442::-;24547:4;24585:2;24574:9;24570:18;24562:26;;24598:71;24666:1;24655:9;24651:17;24642:6;24598:71;:::i;:::-;24679:72;24747:2;24736:9;24732:18;24723:6;24679:72;:::i;:::-;24761;24829:2;24818:9;24814:18;24805:6;24761:72;:::i;:::-;24398:442;;;;;;:::o;24846:214::-;24935:4;24973:2;24962:9;24958:18;24950:26;;24986:67;25050:1;25039:9;25035:17;25026:6;24986:67;:::i;:::-;24846:214;;;;:::o;25147:102::-;25216:4;25239:3;25231:11;;25147:102;;;:::o;25255:132::-;25322:4;25345:3;25337:11;;25375:4;25370:3;25366:14;25358:22;;25255:132;;;:::o;25393:114::-;25460:6;25494:5;25488:12;25478:22;;25393:114;;;:::o;25513:99::-;25565:6;25599:5;25593:12;25583:22;;25513:99;;;:::o;25618:115::-;25690:4;25722;25717:3;25713:14;25705:22;;25618:115;;;:::o;25739:113::-;25809:4;25841;25836:3;25832:14;25824:22;;25739:113;;;:::o;25858:184::-;25957:11;25991:6;25986:3;25979:19;26031:4;26026:3;26022:14;26007:29;;25858:184;;;;:::o;26048:169::-;26132:11;26166:6;26161:3;26154:19;26206:4;26201:3;26197:14;26182:29;;26048:169;;;;:::o;26223:122::-;26275:5;26300:39;26335:2;26330:3;26326:12;26321:3;26300:39;:::i;:::-;26291:48;;26223:122;;;;:::o;26351:305::-;26391:3;26410:20;26428:1;26410:20;:::i;:::-;26405:25;;26444:20;26462:1;26444:20;:::i;:::-;26439:25;;26598:1;26530:66;26526:74;26523:1;26520:81;26517:107;;;26604:18;;:::i;:::-;26517:107;26648:1;26645;26641:9;26634:16;;26351:305;;;;:::o;26662:185::-;26702:1;26719:20;26737:1;26719:20;:::i;:::-;26714:25;;26753:20;26771:1;26753:20;:::i;:::-;26748:25;;26792:1;26782:35;;26797:18;;:::i;:::-;26782:35;26839:1;26836;26832:9;26827:14;;26662:185;;;;:::o;26853:348::-;26893:7;26916:20;26934:1;26916:20;:::i;:::-;26911:25;;26950:20;26968:1;26950:20;:::i;:::-;26945:25;;27138:1;27070:66;27066:74;27063:1;27060:81;27055:1;27048:9;27041:17;27037:105;27034:131;;;27145:18;;:::i;:::-;27034:131;27193:1;27190;27186:9;27175:20;;26853:348;;;;:::o;27207:191::-;27247:4;27267:20;27285:1;27267:20;:::i;:::-;27262:25;;27301:20;27319:1;27301:20;:::i;:::-;27296:25;;27340:1;27337;27334:8;27331:34;;;27345:18;;:::i;:::-;27331:34;27390:1;27387;27383:9;27375:17;;27207:191;;;;:::o;27404:96::-;27441:7;27470:24;27488:5;27470:24;:::i;:::-;27459:35;;27404:96;;;:::o;27506:90::-;27540:7;27583:5;27576:13;27569:21;27558:32;;27506:90;;;:::o;27602:126::-;27639:7;27679:42;27672:5;27668:54;27657:65;;27602:126;;;:::o;27734:77::-;27771:7;27800:5;27789:16;;27734:77;;;:::o;27817:86::-;27852:7;27892:4;27885:5;27881:16;27870:27;;27817:86;;;:::o;27909:152::-;27985:9;28018:37;28049:5;28018:37;:::i;:::-;28005:50;;27909:152;;;:::o;28067:147::-;28138:9;28171:37;28202:5;28171:37;:::i;:::-;28158:50;;28067:147;;;:::o;28220:121::-;28278:9;28311:24;28329:5;28311:24;:::i;:::-;28298:37;;28220:121;;;:::o;28347:126::-;28397:9;28430:37;28461:5;28430:37;:::i;:::-;28417:50;;28347:126;;;:::o;28479:113::-;28529:9;28562:24;28580:5;28562:24;:::i;:::-;28549:37;;28479:113;;;:::o;28598:307::-;28666:1;28676:113;28690:6;28687:1;28684:13;28676:113;;;28775:1;28770:3;28766:11;28760:18;28756:1;28751:3;28747:11;28740:39;28712:2;28709:1;28705:10;28700:15;;28676:113;;;28807:6;28804:1;28801:13;28798:101;;;28887:1;28878:6;28873:3;28869:16;28862:27;28798:101;28647:258;28598:307;;;:::o;28911:320::-;28955:6;28992:1;28986:4;28982:12;28972:22;;29039:1;29033:4;29029:12;29060:18;29050:81;;29116:4;29108:6;29104:17;29094:27;;29050:81;29178:2;29170:6;29167:14;29147:18;29144:38;29141:84;;;29197:18;;:::i;:::-;29141:84;28962:269;28911:320;;;:::o;29237:233::-;29276:3;29299:24;29317:5;29299:24;:::i;:::-;29290:33;;29345:66;29338:5;29335:77;29332:103;;;29415:18;;:::i;:::-;29332:103;29462:1;29455:5;29451:13;29444:20;;29237:233;;;:::o;29476:180::-;29524:77;29521:1;29514:88;29621:4;29618:1;29611:15;29645:4;29642:1;29635:15;29662:180;29710:77;29707:1;29700:88;29807:4;29804:1;29797:15;29831:4;29828:1;29821:15;29848:180;29896:77;29893:1;29886:88;29993:4;29990:1;29983:15;30017:4;30014:1;30007:15;30034:180;30082:77;30079:1;30072:88;30179:4;30176:1;30169:15;30203:4;30200:1;30193:15;30220:180;30268:77;30265:1;30258:88;30365:4;30362:1;30355:15;30389:4;30386:1;30379:15;30406:117;30515:1;30512;30505:12;30529:117;30638:1;30635;30628:12;30652:117;30761:1;30758;30751:12;30775:117;30884:1;30881;30874:12;30898:117;31007:1;31004;30997:12;31021:102;31062:6;31113:2;31109:7;31104:2;31097:5;31093:14;31089:28;31079:38;;31021:102;;;:::o;31129:222::-;31269:34;31265:1;31257:6;31253:14;31246:58;31338:5;31333:2;31325:6;31321:15;31314:30;31129:222;:::o;31357:225::-;31497:34;31493:1;31485:6;31481:14;31474:58;31566:8;31561:2;31553:6;31549:15;31542:33;31357:225;:::o;31588:221::-;31728:34;31724:1;31716:6;31712:14;31705:58;31797:4;31792:2;31784:6;31780:15;31773:29;31588:221;:::o;31815:243::-;31955:34;31951:1;31943:6;31939:14;31932:58;32024:26;32019:2;32011:6;32007:15;32000:51;31815:243;:::o;32064:231::-;32204:34;32200:1;32192:6;32188:14;32181:58;32273:14;32268:2;32260:6;32256:15;32249:39;32064:231;:::o;32301:229::-;32441:34;32437:1;32429:6;32425:14;32418:58;32510:12;32505:2;32497:6;32493:15;32486:37;32301:229;:::o;32536:170::-;32676:22;32672:1;32664:6;32660:14;32653:46;32536:170;:::o;32712:220::-;32852:34;32848:1;32840:6;32836:14;32829:58;32921:3;32916:2;32908:6;32904:15;32897:28;32712:220;:::o;32938:303::-;33078:34;33074:1;33066:6;33062:14;33055:58;33147:34;33142:2;33134:6;33130:15;33123:59;33216:17;33211:2;33203:6;33199:15;33192:42;32938:303;:::o;33247:224::-;33387:34;33383:1;33375:6;33371:14;33364:58;33456:7;33451:2;33443:6;33439:15;33432:32;33247:224;:::o;33477:223::-;33617:34;33613:1;33605:6;33601:14;33594:58;33686:6;33681:2;33673:6;33669:15;33662:31;33477:223;:::o;33706:::-;33846:34;33842:1;33834:6;33830:14;33823:58;33915:6;33910:2;33902:6;33898:15;33891:31;33706:223;:::o;33935:122::-;34008:24;34026:5;34008:24;:::i;:::-;34001:5;33998:35;33988:63;;34047:1;34044;34037:12;33988:63;33935:122;:::o;34063:116::-;34133:21;34148:5;34133:21;:::i;:::-;34126:5;34123:32;34113:60;;34169:1;34166;34159:12;34113:60;34063:116;:::o;34185:122::-;34258:24;34276:5;34258:24;:::i;:::-;34251:5;34248:35;34238:63;;34297:1;34294;34287:12;34238:63;34185:122;:::o

Swarm Source

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