ETH Price: $3,285.32 (-0.06%)
 

Overview

ETH Balance

0.004911019544830901 ETH

Eth Value

$16.13 (@ $3,285.32/ETH)

Token Holdings

More Info

Private Name Tags

TokenTracker

Multichain Info

1 address found via
Transaction Hash
Method
Block
From
To
Approve242328332026-01-14 12:06:592 days ago1768392419IN
Predicting AI: PREAI Token
0 ETH0.000105082.2436162
Transfer242282252026-01-13 20:40:353 days ago1768336835IN
Predicting AI: PREAI Token
0 ETH0.000029550.5
Approve242206682026-01-12 19:17:594 days ago1768245479IN
Predicting AI: PREAI Token
0 ETH0.000003050.06527244
Approve242005492026-01-09 23:55:357 days ago1768002935IN
Predicting AI: PREAI Token
0 ETH0.000050422.0356792
Approve241371122026-01-01 3:32:5916 days ago1767238379IN
Predicting AI: PREAI Token
0 ETH0.00001510.32111732
Approve241280192025-12-30 21:06:1117 days ago1767128771IN
Predicting AI: PREAI Token
0 ETH0.0000962.04863085
Approve240536772025-12-20 12:00:5927 days ago1766232059IN
Predicting AI: PREAI Token
0 ETH0.000095272.0221745
Approve240209162025-12-15 22:14:1132 days ago1765836851IN
Predicting AI: PREAI Token
0 ETH0.000003890.1445799
Approve240209122025-12-15 22:13:2332 days ago1765836803IN
Predicting AI: PREAI Token
0 ETH0.000006770.14468447
Approve240130992025-12-14 20:01:5933 days ago1765742519IN
Predicting AI: PREAI Token
0 ETH0.000002520.05403207
Approve239838352025-12-10 17:37:2337 days ago1765388243IN
Predicting AI: PREAI Token
0 ETH0.000028241.14036465
Transfer239738772025-12-09 7:57:5938 days ago1765267079IN
Predicting AI: PREAI Token
0 ETH0.000133012.25064334
Approve239048642025-11-29 14:17:1148 days ago1764425831IN
Predicting AI: PREAI Token
0 ETH0.000022910.48707229
Approve238492412025-11-21 18:45:3556 days ago1763750735IN
Predicting AI: PREAI Token
0 ETH0.00007181.53219313
Approve238480492025-11-21 14:43:2356 days ago1763736203IN
Predicting AI: PREAI Token
0 ETH0.000194114.14227071
Approve238122672025-11-16 14:12:5961 days ago1763302379IN
Predicting AI: PREAI Token
0 ETH0.000098522.09134159
Approve238064472025-11-15 18:42:4762 days ago1763232167IN
Predicting AI: PREAI Token
0 ETH0.000049831.06404167
Approve238060872025-11-15 17:29:5962 days ago1763227799IN
Predicting AI: PREAI Token
0 ETH0.000050611.08064659
Approve237900762025-11-13 11:46:1164 days ago1763034371IN
Predicting AI: PREAI Token
0 ETH0.00005241.11828902
Approve237857932025-11-12 21:21:4765 days ago1762982507IN
Predicting AI: PREAI Token
0 ETH0.000050511.07853888
Approve237566592025-11-08 19:34:1169 days ago1762630451IN
Predicting AI: PREAI Token
0 ETH0.000050661.08163721
Approve237554222025-11-08 15:26:2369 days ago1762615583IN
Predicting AI: PREAI Token
0 ETH0.000059521.27021788
Approve237491802025-11-07 18:29:1170 days ago1762540151IN
Predicting AI: PREAI Token
0 ETH0.000198474.23540318
Approve237469402025-11-07 10:56:5970 days ago1762513019IN
Predicting AI: PREAI Token
0 ETH0.000099652.12666973
Approve237430962025-11-06 22:03:1171 days ago1762466591IN
Predicting AI: PREAI Token
0 ETH0.000062351.33130081
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer242328332026-01-14 12:06:592 days ago1768392419
Predicting AI: PREAI Token
0.00039752 ETH
Transfer242328332026-01-14 12:06:592 days ago1768392419
Predicting AI: PREAI Token
0.00039752 ETH
Transfer240130992025-12-14 20:01:5933 days ago1765742519
Predicting AI: PREAI Token
0.0013414 ETH
Transfer240130992025-12-14 20:01:5933 days ago1765742519
Predicting AI: PREAI Token
0.0013414 ETH
Transfer239048682025-11-29 14:17:5948 days ago1764425879
Predicting AI: PREAI Token
0.00197596 ETH
Transfer239048682025-11-29 14:17:5948 days ago1764425879
Predicting AI: PREAI Token
0.00197596 ETH
Transfer238499982025-11-21 21:18:3556 days ago1763759915
Predicting AI: PREAI Token
0.00155239 ETH
Transfer238499982025-11-21 21:18:3556 days ago1763759915
Predicting AI: PREAI Token
0.00155239 ETH
Transfer238358052025-11-19 21:30:3558 days ago1763587835
Predicting AI: PREAI Token
0.00130961 ETH
Transfer238358052025-11-19 21:30:3558 days ago1763587835
Predicting AI: PREAI Token
0.00130961 ETH
Transfer238122712025-11-16 14:13:4761 days ago1763302427
Predicting AI: PREAI Token
0.00128178 ETH
Transfer238122712025-11-16 14:13:4761 days ago1763302427
Predicting AI: PREAI Token
0.00128178 ETH
Transfer238064472025-11-15 18:42:4762 days ago1763232167
Predicting AI: PREAI Token
0.00130586 ETH
Transfer238064472025-11-15 18:42:4762 days ago1763232167
Predicting AI: PREAI Token
0.00130586 ETH
Transfer237971182025-11-14 11:26:3563 days ago1763119595
Predicting AI: PREAI Token
0.00122874 ETH
Transfer237971182025-11-14 11:26:3563 days ago1763119595
Predicting AI: PREAI Token
0.00122874 ETH
Transfer237900762025-11-13 11:46:1164 days ago1763034371
Predicting AI: PREAI Token
0.00125263 ETH
Transfer237900762025-11-13 11:46:1164 days ago1763034371
Predicting AI: PREAI Token
0.00125263 ETH
Transfer237857932025-11-12 21:21:4765 days ago1762982507
Predicting AI: PREAI Token
0.00135102 ETH
Transfer237857932025-11-12 21:21:4765 days ago1762982507
Predicting AI: PREAI Token
0.00135102 ETH
Transfer237566592025-11-08 19:34:1169 days ago1762630451
Predicting AI: PREAI Token
0.00129915 ETH
Transfer237566592025-11-08 19:34:1169 days ago1762630451
Predicting AI: PREAI Token
0.00129915 ETH
Transfer237554222025-11-08 15:26:2369 days ago1762615583
Predicting AI: PREAI Token
0.00079115 ETH
Transfer237554222025-11-08 15:26:2369 days ago1762615583
Predicting AI: PREAI Token
0.00079115 ETH
Transfer237491802025-11-07 18:29:1170 days ago1762540151
Predicting AI: PREAI Token
0.00140477 ETH
View All Internal Transactions
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

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
/**
 *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

API
[{"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

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

AI market making.

Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.