ETH Price: $2,637.11 (+1.85%)

Token

Red Hot Chili Pepe (RHCP)
 

Overview

Max Total Supply

420,690,000,000,000 RHCP

Holders

158

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
23,426,729,664.030791397971893166 RHCP

Value
$0.00
0x40c777F867828Ee3c37A10710A47ac603b00edaD
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
RHCP

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : RHCP.sol
// https://t.me/RedHotChiliPEPEPortal

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

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

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

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

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

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

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

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

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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

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

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender] + addedValue
        );
        return true;
    }

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

        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(
            currentAllowance >= amount,
            "ERC20: transfer amount exceeds allowance"
        );
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

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

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

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

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

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

        uint256 senderBalance = _balances[sender];
        require(
            senderBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }
}

contract Ownable is Context {
    address private _owner;

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

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership(bool confirmRenounce)
        external
        virtual
        onlyOwner
    {
        require(confirmRenounce, "Please confirm renounce!");
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

interface ILpPair {
    function sync() external;
}

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

    function WETH() external pure returns (address);

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

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

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

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

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

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

contract RHCP is ERC20, Ownable {
    IDexRouter public dexRouter;
    address public lpPair;
    address public newOwner;

    bool private swapping;
    uint256 public swapTokensAtAmount;
    address public communityAddress;

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;

    mapping(address => uint256) private _holderLastTransferTimestamp;

    bool public transferDelayEnabled = true;
    
    mapping(address => bool) public flaggedAsBot;
    address[] public botBuyers;
    
    uint256 public sellTotalFees;
    uint256 public sellCommunityFee;
    uint256 public sellLiquidityFee;
    uint256 public maxBuyAmount;
    uint256 public maxSellAmount;
    uint256 public maxWallet;
    uint256 public tradingActiveBlock = 0;
    uint256 public blockForPenaltyEnd;
    uint256 public botsCaught;
    uint256 public tokensForCommunity;
    uint256 public tokensForLiquidity;
    uint256 public buyTotalFees;
    uint256 public buyCommunityFee;
    uint256 public buyLiquidityFee;
    uint256 private defaultCommunityFee;
    uint256 private defaultLiquidityFee;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;
    mapping(address => bool) public automatedMarketMakerPairs;

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

    event TradingEnabled();

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event UpdatedCommunityAddress(address indexed newWallet);

    event MaxTransactionExclusion(address _address, bool excluded);

    event OwnerForcedSwapBack(uint256 timestamp);

    event CaughtEarlyBuyer(address sniper);

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

    event TransferForeignToken(address token, uint256 amount);

    constructor() payable ERC20("Red Hot Chili Pepe", "RHCP") {
        newOwner = msg.sender;
        address _dexRouter;
        _dexRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

        // initialize router
        dexRouter = IDexRouter(_dexRouter);

        // create pair
        lpPair = IDexFactory(dexRouter.factory()).createPair(
            address(this),
            dexRouter.WETH()
        );
        _excludeFromMaxTransaction(address(lpPair), true);
        _setAutomatedMarketMakerPair(address(lpPair), true);

        uint256 totalSupply = 420690000000000 * 1e18;

        maxBuyAmount = (totalSupply * 2) / 100;
        maxSellAmount = (totalSupply * 2) / 100;
        maxWallet = (totalSupply * 2) / 100;
        swapTokensAtAmount = (totalSupply * 5) / 10000; // 0.05 %

        buyCommunityFee = 1;
        buyLiquidityFee = 1;
        buyTotalFees = buyCommunityFee + buyLiquidityFee;

        defaultCommunityFee = 0;
        defaultLiquidityFee = 0;

        sellCommunityFee = 1;
        sellLiquidityFee = 1;
        sellTotalFees = sellCommunityFee + sellLiquidityFee;

        communityAddress = address(0x5C0DF29cbEa5ddB0a3A3bD4129A9d54C6d987F71);

        _excludeFromMaxTransaction(newOwner, true);
        _excludeFromMaxTransaction(address(this), true);
        _excludeFromMaxTransaction(address(0xdead), true);
        _excludeFromMaxTransaction(address(communityAddress), true);
        _excludeFromMaxTransaction(address(dexRouter), true);

        excludeFromFees(newOwner, true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(address(communityAddress), true);
        excludeFromFees(address(dexRouter), true);

        _createInitialSupply(address(newOwner), totalSupply);

        transferOwnership(newOwner);
    }

    receive() external payable {}

    function getBotBuyers() external view returns (address[] memory) {
        return botBuyers;
    }

    function unflagBot(address wallet) external onlyOwner {
        require(flaggedAsBot[wallet], "Wallet is already not flagged.");
        flaggedAsBot[wallet] = false;
    }

     function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
        _excludeFromMaxTransaction(pair, value);
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function flagBot(address wallet) external onlyOwner {
        require(!flaggedAsBot[wallet], "Wallet is already flagged.");
        flaggedAsBot[wallet] = true;
    }

    function updateBuyFees(uint256 _communityFee, uint256 _liquidityFee)
        external
        onlyOwner
    {
        buyCommunityFee = _communityFee;
        buyLiquidityFee = _liquidityFee;
        buyTotalFees = buyCommunityFee + buyLiquidityFee;
    }

    function _excludeFromMaxTransaction(address updAds, bool isExcluded)
        private
    {
        _isExcludedMaxTransactionAmount[updAds] = isExcluded;
        emit MaxTransactionExclusion(updAds, isExcluded);
    }

    function excludeFromMaxTransaction(address updAds, bool isEx)
        external
        onlyOwner
    {
        if (!isEx) {
            require(
                updAds != lpPair,
                "Cannot remove uniswap pair from max txn"
            );
        }
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    function setAutomatedMarketMakerPair(address pair, bool value)
        external
        onlyOwner
    {
        require(
            pair != lpPair,
            "The pair cannot be removed from automatedMarketMakerPairs"
        );
        _setAutomatedMarketMakerPair(pair, value);
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateSellFees(uint256 _communityFee, uint256 _liquidityFee)
        external
        onlyOwner
    {
        sellCommunityFee = _communityFee;
        sellLiquidityFee = _liquidityFee;
        sellTotalFees = sellCommunityFee + sellLiquidityFee;
    }

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

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

        if (!tradingActive) {
            require(
                _isExcludedFromFees[from] || _isExcludedFromFees[to],
                "Trading is not active."
            );
        }

        if (!earlyBuyPenaltyInEffect() && tradingActive) {
            require(
                !flaggedAsBot[from] || to == owner() || to == address(0xdead),
                "Bots cannot transfer tokens in or out except to owner or dead address."
            );
        }

        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0xdead) &&
                !_isExcludedFromFees[from] &&
                !_isExcludedFromFees[to]
            ) {
                if (transferDelayEnabled) {
                    if (to != address(dexRouter) && to != address(lpPair)) {
                        require(
                            _holderLastTransferTimestamp[tx.origin] <
                                block.number - 2 &&
                                _holderLastTransferTimestamp[to] <
                                block.number - 2,
                            "_transfer:: Transfer Delay enabled.  Try again later."
                        );
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                        _holderLastTransferTimestamp[to] = block.number;
                    }
                }

                //when buy
                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxBuyAmount,
                        "Buy transfer amount exceeds the max buy."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max Wallet Exceeded"
                    );
                }
                //when sell
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxSellAmount,
                        "Sell transfer amount exceeds the max sell."
                    );
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max Wallet Exceeded"
                    );
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap && swapEnabled && !swapping && automatedMarketMakerPairs[to]
        ) {
            swapping = true;
            swapBack();
            swapping = false;
        }

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

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // bot/sniper penalty.
            if (
                (earlyBuyPenaltyInEffect() ||
                    (amount >= maxBuyAmount - .9 ether &&
                        blockForPenaltyEnd + 8 >= block.number)) &&
                automatedMarketMakerPairs[from] &&
                !automatedMarketMakerPairs[to] &&
                !_isExcludedFromFees[to] &&
                buyTotalFees > 0
            ) {
                if (!earlyBuyPenaltyInEffect()) {
                    // reduce by 1 wei per max buy over what Uniswap will allow to revert bots as best as possible to limit erroneously blacklisted wallets. First bot will get in and be blacklisted, rest will be reverted (*cross fingers*)
                    maxBuyAmount -= 1;
                }

                if (!flaggedAsBot[to]) {
                    flaggedAsBot[to] = true;
                    botsCaught += 1;
                    botBuyers.push(to);
                    emit CaughtEarlyBuyer(to);
                }

                fees = (amount * 99) / 100;
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForCommunity += (fees * buyCommunityFee) / buyTotalFees;
            }
            // on sell
            else if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = (amount * sellTotalFees) / 100;
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForCommunity += (fees * sellCommunityFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = (amount * buyTotalFees) / 100;
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForCommunity += (fees * buyCommunityFee) / buyTotalFees;
            }

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

            amount -= fees;
        }

        super._transfer(from, to, amount);
    }

    function earlyBuyPenaltyInEffect() public view returns (bool) {
        return block.number < blockForPenaltyEnd;
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

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

        // make the swap
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(dexRouter), tokenAmount);

        // add the liquidity
        dexRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(newOwner),
            block.timestamp
        );
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForCommunity;

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

        if (contractBalance > swapTokensAtAmount * 10) {
            contractBalance = swapTokensAtAmount * 10;
        }

        bool success;

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = (contractBalance * tokensForLiquidity) /
            totalTokensToSwap /
            2;

        swapTokensForEth(contractBalance - liquidityTokens);

        uint256 ethBalance = address(this).balance;
        uint256 ethForLiquidity = ethBalance;

        uint256 ethForCommunity = (ethBalance * tokensForCommunity) /
            (totalTokensToSwap - (tokensForLiquidity / 2));

        ethForLiquidity -= ethForCommunity;

        tokensForLiquidity = 0;
        tokensForCommunity = 0;

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
        }

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

    function transferForeignToken(address _token, address _to)
        external
        onlyOwner
        returns (bool _sent)
    {
        require(_token != address(0), "_token address cannot be 0");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
        emit TransferForeignToken(_token, _contractBalance);
    }

    // withdraw ETH if stuck or someone sends to the address
    function withdrawStuckETH() external onlyOwner {
        bool success;
        (success, ) = address(msg.sender).call{value: address(this).balance}(
            ""
        );
    }

    function enableTrading(uint256 blocksForPenalty) external onlyOwner {
        require(!tradingActive, "Cannot reenable trading");
        require(
            blocksForPenalty <= 10,
            "Cannot make penalty blocks more than 10"
        );
        tradingActive = true;
        swapEnabled = true;
        tradingActiveBlock = block.number;
        blockForPenaltyEnd = tradingActiveBlock + blocksForPenalty;
        emit TradingEnabled();
    }

    function addLP(bool confirmAddLp) external onlyOwner {
        require(confirmAddLp, "Please confirm adding of the LP");
        require(!tradingActive, "Trading is already active, cannot relaunch.");

        // add the liquidity
        require(
            address(this).balance > 0,
            "Must have ETH on contract to launch"
        );
        require(
            balanceOf(address(this)) > 0,
            "Must have Tokens on contract to launch"
        );

        _approve(address(this), address(dexRouter), balanceOf(address(this)));

        dexRouter.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(newOwner),
            block.timestamp
        );
    }

    function resetTaxes() external onlyOwner {
        buyCommunityFee = defaultCommunityFee;
        buyLiquidityFee = defaultLiquidityFee;
        buyTotalFees = buyCommunityFee + buyLiquidityFee;

        sellCommunityFee = defaultCommunityFee;
        sellLiquidityFee = defaultLiquidityFee;
        sellTotalFees = sellCommunityFee + sellLiquidityFee;
    }

    function setMaxes(uint256 _buyAmount, uint256 _sellAmount, uint256 _maxWallet)
        external
        onlyOwner
    {
        maxSellAmount = _sellAmount;
        maxBuyAmount = _buyAmount;
        maxWallet = _maxWallet;
    }
    
}

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sniper","type":"address"}],"name":"CaughtEarlyBuyer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedCommunityAddress","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"confirmAddLp","type":"bool"}],"name":"addLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blockForPenaltyEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"botBuyers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"botsCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyCommunityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"communityAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earlyBuyPenaltyInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blocksForPenalty","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"flagBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"flaggedAsBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBotBuyers","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"newOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"confirmRenounce","type":"bool"}],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resetTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellCommunityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyAmount","type":"uint256"},{"internalType":"uint256","name":"_sellAmount","type":"uint256"},{"internalType":"uint256","name":"_maxWallet","type":"uint256"}],"name":"setMaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForCommunity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","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":"address","name":"wallet","type":"address"}],"name":"unflagBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_communityFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_communityFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526001600a60146101000a81548160ff0219169083151502179055506000600a60156101000a81548160ff0219169083151502179055506000600a60166101000a81548160ff0219169083151502179055506001600c60006101000a81548160ff02191690831515021790555060006015556040518060400160405280601281526020017f52656420486f74204368696c69205065706500000000000000000000000000008152506040518060400160405280600481526020017f52484350000000000000000000000000000000000000000000000000000000008152508160039081620000f2919062001034565b50806004908162000104919062001034565b505050600062000119620007f860201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35033600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e7919062001185565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000371573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000397919062001185565b6040518363ffffffff1660e01b8152600401620003b6929190620011c8565b6020604051808303816000875af1158015620003d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003fc919062001185565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000471600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200080060201b60201c565b620004a6600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200089660201b60201c565b60006d14bddab3e51a57cff87a5000000090506064600282620004ca919062001224565b620004d691906200129e565b6012819055506064600282620004ed919062001224565b620004f991906200129e565b601381905550606460028262000510919062001224565b6200051c91906200129e565b60148190555061271060058262000534919062001224565b6200054091906200129e565b6009819055506001601b819055506001601c81905550601c54601b54620005689190620012d6565b601a819055506000601d819055506000601e8190555060016010819055506001601181905550601154601054620005a09190620012d6565b600f81905550735c0df29cbea5ddb0a3a3bd4129a9d54c6d987f71600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000630600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200080060201b60201c565b620006433060016200080060201b60201c565b6200065861dead60016200080060201b60201c565b6200068d600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200080060201b60201c565b620006c2600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200080060201b60201c565b620006f7600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200094960201b60201c565b6200070a3060016200094960201b60201c565b6200071f61dead60016200094960201b60201c565b62000754600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200094960201b60201c565b62000789600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200094960201b60201c565b620007bd600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168262000a9660201b60201c565b620007f0600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1662000be660201b60201c565b505062001533565b600033905090565b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd674682826040516200088a9291906200132e565b60405180910390a15050565b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620008ff82826200080060201b60201c565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b62000959620007f860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620009eb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009e290620013bc565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000a8a9190620013de565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000b08576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000aff906200144b565b60405180910390fd5b806002600082825462000b1c9190620012d6565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000b739190620012d6565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000bda91906200147e565b60405180910390a35050565b62000bf6620007f860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000c88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c7f90620013bc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000cfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000cf19062001511565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000e3c57607f821691505b60208210810362000e525762000e5162000df4565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000ebc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000e7d565b62000ec8868362000e7d565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000f1562000f0f62000f098462000ee0565b62000eea565b62000ee0565b9050919050565b6000819050919050565b62000f318362000ef4565b62000f4962000f408262000f1c565b84845462000e8a565b825550505050565b600090565b62000f6062000f51565b62000f6d81848462000f26565b505050565b5b8181101562000f955762000f8960008262000f56565b60018101905062000f73565b5050565b601f82111562000fe45762000fae8162000e58565b62000fb98462000e6d565b8101602085101562000fc9578190505b62000fe162000fd88562000e6d565b83018262000f72565b50505b505050565b600082821c905092915050565b6000620010096000198460080262000fe9565b1980831691505092915050565b600062001024838362000ff6565b9150826002028217905092915050565b6200103f8262000dba565b67ffffffffffffffff8111156200105b576200105a62000dc5565b5b62001067825462000e23565b6200107482828562000f99565b600060209050601f831160018114620010ac576000841562001097578287015190505b620010a3858262001016565b86555062001113565b601f198416620010bc8662000e58565b60005b82811015620010e657848901518255600182019150602085019450602081019050620010bf565b8683101562001106578489015162001102601f89168262000ff6565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200114d8262001120565b9050919050565b6200115f8162001140565b81146200116b57600080fd5b50565b6000815190506200117f8162001154565b92915050565b6000602082840312156200119e576200119d6200111b565b5b6000620011ae848285016200116e565b91505092915050565b620011c28162001140565b82525050565b6000604082019050620011df6000830185620011b7565b620011ee6020830184620011b7565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620012318262000ee0565b91506200123e8362000ee0565b92508282026200124e8162000ee0565b91508282048414831517620012685762001267620011f5565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620012ab8262000ee0565b9150620012b88362000ee0565b925082620012cb57620012ca6200126f565b5b828204905092915050565b6000620012e38262000ee0565b9150620012f08362000ee0565b92508282019050808211156200130b576200130a620011f5565b5b92915050565b60008115159050919050565b620013288162001311565b82525050565b6000604082019050620013456000830185620011b7565b6200135460208301846200131d565b9392505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620013a46020836200135b565b9150620013b1826200136c565b602082019050919050565b60006020820190508181036000830152620013d78162001395565b9050919050565b6000602082019050620013f560008301846200131d565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001433601f836200135b565b91506200144082620013fb565b602082019050919050565b60006020820190508181036000830152620014668162001424565b9050919050565b620014788162000ee0565b82525050565b60006020820190506200149560008301846200146d565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000620014f96026836200135b565b915062001506826200149b565b604082019050919050565b600060208201905081810360008301526200152c81620014ea565b9050919050565b615edb80620015436000396000f3fe60806040526004361061036f5760003560e01c806388e765ff116101c6578063c876d0b9116100f7578063ee40166e11610095578063f5648a4f1161006f578063f5648a4f14610ce5578063f637434214610cfc578063f8b45b0514610d27578063fed20c7814610d5257610376565b8063ee40166e14610c66578063f11a24d314610c91578063f2fde38b14610cbc57610376565b8063d85ba063116100d1578063d85ba06314610bbc578063dd62ed3e14610be7578063e2f4560514610c24578063e7b71ce214610c4f57610376565b8063c876d0b914610b29578063d4ee1d9014610b54578063d5fb5b1714610b7f57610376565b8063b53aee9711610164578063b98755391161013e578063b987553914610a81578063bbc0c74214610aaa578063bf6146cd14610ad5578063c024666814610b0057610376565b8063b53aee97146109ee578063b62496f514610a19578063b8fad14714610a5657610376565b80639a7a23d6116101a05780639a7a23d614610920578063a457c2d714610949578063a62068ce14610986578063a9059cbb146109b157610376565b806388e765ff1461089f5780638da5cb5b146108ca57806395d89b41146108f557610376565b80634bf56d68116102a05780636ddd17131161023e5780637e926b4b116102185780637e926b4b146107e557806382aa7c681461080e5780638366e79a1461083757806386e476dd1461087457610376565b80636ddd17131461075457806370a082311461077f5780637571336a146107bc57610376565b806366d602ae1161027a57806366d602ae146106a85780636a11afc6146106d35780636a486a8e146106fe5780636b0a894c1461072957610376565b80634bf56d681461062b57806358a6d5311461065457806366ca9b831461067f57610376565b80631a8145bb1161030d578063313ce567116102e7578063313ce5671461056d5780633950935114610598578063452ed4f1146105d55780634a62bb651461060057610376565b80631a8145bb146104dc57806323b872dd14610507578063243c20f71461054457610376565b80630758d924116103495780630758d9241461040c578063095ea7b31461043757806310d5de531461047457806318160ddd146104b157610376565b8063017e01921461037b57806302dbd8f8146103b857806306fdde03146103e157610376565b3661037657005b600080fd5b34801561038757600080fd5b506103a2600480360381019061039d9190614609565b610d7b565b6040516103af9190614651565b60405180910390f35b3480156103c457600080fd5b506103df60048036038101906103da91906146a2565b610d9b565b005b3480156103ed57600080fd5b506103f6610e5a565b6040516104039190614772565b60405180910390f35b34801561041857600080fd5b50610421610eec565b60405161042e91906147f3565b60405180910390f35b34801561044357600080fd5b5061045e6004803603810190610459919061480e565b610f12565b60405161046b9190614651565b60405180910390f35b34801561048057600080fd5b5061049b60048036038101906104969190614609565b610f30565b6040516104a89190614651565b60405180910390f35b3480156104bd57600080fd5b506104c6610f4f565b6040516104d3919061485d565b60405180910390f35b3480156104e857600080fd5b506104f1610f59565b6040516104fe919061485d565b60405180910390f35b34801561051357600080fd5b5061052e60048036038101906105299190614878565b610f5f565b60405161053b9190614651565b60405180910390f35b34801561055057600080fd5b5061056b60048036038101906105669190614609565b611057565b005b34801561057957600080fd5b506105826111d6565b60405161058f91906148e7565b60405180910390f35b3480156105a457600080fd5b506105bf60048036038101906105ba919061480e565b6111df565b6040516105cc9190614651565b60405180910390f35b3480156105e157600080fd5b506105ea61128b565b6040516105f79190614911565b60405180910390f35b34801561060c57600080fd5b506106156112b1565b6040516106229190614651565b60405180910390f35b34801561063757600080fd5b50610652600480360381019061064d919061492c565b6112c4565b005b34801561066057600080fd5b50610669611375565b6040516106769190614651565b60405180910390f35b34801561068b57600080fd5b506106a660048036038101906106a191906146a2565b611381565b005b3480156106b457600080fd5b506106bd611440565b6040516106ca919061485d565b60405180910390f35b3480156106df57600080fd5b506106e8611446565b6040516106f59190614a3d565b60405180910390f35b34801561070a57600080fd5b506107136114d4565b604051610720919061485d565b60405180910390f35b34801561073557600080fd5b5061073e6114da565b60405161074b919061485d565b60405180910390f35b34801561076057600080fd5b506107696114e0565b6040516107769190614651565b60405180910390f35b34801561078b57600080fd5b506107a660048036038101906107a19190614609565b6114f3565b6040516107b3919061485d565b60405180910390f35b3480156107c857600080fd5b506107e360048036038101906107de9190614a8b565b61153b565b005b3480156107f157600080fd5b5061080c60048036038101906108079190614acb565b6116c3565b005b34801561081a57600080fd5b5061083560048036038101906108309190614af8565b61185c565b005b34801561084357600080fd5b5061085e60048036038101906108599190614b25565b611a07565b60405161086b9190614651565b60405180910390f35b34801561088057600080fd5b50610889611c4d565b6040516108969190614911565b60405180910390f35b3480156108ab57600080fd5b506108b4611c73565b6040516108c1919061485d565b60405180910390f35b3480156108d657600080fd5b506108df611c79565b6040516108ec9190614911565b60405180910390f35b34801561090157600080fd5b5061090a611ca3565b6040516109179190614772565b60405180910390f35b34801561092c57600080fd5b5061094760048036038101906109429190614a8b565b611d35565b005b34801561095557600080fd5b50610970600480360381019061096b919061480e565b611eb0565b60405161097d9190614651565b60405180910390f35b34801561099257600080fd5b5061099b611f9b565b6040516109a8919061485d565b60405180910390f35b3480156109bd57600080fd5b506109d860048036038101906109d3919061480e565b611fa1565b6040516109e59190614651565b60405180910390f35b3480156109fa57600080fd5b50610a03611fbf565b604051610a10919061485d565b60405180910390f35b348015610a2557600080fd5b50610a406004803603810190610a3b9190614609565b611fc5565b604051610a4d9190614651565b60405180910390f35b348015610a6257600080fd5b50610a6b611fe5565b604051610a78919061485d565b60405180910390f35b348015610a8d57600080fd5b50610aa86004803603810190610aa39190614acb565b611feb565b005b348015610ab657600080fd5b50610abf6122af565b604051610acc9190614651565b60405180910390f35b348015610ae157600080fd5b50610aea6122c2565b604051610af7919061485d565b60405180910390f35b348015610b0c57600080fd5b50610b276004803603810190610b229190614a8b565b6122c8565b005b348015610b3557600080fd5b50610b3e612408565b604051610b4b9190614651565b60405180910390f35b348015610b6057600080fd5b50610b6961241b565b604051610b769190614911565b60405180910390f35b348015610b8b57600080fd5b50610ba66004803603810190610ba19190614af8565b612441565b604051610bb39190614911565b60405180910390f35b348015610bc857600080fd5b50610bd1612480565b604051610bde919061485d565b60405180910390f35b348015610bf357600080fd5b50610c0e6004803603810190610c099190614b25565b612486565b604051610c1b919061485d565b60405180910390f35b348015610c3057600080fd5b50610c3961250d565b604051610c46919061485d565b60405180910390f35b348015610c5b57600080fd5b50610c64612513565b005b348015610c7257600080fd5b50610c7b6125fc565b604051610c88919061485d565b60405180910390f35b348015610c9d57600080fd5b50610ca6612602565b604051610cb3919061485d565b60405180910390f35b348015610cc857600080fd5b50610ce36004803603810190610cde9190614609565b612608565b005b348015610cf157600080fd5b50610cfa6127ce565b005b348015610d0857600080fd5b50610d116128d6565b604051610d1e919061485d565b60405180910390f35b348015610d3357600080fd5b50610d3c6128dc565b604051610d49919061485d565b60405180910390f35b348015610d5e57600080fd5b50610d796004803603810190610d749190614609565b6128e2565b005b600d6020528060005260406000206000915054906101000a900460ff1681565b610da3612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2990614bb1565b60405180910390fd5b8160108190555080601181905550601154601054610e509190614c00565b600f819055505050565b606060038054610e6990614c63565b80601f0160208091040260200160405190810160405280929190818152602001828054610e9590614c63565b8015610ee25780601f10610eb757610100808354040283529160200191610ee2565b820191906000526020600020905b815481529060010190602001808311610ec557829003601f168201915b5050505050905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610f26610f1f612a60565b8484612a68565b6001905092915050565b602080528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b60195481565b6000610f6c848484612c31565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610fb7612a60565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611037576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102e90614d06565b60405180910390fd5b61104b85611043612a60565b858403612a68565b60019150509392505050565b61105f612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e590614bb1565b60405180910390fd5b600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561117b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117290614d72565b60405180910390fd5b6001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006012905090565b60006112816111ec612a60565b8484600160006111fa612a60565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461127c9190614c00565b612a68565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60149054906101000a900460ff1681565b6112cc612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461135b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135290614bb1565b60405180910390fd5b816013819055508260128190555080601481905550505050565b60006016544310905090565b611389612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140f90614bb1565b60405180910390fd5b81601b8190555080601c81905550601c54601b546114369190614c00565b601a819055505050565b60135481565b6060600e8054806020026020016040519081016040528092919081815260200182805480156114ca57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611480575b5050505050905090565b600f5481565b60175481565b600a60169054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611543612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c990614bb1565b60405180910390fd5b8061166857600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165e90614e04565b60405180910390fd5b5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6116cb612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461175a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175190614bb1565b60405180910390fd5b8061179a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179190614e70565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611864612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ea90614bb1565b60405180910390fd5b600a60159054906101000a900460ff1615611943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193a90614edc565b60405180910390fd5b600a811115611987576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197e90614f6e565b60405180910390fd5b6001600a60156101000a81548160ff0219169083151502179055506001600a60166101000a81548160ff02191690831515021790555043601581905550806015546119d29190614c00565b6016819055507f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c760405160405180910390a150565b6000611a11612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9790614bb1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0690614fda565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611b4a9190614911565b602060405180830381865afa158015611b67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8b919061500f565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611bc892919061503c565b6020604051808303816000875af1158015611be7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0b919061507a565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051611c3e92919061503c565b60405180910390a15092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611cb290614c63565b80601f0160208091040260200160405190810160405280929190818152602001828054611cde90614c63565b8015611d2b5780601f10611d0057610100808354040283529160200191611d2b565b820191906000526020600020905b815481529060010190602001808311611d0e57829003601f168201915b5050505050905090565b611d3d612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc390614bb1565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5390615119565b60405180910390fd5b611e668282613d03565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60008060016000611ebf612a60565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611f7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f73906151ab565b60405180910390fd5b611f90611f87612a60565b85858403612a68565b600191505092915050565b60165481565b6000611fb5611fae612a60565b8484612c31565b6001905092915050565b60105481565b60216020528060005260406000206000915054906101000a900460ff1681565b601b5481565b611ff3612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612082576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207990614bb1565b60405180910390fd5b806120c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b990615217565b60405180910390fd5b600a60159054906101000a900460ff1615612112576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612109906152a9565b60405180910390fd5b60004711612155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214c9061533b565b60405180910390fd5b6000612160306114f3565b116121a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612197906153cd565b60405180910390fd5b6121d530600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166121d0306114f3565b612a68565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061221e306114f3565b600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161226696959493929190615428565b60606040518083038185885af1158015612284573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906122a99190615489565b50505050565b600a60159054906101000a900460ff1681565b60185481565b6122d0612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461235f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235690614bb1565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516123fc9190614651565b60405180910390a25050565b600c60009054906101000a900460ff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e818154811061245157600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601a5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b61251b612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a190614bb1565b60405180910390fd5b601d54601b81905550601e54601c81905550601c54601b546125cc9190614c00565b601a81905550601d54601081905550601e546011819055506011546010546125f49190614c00565b600f81905550565b60155481565b601c5481565b612610612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461269f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269690614bb1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361270e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127059061554e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6127d6612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285c90614bb1565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161288b9061559f565b60006040518083038185875af1925050503d80600081146128c8576040519150601f19603f3d011682016040523d82523d6000602084013e6128cd565b606091505b50508091505050565b60115481565b60145481565b6128ea612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612979576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297090614bb1565b60405180910390fd5b600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612a05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129fc90615600565b60405180910390fd5b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ad7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ace90615692565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3d90615724565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612c24919061485d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ca0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c97906157b6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0690615848565b60405180910390fd5b60008111612d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d49906158b4565b60405180910390fd5b600a60159054906101000a900460ff16612e4757601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612e075750601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612e46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3d90615920565b60405180910390fd5b5b612e4f611375565b158015612e685750600a60159054906101000a900460ff165b15612f7057600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580612ef85750612ec9611c79565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80612f30575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b612f6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f66906159d8565b60405180910390fd5b5b600a60149054906101000a900460ff161561360357612f8d611c79565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612ffb5750612fcb611c79565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613035575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561308b5750601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130e15750601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561360257600c60009054906101000a900460ff161561331957600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156131a75750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15613318576002436131b991906159f8565b600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054108015613250575060024361320e91906159f8565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b61328f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328690615a9e565b60405180910390fd5b43600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555043600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133bc5750602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561346357601254811115613406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133fd90615b30565b60405180910390fd5b601454613412836114f3565b8261341d9190614c00565b111561345e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161345590615b9c565b60405180910390fd5b613601565b602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156135065750602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561355557601354811115613550576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161354790615c2e565b60405180910390fd5b613600565b602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166135ff576014546135b2836114f3565b826135bd9190614c00565b11156135fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135f590615b9c565b60405180910390fd5b5b5b5b5b5b600061360e306114f3565b9050600060095482101590508080156136335750600a60169054906101000a900460ff165b801561364c5750600860149054906101000a900460ff16155b80156136a15750602160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156136e5576001600860146101000a81548160ff0219169083151502179055506136c9613dae565b6000600860146101000a81548160ff0219169083151502179055505b600060019050601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061378c5750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561379657600090505b60008115613cef576137a6611375565b806137e05750670c7d713b49da00006012546137c291906159f8565b85101580156137df57504360086016546137dc9190614c00565b10155b5b80156138355750602160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561388b5750602160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138e15750601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138ef57506000601a54115b15613aff576138fc611375565b61391b5760016012600082825461391391906159f8565b925050819055505b600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613a79576001600d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760008282546139d79190614c00565b92505081905550600e869080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f55678e47d0a699d3ab99b0184c4ff14f2246ba80522deb921aa0c8823578c44a86604051613a709190614911565b60405180910390a15b6064606386613a889190615c4e565b613a929190615cbf565b9050601a54601c5482613aa59190615c4e565b613aaf9190615cbf565b60196000828254613ac09190614c00565b92505081905550601a54601b5482613ad89190615c4e565b613ae29190615cbf565b60186000828254613af39190614c00565b92505081905550613ccb565b602160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613b5a57506000600f54115b15613be6576064600f5486613b6f9190615c4e565b613b799190615cbf565b9050600f5460115482613b8c9190615c4e565b613b969190615cbf565b60196000828254613ba79190614c00565b92505081905550600f5460105482613bbf9190615c4e565b613bc99190615cbf565b60186000828254613bda9190614c00565b92505081905550613cca565b602160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613c4157506000601a54115b15613cc9576064601a5486613c569190615c4e565b613c609190615cbf565b9050601a54601c5482613c739190615c4e565b613c7d9190615cbf565b60196000828254613c8e9190614c00565b92505081905550601a54601b5482613ca69190615c4e565b613cb09190615cbf565b60186000828254613cc19190614c00565b925050819055505b5b5b6000811115613ce057613cdf873083613f66565b5b8085613cec91906159f8565b94505b613cfa878787613f66565b50505050505050565b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613d6482826141cf565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000613db9306114f3565b90506000601854601954613dcd9190614c00565b90506000821480613dde5750600081145b15613dea575050613f64565b600a600954613df99190615c4e565b821115613e1257600a600954613e0f9190615c4e565b91505b60008060028360195486613e269190615c4e565b613e309190615cbf565b613e3a9190615cbf565b9050613e508185613e4b91906159f8565b614263565b6000479050600081905060006002601954613e6b9190615cbf565b86613e7691906159f8565b60185484613e849190615c4e565b613e8e9190615cbf565b90508082613e9c91906159f8565b915060006019819055506000601881905550600084118015613ebe5750600082115b15613ece57613ecd84836144a6565b5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613f149061559f565b60006040518083038185875af1925050503d8060008114613f51576040519150601f19603f3d011682016040523d82523d6000602084013e613f56565b606091505b505080955050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613fcc906157b6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603614044576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161403b90615848565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156140ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016140c190615d62565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461415d9190614c00565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516141c1919061485d565b60405180910390a350505050565b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051614257929190615d82565b60405180910390a15050565b6000600267ffffffffffffffff8111156142805761427f615dab565b5b6040519080825280602002602001820160405280156142ae5781602001602082028036833780820191505090505b50905030816000815181106142c6576142c5615dda565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561436d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143919190615e1e565b816001815181106143a5576143a4615dda565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061440c30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612a68565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614470959493929190615e4b565b600060405180830381600087803b15801561448a57600080fd5b505af115801561449e573d6000803e3d6000fd5b505050505050565b6144d330600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612a68565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161455c96959493929190615428565b60606040518083038185885af115801561457a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061459f9190615489565b5050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006145d6826145ab565b9050919050565b6145e6816145cb565b81146145f157600080fd5b50565b600081359050614603816145dd565b92915050565b60006020828403121561461f5761461e6145a6565b5b600061462d848285016145f4565b91505092915050565b60008115159050919050565b61464b81614636565b82525050565b60006020820190506146666000830184614642565b92915050565b6000819050919050565b61467f8161466c565b811461468a57600080fd5b50565b60008135905061469c81614676565b92915050565b600080604083850312156146b9576146b86145a6565b5b60006146c78582860161468d565b92505060206146d88582860161468d565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561471c578082015181840152602081019050614701565b60008484015250505050565b6000601f19601f8301169050919050565b6000614744826146e2565b61474e81856146ed565b935061475e8185602086016146fe565b61476781614728565b840191505092915050565b6000602082019050818103600083015261478c8184614739565b905092915050565b6000819050919050565b60006147b96147b46147af846145ab565b614794565b6145ab565b9050919050565b60006147cb8261479e565b9050919050565b60006147dd826147c0565b9050919050565b6147ed816147d2565b82525050565b600060208201905061480860008301846147e4565b92915050565b60008060408385031215614825576148246145a6565b5b6000614833858286016145f4565b92505060206148448582860161468d565b9150509250929050565b6148578161466c565b82525050565b6000602082019050614872600083018461484e565b92915050565b600080600060608486031215614891576148906145a6565b5b600061489f868287016145f4565b93505060206148b0868287016145f4565b92505060406148c18682870161468d565b9150509250925092565b600060ff82169050919050565b6148e1816148cb565b82525050565b60006020820190506148fc60008301846148d8565b92915050565b61490b816145cb565b82525050565b60006020820190506149266000830184614902565b92915050565b600080600060608486031215614945576149446145a6565b5b60006149538682870161468d565b93505060206149648682870161468d565b92505060406149758682870161468d565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6149b4816145cb565b82525050565b60006149c683836149ab565b60208301905092915050565b6000602082019050919050565b60006149ea8261497f565b6149f4818561498a565b93506149ff8361499b565b8060005b83811015614a30578151614a1788826149ba565b9750614a22836149d2565b925050600181019050614a03565b5085935050505092915050565b60006020820190508181036000830152614a5781846149df565b905092915050565b614a6881614636565b8114614a7357600080fd5b50565b600081359050614a8581614a5f565b92915050565b60008060408385031215614aa257614aa16145a6565b5b6000614ab0858286016145f4565b9250506020614ac185828601614a76565b9150509250929050565b600060208284031215614ae157614ae06145a6565b5b6000614aef84828501614a76565b91505092915050565b600060208284031215614b0e57614b0d6145a6565b5b6000614b1c8482850161468d565b91505092915050565b60008060408385031215614b3c57614b3b6145a6565b5b6000614b4a858286016145f4565b9250506020614b5b858286016145f4565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614b9b6020836146ed565b9150614ba682614b65565b602082019050919050565b60006020820190508181036000830152614bca81614b8e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614c0b8261466c565b9150614c168361466c565b9250828201905080821115614c2e57614c2d614bd1565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614c7b57607f821691505b602082108103614c8e57614c8d614c34565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614cf06028836146ed565b9150614cfb82614c94565b604082019050919050565b60006020820190508181036000830152614d1f81614ce3565b9050919050565b7f57616c6c657420697320616c726561647920666c61676765642e000000000000600082015250565b6000614d5c601a836146ed565b9150614d6782614d26565b602082019050919050565b60006020820190508181036000830152614d8b81614d4f565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b6000614dee6027836146ed565b9150614df982614d92565b604082019050919050565b60006020820190508181036000830152614e1d81614de1565b9050919050565b7f506c6561736520636f6e6669726d2072656e6f756e6365210000000000000000600082015250565b6000614e5a6018836146ed565b9150614e6582614e24565b602082019050919050565b60006020820190508181036000830152614e8981614e4d565b9050919050565b7f43616e6e6f74207265656e61626c652074726164696e67000000000000000000600082015250565b6000614ec66017836146ed565b9150614ed182614e90565b602082019050919050565b60006020820190508181036000830152614ef581614eb9565b9050919050565b7f43616e6e6f74206d616b652070656e616c747920626c6f636b73206d6f72652060008201527f7468616e20313000000000000000000000000000000000000000000000000000602082015250565b6000614f586027836146ed565b9150614f6382614efc565b604082019050919050565b60006020820190508181036000830152614f8781614f4b565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b6000614fc4601a836146ed565b9150614fcf82614f8e565b602082019050919050565b60006020820190508181036000830152614ff381614fb7565b9050919050565b60008151905061500981614676565b92915050565b600060208284031215615025576150246145a6565b5b600061503384828501614ffa565b91505092915050565b60006040820190506150516000830185614902565b61505e602083018461484e565b9392505050565b60008151905061507481614a5f565b92915050565b6000602082840312156150905761508f6145a6565b5b600061509e84828501615065565b91505092915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006151036039836146ed565b915061510e826150a7565b604082019050919050565b60006020820190508181036000830152615132816150f6565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006151956025836146ed565b91506151a082615139565b604082019050919050565b600060208201905081810360008301526151c481615188565b9050919050565b7f506c6561736520636f6e6669726d20616464696e67206f6620746865204c5000600082015250565b6000615201601f836146ed565b915061520c826151cb565b602082019050919050565b60006020820190508181036000830152615230816151f4565b9050919050565b7f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60008201527f742072656c61756e63682e000000000000000000000000000000000000000000602082015250565b6000615293602b836146ed565b915061529e82615237565b604082019050919050565b600060208201905081810360008301526152c281615286565b9050919050565b7f4d757374206861766520455448206f6e20636f6e747261637420746f206c617560008201527f6e63680000000000000000000000000000000000000000000000000000000000602082015250565b60006153256023836146ed565b9150615330826152c9565b604082019050919050565b6000602082019050818103600083015261535481615318565b9050919050565b7f4d757374206861766520546f6b656e73206f6e20636f6e747261637420746f2060008201527f6c61756e63680000000000000000000000000000000000000000000000000000602082015250565b60006153b76026836146ed565b91506153c28261535b565b604082019050919050565b600060208201905081810360008301526153e6816153aa565b9050919050565b6000819050919050565b600061541261540d615408846153ed565b614794565b61466c565b9050919050565b615422816153f7565b82525050565b600060c08201905061543d6000830189614902565b61544a602083018861484e565b6154576040830187615419565b6154646060830186615419565b6154716080830185614902565b61547e60a083018461484e565b979650505050505050565b6000806000606084860312156154a2576154a16145a6565b5b60006154b086828701614ffa565b93505060206154c186828701614ffa565b92505060406154d286828701614ffa565b9150509250925092565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006155386026836146ed565b9150615543826154dc565b604082019050919050565b600060208201905081810360008301526155678161552b565b9050919050565b600081905092915050565b50565b600061558960008361556e565b915061559482615579565b600082019050919050565b60006155aa8261557c565b9150819050919050565b7f57616c6c657420697320616c7265616479206e6f7420666c61676765642e0000600082015250565b60006155ea601e836146ed565b91506155f5826155b4565b602082019050919050565b60006020820190508181036000830152615619816155dd565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061567c6024836146ed565b915061568782615620565b604082019050919050565b600060208201905081810360008301526156ab8161566f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061570e6022836146ed565b9150615719826156b2565b604082019050919050565b6000602082019050818103600083015261573d81615701565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006157a06025836146ed565b91506157ab82615744565b604082019050919050565b600060208201905081810360008301526157cf81615793565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006158326023836146ed565b915061583d826157d6565b604082019050919050565b6000602082019050818103600083015261586181615825565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b600061589e601d836146ed565b91506158a982615868565b602082019050919050565b600060208201905081810360008301526158cd81615891565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061590a6016836146ed565b9150615915826158d4565b602082019050919050565b60006020820190508181036000830152615939816158fd565b9050919050565b7f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60008201527f72206f75742065786365707420746f206f776e6572206f72206465616420616460208201527f64726573732e0000000000000000000000000000000000000000000000000000604082015250565b60006159c26046836146ed565b91506159cd82615940565b606082019050919050565b600060208201905081810360008301526159f1816159b5565b9050919050565b6000615a038261466c565b9150615a0e8361466c565b9250828203905081811115615a2657615a25614bd1565b5b92915050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e202054727920616761696e206c617465722e0000000000000000000000602082015250565b6000615a886035836146ed565b9150615a9382615a2c565b604082019050919050565b60006020820190508181036000830152615ab781615a7b565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b6000615b1a6028836146ed565b9150615b2582615abe565b604082019050919050565b60006020820190508181036000830152615b4981615b0d565b9050919050565b7f4d61782057616c6c657420457863656564656400000000000000000000000000600082015250565b6000615b866013836146ed565b9150615b9182615b50565b602082019050919050565b60006020820190508181036000830152615bb581615b79565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b6000615c18602a836146ed565b9150615c2382615bbc565b604082019050919050565b60006020820190508181036000830152615c4781615c0b565b9050919050565b6000615c598261466c565b9150615c648361466c565b9250828202615c728161466c565b91508282048414831517615c8957615c88614bd1565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000615cca8261466c565b9150615cd58361466c565b925082615ce557615ce4615c90565b5b828204905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615d4c6026836146ed565b9150615d5782615cf0565b604082019050919050565b60006020820190508181036000830152615d7b81615d3f565b9050919050565b6000604082019050615d976000830185614902565b615da46020830184614642565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050615e18816145dd565b92915050565b600060208284031215615e3457615e336145a6565b5b6000615e4284828501615e09565b91505092915050565b600060a082019050615e60600083018861484e565b615e6d6020830187615419565b8181036040830152615e7f81866149df565b9050615e8e6060830185614902565b615e9b608083018461484e565b969550505050505056fea264697066735822122052e0d7e602ece8607297a2da96f0441008da248c95ab06966b7efa6b18e8c13e64736f6c63430008110033

Deployed Bytecode

0x60806040526004361061036f5760003560e01c806388e765ff116101c6578063c876d0b9116100f7578063ee40166e11610095578063f5648a4f1161006f578063f5648a4f14610ce5578063f637434214610cfc578063f8b45b0514610d27578063fed20c7814610d5257610376565b8063ee40166e14610c66578063f11a24d314610c91578063f2fde38b14610cbc57610376565b8063d85ba063116100d1578063d85ba06314610bbc578063dd62ed3e14610be7578063e2f4560514610c24578063e7b71ce214610c4f57610376565b8063c876d0b914610b29578063d4ee1d9014610b54578063d5fb5b1714610b7f57610376565b8063b53aee9711610164578063b98755391161013e578063b987553914610a81578063bbc0c74214610aaa578063bf6146cd14610ad5578063c024666814610b0057610376565b8063b53aee97146109ee578063b62496f514610a19578063b8fad14714610a5657610376565b80639a7a23d6116101a05780639a7a23d614610920578063a457c2d714610949578063a62068ce14610986578063a9059cbb146109b157610376565b806388e765ff1461089f5780638da5cb5b146108ca57806395d89b41146108f557610376565b80634bf56d68116102a05780636ddd17131161023e5780637e926b4b116102185780637e926b4b146107e557806382aa7c681461080e5780638366e79a1461083757806386e476dd1461087457610376565b80636ddd17131461075457806370a082311461077f5780637571336a146107bc57610376565b806366d602ae1161027a57806366d602ae146106a85780636a11afc6146106d35780636a486a8e146106fe5780636b0a894c1461072957610376565b80634bf56d681461062b57806358a6d5311461065457806366ca9b831461067f57610376565b80631a8145bb1161030d578063313ce567116102e7578063313ce5671461056d5780633950935114610598578063452ed4f1146105d55780634a62bb651461060057610376565b80631a8145bb146104dc57806323b872dd14610507578063243c20f71461054457610376565b80630758d924116103495780630758d9241461040c578063095ea7b31461043757806310d5de531461047457806318160ddd146104b157610376565b8063017e01921461037b57806302dbd8f8146103b857806306fdde03146103e157610376565b3661037657005b600080fd5b34801561038757600080fd5b506103a2600480360381019061039d9190614609565b610d7b565b6040516103af9190614651565b60405180910390f35b3480156103c457600080fd5b506103df60048036038101906103da91906146a2565b610d9b565b005b3480156103ed57600080fd5b506103f6610e5a565b6040516104039190614772565b60405180910390f35b34801561041857600080fd5b50610421610eec565b60405161042e91906147f3565b60405180910390f35b34801561044357600080fd5b5061045e6004803603810190610459919061480e565b610f12565b60405161046b9190614651565b60405180910390f35b34801561048057600080fd5b5061049b60048036038101906104969190614609565b610f30565b6040516104a89190614651565b60405180910390f35b3480156104bd57600080fd5b506104c6610f4f565b6040516104d3919061485d565b60405180910390f35b3480156104e857600080fd5b506104f1610f59565b6040516104fe919061485d565b60405180910390f35b34801561051357600080fd5b5061052e60048036038101906105299190614878565b610f5f565b60405161053b9190614651565b60405180910390f35b34801561055057600080fd5b5061056b60048036038101906105669190614609565b611057565b005b34801561057957600080fd5b506105826111d6565b60405161058f91906148e7565b60405180910390f35b3480156105a457600080fd5b506105bf60048036038101906105ba919061480e565b6111df565b6040516105cc9190614651565b60405180910390f35b3480156105e157600080fd5b506105ea61128b565b6040516105f79190614911565b60405180910390f35b34801561060c57600080fd5b506106156112b1565b6040516106229190614651565b60405180910390f35b34801561063757600080fd5b50610652600480360381019061064d919061492c565b6112c4565b005b34801561066057600080fd5b50610669611375565b6040516106769190614651565b60405180910390f35b34801561068b57600080fd5b506106a660048036038101906106a191906146a2565b611381565b005b3480156106b457600080fd5b506106bd611440565b6040516106ca919061485d565b60405180910390f35b3480156106df57600080fd5b506106e8611446565b6040516106f59190614a3d565b60405180910390f35b34801561070a57600080fd5b506107136114d4565b604051610720919061485d565b60405180910390f35b34801561073557600080fd5b5061073e6114da565b60405161074b919061485d565b60405180910390f35b34801561076057600080fd5b506107696114e0565b6040516107769190614651565b60405180910390f35b34801561078b57600080fd5b506107a660048036038101906107a19190614609565b6114f3565b6040516107b3919061485d565b60405180910390f35b3480156107c857600080fd5b506107e360048036038101906107de9190614a8b565b61153b565b005b3480156107f157600080fd5b5061080c60048036038101906108079190614acb565b6116c3565b005b34801561081a57600080fd5b5061083560048036038101906108309190614af8565b61185c565b005b34801561084357600080fd5b5061085e60048036038101906108599190614b25565b611a07565b60405161086b9190614651565b60405180910390f35b34801561088057600080fd5b50610889611c4d565b6040516108969190614911565b60405180910390f35b3480156108ab57600080fd5b506108b4611c73565b6040516108c1919061485d565b60405180910390f35b3480156108d657600080fd5b506108df611c79565b6040516108ec9190614911565b60405180910390f35b34801561090157600080fd5b5061090a611ca3565b6040516109179190614772565b60405180910390f35b34801561092c57600080fd5b5061094760048036038101906109429190614a8b565b611d35565b005b34801561095557600080fd5b50610970600480360381019061096b919061480e565b611eb0565b60405161097d9190614651565b60405180910390f35b34801561099257600080fd5b5061099b611f9b565b6040516109a8919061485d565b60405180910390f35b3480156109bd57600080fd5b506109d860048036038101906109d3919061480e565b611fa1565b6040516109e59190614651565b60405180910390f35b3480156109fa57600080fd5b50610a03611fbf565b604051610a10919061485d565b60405180910390f35b348015610a2557600080fd5b50610a406004803603810190610a3b9190614609565b611fc5565b604051610a4d9190614651565b60405180910390f35b348015610a6257600080fd5b50610a6b611fe5565b604051610a78919061485d565b60405180910390f35b348015610a8d57600080fd5b50610aa86004803603810190610aa39190614acb565b611feb565b005b348015610ab657600080fd5b50610abf6122af565b604051610acc9190614651565b60405180910390f35b348015610ae157600080fd5b50610aea6122c2565b604051610af7919061485d565b60405180910390f35b348015610b0c57600080fd5b50610b276004803603810190610b229190614a8b565b6122c8565b005b348015610b3557600080fd5b50610b3e612408565b604051610b4b9190614651565b60405180910390f35b348015610b6057600080fd5b50610b6961241b565b604051610b769190614911565b60405180910390f35b348015610b8b57600080fd5b50610ba66004803603810190610ba19190614af8565b612441565b604051610bb39190614911565b60405180910390f35b348015610bc857600080fd5b50610bd1612480565b604051610bde919061485d565b60405180910390f35b348015610bf357600080fd5b50610c0e6004803603810190610c099190614b25565b612486565b604051610c1b919061485d565b60405180910390f35b348015610c3057600080fd5b50610c3961250d565b604051610c46919061485d565b60405180910390f35b348015610c5b57600080fd5b50610c64612513565b005b348015610c7257600080fd5b50610c7b6125fc565b604051610c88919061485d565b60405180910390f35b348015610c9d57600080fd5b50610ca6612602565b604051610cb3919061485d565b60405180910390f35b348015610cc857600080fd5b50610ce36004803603810190610cde9190614609565b612608565b005b348015610cf157600080fd5b50610cfa6127ce565b005b348015610d0857600080fd5b50610d116128d6565b604051610d1e919061485d565b60405180910390f35b348015610d3357600080fd5b50610d3c6128dc565b604051610d49919061485d565b60405180910390f35b348015610d5e57600080fd5b50610d796004803603810190610d749190614609565b6128e2565b005b600d6020528060005260406000206000915054906101000a900460ff1681565b610da3612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2990614bb1565b60405180910390fd5b8160108190555080601181905550601154601054610e509190614c00565b600f819055505050565b606060038054610e6990614c63565b80601f0160208091040260200160405190810160405280929190818152602001828054610e9590614c63565b8015610ee25780601f10610eb757610100808354040283529160200191610ee2565b820191906000526020600020905b815481529060010190602001808311610ec557829003601f168201915b5050505050905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610f26610f1f612a60565b8484612a68565b6001905092915050565b602080528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b60195481565b6000610f6c848484612c31565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610fb7612a60565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611037576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102e90614d06565b60405180910390fd5b61104b85611043612a60565b858403612a68565b60019150509392505050565b61105f612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e590614bb1565b60405180910390fd5b600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561117b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117290614d72565b60405180910390fd5b6001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006012905090565b60006112816111ec612a60565b8484600160006111fa612a60565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461127c9190614c00565b612a68565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60149054906101000a900460ff1681565b6112cc612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461135b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135290614bb1565b60405180910390fd5b816013819055508260128190555080601481905550505050565b60006016544310905090565b611389612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140f90614bb1565b60405180910390fd5b81601b8190555080601c81905550601c54601b546114369190614c00565b601a819055505050565b60135481565b6060600e8054806020026020016040519081016040528092919081815260200182805480156114ca57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611480575b5050505050905090565b600f5481565b60175481565b600a60169054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611543612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c990614bb1565b60405180910390fd5b8061166857600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165e90614e04565b60405180910390fd5b5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6116cb612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461175a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175190614bb1565b60405180910390fd5b8061179a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179190614e70565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611864612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ea90614bb1565b60405180910390fd5b600a60159054906101000a900460ff1615611943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193a90614edc565b60405180910390fd5b600a811115611987576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197e90614f6e565b60405180910390fd5b6001600a60156101000a81548160ff0219169083151502179055506001600a60166101000a81548160ff02191690831515021790555043601581905550806015546119d29190614c00565b6016819055507f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c760405160405180910390a150565b6000611a11612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9790614bb1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0690614fda565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611b4a9190614911565b602060405180830381865afa158015611b67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8b919061500f565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611bc892919061503c565b6020604051808303816000875af1158015611be7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0b919061507a565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051611c3e92919061503c565b60405180910390a15092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611cb290614c63565b80601f0160208091040260200160405190810160405280929190818152602001828054611cde90614c63565b8015611d2b5780601f10611d0057610100808354040283529160200191611d2b565b820191906000526020600020905b815481529060010190602001808311611d0e57829003601f168201915b5050505050905090565b611d3d612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc390614bb1565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5390615119565b60405180910390fd5b611e668282613d03565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60008060016000611ebf612a60565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611f7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f73906151ab565b60405180910390fd5b611f90611f87612a60565b85858403612a68565b600191505092915050565b60165481565b6000611fb5611fae612a60565b8484612c31565b6001905092915050565b60105481565b60216020528060005260406000206000915054906101000a900460ff1681565b601b5481565b611ff3612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612082576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207990614bb1565b60405180910390fd5b806120c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b990615217565b60405180910390fd5b600a60159054906101000a900460ff1615612112576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612109906152a9565b60405180910390fd5b60004711612155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214c9061533b565b60405180910390fd5b6000612160306114f3565b116121a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612197906153cd565b60405180910390fd5b6121d530600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166121d0306114f3565b612a68565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061221e306114f3565b600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161226696959493929190615428565b60606040518083038185885af1158015612284573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906122a99190615489565b50505050565b600a60159054906101000a900460ff1681565b60185481565b6122d0612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461235f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235690614bb1565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516123fc9190614651565b60405180910390a25050565b600c60009054906101000a900460ff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e818154811061245157600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601a5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b61251b612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a190614bb1565b60405180910390fd5b601d54601b81905550601e54601c81905550601c54601b546125cc9190614c00565b601a81905550601d54601081905550601e546011819055506011546010546125f49190614c00565b600f81905550565b60155481565b601c5481565b612610612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461269f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269690614bb1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361270e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127059061554e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6127d6612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285c90614bb1565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161288b9061559f565b60006040518083038185875af1925050503d80600081146128c8576040519150601f19603f3d011682016040523d82523d6000602084013e6128cd565b606091505b50508091505050565b60115481565b60145481565b6128ea612a60565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612979576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297090614bb1565b60405180910390fd5b600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612a05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129fc90615600565b60405180910390fd5b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ad7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ace90615692565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3d90615724565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612c24919061485d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ca0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c97906157b6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0690615848565b60405180910390fd5b60008111612d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d49906158b4565b60405180910390fd5b600a60159054906101000a900460ff16612e4757601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612e075750601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612e46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3d90615920565b60405180910390fd5b5b612e4f611375565b158015612e685750600a60159054906101000a900460ff165b15612f7057600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580612ef85750612ec9611c79565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80612f30575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b612f6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f66906159d8565b60405180910390fd5b5b600a60149054906101000a900460ff161561360357612f8d611c79565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612ffb5750612fcb611c79565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613035575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561308b5750601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130e15750601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561360257600c60009054906101000a900460ff161561331957600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156131a75750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15613318576002436131b991906159f8565b600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054108015613250575060024361320e91906159f8565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b61328f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328690615a9e565b60405180910390fd5b43600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555043600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133bc5750602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561346357601254811115613406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133fd90615b30565b60405180910390fd5b601454613412836114f3565b8261341d9190614c00565b111561345e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161345590615b9c565b60405180910390fd5b613601565b602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156135065750602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561355557601354811115613550576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161354790615c2e565b60405180910390fd5b613600565b602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166135ff576014546135b2836114f3565b826135bd9190614c00565b11156135fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135f590615b9c565b60405180910390fd5b5b5b5b5b5b600061360e306114f3565b9050600060095482101590508080156136335750600a60169054906101000a900460ff165b801561364c5750600860149054906101000a900460ff16155b80156136a15750602160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156136e5576001600860146101000a81548160ff0219169083151502179055506136c9613dae565b6000600860146101000a81548160ff0219169083151502179055505b600060019050601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061378c5750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561379657600090505b60008115613cef576137a6611375565b806137e05750670c7d713b49da00006012546137c291906159f8565b85101580156137df57504360086016546137dc9190614c00565b10155b5b80156138355750602160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561388b5750602160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138e15750601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138ef57506000601a54115b15613aff576138fc611375565b61391b5760016012600082825461391391906159f8565b925050819055505b600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613a79576001600d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760008282546139d79190614c00565b92505081905550600e869080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f55678e47d0a699d3ab99b0184c4ff14f2246ba80522deb921aa0c8823578c44a86604051613a709190614911565b60405180910390a15b6064606386613a889190615c4e565b613a929190615cbf565b9050601a54601c5482613aa59190615c4e565b613aaf9190615cbf565b60196000828254613ac09190614c00565b92505081905550601a54601b5482613ad89190615c4e565b613ae29190615cbf565b60186000828254613af39190614c00565b92505081905550613ccb565b602160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613b5a57506000600f54115b15613be6576064600f5486613b6f9190615c4e565b613b799190615cbf565b9050600f5460115482613b8c9190615c4e565b613b969190615cbf565b60196000828254613ba79190614c00565b92505081905550600f5460105482613bbf9190615c4e565b613bc99190615cbf565b60186000828254613bda9190614c00565b92505081905550613cca565b602160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613c4157506000601a54115b15613cc9576064601a5486613c569190615c4e565b613c609190615cbf565b9050601a54601c5482613c739190615c4e565b613c7d9190615cbf565b60196000828254613c8e9190614c00565b92505081905550601a54601b5482613ca69190615c4e565b613cb09190615cbf565b60186000828254613cc19190614c00565b925050819055505b5b5b6000811115613ce057613cdf873083613f66565b5b8085613cec91906159f8565b94505b613cfa878787613f66565b50505050505050565b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613d6482826141cf565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000613db9306114f3565b90506000601854601954613dcd9190614c00565b90506000821480613dde5750600081145b15613dea575050613f64565b600a600954613df99190615c4e565b821115613e1257600a600954613e0f9190615c4e565b91505b60008060028360195486613e269190615c4e565b613e309190615cbf565b613e3a9190615cbf565b9050613e508185613e4b91906159f8565b614263565b6000479050600081905060006002601954613e6b9190615cbf565b86613e7691906159f8565b60185484613e849190615c4e565b613e8e9190615cbf565b90508082613e9c91906159f8565b915060006019819055506000601881905550600084118015613ebe5750600082115b15613ece57613ecd84836144a6565b5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613f149061559f565b60006040518083038185875af1925050503d8060008114613f51576040519150601f19603f3d011682016040523d82523d6000602084013e613f56565b606091505b505080955050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613fcc906157b6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603614044576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161403b90615848565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156140ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016140c190615d62565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461415d9190614c00565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516141c1919061485d565b60405180910390a350505050565b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051614257929190615d82565b60405180910390a15050565b6000600267ffffffffffffffff8111156142805761427f615dab565b5b6040519080825280602002602001820160405280156142ae5781602001602082028036833780820191505090505b50905030816000815181106142c6576142c5615dda565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561436d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143919190615e1e565b816001815181106143a5576143a4615dda565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061440c30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612a68565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614470959493929190615e4b565b600060405180830381600087803b15801561448a57600080fd5b505af115801561449e573d6000803e3d6000fd5b505050505050565b6144d330600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612a68565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161455c96959493929190615428565b60606040518083038185885af115801561457a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061459f9190615489565b5050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006145d6826145ab565b9050919050565b6145e6816145cb565b81146145f157600080fd5b50565b600081359050614603816145dd565b92915050565b60006020828403121561461f5761461e6145a6565b5b600061462d848285016145f4565b91505092915050565b60008115159050919050565b61464b81614636565b82525050565b60006020820190506146666000830184614642565b92915050565b6000819050919050565b61467f8161466c565b811461468a57600080fd5b50565b60008135905061469c81614676565b92915050565b600080604083850312156146b9576146b86145a6565b5b60006146c78582860161468d565b92505060206146d88582860161468d565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561471c578082015181840152602081019050614701565b60008484015250505050565b6000601f19601f8301169050919050565b6000614744826146e2565b61474e81856146ed565b935061475e8185602086016146fe565b61476781614728565b840191505092915050565b6000602082019050818103600083015261478c8184614739565b905092915050565b6000819050919050565b60006147b96147b46147af846145ab565b614794565b6145ab565b9050919050565b60006147cb8261479e565b9050919050565b60006147dd826147c0565b9050919050565b6147ed816147d2565b82525050565b600060208201905061480860008301846147e4565b92915050565b60008060408385031215614825576148246145a6565b5b6000614833858286016145f4565b92505060206148448582860161468d565b9150509250929050565b6148578161466c565b82525050565b6000602082019050614872600083018461484e565b92915050565b600080600060608486031215614891576148906145a6565b5b600061489f868287016145f4565b93505060206148b0868287016145f4565b92505060406148c18682870161468d565b9150509250925092565b600060ff82169050919050565b6148e1816148cb565b82525050565b60006020820190506148fc60008301846148d8565b92915050565b61490b816145cb565b82525050565b60006020820190506149266000830184614902565b92915050565b600080600060608486031215614945576149446145a6565b5b60006149538682870161468d565b93505060206149648682870161468d565b92505060406149758682870161468d565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6149b4816145cb565b82525050565b60006149c683836149ab565b60208301905092915050565b6000602082019050919050565b60006149ea8261497f565b6149f4818561498a565b93506149ff8361499b565b8060005b83811015614a30578151614a1788826149ba565b9750614a22836149d2565b925050600181019050614a03565b5085935050505092915050565b60006020820190508181036000830152614a5781846149df565b905092915050565b614a6881614636565b8114614a7357600080fd5b50565b600081359050614a8581614a5f565b92915050565b60008060408385031215614aa257614aa16145a6565b5b6000614ab0858286016145f4565b9250506020614ac185828601614a76565b9150509250929050565b600060208284031215614ae157614ae06145a6565b5b6000614aef84828501614a76565b91505092915050565b600060208284031215614b0e57614b0d6145a6565b5b6000614b1c8482850161468d565b91505092915050565b60008060408385031215614b3c57614b3b6145a6565b5b6000614b4a858286016145f4565b9250506020614b5b858286016145f4565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614b9b6020836146ed565b9150614ba682614b65565b602082019050919050565b60006020820190508181036000830152614bca81614b8e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614c0b8261466c565b9150614c168361466c565b9250828201905080821115614c2e57614c2d614bd1565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614c7b57607f821691505b602082108103614c8e57614c8d614c34565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614cf06028836146ed565b9150614cfb82614c94565b604082019050919050565b60006020820190508181036000830152614d1f81614ce3565b9050919050565b7f57616c6c657420697320616c726561647920666c61676765642e000000000000600082015250565b6000614d5c601a836146ed565b9150614d6782614d26565b602082019050919050565b60006020820190508181036000830152614d8b81614d4f565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b6000614dee6027836146ed565b9150614df982614d92565b604082019050919050565b60006020820190508181036000830152614e1d81614de1565b9050919050565b7f506c6561736520636f6e6669726d2072656e6f756e6365210000000000000000600082015250565b6000614e5a6018836146ed565b9150614e6582614e24565b602082019050919050565b60006020820190508181036000830152614e8981614e4d565b9050919050565b7f43616e6e6f74207265656e61626c652074726164696e67000000000000000000600082015250565b6000614ec66017836146ed565b9150614ed182614e90565b602082019050919050565b60006020820190508181036000830152614ef581614eb9565b9050919050565b7f43616e6e6f74206d616b652070656e616c747920626c6f636b73206d6f72652060008201527f7468616e20313000000000000000000000000000000000000000000000000000602082015250565b6000614f586027836146ed565b9150614f6382614efc565b604082019050919050565b60006020820190508181036000830152614f8781614f4b565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b6000614fc4601a836146ed565b9150614fcf82614f8e565b602082019050919050565b60006020820190508181036000830152614ff381614fb7565b9050919050565b60008151905061500981614676565b92915050565b600060208284031215615025576150246145a6565b5b600061503384828501614ffa565b91505092915050565b60006040820190506150516000830185614902565b61505e602083018461484e565b9392505050565b60008151905061507481614a5f565b92915050565b6000602082840312156150905761508f6145a6565b5b600061509e84828501615065565b91505092915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006151036039836146ed565b915061510e826150a7565b604082019050919050565b60006020820190508181036000830152615132816150f6565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006151956025836146ed565b91506151a082615139565b604082019050919050565b600060208201905081810360008301526151c481615188565b9050919050565b7f506c6561736520636f6e6669726d20616464696e67206f6620746865204c5000600082015250565b6000615201601f836146ed565b915061520c826151cb565b602082019050919050565b60006020820190508181036000830152615230816151f4565b9050919050565b7f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60008201527f742072656c61756e63682e000000000000000000000000000000000000000000602082015250565b6000615293602b836146ed565b915061529e82615237565b604082019050919050565b600060208201905081810360008301526152c281615286565b9050919050565b7f4d757374206861766520455448206f6e20636f6e747261637420746f206c617560008201527f6e63680000000000000000000000000000000000000000000000000000000000602082015250565b60006153256023836146ed565b9150615330826152c9565b604082019050919050565b6000602082019050818103600083015261535481615318565b9050919050565b7f4d757374206861766520546f6b656e73206f6e20636f6e747261637420746f2060008201527f6c61756e63680000000000000000000000000000000000000000000000000000602082015250565b60006153b76026836146ed565b91506153c28261535b565b604082019050919050565b600060208201905081810360008301526153e6816153aa565b9050919050565b6000819050919050565b600061541261540d615408846153ed565b614794565b61466c565b9050919050565b615422816153f7565b82525050565b600060c08201905061543d6000830189614902565b61544a602083018861484e565b6154576040830187615419565b6154646060830186615419565b6154716080830185614902565b61547e60a083018461484e565b979650505050505050565b6000806000606084860312156154a2576154a16145a6565b5b60006154b086828701614ffa565b93505060206154c186828701614ffa565b92505060406154d286828701614ffa565b9150509250925092565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006155386026836146ed565b9150615543826154dc565b604082019050919050565b600060208201905081810360008301526155678161552b565b9050919050565b600081905092915050565b50565b600061558960008361556e565b915061559482615579565b600082019050919050565b60006155aa8261557c565b9150819050919050565b7f57616c6c657420697320616c7265616479206e6f7420666c61676765642e0000600082015250565b60006155ea601e836146ed565b91506155f5826155b4565b602082019050919050565b60006020820190508181036000830152615619816155dd565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061567c6024836146ed565b915061568782615620565b604082019050919050565b600060208201905081810360008301526156ab8161566f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061570e6022836146ed565b9150615719826156b2565b604082019050919050565b6000602082019050818103600083015261573d81615701565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006157a06025836146ed565b91506157ab82615744565b604082019050919050565b600060208201905081810360008301526157cf81615793565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006158326023836146ed565b915061583d826157d6565b604082019050919050565b6000602082019050818103600083015261586181615825565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b600061589e601d836146ed565b91506158a982615868565b602082019050919050565b600060208201905081810360008301526158cd81615891565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061590a6016836146ed565b9150615915826158d4565b602082019050919050565b60006020820190508181036000830152615939816158fd565b9050919050565b7f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60008201527f72206f75742065786365707420746f206f776e6572206f72206465616420616460208201527f64726573732e0000000000000000000000000000000000000000000000000000604082015250565b60006159c26046836146ed565b91506159cd82615940565b606082019050919050565b600060208201905081810360008301526159f1816159b5565b9050919050565b6000615a038261466c565b9150615a0e8361466c565b9250828203905081811115615a2657615a25614bd1565b5b92915050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e202054727920616761696e206c617465722e0000000000000000000000602082015250565b6000615a886035836146ed565b9150615a9382615a2c565b604082019050919050565b60006020820190508181036000830152615ab781615a7b565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b6000615b1a6028836146ed565b9150615b2582615abe565b604082019050919050565b60006020820190508181036000830152615b4981615b0d565b9050919050565b7f4d61782057616c6c657420457863656564656400000000000000000000000000600082015250565b6000615b866013836146ed565b9150615b9182615b50565b602082019050919050565b60006020820190508181036000830152615bb581615b79565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b6000615c18602a836146ed565b9150615c2382615bbc565b604082019050919050565b60006020820190508181036000830152615c4781615c0b565b9050919050565b6000615c598261466c565b9150615c648361466c565b9250828202615c728161466c565b91508282048414831517615c8957615c88614bd1565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000615cca8261466c565b9150615cd58361466c565b925082615ce557615ce4615c90565b5b828204905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615d4c6026836146ed565b9150615d5782615cf0565b604082019050919050565b60006020820190508181036000830152615d7b81615d3f565b9050919050565b6000604082019050615d976000830185614902565b615da46020830184614642565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050615e18816145dd565b92915050565b600060208284031215615e3457615e336145a6565b5b6000615e4284828501615e09565b91505092915050565b600060a082019050615e60600083018861484e565b615e6d6020830187615419565b8181036040830152615e7f81866149df565b9050615e8e6060830185614902565b615e9b608083018461484e565b969550505050505056fea264697066735822122052e0d7e602ece8607297a2da96f0441008da248c95ab06966b7efa6b18e8c13e64736f6c63430008110033

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

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.