ETH Price: $3,491.99 (+0.03%)

Token

Predict Crypto (PREAI)
 

Overview

Max Total Supply

10,000,000,000 PREAI

Holders

1,545 ( -0.194%)

Market

Price

$0.00 @ 0.000000 ETH (-1.23%)

Onchain Market Cap

$4,137,900.00

Circulating Supply Market Cap

$3,513,595.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
50,289,076.712981458601226917 PREAI

Value
$20,809.12 ( ~5.9591 Eth) [0.5029%]
0x3a472fd2bab732329ea490440e8015e126a4fdb7
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

AI market making.

Market

Volume (24H):$4,091.85
Market Capitalization:$3,513,595.00
Circulating Supply:8,499,999,999.00 PREAI
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
PREDICTCRYPTO

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

/**

https://linktr.ee/predictcrypto

*/

pragma solidity =0.8.24;

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function decimals() external view returns (uint8);

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

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

    function getOwner() external view returns (address);

    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
    );
    event Burn(address indexed from, address indexed to, uint256 value);
}

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

    address internal ZERO = 0x0000000000000000000000000000000000000000;

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

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

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

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

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(ZERO);
    }

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

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

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

interface IDEXRouter {
    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);

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

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

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

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

contract PREDICTCRYPTO is IERC20, Ownable {
    address private immutable WETH;
    address public immutable pair;
    IDEXRouter public constant router =
        IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address private constant DEAD = 0x000000000000000000000000000000000000dEaD;
    string private constant _name = "Predict Crypto";
    string private constant _symbol = "PREAI";
    uint8 private constant _decimals = 18;
    uint8 private constant ANTI_BOT_BLOCKS = 100;
    uint16 private constant ANTI_BOT_BUY_AI = 900;
    uint16 private constant ANTI_BOT_SELL_AI = 2400;
    uint16 private constant ANTI_BOT_BUY_LP = 100;
    uint16 private constant ANTI_BOT_SELL_LP = 100;
    uint16 private constant MAX_FEE = 500;
    uint16 private constant DENOMINATOR = 10000;
    uint256 private constant TOTAL_SUPPLY = 1 * 10 ** 10 * (10 ** _decimals);
    uint256 private constant MINIMUM_SWAP_LIMIT = 10_000 ether;

    uint256 public swapThreshold = TOTAL_SUPPLY / 1000; // Starting at 0.1%
    uint256[2] public taxesCollected = [0, 0];

    uint32 public launchedAt;
    address public liquidityPool = DEAD;
    // All fees are in basis points (100 = 1%)
    uint16 private _buyAi = 300;
    uint16 private _sellAi = 300;
    uint16 private _buyLP = 200;
    uint16 private _sellLP = 200;
    address public marketingWallet = 0x41267eE8F02312bd9AF8622806b092892974304a;
    bool private _inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public tradingOpen = false;
    bool public isBlacklistFunctionAvailable = true;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _blacklist;
    mapping(address => bool) public isFeeExempt;

    modifier lockTheSwap() {
        _inSwapAndLiquify = true;
        _;
        _inSwapAndLiquify = false;
    }

    //Event Logs
    event LiquidityPoolUpdated(address indexed _newPool);
    event MarketingWalletUpdated(address indexed _newWallet);
    event BuyFeesUpdated(uint16 _newAi, uint16 _newLp);
    event SellFeesUpdated(uint16 _neAi, uint16 _newLp);
    event StuckETHCleared(uint256 _amount);
    event StuckTokensCleared(address _token, uint256 _amount);
    event FeeExemptionChanged(address indexed _exemptWallet, bool _exempt);
    event SwapbackSettingsChanged(bool _enabled, uint256 _newSwapbackAmount);
    event Blacklisted(address indexed _wallet, bool _status);
    event BlacklistDisabled();
    event LaunchSequenceStarted();
    event StuckETH(uint256 _amount);

    error InvalidAddress();
    error InvalidAmount();
    error InvalidFee();
    error Unavailable();
    error TransferFromZeroAddress();
    error TransferToZeroAddress();

    constructor() {
        WETH = router.WETH();

        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));

        _allowances[address(this)][address(router)] = type(uint256).max;

        isFeeExempt[owner()] = true;
        isFeeExempt[marketingWallet] = true;
        isFeeExempt[address(this)] = true;

        _balances[owner()] = TOTAL_SUPPLY;

        emit Transfer(address(0), owner(), TOTAL_SUPPLY);
    }

    function blacklistAddress(
        address _wallet,
        bool _status
    ) external onlyOwner {
        if (!isBlacklistFunctionAvailable) revert Unavailable();
        if (_wallet == address(0) || _wallet == pair) revert InvalidAddress();
        _blacklist[_wallet] = _status;
        emit Blacklisted(_wallet, _status);
    }

    function disableBlacklist() external onlyOwner {
        /// @dev permanently disables any future changes to the blacklist
        if (!isBlacklistFunctionAvailable) revert Unavailable();
        isBlacklistFunctionAvailable = false;
        emit BlacklistDisabled();
    }

    function launchSequence() external onlyOwner {
        if (launchedAt != 0) revert Unavailable();
        launchedAt = uint32(block.number);
        tradingOpen = true;
        emit LaunchSequenceStarted();
    }

    function getCirculatingSupply() external view returns (uint256) {
        return TOTAL_SUPPLY - balanceOf(DEAD) - balanceOf(ZERO);
    }

    function totalSupply() external pure override returns (uint256) {
        return TOTAL_SUPPLY;
    }

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

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

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

    function getOwner() external view override returns (address) {
        return owner();
    }

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

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

    function baseBuyFee() external view returns (uint16) {
        return _buyAi + _buyLP;
    }

    function baseSellFee() external view returns (uint16) {
        return _sellAi + _sellLP;
    }

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

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

    //Transfer Functions

    function transfer(
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        return _transfer(msg.sender, recipient, amount);
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] =
                _allowances[sender][msg.sender] -
                amount;
        }
        return _transfer(sender, recipient, amount);
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) private returns (bool) {
        if (sender == address(0)) revert TransferFromZeroAddress();
        if (recipient == address(0)) revert TransferToZeroAddress();
        if (amount == 0) revert InvalidAmount();
        if (_inSwapAndLiquify) {
            return _basicTransfer(sender, recipient, amount);
        }
        if (_blacklist[sender] || _blacklist[recipient]) revert Unavailable();
        if (isFeeExempt[sender] || isFeeExempt[recipient]) {
            return _basicTransfer(sender, recipient, amount);
        }
        if (!tradingOpen) revert Unavailable();
        _balances[sender] -= amount;
        uint256 finalAmount = amount;
        if (sender == pair) {
            finalAmount = _handleBuyTax(sender, amount);
        } else if (recipient == pair) {
            if (
                swapAndLiquifyEnabled &&
                taxesCollected[0] + taxesCollected[1] >= swapThreshold
            ) {
                _swapBack();
            }
            finalAmount = _handleSellTax(sender, amount);
        }
        _balances[recipient] += finalAmount;
        emit Transfer(sender, recipient, finalAmount);
        return true;
    }

    function _basicTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) private returns (bool) {
        _balances[sender] -= amount;
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    //Tax Functions

    function _handleBuyTax(
        address sender,
        uint256 amount
    ) private returns (uint256) {
        bool chargeBaseFee = _chargeBaseFee();
        uint16 buyAi = chargeBaseFee ? _buyAi : ANTI_BOT_BUY_AI;
        uint16 buyLP = chargeBaseFee ? _buyLP : ANTI_BOT_BUY_LP;
        uint256 aiTaxB = (amount * buyAi) / DENOMINATOR;
        uint256 lpTaxB = (amount * buyLP) / DENOMINATOR;
        return amount - _handleTaxCollection(sender, aiTaxB, lpTaxB);
    }

    function _handleSellTax(
        address sender,
        uint256 amount
    ) private returns (uint256) {
        bool chargeBaseFee = _chargeBaseFee();
        uint16 sellAi = chargeBaseFee ? _sellAi : ANTI_BOT_SELL_AI;
        uint16 sellLP = chargeBaseFee ? _sellLP : ANTI_BOT_SELL_LP;
        uint256 aiTaxS = (amount * sellAi) / DENOMINATOR;
        uint256 lpTaxS = (amount * sellLP) / DENOMINATOR;
        return amount - _handleTaxCollection(sender, aiTaxS, lpTaxS);
    }

    function _chargeBaseFee() private view returns (bool) {
        /// @dev launchedAt will always be > 0 at this point
        return launchedAt + ANTI_BOT_BLOCKS < block.number;
    }

    function _handleTaxCollection(
        address sender,
        uint256 ai,
        uint256 lp
    ) private returns (uint256 tax) {
        taxesCollected[0] += ai;
        taxesCollected[1] += lp;
        tax = ai + lp;
        _balances[address(this)] += tax;
        emit Transfer(sender, address(this), tax);
        return tax;
    }

    //LP and Swapback Functions
    function _swapTokensForETH(
        uint256 tokenAmount
    ) private lockTheSwap returns (uint256) {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        approve(address(this), tokenAmount);
        uint256 ethBefore = address(this).balance;
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
        return address(this).balance - ethBefore;
    }

    function _addLiquidity(
        uint256 tokenAmount,
        uint256 ETHAmount
    ) private lockTheSwap {
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidityPool,
            block.timestamp
        );
    }

    function _swapBack() private {
        uint256 aiShare = taxesCollected[0];
        uint256 lpShare = taxesCollected[1];
        uint256 totalTax = aiShare + lpShare;
        uint256 tokensForLiquidity = lpShare / 2;
        uint256 amountToSwap = totalTax - tokensForLiquidity;

        uint256 ethReceived = _swapTokensForETH(amountToSwap);

        uint256 ETHForLiquidity = (ethReceived * tokensForLiquidity) /
            amountToSwap;
        uint256 ETHForAi = ethReceived - ETHForLiquidity;

        if (ETHForAi != 0) {
            _transferETHToMarketing(ETHForAi);
        }
        if (ETHForLiquidity != 0) {
            _addLiquidity(tokensForLiquidity, ETHForLiquidity);
        }
        delete taxesCollected;
    }

    function manualSwapBack() external onlyOwner {
        _swapBack();
    }

    // Update/Change Functions

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

    function setMarketingWallet(address newMarketingWallet) external onlyOwner {
        if (newMarketingWallet == address(0)) revert InvalidAddress();
        isFeeExempt[marketingWallet] = false;
        marketingWallet = newMarketingWallet;
        isFeeExempt[newMarketingWallet] = true;
        emit MarketingWalletUpdated(newMarketingWallet);
    }

    function setLiquidityPool(address newLiquidityPool) external onlyOwner {
        if (newLiquidityPool == address(0)) revert InvalidAddress();
        liquidityPool = newLiquidityPool;
        emit LiquidityPoolUpdated(newLiquidityPool);
    }

    function changeSwapBackSettings(
        bool enableSwapback,
        uint256 newSwapbackLimit
    ) external onlyOwner {
        if (newSwapbackLimit < MINIMUM_SWAP_LIMIT) revert InvalidAmount();
        swapAndLiquifyEnabled = enableSwapback;
        swapThreshold = newSwapbackLimit;
        emit SwapbackSettingsChanged(enableSwapback, newSwapbackLimit);
    }

    function updateBuyFees(
        uint16 newBuyAiFee,
        uint16 newBuyLpFee,
        uint16 newSellAiFee,
        uint16 newSellLpFee
    ) external onlyOwner {
        uint16 totalNewBuyFee = newBuyAiFee + newBuyLpFee;
        uint16 totalNewSellFee = newSellAiFee + newSellLpFee;
        if (totalNewBuyFee > MAX_FEE || totalNewSellFee > MAX_FEE)
            revert InvalidFee();
        _buyAi = newBuyAiFee;
        _buyLP = newBuyLpFee;
        _sellAi = newSellAiFee;
        _sellLP = newSellLpFee;
        emit BuyFeesUpdated(newBuyAiFee, newBuyLpFee);
        emit SellFeesUpdated(newSellAiFee, newSellLpFee);
    }

    function clearStuckETH() external onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        if (contractETHBalance == 0) revert InvalidAmount();
        _transferETHToMarketing(contractETHBalance);
        emit StuckETHCleared(contractETHBalance);
    }

    function clearStuckTokens(IERC20 token) external onlyOwner {
        if (address(token) == address(0)) revert InvalidAddress();
        uint256 balance = token.balanceOf(address(this));
        if (balance == 0) revert InvalidAmount();
        if (address(token) == address(this)) {
            delete taxesCollected;
        }
        token.transfer(marketingWallet, balance);
        emit StuckTokensCleared(address(token), balance);
    }

    function _transferETHToMarketing(uint256 amount) private {
        (bool success, ) = marketingWallet.call{value: amount}("");
        if (!success) {
            /// @dev owner can claim ETH via clearStuckETH()
            emit StuckETH(amount);
        }
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InvalidAddress","type":"error"},{"inputs":[],"name":"InvalidAmount","type":"error"},{"inputs":[],"name":"InvalidFee","type":"error"},{"inputs":[],"name":"TransferFromZeroAddress","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"Unavailable","type":"error"},{"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":[],"name":"BlacklistDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"_status","type":"bool"}],"name":"Blacklisted","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":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"_newAi","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"_newLp","type":"uint16"}],"name":"BuyFeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_exemptWallet","type":"address"},{"indexed":false,"internalType":"bool","name":"_exempt","type":"bool"}],"name":"FeeExemptionChanged","type":"event"},{"anonymous":false,"inputs":[],"name":"LaunchSequenceStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_newPool","type":"address"}],"name":"LiquidityPoolUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_newWallet","type":"address"}],"name":"MarketingWalletUpdated","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":"uint16","name":"_neAi","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"_newLp","type":"uint16"}],"name":"SellFeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"StuckETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"StuckETHCleared","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_token","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"StuckTokensCleared","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"_enabled","type":"bool"},{"indexed":false,"internalType":"uint256","name":"_newSwapbackAmount","type":"uint256"}],"name":"SwapbackSettingsChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseBuyFee","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseSellFee","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"blacklistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapback","type":"bool"},{"internalType":"uint256","name":"newSwapbackLimit","type":"uint256"}],"name":"changeSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"clearStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"disableBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isBlacklistFunctionAvailable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchSequence","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newLiquidityPool","type":"address"}],"name":"setLiquidityPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"taxesCollected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"newBuyAiFee","type":"uint16"},{"internalType":"uint16","name":"newBuyLpFee","type":"uint16"},{"internalType":"uint16","name":"newSellAiFee","type":"uint16"},{"internalType":"uint16","name":"newSellLpFee","type":"uint16"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040525f60015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103e86012600a620000579190620009fa565b6402540be40062000069919062000a4a565b62000075919062000ac1565b60025560405180604001604052805f60ff1681526020015f60ff168152506003906002620000a592919062000801565b5061dead600560046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061012c600560186101000a81548161ffff021916908361ffff16021790555061012c6005601a6101000a81548161ffff021916908361ffff16021790555060c86005601c6101000a81548161ffff021916908361ffff16021790555060c86005601e6101000a81548161ffff021916908361ffff1602179055507341267ee8f02312bd9af8622806b092892974304a60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660156101000a81548160ff0219169083151502179055505f600660166101000a81548160ff0219169083151502179055506001600660176101000a81548160ff02191690831515021790555034801562000213575f80fd5b5062000234620002286200071260201b60201c565b6200071960201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000292573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002b8919062000b5d565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000349573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200036f919062000b5d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396608051306040518363ffffffff1660e01b8152600401620003ad92919062000b9e565b6020604051808303815f875af1158015620003ca573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003f0919062000b5d565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506001600a5f620004e9620007da60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506012600a620006139190620009fa565b6402540be40062000625919062000a4a565b60075f62000638620007da60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555062000685620007da60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a620006e39190620009fa565b6402540be400620006f5919062000a4a565b60405162000704919062000bda565b60405180910390a362000bf5565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b826002810192821562000838579160200282015b8281111562000837578251829060ff1690559160200191906001019062000815565b5b5090506200084791906200084b565b5090565b5b8082111562000864575f815f9055506001016200084c565b5090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620008f257808604811115620008ca57620008c962000868565b5b6001851615620008da5780820291505b8081029050620008ea8562000895565b9450620008aa565b94509492505050565b5f826200090c5760019050620009de565b816200091b575f9050620009de565b81600181146200093457600281146200093f5762000975565b6001915050620009de565b60ff84111562000954576200095362000868565b5b8360020a9150848211156200096e576200096d62000868565b5b50620009de565b5060208310610133831016604e8410600b8410161715620009af5782820a905083811115620009a957620009a862000868565b5b620009de565b620009be8484846001620008a1565b92509050818404811115620009d857620009d762000868565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f62000a0682620009e5565b915062000a1383620009ee565b925062000a427fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008fb565b905092915050565b5f62000a5682620009e5565b915062000a6383620009e5565b925082820262000a7381620009e5565b9150828204841483151762000a8d5762000a8c62000868565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000acd82620009e5565b915062000ada83620009e5565b92508262000aed5762000aec62000a94565b5b828204905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000b278262000afc565b9050919050565b62000b398162000b1b565b811462000b44575f80fd5b50565b5f8151905062000b578162000b2e565b92915050565b5f6020828403121562000b755762000b7462000af8565b5b5f62000b848482850162000b47565b91505092915050565b62000b988162000b1b565b82525050565b5f60408201905062000bb35f83018562000b8d565b62000bc2602083018462000b8d565b9392505050565b62000bd481620009e5565b82525050565b5f60208201905062000bef5f83018462000bc9565b92915050565b60805160a05161382a62000c295f395f818161117b015281816116cd01528181611f220152611f8601525f505061382a5ff3fe608060405260043610610233575f3560e01c8063715018a61161012d578063b0373f72116100aa578063ea43915e1161006e578063ea43915e14610818578063f2fde38b1461082e578063f887ea4014610856578063f88de0c314610880578063ffb54a99146108965761023a565b8063b0373f7214610736578063bf56b3711461075e578063d073a01f14610788578063d726b221146107b2578063dd62ed3e146107dc5761023a565b80638da5cb5b116100f15780638da5cb5b1461065457806395d89b411461067e578063a3a2e89e146106a8578063a8aa1b31146106d0578063a9059cbb146106fa5761023a565b8063715018a61461058457806375f0a8741461059a57806379f48091146105c4578063879bf9fe14610600578063893d20e81461062a5761023a565b8063346cc7be116101bb578063571ac8b01161017f578063571ac8b0146104a45780635d098b38146104e0578063665a11ca1461050857806366eb37851461053257806370a08231146105485761023a565b8063346cc7be146103c65780633dab5269146103ee5780633f4218e014610416578063455a4396146104525780634a74bb021461047a5761023a565b806318160ddd1161020257806318160ddd146102f657806323b872dd146103205780632b112e491461035c5780632ebcbf6c14610386578063313ce5671461039c5761023a565b8063018770201461023e5780630445b6671461026657806306fdde0314610290578063095ea7b3146102ba5761023a565b3661023a57005b5f80fd5b348015610249575f80fd5b50610264600480360381019061025f9190612af4565b6108c0565b005b348015610271575f80fd5b5061027a6109b4565b6040516102879190612b37565b60405180910390f35b34801561029b575f80fd5b506102a46109ba565b6040516102b19190612bda565b60405180910390f35b3480156102c5575f80fd5b506102e060048036038101906102db9190612c24565b6109f7565b6040516102ed9190612c7c565b60405180910390f35b348015610301575f80fd5b5061030a610ae4565b6040516103179190612b37565b60405180910390f35b34801561032b575f80fd5b5061034660048036038101906103419190612c95565b610b08565b6040516103539190612c7c565b60405180910390f35b348015610367575f80fd5b50610370610cbd565b60405161037d9190612b37565b60405180910390f35b348015610391575f80fd5b5061039a610d2a565b005b3480156103a7575f80fd5b506103b0610deb565b6040516103bd9190612d00565b60405180910390f35b3480156103d1575f80fd5b506103ec60048036038101906103e79190612d54565b610df3565b005b3480156103f9575f80fd5b50610414600480360381019061040f9190612da9565b61102f565b005b348015610421575f80fd5b5061043c60048036038101906104379190612af4565b6110d9565b6040516104499190612c7c565b60405180910390f35b34801561045d575f80fd5b5061047860048036038101906104739190612de7565b6110f6565b005b348015610485575f80fd5b5061048e6112a6565b60405161049b9190612c7c565b60405180910390f35b3480156104af575f80fd5b506104ca60048036038101906104c59190612af4565b6112b9565b6040516104d79190612c7c565b60405180910390f35b3480156104eb575f80fd5b5061050660048036038101906105019190612af4565b6112eb565b005b348015610513575f80fd5b5061051c6114a8565b6040516105299190612e34565b60405180910390f35b34801561053d575f80fd5b506105466114ce565b005b348015610553575f80fd5b5061056e60048036038101906105699190612af4565b6114e0565b60405161057b9190612b37565b60405180910390f35b34801561058f575f80fd5b50610598611526565b005b3480156105a5575f80fd5b506105ae61155a565b6040516105bb9190612e34565b60405180910390f35b3480156105cf575f80fd5b506105ea60048036038101906105e59190612e4d565b61157f565b6040516105f79190612b37565b60405180910390f35b34801561060b575f80fd5b50610614611598565b6040516106219190612c7c565b60405180910390f35b348015610635575f80fd5b5061063e6115ab565b60405161064b9190612e34565b60405180910390f35b34801561065f575f80fd5b506106686115b9565b6040516106759190612e34565b60405180910390f35b348015610689575f80fd5b506106926115e0565b60405161069f9190612bda565b60405180910390f35b3480156106b3575f80fd5b506106ce60048036038101906106c99190612de7565b61161d565b005b3480156106db575f80fd5b506106e46116cb565b6040516106f19190612e34565b60405180910390f35b348015610705575f80fd5b50610720600480360381019061071b9190612c24565b6116ef565b60405161072d9190612c7c565b60405180910390f35b348015610741575f80fd5b5061075c60048036038101906107579190612eaf565b611703565b005b348015610769575f80fd5b5061077261186f565b60405161077f9190612f31565b60405180910390f35b348015610793575f80fd5b5061079c611884565b6040516107a99190612f59565b60405180910390f35b3480156107bd575f80fd5b506107c66118b6565b6040516107d39190612f59565b60405180910390f35b3480156107e7575f80fd5b5061080260048036038101906107fd9190612f72565b6118e8565b60405161080f9190612b37565b60405180910390f35b348015610823575f80fd5b5061082c61196a565b005b348015610839575f80fd5b50610854600480360381019061084f9190612af4565b611a00565b005b348015610861575f80fd5b5061086a611aa3565b604051610877919061300b565b60405180910390f35b34801561088b575f80fd5b50610894611abb565b005b3480156108a1575f80fd5b506108aa611b43565b6040516108b79190612c7c565b60405180910390f35b6108c8611b56565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361092d576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fedf1a035d265f6321083031b40acf4e5e06cd3e2e2025192fd308409b13b44c660405160405180910390a250565b60025481565b60606040518060400160405280600e81526020017f507265646963742043727970746f000000000000000000000000000000000000815250905090565b5f8160085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610ad29190612b37565b60405180910390a36001905092915050565b5f6012600a610af39190613180565b6402540be400610b0391906131ca565b905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610ca9578160085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610c2c919061320b565b60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610cb4848484611bd4565b90509392505050565b5f610ce860015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166114e0565b610cf361dead6114e0565b6012600a610d019190613180565b6402540be400610d1191906131ca565b610d1b919061320b565b610d25919061320b565b905090565b610d32611b56565b5f60055f9054906101000a900463ffffffff1663ffffffff1614610d82576040517fa3b8915f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b4360055f6101000a81548163ffffffff021916908363ffffffff1602179055506001600660166101000a81548160ff0219169083151502179055507f3126eb6b40eb49c85c6a99577574ba55f7dc795d4cbee28ed738c6191898a1b060405160405180910390a1565b5f6012905090565b610dfb611b56565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e60576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e9a9190612e34565b602060405180830381865afa158015610eb5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ed99190613252565b90505f8103610f14576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f555760035f610f549190612a8a565b5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610fb192919061327d565b6020604051808303815f875af1158015610fcd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff191906132b8565b507f2c173e3ab5b50dfe2d876a6c7de0f777aef7fdaf4d1440ebed38708b3b78ebf4828260405161102392919061327d565b60405180910390a15050565b611037611b56565b69021e19e0c9bab240000081101561107b576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600660156101000a81548160ff021916908315150217905550806002819055507f479b6e261fc1ed1b1a450fd333c906ece427a6ef5cdb37d2762bf1834ea0904882826040516110cd9291906132e3565b60405180910390a15050565b600a602052805f5260405f205f915054906101000a900460ff1681565b6110fe611b56565b600660179054906101000a900460ff16611144576040517fa3b8915f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806111c957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611200576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fcf3473b85df1594d47b6958f29a32bea0abff9dd68296f7bf33443646793cfd88260405161129a9190612c7c565b60405180910390a25050565b600660159054906101000a900460ff1681565b5f6112e4827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6109f7565b9050919050565b6112f3611b56565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611358576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600a5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fbf86feedee5b30c30a8243bd21deebb704d141478d39b1be04fe5ee739f214e760405160405180910390a250565b600560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6114d6611b56565b6114de61210c565b565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61152e611b56565b61155860015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166121dc565b565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6003816002811061158e575f80fd5b015f915090505481565b600660179054906101000a900460ff1681565b5f6115b46115b9565b905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f5052454149000000000000000000000000000000000000000000000000000000815250905090565b611625611b56565b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9f1eaee9ad9cb68284f0dc523aa42c465ed33b53f8da7fc7294ccea47358bbdf826040516116bf9190612c7c565b60405180910390a25050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f6116fb338484611bd4565b905092915050565b61170b611b56565b5f8385611718919061330a565b90505f8284611727919061330a565b90506101f461ffff168261ffff16118061174a57506101f461ffff168161ffff16115b15611781576040517f58d620b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85600560186101000a81548161ffff021916908361ffff160217905550846005601c6101000a81548161ffff021916908361ffff160217905550836005601a6101000a81548161ffff021916908361ffff160217905550826005601e6101000a81548161ffff021916908361ffff1602179055507fc8f6ebed6f64bd25f0aed0b6507ae982cddfd23874ad542be24905c9412a4a16868660405161182692919061333f565b60405180910390a17f52357d2b6ee817f5d57183c13530148906a8ec8b5be2fc82da16afbd8a045072848460405161185f92919061333f565b60405180910390a1505050505050565b60055f9054906101000a900463ffffffff1681565b5f6005601e9054906101000a900461ffff166005601a9054906101000a900461ffff166118b1919061330a565b905090565b5f6005601c9054906101000a900461ffff16600560189054906101000a900461ffff166118e3919061330a565b905090565b5f60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611972611b56565b600660179054906101000a900460ff166119b8576040517fa3b8915f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600660176101000a81548160ff0219169083151502179055507fcac51b0f10907b766720ff6bed8f3de64d17380ad8652db73718e015b315635560405160405180910390a1565b611a08611b56565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8e906133d6565b60405180910390fd5b611aa0816121dc565b50565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b611ac3611b56565b5f4790505f8103611b00576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b098161229d565b7f61834e9161bcb1e4b0b8bf1d8497dfce4358169ec3efa06ceababb5900694f1b81604051611b389190612b37565b60405180910390a150565b600660169054906101000a900460ff1681565b611b5e612367565b73ffffffffffffffffffffffffffffffffffffffff16611b7c6115b9565b73ffffffffffffffffffffffffffffffffffffffff1614611bd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc99061343e565b60405180910390fd5b565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611c3a576040517f160fca8a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c9f576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8203611cd8576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660149054906101000a900460ff1615611cff57611cf884848461236e565b9050612105565b60095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611d9a575060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611dd1576040517fa3b8915f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611e6c5750600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611e8357611e7c84848461236e565b9050612105565b600660169054906101000a900460ff16611ec9576040517fa3b8915f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611f15919061320b565b925050819055505f8290507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611f8457611f7d8584612485565b9050612047565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361204657600660159054906101000a900460ff16801561202b575060025460036001600281106120065761200561345c565b5b015460035f6002811061201c5761201b61345c565b5b01546120289190613489565b10155b156120395761203861210c565b5b612043858461253f565b90505b5b8060075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546120939190613489565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120f79190612b37565b60405180910390a360019150505b9392505050565b5f60035f600281106121215761212061345c565b5b015490505f600360016002811061213b5761213a61345c565b5b015490505f818361214c9190613489565b90505f60028361215c91906134e9565b90505f818361216b919061320b565b90505f612177826125f9565b90505f82848361218791906131ca565b61219191906134e9565b90505f81836121a0919061320b565b90505f81146121b3576121b28161229d565b5b5f82146121c5576121c4858361283f565b5b60035f6121d29190612a8a565b5050505050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516122e390613546565b5f6040518083038185875af1925050503d805f811461231d576040519150601f19603f3d011682016040523d82523d5f602084013e612322565b606091505b5050905080612363577ff52ba60a0c4a09559a9f01ce57d52c9fc28936995ea9de3de131126384be569b8260405161235a9190612b37565b60405180910390a15b5050565b5f33905090565b5f8160075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546123bb919061320b565b925050819055508160075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461240e9190613489565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516124729190612b37565b60405180910390a3600190509392505050565b5f8061248f612936565b90505f8161249f576103846124b1565b600560189054906101000a900461ffff165b90505f826124c05760646124d2565b6005601c9054906101000a900461ffff165b90505f61271061ffff168361ffff16876124ec91906131ca565b6124f691906134e9565b90505f61271061ffff168361ffff168861251091906131ca565b61251a91906134e9565b9050612527888383612965565b87612532919061320b565b9550505050505092915050565b5f80612549612936565b90505f816125595761096061256b565b6005601a9054906101000a900461ffff165b90505f8261257a57606461258c565b6005601e9054906101000a900461ffff165b90505f61271061ffff168361ffff16876125a691906131ca565b6125b091906134e9565b90505f61271061ffff168361ffff16886125ca91906131ca565b6125d491906134e9565b90506125e1888383612965565b876125ec919061320b565b9550505050505092915050565b5f6001600660146101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156126315761263061355a565b5b60405190808252806020026020018201604052801561265f5781602001602082028036833780820191505090505b50905030815f815181106126765761267561345c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561270d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612731919061359b565b816001815181106127455761274461345c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061278930846109f7565b505f479050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947855f8530426040518663ffffffff1660e01b81526004016127e39594939291906136b6565b5f604051808303815f87803b1580156127fa575f80fd5b505af115801561280c573d5f803e3d5ffd5b50505050804761281c919061320b565b925050505f600660146101000a81548160ff021916908315150217905550919050565b6001600660146101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80600560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016128d49695949392919061370e565b60606040518083038185885af11580156128f0573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612915919061376d565b5050505f600660146101000a81548160ff0219169083151502179055505050565b5f43606460ff1660055f9054906101000a900463ffffffff1661295991906137bd565b63ffffffff1610905090565b5f8260035f6002811061297b5761297a61345c565b5b015f82825461298a9190613489565b925050819055508160036001600281106129a7576129a661345c565b5b015f8282546129b69190613489565b9250508190555081836129c99190613489565b90508060075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612a179190613489565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612a7b9190612b37565b60405180910390a39392505050565b505f81556001015f9055565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612ac382612a9a565b9050919050565b612ad381612ab9565b8114612add575f80fd5b50565b5f81359050612aee81612aca565b92915050565b5f60208284031215612b0957612b08612a96565b5b5f612b1684828501612ae0565b91505092915050565b5f819050919050565b612b3181612b1f565b82525050565b5f602082019050612b4a5f830184612b28565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612b87578082015181840152602081019050612b6c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612bac82612b50565b612bb68185612b5a565b9350612bc6818560208601612b6a565b612bcf81612b92565b840191505092915050565b5f6020820190508181035f830152612bf28184612ba2565b905092915050565b612c0381612b1f565b8114612c0d575f80fd5b50565b5f81359050612c1e81612bfa565b92915050565b5f8060408385031215612c3a57612c39612a96565b5b5f612c4785828601612ae0565b9250506020612c5885828601612c10565b9150509250929050565b5f8115159050919050565b612c7681612c62565b82525050565b5f602082019050612c8f5f830184612c6d565b92915050565b5f805f60608486031215612cac57612cab612a96565b5b5f612cb986828701612ae0565b9350506020612cca86828701612ae0565b9250506040612cdb86828701612c10565b9150509250925092565b5f60ff82169050919050565b612cfa81612ce5565b82525050565b5f602082019050612d135f830184612cf1565b92915050565b5f612d2382612ab9565b9050919050565b612d3381612d19565b8114612d3d575f80fd5b50565b5f81359050612d4e81612d2a565b92915050565b5f60208284031215612d6957612d68612a96565b5b5f612d7684828501612d40565b91505092915050565b612d8881612c62565b8114612d92575f80fd5b50565b5f81359050612da381612d7f565b92915050565b5f8060408385031215612dbf57612dbe612a96565b5b5f612dcc85828601612d95565b9250506020612ddd85828601612c10565b9150509250929050565b5f8060408385031215612dfd57612dfc612a96565b5b5f612e0a85828601612ae0565b9250506020612e1b85828601612d95565b9150509250929050565b612e2e81612ab9565b82525050565b5f602082019050612e475f830184612e25565b92915050565b5f60208284031215612e6257612e61612a96565b5b5f612e6f84828501612c10565b91505092915050565b5f61ffff82169050919050565b612e8e81612e78565b8114612e98575f80fd5b50565b5f81359050612ea981612e85565b92915050565b5f805f8060808587031215612ec757612ec6612a96565b5b5f612ed487828801612e9b565b9450506020612ee587828801612e9b565b9350506040612ef687828801612e9b565b9250506060612f0787828801612e9b565b91505092959194509250565b5f63ffffffff82169050919050565b612f2b81612f13565b82525050565b5f602082019050612f445f830184612f22565b92915050565b612f5381612e78565b82525050565b5f602082019050612f6c5f830184612f4a565b92915050565b5f8060408385031215612f8857612f87612a96565b5b5f612f9585828601612ae0565b9250506020612fa685828601612ae0565b9150509250929050565b5f819050919050565b5f612fd3612fce612fc984612a9a565b612fb0565b612a9a565b9050919050565b5f612fe482612fb9565b9050919050565b5f612ff582612fda565b9050919050565b61300581612feb565b82525050565b5f60208201905061301e5f830184612ffc565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156130a65780860481111561308257613081613024565b5b60018516156130915780820291505b808102905061309f85613051565b9450613066565b94509492505050565b5f826130be5760019050613179565b816130cb575f9050613179565b81600181146130e157600281146130eb5761311a565b6001915050613179565b60ff8411156130fd576130fc613024565b5b8360020a91508482111561311457613113613024565b5b50613179565b5060208310610133831016604e8410600b841016171561314f5782820a90508381111561314a57613149613024565b5b613179565b61315c848484600161305d565b9250905081840481111561317357613172613024565b5b81810290505b9392505050565b5f61318a82612b1f565b915061319583612ce5565b92506131c27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846130af565b905092915050565b5f6131d482612b1f565b91506131df83612b1f565b92508282026131ed81612b1f565b9150828204841483151761320457613203613024565b5b5092915050565b5f61321582612b1f565b915061322083612b1f565b925082820390508181111561323857613237613024565b5b92915050565b5f8151905061324c81612bfa565b92915050565b5f6020828403121561326757613266612a96565b5b5f6132748482850161323e565b91505092915050565b5f6040820190506132905f830185612e25565b61329d6020830184612b28565b9392505050565b5f815190506132b281612d7f565b92915050565b5f602082840312156132cd576132cc612a96565b5b5f6132da848285016132a4565b91505092915050565b5f6040820190506132f65f830185612c6d565b6133036020830184612b28565b9392505050565b5f61331482612e78565b915061331f83612e78565b9250828201905061ffff81111561333957613338613024565b5b92915050565b5f6040820190506133525f830185612f4a565b61335f6020830184612f4a565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6133c0602683612b5a565b91506133cb82613366565b604082019050919050565b5f6020820190508181035f8301526133ed816133b4565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613428602083612b5a565b9150613433826133f4565b602082019050919050565b5f6020820190508181035f8301526134558161341c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61349382612b1f565b915061349e83612b1f565b92508282019050808211156134b6576134b5613024565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6134f382612b1f565b91506134fe83612b1f565b92508261350e5761350d6134bc565b5b828204905092915050565b5f81905092915050565b50565b5f6135315f83613519565b915061353c82613523565b5f82019050919050565b5f61355082613526565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061359581612aca565b92915050565b5f602082840312156135b0576135af612a96565b5b5f6135bd84828501613587565b91505092915050565b5f819050919050565b5f6135e96135e46135df846135c6565b612fb0565b612b1f565b9050919050565b6135f9816135cf565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61363181612ab9565b82525050565b5f6136428383613628565b60208301905092915050565b5f602082019050919050565b5f613664826135ff565b61366e8185613609565b935061367983613619565b805f5b838110156136a95781516136908882613637565b975061369b8361364e565b92505060018101905061367c565b5085935050505092915050565b5f60a0820190506136c95f830188612b28565b6136d660208301876135f0565b81810360408301526136e8818661365a565b90506136f76060830185612e25565b6137046080830184612b28565b9695505050505050565b5f60c0820190506137215f830189612e25565b61372e6020830188612b28565b61373b60408301876135f0565b61374860608301866135f0565b6137556080830185612e25565b61376260a0830184612b28565b979650505050505050565b5f805f6060848603121561378457613783612a96565b5b5f6137918682870161323e565b93505060206137a28682870161323e565b92505060406137b38682870161323e565b9150509250925092565b5f6137c782612f13565b91506137d283612f13565b9250828201905063ffffffff8111156137ee576137ed613024565b5b9291505056fea264697066735822122026022cda82d067f03c2ca264084db5d503de4fc9e0700d3361d3178dae57640b64736f6c63430008180033

Deployed Bytecode

0x608060405260043610610233575f3560e01c8063715018a61161012d578063b0373f72116100aa578063ea43915e1161006e578063ea43915e14610818578063f2fde38b1461082e578063f887ea4014610856578063f88de0c314610880578063ffb54a99146108965761023a565b8063b0373f7214610736578063bf56b3711461075e578063d073a01f14610788578063d726b221146107b2578063dd62ed3e146107dc5761023a565b80638da5cb5b116100f15780638da5cb5b1461065457806395d89b411461067e578063a3a2e89e146106a8578063a8aa1b31146106d0578063a9059cbb146106fa5761023a565b8063715018a61461058457806375f0a8741461059a57806379f48091146105c4578063879bf9fe14610600578063893d20e81461062a5761023a565b8063346cc7be116101bb578063571ac8b01161017f578063571ac8b0146104a45780635d098b38146104e0578063665a11ca1461050857806366eb37851461053257806370a08231146105485761023a565b8063346cc7be146103c65780633dab5269146103ee5780633f4218e014610416578063455a4396146104525780634a74bb021461047a5761023a565b806318160ddd1161020257806318160ddd146102f657806323b872dd146103205780632b112e491461035c5780632ebcbf6c14610386578063313ce5671461039c5761023a565b8063018770201461023e5780630445b6671461026657806306fdde0314610290578063095ea7b3146102ba5761023a565b3661023a57005b5f80fd5b348015610249575f80fd5b50610264600480360381019061025f9190612af4565b6108c0565b005b348015610271575f80fd5b5061027a6109b4565b6040516102879190612b37565b60405180910390f35b34801561029b575f80fd5b506102a46109ba565b6040516102b19190612bda565b60405180910390f35b3480156102c5575f80fd5b506102e060048036038101906102db9190612c24565b6109f7565b6040516102ed9190612c7c565b60405180910390f35b348015610301575f80fd5b5061030a610ae4565b6040516103179190612b37565b60405180910390f35b34801561032b575f80fd5b5061034660048036038101906103419190612c95565b610b08565b6040516103539190612c7c565b60405180910390f35b348015610367575f80fd5b50610370610cbd565b60405161037d9190612b37565b60405180910390f35b348015610391575f80fd5b5061039a610d2a565b005b3480156103a7575f80fd5b506103b0610deb565b6040516103bd9190612d00565b60405180910390f35b3480156103d1575f80fd5b506103ec60048036038101906103e79190612d54565b610df3565b005b3480156103f9575f80fd5b50610414600480360381019061040f9190612da9565b61102f565b005b348015610421575f80fd5b5061043c60048036038101906104379190612af4565b6110d9565b6040516104499190612c7c565b60405180910390f35b34801561045d575f80fd5b5061047860048036038101906104739190612de7565b6110f6565b005b348015610485575f80fd5b5061048e6112a6565b60405161049b9190612c7c565b60405180910390f35b3480156104af575f80fd5b506104ca60048036038101906104c59190612af4565b6112b9565b6040516104d79190612c7c565b60405180910390f35b3480156104eb575f80fd5b5061050660048036038101906105019190612af4565b6112eb565b005b348015610513575f80fd5b5061051c6114a8565b6040516105299190612e34565b60405180910390f35b34801561053d575f80fd5b506105466114ce565b005b348015610553575f80fd5b5061056e60048036038101906105699190612af4565b6114e0565b60405161057b9190612b37565b60405180910390f35b34801561058f575f80fd5b50610598611526565b005b3480156105a5575f80fd5b506105ae61155a565b6040516105bb9190612e34565b60405180910390f35b3480156105cf575f80fd5b506105ea60048036038101906105e59190612e4d565b61157f565b6040516105f79190612b37565b60405180910390f35b34801561060b575f80fd5b50610614611598565b6040516106219190612c7c565b60405180910390f35b348015610635575f80fd5b5061063e6115ab565b60405161064b9190612e34565b60405180910390f35b34801561065f575f80fd5b506106686115b9565b6040516106759190612e34565b60405180910390f35b348015610689575f80fd5b506106926115e0565b60405161069f9190612bda565b60405180910390f35b3480156106b3575f80fd5b506106ce60048036038101906106c99190612de7565b61161d565b005b3480156106db575f80fd5b506106e46116cb565b6040516106f19190612e34565b60405180910390f35b348015610705575f80fd5b50610720600480360381019061071b9190612c24565b6116ef565b60405161072d9190612c7c565b60405180910390f35b348015610741575f80fd5b5061075c60048036038101906107579190612eaf565b611703565b005b348015610769575f80fd5b5061077261186f565b60405161077f9190612f31565b60405180910390f35b348015610793575f80fd5b5061079c611884565b6040516107a99190612f59565b60405180910390f35b3480156107bd575f80fd5b506107c66118b6565b6040516107d39190612f59565b60405180910390f35b3480156107e7575f80fd5b5061080260048036038101906107fd9190612f72565b6118e8565b60405161080f9190612b37565b60405180910390f35b348015610823575f80fd5b5061082c61196a565b005b348015610839575f80fd5b50610854600480360381019061084f9190612af4565b611a00565b005b348015610861575f80fd5b5061086a611aa3565b604051610877919061300b565b60405180910390f35b34801561088b575f80fd5b50610894611abb565b005b3480156108a1575f80fd5b506108aa611b43565b6040516108b79190612c7c565b60405180910390f35b6108c8611b56565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361092d576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fedf1a035d265f6321083031b40acf4e5e06cd3e2e2025192fd308409b13b44c660405160405180910390a250565b60025481565b60606040518060400160405280600e81526020017f507265646963742043727970746f000000000000000000000000000000000000815250905090565b5f8160085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610ad29190612b37565b60405180910390a36001905092915050565b5f6012600a610af39190613180565b6402540be400610b0391906131ca565b905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610ca9578160085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610c2c919061320b565b60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610cb4848484611bd4565b90509392505050565b5f610ce860015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166114e0565b610cf361dead6114e0565b6012600a610d019190613180565b6402540be400610d1191906131ca565b610d1b919061320b565b610d25919061320b565b905090565b610d32611b56565b5f60055f9054906101000a900463ffffffff1663ffffffff1614610d82576040517fa3b8915f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b4360055f6101000a81548163ffffffff021916908363ffffffff1602179055506001600660166101000a81548160ff0219169083151502179055507f3126eb6b40eb49c85c6a99577574ba55f7dc795d4cbee28ed738c6191898a1b060405160405180910390a1565b5f6012905090565b610dfb611b56565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e60576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e9a9190612e34565b602060405180830381865afa158015610eb5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ed99190613252565b90505f8103610f14576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f555760035f610f549190612a8a565b5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610fb192919061327d565b6020604051808303815f875af1158015610fcd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff191906132b8565b507f2c173e3ab5b50dfe2d876a6c7de0f777aef7fdaf4d1440ebed38708b3b78ebf4828260405161102392919061327d565b60405180910390a15050565b611037611b56565b69021e19e0c9bab240000081101561107b576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600660156101000a81548160ff021916908315150217905550806002819055507f479b6e261fc1ed1b1a450fd333c906ece427a6ef5cdb37d2762bf1834ea0904882826040516110cd9291906132e3565b60405180910390a15050565b600a602052805f5260405f205f915054906101000a900460ff1681565b6110fe611b56565b600660179054906101000a900460ff16611144576040517fa3b8915f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806111c957507f00000000000000000000000032ecc02da852f118966d0cd6d198a3b7d333aa7873ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611200576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fcf3473b85df1594d47b6958f29a32bea0abff9dd68296f7bf33443646793cfd88260405161129a9190612c7c565b60405180910390a25050565b600660159054906101000a900460ff1681565b5f6112e4827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6109f7565b9050919050565b6112f3611b56565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611358576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600a5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fbf86feedee5b30c30a8243bd21deebb704d141478d39b1be04fe5ee739f214e760405160405180910390a250565b600560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6114d6611b56565b6114de61210c565b565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61152e611b56565b61155860015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166121dc565b565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6003816002811061158e575f80fd5b015f915090505481565b600660179054906101000a900460ff1681565b5f6115b46115b9565b905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f5052454149000000000000000000000000000000000000000000000000000000815250905090565b611625611b56565b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9f1eaee9ad9cb68284f0dc523aa42c465ed33b53f8da7fc7294ccea47358bbdf826040516116bf9190612c7c565b60405180910390a25050565b7f00000000000000000000000032ecc02da852f118966d0cd6d198a3b7d333aa7881565b5f6116fb338484611bd4565b905092915050565b61170b611b56565b5f8385611718919061330a565b90505f8284611727919061330a565b90506101f461ffff168261ffff16118061174a57506101f461ffff168161ffff16115b15611781576040517f58d620b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85600560186101000a81548161ffff021916908361ffff160217905550846005601c6101000a81548161ffff021916908361ffff160217905550836005601a6101000a81548161ffff021916908361ffff160217905550826005601e6101000a81548161ffff021916908361ffff1602179055507fc8f6ebed6f64bd25f0aed0b6507ae982cddfd23874ad542be24905c9412a4a16868660405161182692919061333f565b60405180910390a17f52357d2b6ee817f5d57183c13530148906a8ec8b5be2fc82da16afbd8a045072848460405161185f92919061333f565b60405180910390a1505050505050565b60055f9054906101000a900463ffffffff1681565b5f6005601e9054906101000a900461ffff166005601a9054906101000a900461ffff166118b1919061330a565b905090565b5f6005601c9054906101000a900461ffff16600560189054906101000a900461ffff166118e3919061330a565b905090565b5f60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611972611b56565b600660179054906101000a900460ff166119b8576040517fa3b8915f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600660176101000a81548160ff0219169083151502179055507fcac51b0f10907b766720ff6bed8f3de64d17380ad8652db73718e015b315635560405160405180910390a1565b611a08611b56565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8e906133d6565b60405180910390fd5b611aa0816121dc565b50565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b611ac3611b56565b5f4790505f8103611b00576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b098161229d565b7f61834e9161bcb1e4b0b8bf1d8497dfce4358169ec3efa06ceababb5900694f1b81604051611b389190612b37565b60405180910390a150565b600660169054906101000a900460ff1681565b611b5e612367565b73ffffffffffffffffffffffffffffffffffffffff16611b7c6115b9565b73ffffffffffffffffffffffffffffffffffffffff1614611bd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc99061343e565b60405180910390fd5b565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611c3a576040517f160fca8a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c9f576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8203611cd8576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660149054906101000a900460ff1615611cff57611cf884848461236e565b9050612105565b60095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611d9a575060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611dd1576040517fa3b8915f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611e6c5750600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611e8357611e7c84848461236e565b9050612105565b600660169054906101000a900460ff16611ec9576040517fa3b8915f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611f15919061320b565b925050819055505f8290507f00000000000000000000000032ecc02da852f118966d0cd6d198a3b7d333aa7873ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611f8457611f7d8584612485565b9050612047565b7f00000000000000000000000032ecc02da852f118966d0cd6d198a3b7d333aa7873ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361204657600660159054906101000a900460ff16801561202b575060025460036001600281106120065761200561345c565b5b015460035f6002811061201c5761201b61345c565b5b01546120289190613489565b10155b156120395761203861210c565b5b612043858461253f565b90505b5b8060075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546120939190613489565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120f79190612b37565b60405180910390a360019150505b9392505050565b5f60035f600281106121215761212061345c565b5b015490505f600360016002811061213b5761213a61345c565b5b015490505f818361214c9190613489565b90505f60028361215c91906134e9565b90505f818361216b919061320b565b90505f612177826125f9565b90505f82848361218791906131ca565b61219191906134e9565b90505f81836121a0919061320b565b90505f81146121b3576121b28161229d565b5b5f82146121c5576121c4858361283f565b5b60035f6121d29190612a8a565b5050505050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516122e390613546565b5f6040518083038185875af1925050503d805f811461231d576040519150601f19603f3d011682016040523d82523d5f602084013e612322565b606091505b5050905080612363577ff52ba60a0c4a09559a9f01ce57d52c9fc28936995ea9de3de131126384be569b8260405161235a9190612b37565b60405180910390a15b5050565b5f33905090565b5f8160075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546123bb919061320b565b925050819055508160075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461240e9190613489565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516124729190612b37565b60405180910390a3600190509392505050565b5f8061248f612936565b90505f8161249f576103846124b1565b600560189054906101000a900461ffff165b90505f826124c05760646124d2565b6005601c9054906101000a900461ffff165b90505f61271061ffff168361ffff16876124ec91906131ca565b6124f691906134e9565b90505f61271061ffff168361ffff168861251091906131ca565b61251a91906134e9565b9050612527888383612965565b87612532919061320b565b9550505050505092915050565b5f80612549612936565b90505f816125595761096061256b565b6005601a9054906101000a900461ffff165b90505f8261257a57606461258c565b6005601e9054906101000a900461ffff165b90505f61271061ffff168361ffff16876125a691906131ca565b6125b091906134e9565b90505f61271061ffff168361ffff16886125ca91906131ca565b6125d491906134e9565b90506125e1888383612965565b876125ec919061320b565b9550505050505092915050565b5f6001600660146101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156126315761263061355a565b5b60405190808252806020026020018201604052801561265f5781602001602082028036833780820191505090505b50905030815f815181106126765761267561345c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561270d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612731919061359b565b816001815181106127455761274461345c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061278930846109f7565b505f479050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947855f8530426040518663ffffffff1660e01b81526004016127e39594939291906136b6565b5f604051808303815f87803b1580156127fa575f80fd5b505af115801561280c573d5f803e3d5ffd5b50505050804761281c919061320b565b925050505f600660146101000a81548160ff021916908315150217905550919050565b6001600660146101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80600560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016128d49695949392919061370e565b60606040518083038185885af11580156128f0573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612915919061376d565b5050505f600660146101000a81548160ff0219169083151502179055505050565b5f43606460ff1660055f9054906101000a900463ffffffff1661295991906137bd565b63ffffffff1610905090565b5f8260035f6002811061297b5761297a61345c565b5b015f82825461298a9190613489565b925050819055508160036001600281106129a7576129a661345c565b5b015f8282546129b69190613489565b9250508190555081836129c99190613489565b90508060075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612a179190613489565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612a7b9190612b37565b60405180910390a39392505050565b505f81556001015f9055565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612ac382612a9a565b9050919050565b612ad381612ab9565b8114612add575f80fd5b50565b5f81359050612aee81612aca565b92915050565b5f60208284031215612b0957612b08612a96565b5b5f612b1684828501612ae0565b91505092915050565b5f819050919050565b612b3181612b1f565b82525050565b5f602082019050612b4a5f830184612b28565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612b87578082015181840152602081019050612b6c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612bac82612b50565b612bb68185612b5a565b9350612bc6818560208601612b6a565b612bcf81612b92565b840191505092915050565b5f6020820190508181035f830152612bf28184612ba2565b905092915050565b612c0381612b1f565b8114612c0d575f80fd5b50565b5f81359050612c1e81612bfa565b92915050565b5f8060408385031215612c3a57612c39612a96565b5b5f612c4785828601612ae0565b9250506020612c5885828601612c10565b9150509250929050565b5f8115159050919050565b612c7681612c62565b82525050565b5f602082019050612c8f5f830184612c6d565b92915050565b5f805f60608486031215612cac57612cab612a96565b5b5f612cb986828701612ae0565b9350506020612cca86828701612ae0565b9250506040612cdb86828701612c10565b9150509250925092565b5f60ff82169050919050565b612cfa81612ce5565b82525050565b5f602082019050612d135f830184612cf1565b92915050565b5f612d2382612ab9565b9050919050565b612d3381612d19565b8114612d3d575f80fd5b50565b5f81359050612d4e81612d2a565b92915050565b5f60208284031215612d6957612d68612a96565b5b5f612d7684828501612d40565b91505092915050565b612d8881612c62565b8114612d92575f80fd5b50565b5f81359050612da381612d7f565b92915050565b5f8060408385031215612dbf57612dbe612a96565b5b5f612dcc85828601612d95565b9250506020612ddd85828601612c10565b9150509250929050565b5f8060408385031215612dfd57612dfc612a96565b5b5f612e0a85828601612ae0565b9250506020612e1b85828601612d95565b9150509250929050565b612e2e81612ab9565b82525050565b5f602082019050612e475f830184612e25565b92915050565b5f60208284031215612e6257612e61612a96565b5b5f612e6f84828501612c10565b91505092915050565b5f61ffff82169050919050565b612e8e81612e78565b8114612e98575f80fd5b50565b5f81359050612ea981612e85565b92915050565b5f805f8060808587031215612ec757612ec6612a96565b5b5f612ed487828801612e9b565b9450506020612ee587828801612e9b565b9350506040612ef687828801612e9b565b9250506060612f0787828801612e9b565b91505092959194509250565b5f63ffffffff82169050919050565b612f2b81612f13565b82525050565b5f602082019050612f445f830184612f22565b92915050565b612f5381612e78565b82525050565b5f602082019050612f6c5f830184612f4a565b92915050565b5f8060408385031215612f8857612f87612a96565b5b5f612f9585828601612ae0565b9250506020612fa685828601612ae0565b9150509250929050565b5f819050919050565b5f612fd3612fce612fc984612a9a565b612fb0565b612a9a565b9050919050565b5f612fe482612fb9565b9050919050565b5f612ff582612fda565b9050919050565b61300581612feb565b82525050565b5f60208201905061301e5f830184612ffc565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156130a65780860481111561308257613081613024565b5b60018516156130915780820291505b808102905061309f85613051565b9450613066565b94509492505050565b5f826130be5760019050613179565b816130cb575f9050613179565b81600181146130e157600281146130eb5761311a565b6001915050613179565b60ff8411156130fd576130fc613024565b5b8360020a91508482111561311457613113613024565b5b50613179565b5060208310610133831016604e8410600b841016171561314f5782820a90508381111561314a57613149613024565b5b613179565b61315c848484600161305d565b9250905081840481111561317357613172613024565b5b81810290505b9392505050565b5f61318a82612b1f565b915061319583612ce5565b92506131c27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846130af565b905092915050565b5f6131d482612b1f565b91506131df83612b1f565b92508282026131ed81612b1f565b9150828204841483151761320457613203613024565b5b5092915050565b5f61321582612b1f565b915061322083612b1f565b925082820390508181111561323857613237613024565b5b92915050565b5f8151905061324c81612bfa565b92915050565b5f6020828403121561326757613266612a96565b5b5f6132748482850161323e565b91505092915050565b5f6040820190506132905f830185612e25565b61329d6020830184612b28565b9392505050565b5f815190506132b281612d7f565b92915050565b5f602082840312156132cd576132cc612a96565b5b5f6132da848285016132a4565b91505092915050565b5f6040820190506132f65f830185612c6d565b6133036020830184612b28565b9392505050565b5f61331482612e78565b915061331f83612e78565b9250828201905061ffff81111561333957613338613024565b5b92915050565b5f6040820190506133525f830185612f4a565b61335f6020830184612f4a565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6133c0602683612b5a565b91506133cb82613366565b604082019050919050565b5f6020820190508181035f8301526133ed816133b4565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613428602083612b5a565b9150613433826133f4565b602082019050919050565b5f6020820190508181035f8301526134558161341c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61349382612b1f565b915061349e83612b1f565b92508282019050808211156134b6576134b5613024565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6134f382612b1f565b91506134fe83612b1f565b92508261350e5761350d6134bc565b5b828204905092915050565b5f81905092915050565b50565b5f6135315f83613519565b915061353c82613523565b5f82019050919050565b5f61355082613526565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061359581612aca565b92915050565b5f602082840312156135b0576135af612a96565b5b5f6135bd84828501613587565b91505092915050565b5f819050919050565b5f6135e96135e46135df846135c6565b612fb0565b612b1f565b9050919050565b6135f9816135cf565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61363181612ab9565b82525050565b5f6136428383613628565b60208301905092915050565b5f602082019050919050565b5f613664826135ff565b61366e8185613609565b935061367983613619565b805f5b838110156136a95781516136908882613637565b975061369b8361364e565b92505060018101905061367c565b5085935050505092915050565b5f60a0820190506136c95f830188612b28565b6136d660208301876135f0565b81810360408301526136e8818661365a565b90506136f76060830185612e25565b6137046080830184612b28565b9695505050505050565b5f60c0820190506137215f830189612e25565b61372e6020830188612b28565b61373b60408301876135f0565b61374860608301866135f0565b6137556080830185612e25565b61376260a0830184612b28565b979650505050505050565b5f805f6060848603121561378457613783612a96565b5b5f6137918682870161323e565b93505060206137a28682870161323e565b92505060406137b38682870161323e565b9150509250925092565b5f6137c782612f13565b91506137d283612f13565b9250828201905063ffffffff8111156137ee576137ed613024565b5b9291505056fea264697066735822122026022cda82d067f03c2ca264084db5d503de4fc9e0700d3361d3178dae57640b64736f6c63430008180033

Deployed Bytecode Sourcemap

4167:14195:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16023:246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5125:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8771:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9489:241;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8453:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10081:405;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8307:138;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8082:217;;;;;;;;;;;;;:::i;:::-;;8563:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17596:450;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16277:372;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5945:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7448:340;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5630:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9738:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15659:356;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5283:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15361:75;;;;;;;;;;;;;:::i;:::-;;8975:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2132:97;;;;;;;;;;;;;:::i;:::-;;5511:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5202:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5715:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8873:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1897:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8665:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15478:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4253:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9896:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16657:643;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5252:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9384:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9282:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9102:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7796:278;;;;;;;;;;;;;:::i;:::-;;2237:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4289:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17308:280;;;;;;;;;;;;;:::i;:::-;;5677:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16023:246;1856:13;:11;:13::i;:::-;16137:1:::1;16109:30;;:16;:30;;::::0;16105:59:::1;;16148:16;;;;;;;;;;;;;;16105:59;16191:16;16175:13;;:32;;;;;;;;;;;;;;;;;;16244:16;16223:38;;;;;;;;;;;;16023:246:::0;:::o;5125:50::-;;;;:::o;8771:94::-;8819:13;8852:5;;;;;;;;;;;;;;;;;8845:12;;8771:94;:::o;9489:241::-;9589:4;9641:6;9606:11;:23;9618:10;9606:23;;;;;;;;;;;;;;;:32;9630:7;9606:32;;;;;;;;;;;;;;;:41;;;;9684:7;9663:37;;9672:10;9663:37;;;9693:6;9663:37;;;;;;:::i;:::-;;;;;;;;9718:4;9711:11;;9489:241;;;;:::o;8453:102::-;8508:7;4614:2;5035;:15;;;;:::i;:::-;5019:12;:32;;;;:::i;:::-;8528:19;;8453:102;:::o;10081:405::-;10215:4;10271:17;10236:11;:19;10248:6;10236:19;;;;;;;;;;;;;;;:31;10256:10;10236:31;;;;;;;;;;;;;;;;:52;10232:193;;10407:6;10356:11;:19;10368:6;10356:19;;;;;;;;;;;;;;;:31;10376:10;10356:31;;;;;;;;;;;;;;;;:57;;;;:::i;:::-;10305:11;:19;10317:6;10305:19;;;;;;;;;;;;;;;:31;10325:10;10305:31;;;;;;;;;;;;;;;:108;;;;10232:193;10442:36;10452:6;10460:9;10471:6;10442:9;:36::i;:::-;10435:43;;10081:405;;;;;:::o;8307:138::-;8362:7;8422:15;8432:4;;;;;;;;;;;8422:9;:15::i;:::-;8404;4427:42;8404:9;:15::i;:::-;4614:2;5035;:15;;;;:::i;:::-;5019:12;:32;;;;:::i;:::-;8389:30;;;;:::i;:::-;:48;;;;:::i;:::-;8382:55;;8307:138;:::o;8082:217::-;1856:13;:11;:13::i;:::-;8156:1:::1;8142:10;;;;;;;;;;;:15;;;8138:41;;8166:13;;;;;;;;;;;;;;8138:41;8210:12;8190:10;;:33;;;;;;;;;;;;;;;;;;8248:4;8234:11;;:18;;;;;;;;;;;;;;;;;;8268:23;;;;;;;;;;8082:217::o:0;8563:94::-;8615:5;4614:2;8633:16;;8563:94;:::o;17596:450::-;1856:13;:11;:13::i;:::-;17696:1:::1;17670:28;;17678:5;17670:28;;::::0;17666:57:::1;;17707:16;;;;;;;;;;;;;;17666:57;17734:15;17752:5;:15;;;17776:4;17752:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17734:48;;17808:1;17797:7;:12:::0;17793:40:::1;;17818:15;;;;;;;;;;;;;;17793:40;17874:4;17848:31;;17856:5;17848:31;;::::0;17844:85:::1;;17903:14;;17896:21;;;;:::i;:::-;17844:85;17939:5;:14;;;17954:15;;;;;;;;;;;17971:7;17939:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17995:43;18022:5;18030:7;17995:43;;;;;;;:::i;:::-;;;;;;;;17655:391;17596:450:::0;:::o;16277:372::-;1856:13;:11;:13::i;:::-;5104:12:::1;16415:16;:37;16411:65;;;16461:15;;;;;;;;;;;;;;16411:65;16511:14;16487:21;;:38;;;;;;;;;;;;;;;;;;16552:16;16536:13;:32;;;;16584:57;16608:14;16624:16;16584:57;;;;;;;:::i;:::-;;;;;;;;16277:372:::0;;:::o;5945:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;7448:340::-;1856:13;:11;:13::i;:::-;7565:28:::1;;;;;;;;;;;7560:55;;7602:13;;;;;;;;;;;;;;7560:55;7649:1;7630:21;;:7;:21;;;:40;;;;7666:4;7655:15;;:7;:15;;;7630:40;7626:69;;;7679:16;;;;;;;;;;;;;;7626:69;7728:7;7706:10;:19;7717:7;7706:19;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;7763:7;7751:29;;;7772:7;7751:29;;;;;;:::i;:::-;;;;;;;;7448:340:::0;;:::o;5630:40::-;;;;;;;;;;;;;:::o;9738:122::-;9793:4;9817:35;9825:7;9834:17;9817:7;:35::i;:::-;9810:42;;9738:122;;;:::o;15659:356::-;1856:13;:11;:13::i;:::-;15779:1:::1;15749:32;;:18;:32;;::::0;15745:61:::1;;15790:16;;;;;;;;;;;;;;15745:61;15848:5;15817:11;:28;15829:15;;;;;;;;;;;15817:28;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;15882:18;15864:15;;:36;;;;;;;;;;;;;;;;;;15945:4;15911:11;:31;15923:18;15911:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;15988:18;15965:42;;;;;;;;;;;;15659:356:::0;:::o;5283:35::-;;;;;;;;;;;;;:::o;15361:75::-;1856:13;:11;:13::i;:::-;15417:11:::1;:9;:11::i;:::-;15361:75::o:0;8975:119::-;9041:7;9068:9;:18;9078:7;9068:18;;;;;;;;;;;;;;;;9061:25;;8975:119;;;:::o;2132:97::-;1856:13;:11;:13::i;:::-;2197:24:::1;2216:4;;;;;;;;;;;2197:18;:24::i;:::-;2132:97::o:0;5511:75::-;;;;;;;;;;;;;:::o;5202:41::-;;;;;;;;;;;;;;;;;;;;:::o;5715:47::-;;;;;;;;;;;;;:::o;8873:94::-;8925:7;8952;:5;:7::i;:::-;8945:14;;8873:94;:::o;1897:87::-;1943:7;1970:6;;;;;;;;;;;1963:13;;1897:87;:::o;8665:98::-;8715:13;8748:7;;;;;;;;;;;;;;;;;8741:14;;8665:98;:::o;15478:173::-;1856:13;:11;:13::i;:::-;15586:6:::1;15564:11;:19;15576:6;15564:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;15628:6;15608:35;;;15636:6;15608:35;;;;;;:::i;:::-;;;;;;;;15478:173:::0;;:::o;4253:29::-;;;:::o;9896:177::-;10001:4;10025:40;10035:10;10047:9;10058:6;10025:9;:40::i;:::-;10018:47;;9896:177;;;;:::o;16657:643::-;1856:13;:11;:13::i;:::-;16835:21:::1;16873:11;16859;:25;;;;:::i;:::-;16835:49;;16895:22;16935:12;16920;:27;;;;:::i;:::-;16895:52;;4919:3;16962:24;;:14;:24;;;:53;;;;4919:3;16990:25;;:15;:25;;;16962:53;16958:91;;;17037:12;;;;;;;;;;;;;;16958:91;17069:11;17060:6;;:20;;;;;;;;;;;;;;;;;;17100:11;17091:6;;:20;;;;;;;;;;;;;;;;;;17132:12;17122:7;;:22;;;;;;;;;;;;;;;;;;17165:12;17155:7;;:22;;;;;;;;;;;;;;;;;;17193:40;17208:11;17221;17193:40;;;;;;;:::i;:::-;;;;;;;;17249:43;17265:12;17279;17249:43;;;;;;;:::i;:::-;;;;;;;;16824:476;;16657:643:::0;;;;:::o;5252:24::-;;;;;;;;;;;;;:::o;9384:97::-;9430:6;9466:7;;;;;;;;;;;9456;;;;;;;;;;;:17;;;;:::i;:::-;9449:24;;9384:97;:::o;9282:94::-;9327:6;9362;;;;;;;;;;;9353;;;;;;;;;;;:15;;;;:::i;:::-;9346:22;;9282:94;:::o;9102:172::-;9211:7;9238:11;:19;9250:6;9238:19;;;;;;;;;;;;;;;:28;9258:7;9238:28;;;;;;;;;;;;;;;;9231:35;;9102:172;;;;:::o;7796:278::-;1856:13;:11;:13::i;:::-;7934:28:::1;;;;;;;;;;;7929:55;;7971:13;;;;;;;;;;;;;;7929:55;8026:5;7995:28;;:36;;;;;;;;;;;;;;;;;;8047:19;;;;;;;;;;7796:278::o:0;2237:195::-;1856:13;:11;:13::i;:::-;2338:4:::1;;;;;;;;;;;2326:16;;:8;:16;;::::0;2318:67:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2396:28;2415:8;2396:18;:28::i;:::-;2237:195:::0;:::o;4289:99::-;4345:42;4289:99;:::o;17308:280::-;1856:13;:11;:13::i;:::-;17363:26:::1;17392:21;17363:50;;17450:1;17428:18;:23:::0;17424:51:::1;;17460:15;;;;;;;;;;;;;;17424:51;17486:43;17510:18;17486:23;:43::i;:::-;17545:35;17561:18;17545:35;;;;;;:::i;:::-;;;;;;;;17352:236;17308:280::o:0;5677:31::-;;;;;;;;;;;;;:::o;1992:132::-;2067:12;:10;:12::i;:::-;2056:23;;:7;:5;:7::i;:::-;:23;;;2048:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1992:132::o;10494:1292::-;10615:4;10654:1;10636:20;;:6;:20;;;10632:58;;10665:25;;;;;;;;;;;;;;10632:58;10726:1;10705:23;;:9;:23;;;10701:59;;10737:23;;;;;;;;;;;;;;10701:59;10785:1;10775:6;:11;10771:39;;10795:15;;;;;;;;;;;;;;10771:39;10825:17;;;;;;;;;;;10821:98;;;10866:41;10881:6;10889:9;10900:6;10866:14;:41::i;:::-;10859:48;;;;10821:98;10933:10;:18;10944:6;10933:18;;;;;;;;;;;;;;;;;;;;;;;;;:43;;;;10955:10;:21;10966:9;10955:21;;;;;;;;;;;;;;;;;;;;;;;;;10933:43;10929:69;;;10985:13;;;;;;;;;;;;;;10929:69;11013:11;:19;11025:6;11013:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;11036:11;:22;11048:9;11036:22;;;;;;;;;;;;;;;;;;;;;;;;;11013:45;11009:126;;;11082:41;11097:6;11105:9;11116:6;11082:14;:41::i;:::-;11075:48;;;;11009:126;11150:11;;;;;;;;;;;11145:38;;11170:13;;;;;;;;;;;;;;11145:38;11215:6;11194:9;:17;11204:6;11194:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;11232:19;11254:6;11232:28;;11285:4;11275:14;;:6;:14;;;11271:384;;11320:29;11334:6;11342;11320:13;:29::i;:::-;11306:43;;11271:384;;;11384:4;11371:17;;:9;:17;;;11367:288;;11427:21;;;;;;;;;;;:96;;;;;11510:13;;11489:14;11504:1;11489:17;;;;;;;:::i;:::-;;;;11469:14;11484:1;11469:17;;;;;;;:::i;:::-;;;;:37;;;;:::i;:::-;:54;;11427:96;11405:180;;;11558:11;:9;:11::i;:::-;11405:180;11613:30;11628:6;11636;11613:14;:30::i;:::-;11599:44;;11367:288;11271:384;11689:11;11665:9;:20;11675:9;11665:20;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;11733:9;11716:40;;11725:6;11716:40;;;11744:11;11716:40;;;;;;:::i;:::-;;;;;;;;11774:4;11767:11;;;10494:1292;;;;;;:::o;14601:752::-;14641:15;14659:14;14674:1;14659:17;;;;;;;:::i;:::-;;;;14641:35;;14687:15;14705:14;14720:1;14705:17;;;;;;;:::i;:::-;;;;14687:35;;14733:16;14762:7;14752;:17;;;;:::i;:::-;14733:36;;14780:26;14819:1;14809:7;:11;;;;:::i;:::-;14780:40;;14831:20;14865:18;14854:8;:29;;;;:::i;:::-;14831:52;;14896:19;14918:31;14936:12;14918:17;:31::i;:::-;14896:53;;14962:23;15038:12;15003:18;14989:11;:32;;;;:::i;:::-;14988:62;;;;:::i;:::-;14962:88;;15061:16;15094:15;15080:11;:29;;;;:::i;:::-;15061:48;;15138:1;15126:8;:13;15122:79;;15156:33;15180:8;15156:23;:33::i;:::-;15122:79;15234:1;15215:15;:20;15211:103;;15252:50;15266:18;15286:15;15252:13;:50::i;:::-;15211:103;15331:14;;15324:21;;;;:::i;:::-;14630:723;;;;;;;;14601:752::o;2440:191::-;2514:16;2533:6;;;;;;;;;;;2514:25;;2559:8;2550:6;;:17;;;;;;;;;;;;;;;;;;2614:8;2583:40;;2604:8;2583:40;;;;;;;;;;;;2503:128;2440:191;:::o;18054:268::-;18123:12;18141:15;;;;;;;;;;;:20;;18169:6;18141:39;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18122:58;;;18196:7;18191:124;;18287:16;18296:6;18287:16;;;;;;:::i;:::-;;;;;;;;18191:124;18111:211;18054:268;:::o;1270:98::-;1323:7;1350:10;1343:17;;1270:98;:::o;11794:292::-;11920:4;11958:6;11937:9;:17;11947:6;11937:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;11999:6;11975:9;:20;11985:9;11975:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;12038:9;12021:35;;12030:6;12021:35;;;12049:6;12021:35;;;;;;:::i;:::-;;;;;;;;12074:4;12067:11;;11794:292;;;;;:::o;12117:481::-;12214:7;12234:18;12255:16;:14;:16::i;:::-;12234:37;;12282:12;12297:13;:40;;4716:3;12297:40;;;12313:6;;;;;;;;;;;12297:40;12282:55;;12348:12;12363:13;:40;;4822:3;12363:40;;;12379:6;;;;;;;;;;;12363:40;12348:55;;12414:14;4967:5;12431:30;;12441:5;12432:14;;:6;:14;;;;:::i;:::-;12431:30;;;;:::i;:::-;12414:47;;12472:14;4967:5;12489:30;;12499:5;12490:14;;:6;:14;;;;:::i;:::-;12489:30;;;;:::i;:::-;12472:47;;12546:44;12567:6;12575;12583;12546:20;:44::i;:::-;12537:6;:53;;;;:::i;:::-;12530:60;;;;;;;12117:481;;;;:::o;12606:490::-;12704:7;12724:18;12745:16;:14;:16::i;:::-;12724:37;;12772:13;12788;:42;;4769:4;12788:42;;;12804:7;;;;;;;;;;;12788:42;12772:58;;12841:13;12857;:42;;4875:3;12857:42;;;12873:7;;;;;;;;;;;12857:42;12841:58;;12910:14;4967:5;12927:31;;12937:6;12928:15;;:6;:15;;;;:::i;:::-;12927:31;;;;:::i;:::-;12910:48;;12969:14;4967:5;12986:31;;12996:6;12987:15;;:6;:15;;;;:::i;:::-;12986:31;;;;:::i;:::-;12969:48;;13044:44;13065:6;13073;13081;13044:20;:44::i;:::-;13035:6;:53;;;;:::i;:::-;13028:60;;;;;;;12606:490;;;;:::o;13687:576::-;13780:7;6051:4;6031:17;;:24;;;;;;;;;;;;;;;;;;13800:21:::1;13838:1;13824:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13800:40;;13869:4;13851;13856:1;13851:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;4345:42;13895:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13885:4;13890:1;13885:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;13919:35;13935:4;13942:11;13919:7;:35::i;:::-;;13965:17;13985:21;13965:41;;4345:42;14017:57;;;14089:11;14115:1;14131:4;14158;14178:15;14017:187;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14246:9;14222:21;:33;;;;:::i;:::-;14215:40;;;;6098:5:::0;6078:17;;:25;;;;;;;;;;;;;;;;;;13687:576;;;:::o;14271:322::-;6051:4;6031:17;;:24;;;;;;;;;;;;;;;;;;4345:42:::1;14390:22;;;14420:9;14453:4;14473:11;14499:1;14515::::0;14531:13:::1;;;;;;;;;;;14559:15;14390:195;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;6098:5:::0;6078:17;;:25;;;;;;;;;;;;;;;;;;14271:322;;:::o;13104:185::-;13152:4;13269:12;4664:3;13238:28;;:10;;;;;;;;;;;:28;;;;:::i;:::-;:43;;;13231:50;;13104:185;:::o;13297:349::-;13418:11;13463:2;13442:14;13457:1;13442:17;;;;;;;:::i;:::-;;;;:23;;;;;;;:::i;:::-;;;;;;;;13497:2;13476:14;13491:1;13476:17;;;;;;;:::i;:::-;;;;:23;;;;;;;:::i;:::-;;;;;;;;13521:2;13516;:7;;;;:::i;:::-;13510:13;;13562:3;13534:9;:24;13552:4;13534:24;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;13606:4;13581:36;;13590:6;13581:36;;;13613:3;13581:36;;;;;;:::i;:::-;;;;;;;;13297:349;;;;;:::o;-1:-1:-1:-;;;;;;;;;;:::o;88:117:1:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;;:::i;:::-;917:119;1075:1;1100:53;1145:7;1136:6;1125:9;1121:22;1100:53;:::i;:::-;1090:63;;1046:117;841:329;;;;:::o;1176:77::-;1213:7;1242:5;1231:16;;1176:77;;;:::o;1259:118::-;1346:24;1364:5;1346:24;:::i;:::-;1341:3;1334:37;1259:118;;:::o;1383:222::-;1476:4;1514:2;1503:9;1499:18;1491:26;;1527:71;1595:1;1584:9;1580:17;1571:6;1527:71;:::i;:::-;1383:222;;;;:::o;1611:99::-;1663:6;1697:5;1691:12;1681:22;;1611:99;;;:::o;1716:169::-;1800:11;1834:6;1829:3;1822:19;1874:4;1869:3;1865:14;1850:29;;1716:169;;;;:::o;1891:246::-;1972:1;1982:113;1996:6;1993:1;1990:13;1982:113;;;2081:1;2076:3;2072:11;2066:18;2062:1;2057:3;2053:11;2046:39;2018:2;2015:1;2011:10;2006:15;;1982:113;;;2129:1;2120:6;2115:3;2111:16;2104:27;1953:184;1891:246;;;:::o;2143:102::-;2184:6;2235:2;2231:7;2226:2;2219:5;2215:14;2211:28;2201:38;;2143:102;;;:::o;2251:377::-;2339:3;2367:39;2400:5;2367:39;:::i;:::-;2422:71;2486:6;2481:3;2422:71;:::i;:::-;2415:78;;2502:65;2560:6;2555:3;2548:4;2541:5;2537:16;2502:65;:::i;:::-;2592:29;2614:6;2592:29;:::i;:::-;2587:3;2583:39;2576:46;;2343:285;2251:377;;;;:::o;2634:313::-;2747:4;2785:2;2774:9;2770:18;2762:26;;2834:9;2828:4;2824:20;2820:1;2809:9;2805:17;2798:47;2862:78;2935:4;2926:6;2862:78;:::i;:::-;2854:86;;2634:313;;;;:::o;2953:122::-;3026:24;3044:5;3026:24;:::i;:::-;3019:5;3016:35;3006:63;;3065:1;3062;3055:12;3006:63;2953:122;:::o;3081:139::-;3127:5;3165:6;3152:20;3143:29;;3181:33;3208:5;3181:33;:::i;:::-;3081:139;;;;:::o;3226:474::-;3294:6;3302;3351:2;3339:9;3330:7;3326:23;3322:32;3319:119;;;3357:79;;:::i;:::-;3319:119;3477:1;3502:53;3547:7;3538:6;3527:9;3523:22;3502:53;:::i;:::-;3492:63;;3448:117;3604:2;3630:53;3675:7;3666:6;3655:9;3651:22;3630:53;:::i;:::-;3620:63;;3575:118;3226:474;;;;;:::o;3706:90::-;3740:7;3783:5;3776:13;3769:21;3758:32;;3706:90;;;:::o;3802:109::-;3883:21;3898:5;3883:21;:::i;:::-;3878:3;3871:34;3802:109;;:::o;3917:210::-;4004:4;4042:2;4031:9;4027:18;4019:26;;4055:65;4117:1;4106:9;4102:17;4093:6;4055:65;:::i;:::-;3917:210;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:109::-;5238:7;5267:24;5285:5;5267:24;:::i;:::-;5256:35;;5188:109;;;:::o;5303:148::-;5389:37;5420:5;5389:37;:::i;:::-;5382:5;5379:48;5369:76;;5441:1;5438;5431:12;5369:76;5303:148;:::o;5457:165::-;5516:5;5554:6;5541:20;5532:29;;5570:46;5610:5;5570:46;:::i;:::-;5457:165;;;;:::o;5628:355::-;5700:6;5749:2;5737:9;5728:7;5724:23;5720:32;5717:119;;;5755:79;;:::i;:::-;5717:119;5875:1;5900:66;5958:7;5949:6;5938:9;5934:22;5900:66;:::i;:::-;5890:76;;5846:130;5628:355;;;;:::o;5989:116::-;6059:21;6074:5;6059:21;:::i;:::-;6052:5;6049:32;6039:60;;6095:1;6092;6085:12;6039:60;5989:116;:::o;6111:133::-;6154:5;6192:6;6179:20;6170:29;;6208:30;6232:5;6208:30;:::i;:::-;6111:133;;;;:::o;6250:468::-;6315:6;6323;6372:2;6360:9;6351:7;6347:23;6343:32;6340:119;;;6378:79;;:::i;:::-;6340:119;6498:1;6523:50;6565:7;6556:6;6545:9;6541:22;6523:50;:::i;:::-;6513:60;;6469:114;6622:2;6648:53;6693:7;6684:6;6673:9;6669:22;6648:53;:::i;:::-;6638:63;;6593:118;6250:468;;;;;:::o;6724:::-;6789:6;6797;6846:2;6834:9;6825:7;6821:23;6817:32;6814:119;;;6852:79;;:::i;:::-;6814:119;6972:1;6997:53;7042:7;7033:6;7022:9;7018:22;6997:53;:::i;:::-;6987:63;;6943:117;7099:2;7125:50;7167:7;7158:6;7147:9;7143:22;7125:50;:::i;:::-;7115:60;;7070:115;6724:468;;;;;:::o;7198:118::-;7285:24;7303:5;7285:24;:::i;:::-;7280:3;7273:37;7198:118;;:::o;7322:222::-;7415:4;7453:2;7442:9;7438:18;7430:26;;7466:71;7534:1;7523:9;7519:17;7510:6;7466:71;:::i;:::-;7322:222;;;;:::o;7550:329::-;7609:6;7658:2;7646:9;7637:7;7633:23;7629:32;7626:119;;;7664:79;;:::i;:::-;7626:119;7784:1;7809:53;7854:7;7845:6;7834:9;7830:22;7809:53;:::i;:::-;7799:63;;7755:117;7550:329;;;;:::o;7885:89::-;7921:7;7961:6;7954:5;7950:18;7939:29;;7885:89;;;:::o;7980:120::-;8052:23;8069:5;8052:23;:::i;:::-;8045:5;8042:34;8032:62;;8090:1;8087;8080:12;8032:62;7980:120;:::o;8106:137::-;8151:5;8189:6;8176:20;8167:29;;8205:32;8231:5;8205:32;:::i;:::-;8106:137;;;;:::o;8249:757::-;8331:6;8339;8347;8355;8404:3;8392:9;8383:7;8379:23;8375:33;8372:120;;;8411:79;;:::i;:::-;8372:120;8531:1;8556:52;8600:7;8591:6;8580:9;8576:22;8556:52;:::i;:::-;8546:62;;8502:116;8657:2;8683:52;8727:7;8718:6;8707:9;8703:22;8683:52;:::i;:::-;8673:62;;8628:117;8784:2;8810:52;8854:7;8845:6;8834:9;8830:22;8810:52;:::i;:::-;8800:62;;8755:117;8911:2;8937:52;8981:7;8972:6;8961:9;8957:22;8937:52;:::i;:::-;8927:62;;8882:117;8249:757;;;;;;;:::o;9012:93::-;9048:7;9088:10;9081:5;9077:22;9066:33;;9012:93;;;:::o;9111:115::-;9196:23;9213:5;9196:23;:::i;:::-;9191:3;9184:36;9111:115;;:::o;9232:218::-;9323:4;9361:2;9350:9;9346:18;9338:26;;9374:69;9440:1;9429:9;9425:17;9416:6;9374:69;:::i;:::-;9232:218;;;;:::o;9456:115::-;9541:23;9558:5;9541:23;:::i;:::-;9536:3;9529:36;9456:115;;:::o;9577:218::-;9668:4;9706:2;9695:9;9691:18;9683:26;;9719:69;9785:1;9774:9;9770:17;9761:6;9719:69;:::i;:::-;9577:218;;;;:::o;9801:474::-;9869:6;9877;9926:2;9914:9;9905:7;9901:23;9897:32;9894:119;;;9932:79;;:::i;:::-;9894:119;10052:1;10077:53;10122:7;10113:6;10102:9;10098:22;10077:53;:::i;:::-;10067:63;;10023:117;10179:2;10205:53;10250:7;10241:6;10230:9;10226:22;10205:53;:::i;:::-;10195:63;;10150:118;9801:474;;;;;:::o;10281:60::-;10309:3;10330:5;10323:12;;10281:60;;;:::o;10347:142::-;10397:9;10430:53;10448:34;10457:24;10475:5;10457:24;:::i;:::-;10448:34;:::i;:::-;10430:53;:::i;:::-;10417:66;;10347:142;;;:::o;10495:126::-;10545:9;10578:37;10609:5;10578:37;:::i;:::-;10565:50;;10495:126;;;:::o;10627:144::-;10695:9;10728:37;10759:5;10728:37;:::i;:::-;10715:50;;10627:144;;;:::o;10777:167::-;10882:55;10931:5;10882:55;:::i;:::-;10877:3;10870:68;10777:167;;:::o;10950:258::-;11061:4;11099:2;11088:9;11084:18;11076:26;;11112:89;11198:1;11187:9;11183:17;11174:6;11112:89;:::i;:::-;10950:258;;;;:::o;11214:180::-;11262:77;11259:1;11252:88;11359:4;11356:1;11349:15;11383:4;11380:1;11373:15;11400:102;11442:8;11489:5;11486:1;11482:13;11461:34;;11400:102;;;:::o;11508:848::-;11569:5;11576:4;11600:6;11591:15;;11624:5;11615:14;;11638:712;11659:1;11649:8;11646:15;11638:712;;;11754:4;11749:3;11745:14;11739:4;11736:24;11733:50;;;11763:18;;:::i;:::-;11733:50;11813:1;11803:8;11799:16;11796:451;;;12228:4;12221:5;12217:16;12208:25;;11796:451;12278:4;12272;12268:15;12260:23;;12308:32;12331:8;12308:32;:::i;:::-;12296:44;;11638:712;;;11508:848;;;;;;;:::o;12362:1073::-;12416:5;12607:8;12597:40;;12628:1;12619:10;;12630:5;;12597:40;12656:4;12646:36;;12673:1;12664:10;;12675:5;;12646:36;12742:4;12790:1;12785:27;;;;12826:1;12821:191;;;;12735:277;;12785:27;12803:1;12794:10;;12805:5;;;12821:191;12866:3;12856:8;12853:17;12850:43;;;12873:18;;:::i;:::-;12850:43;12922:8;12919:1;12915:16;12906:25;;12957:3;12950:5;12947:14;12944:40;;;12964:18;;:::i;:::-;12944:40;12997:5;;;12735:277;;13121:2;13111:8;13108:16;13102:3;13096:4;13093:13;13089:36;13071:2;13061:8;13058:16;13053:2;13047:4;13044:12;13040:35;13024:111;13021:246;;;13177:8;13171:4;13167:19;13158:28;;13212:3;13205:5;13202:14;13199:40;;;13219:18;;:::i;:::-;13199:40;13252:5;;13021:246;13292:42;13330:3;13320:8;13314:4;13311:1;13292:42;:::i;:::-;13277:57;;;;13366:4;13361:3;13357:14;13350:5;13347:25;13344:51;;;13375:18;;:::i;:::-;13344:51;13424:4;13417:5;13413:16;13404:25;;12362:1073;;;;;;:::o;13441:281::-;13499:5;13523:23;13541:4;13523:23;:::i;:::-;13515:31;;13567:25;13583:8;13567:25;:::i;:::-;13555:37;;13611:104;13648:66;13638:8;13632:4;13611:104;:::i;:::-;13602:113;;13441:281;;;;:::o;13728:410::-;13768:7;13791:20;13809:1;13791:20;:::i;:::-;13786:25;;13825:20;13843:1;13825:20;:::i;:::-;13820:25;;13880:1;13877;13873:9;13902:30;13920:11;13902:30;:::i;:::-;13891:41;;14081:1;14072:7;14068:15;14065:1;14062:22;14042:1;14035:9;14015:83;13992:139;;14111:18;;:::i;:::-;13992:139;13776:362;13728:410;;;;:::o;14144:194::-;14184:4;14204:20;14222:1;14204:20;:::i;:::-;14199:25;;14238:20;14256:1;14238:20;:::i;:::-;14233:25;;14282:1;14279;14275:9;14267:17;;14306:1;14300:4;14297:11;14294:37;;;14311:18;;:::i;:::-;14294:37;14144:194;;;;:::o;14344:143::-;14401:5;14432:6;14426:13;14417:22;;14448:33;14475:5;14448:33;:::i;:::-;14344:143;;;;:::o;14493:351::-;14563:6;14612:2;14600:9;14591:7;14587:23;14583:32;14580:119;;;14618:79;;:::i;:::-;14580:119;14738:1;14763:64;14819:7;14810:6;14799:9;14795:22;14763:64;:::i;:::-;14753:74;;14709:128;14493:351;;;;:::o;14850:332::-;14971:4;15009:2;14998:9;14994:18;14986:26;;15022:71;15090:1;15079:9;15075:17;15066:6;15022:71;:::i;:::-;15103:72;15171:2;15160:9;15156:18;15147:6;15103:72;:::i;:::-;14850:332;;;;;:::o;15188:137::-;15242:5;15273:6;15267:13;15258:22;;15289:30;15313:5;15289:30;:::i;:::-;15188:137;;;;:::o;15331:345::-;15398:6;15447:2;15435:9;15426:7;15422:23;15418:32;15415:119;;;15453:79;;:::i;:::-;15415:119;15573:1;15598:61;15651:7;15642:6;15631:9;15627:22;15598:61;:::i;:::-;15588:71;;15544:125;15331:345;;;;:::o;15682:320::-;15797:4;15835:2;15824:9;15820:18;15812:26;;15848:65;15910:1;15899:9;15895:17;15886:6;15848:65;:::i;:::-;15923:72;15991:2;15980:9;15976:18;15967:6;15923:72;:::i;:::-;15682:320;;;;;:::o;16008:193::-;16047:3;16066:19;16083:1;16066:19;:::i;:::-;16061:24;;16099:19;16116:1;16099:19;:::i;:::-;16094:24;;16141:1;16138;16134:9;16127:16;;16164:6;16159:3;16156:15;16153:41;;;16174:18;;:::i;:::-;16153:41;16008:193;;;;:::o;16207:324::-;16324:4;16362:2;16351:9;16347:18;16339:26;;16375:69;16441:1;16430:9;16426:17;16417:6;16375:69;:::i;:::-;16454:70;16520:2;16509:9;16505:18;16496:6;16454:70;:::i;:::-;16207:324;;;;;:::o;16537:225::-;16677:34;16673:1;16665:6;16661:14;16654:58;16746:8;16741:2;16733:6;16729:15;16722:33;16537:225;:::o;16768:366::-;16910:3;16931:67;16995:2;16990:3;16931:67;:::i;:::-;16924:74;;17007:93;17096:3;17007:93;:::i;:::-;17125:2;17120:3;17116:12;17109:19;;16768:366;;;:::o;17140:419::-;17306:4;17344:2;17333:9;17329:18;17321:26;;17393:9;17387:4;17383:20;17379:1;17368:9;17364:17;17357:47;17421:131;17547:4;17421:131;:::i;:::-;17413:139;;17140:419;;;:::o;17565:182::-;17705:34;17701:1;17693:6;17689:14;17682:58;17565:182;:::o;17753:366::-;17895:3;17916:67;17980:2;17975:3;17916:67;:::i;:::-;17909:74;;17992:93;18081:3;17992:93;:::i;:::-;18110:2;18105:3;18101:12;18094:19;;17753:366;;;:::o;18125:419::-;18291:4;18329:2;18318:9;18314:18;18306:26;;18378:9;18372:4;18368:20;18364:1;18353:9;18349:17;18342:47;18406:131;18532:4;18406:131;:::i;:::-;18398:139;;18125:419;;;:::o;18550:180::-;18598:77;18595:1;18588:88;18695:4;18692:1;18685:15;18719:4;18716:1;18709:15;18736:191;18776:3;18795:20;18813:1;18795:20;:::i;:::-;18790:25;;18829:20;18847:1;18829:20;:::i;:::-;18824:25;;18872:1;18869;18865:9;18858:16;;18893:3;18890:1;18887:10;18884:36;;;18900:18;;:::i;:::-;18884:36;18736:191;;;;:::o;18933:180::-;18981:77;18978:1;18971:88;19078:4;19075:1;19068:15;19102:4;19099:1;19092:15;19119:185;19159:1;19176:20;19194:1;19176:20;:::i;:::-;19171:25;;19210:20;19228:1;19210:20;:::i;:::-;19205:25;;19249:1;19239:35;;19254:18;;:::i;:::-;19239:35;19296:1;19293;19289:9;19284:14;;19119:185;;;;:::o;19310:147::-;19411:11;19448:3;19433:18;;19310:147;;;;:::o;19463:114::-;;:::o;19583:398::-;19742:3;19763:83;19844:1;19839:3;19763:83;:::i;:::-;19756:90;;19855:93;19944:3;19855:93;:::i;:::-;19973:1;19968:3;19964:11;19957:18;;19583:398;;;:::o;19987:379::-;20171:3;20193:147;20336:3;20193:147;:::i;:::-;20186:154;;20357:3;20350:10;;19987:379;;;:::o;20372:180::-;20420:77;20417:1;20410:88;20517:4;20514:1;20507:15;20541:4;20538:1;20531:15;20558:143;20615:5;20646:6;20640:13;20631:22;;20662:33;20689:5;20662:33;:::i;:::-;20558:143;;;;:::o;20707:351::-;20777:6;20826:2;20814:9;20805:7;20801:23;20797:32;20794:119;;;20832:79;;:::i;:::-;20794:119;20952:1;20977:64;21033:7;21024:6;21013:9;21009:22;20977:64;:::i;:::-;20967:74;;20923:128;20707:351;;;;:::o;21064:85::-;21109:7;21138:5;21127:16;;21064:85;;;:::o;21155:158::-;21213:9;21246:61;21264:42;21273:32;21299:5;21273:32;:::i;:::-;21264:42;:::i;:::-;21246:61;:::i;:::-;21233:74;;21155:158;;;:::o;21319:147::-;21414:45;21453:5;21414:45;:::i;:::-;21409:3;21402:58;21319:147;;:::o;21472:114::-;21539:6;21573:5;21567:12;21557:22;;21472:114;;;:::o;21592:184::-;21691:11;21725:6;21720:3;21713:19;21765:4;21760:3;21756:14;21741:29;;21592:184;;;;:::o;21782:132::-;21849:4;21872:3;21864:11;;21902:4;21897:3;21893:14;21885:22;;21782:132;;;:::o;21920:108::-;21997:24;22015:5;21997:24;:::i;:::-;21992:3;21985:37;21920:108;;:::o;22034:179::-;22103:10;22124:46;22166:3;22158:6;22124:46;:::i;:::-;22202:4;22197:3;22193:14;22179:28;;22034:179;;;;:::o;22219:113::-;22289:4;22321;22316:3;22312:14;22304:22;;22219:113;;;:::o;22368:732::-;22487:3;22516:54;22564:5;22516:54;:::i;:::-;22586:86;22665:6;22660:3;22586:86;:::i;:::-;22579:93;;22696:56;22746:5;22696:56;:::i;:::-;22775:7;22806:1;22791:284;22816:6;22813:1;22810:13;22791:284;;;22892:6;22886:13;22919:63;22978:3;22963:13;22919:63;:::i;:::-;22912:70;;23005:60;23058:6;23005:60;:::i;:::-;22995:70;;22851:224;22838:1;22835;22831:9;22826:14;;22791:284;;;22795:14;23091:3;23084:10;;22492:608;;;22368:732;;;;:::o;23106:831::-;23369:4;23407:3;23396:9;23392:19;23384:27;;23421:71;23489:1;23478:9;23474:17;23465:6;23421:71;:::i;:::-;23502:80;23578:2;23567:9;23563:18;23554:6;23502:80;:::i;:::-;23629:9;23623:4;23619:20;23614:2;23603:9;23599:18;23592:48;23657:108;23760:4;23751:6;23657:108;:::i;:::-;23649:116;;23775:72;23843:2;23832:9;23828:18;23819:6;23775:72;:::i;:::-;23857:73;23925:3;23914:9;23910:19;23901:6;23857:73;:::i;:::-;23106:831;;;;;;;;:::o;23943:807::-;24192:4;24230:3;24219:9;24215:19;24207:27;;24244:71;24312:1;24301:9;24297:17;24288:6;24244:71;:::i;:::-;24325:72;24393:2;24382:9;24378:18;24369:6;24325:72;:::i;:::-;24407:80;24483:2;24472:9;24468:18;24459:6;24407:80;:::i;:::-;24497;24573:2;24562:9;24558:18;24549:6;24497:80;:::i;:::-;24587:73;24655:3;24644:9;24640:19;24631:6;24587:73;:::i;:::-;24670;24738:3;24727:9;24723:19;24714:6;24670:73;:::i;:::-;23943:807;;;;;;;;;:::o;24756:663::-;24844:6;24852;24860;24909:2;24897:9;24888:7;24884:23;24880:32;24877:119;;;24915:79;;:::i;:::-;24877:119;25035:1;25060:64;25116:7;25107:6;25096:9;25092:22;25060:64;:::i;:::-;25050:74;;25006:128;25173:2;25199:64;25255:7;25246:6;25235:9;25231:22;25199:64;:::i;:::-;25189:74;;25144:129;25312:2;25338:64;25394:7;25385:6;25374:9;25370:22;25338:64;:::i;:::-;25328:74;;25283:129;24756:663;;;;;:::o;25425:197::-;25464:3;25483:19;25500:1;25483:19;:::i;:::-;25478:24;;25516:19;25533:1;25516:19;:::i;:::-;25511:24;;25558:1;25555;25551:9;25544:16;;25581:10;25576:3;25573:19;25570:45;;;25595:18;;:::i;:::-;25570:45;25425:197;;;;:::o

Swarm Source

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