ETH Price: $3,447.98 (+1.45%)

Token

GOTTA GO FAST (SANIC)
 

Overview

Max Total Supply

8,047,399,500 SANIC

Holders

130

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
4,823,572.84413013794411937 SANIC

Value
$0.00
0xf436ceba736107dff373f0627c08c6ba994d8a08
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:
GottaGoFast

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : SANIC.sol
/*

   █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀  ▀   ▀
   █ ░░░░░░░░ Name: .......: GOTTA GO FAST
   ▓ ░░░░░░░░ Ticker: .....: $SANIC
   ▒ ░░░░░░░░ Total Supply : 12 Times The Speed Of Light
   ░ ░░░░░░░░ Tax .........: 1 | 1
   ▒ ░░░░░░░░ Website .....: www.sanic.wtf
   ▒ ░░░░░░░░ Twitter .....: twitter.com/SANIC_WTF
   ▓ ░░░░░░░░ Telegram ....: t.me/SANIC_WTF
   █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ▄   ▄

*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.21;

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 IERC20 {
    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

interface IERC20Metadata is IERC20 {
 
    function name() external view returns (string memory);

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

    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 balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

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

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

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        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 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 _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);
    }

    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 _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

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

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

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

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() external virtual onlyOwner {
        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 IDexRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

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

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

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

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

contract GottaGoFast is ERC20, Ownable {

    uint256 public maxBuyAmount;
    uint256 public maxSellAmount;
    uint256 public maxWalletAmount;

    IDexRouter public dexRouter;
    address public lpPair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address operationsAddress;
    address memeAddress;

    uint256 public tradingActiveBlock = 0;

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

    mapping(address => uint256) private _holderLastTransferTimestamp; 
    bool public transferDelayEnabled = true;

    uint256 public buyTotalFees;
    uint256 public buyOperationsFee;
    uint256 public buyLiquidityFee;
    uint256 public buyMemeFund;
    uint256 public buyBurnFee;

    uint256 public sellTotalFees;
    uint256 public sellOperationsFee;
    uint256 public sellLiquidityFee;
    uint256 public sellMemeFund;
    uint256 public sellBurnFee;

    uint256 public tokensForOperations;
    uint256 public tokensForLiquidity;
    uint256 public tokensForMeme;
    uint256 public tokensForBurn;

    /******************/

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

    mapping (address => bool) public automatedMarketMakerPairs;

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

    event EnabledTrading();

    event RemovedLimits();

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event UpdatedMaxBuyAmount(uint256 newAmount);

    event UpdatedMaxSellAmount(uint256 newAmount);

    event UpdatedMaxWalletAmount(uint256 newAmount);

    event UpdatedOperationsAddress(address indexed newWallet);

    event MaxTransactionExclusion(address _address, bool excluded);

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

    event TransferForeignToken(address token, uint256 amount);

    constructor() ERC20("GOTTA GO FAST", "SANIC") {

        address newOwner = msg.sender; 

        IDexRouter _dexRouter = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        dexRouter = _dexRouter;

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

        uint256 totalSupply = 8.0473995 * 1e9 * 1e18;

        maxBuyAmount = totalSupply * 1 / 100;
        maxSellAmount = totalSupply * 1 / 100;
        maxWalletAmount = totalSupply * 1 / 100;
        swapTokensAtAmount = totalSupply * 1 / 1000;

        buyOperationsFee = 29;
        buyLiquidityFee = 0;
        buyMemeFund = 1;
        buyBurnFee = 0;
        buyTotalFees = buyOperationsFee + buyLiquidityFee + buyMemeFund + buyBurnFee;

        sellOperationsFee = 29;
        sellLiquidityFee = 0;
        sellMemeFund = 1;
        sellBurnFee = 0;
        sellTotalFees = sellOperationsFee + sellLiquidityFee + sellMemeFund + sellBurnFee;

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

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

        operationsAddress = address(newOwner);
        memeAddress = address(newOwner);

        _createInitialSupply(newOwner, totalSupply);
        transferOwnership(newOwner);
    }

    receive() external payable {}

    function enableTrading() external onlyOwner {
        require(!tradingActive, "Cannot reenable trading");
        tradingActive = true;
        swapEnabled = true;
        tradingActiveBlock = block.number;
        emit EnabledTrading();
    }

    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        transferDelayEnabled = false;
        emit RemovedLimits();
    }

    function disableTransferDelay() external onlyOwner {
        transferDelayEnabled = false;
    }

    function updateMaxBuyAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 2 / 1000)/1e18, "Cannot set max buy amount lower than 0.2%");
        maxBuyAmount = newNum * (10**18);
        emit UpdatedMaxBuyAmount(maxBuyAmount);
    }

    function updateMaxSellAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 2 / 1000)/1e18, "Cannot set max sell amount lower than 0.2%");
        maxSellAmount = newNum * (10**18);
        emit UpdatedMaxSellAmount(maxSellAmount);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 3 / 1000)/1e18, "Cannot set max wallet amount lower than 0.3%");
        maxWalletAmount = newNum * (10**18);
        emit UpdatedMaxWalletAmount(maxWalletAmount);
    }

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner {
  	    require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
  	    require(newAmount <= totalSupply() * 1 / 1000, "Swap amount cannot be higher than 0.1% total supply.");
  	    swapTokensAtAmount = newAmount;
  	}

    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 _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        _excludeFromMaxTransaction(pair, value);

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateBuyFees(uint256 _operationsFee, uint256 _liquidityFee, uint256 _memeFund, uint256 _burnFee) external onlyOwner {
        buyOperationsFee = _operationsFee;
        buyLiquidityFee = _liquidityFee;
        buyMemeFund = _memeFund;
        buyBurnFee = _burnFee;
        buyTotalFees = buyOperationsFee + buyLiquidityFee + buyMemeFund + buyBurnFee;
        require(buyTotalFees <= 30, "Must keep fees at 30% or less");
    }

    function updateSellFees(uint256 _operationsFee, uint256 _liquidityFee, uint256 _memeFund, uint256 _burnFee) external onlyOwner {
        sellOperationsFee = _operationsFee;
        sellLiquidityFee = _liquidityFee;
        sellMemeFund = _memeFund;
        sellBurnFee = _burnFee;
        sellTotalFees = sellOperationsFee + sellLiquidityFee + sellMemeFund + sellBurnFee;
        require(sellTotalFees <= 30, "Must keep fees at 30% or less");

    }

    function returnToNormalTax() external onlyOwner {
        sellOperationsFee = 1;
        sellLiquidityFee = 0;
        sellMemeFund = 0;
        sellBurnFee = 0;
        sellTotalFees = sellOperationsFee + sellLiquidityFee + sellMemeFund + sellBurnFee;
        require(sellTotalFees <= 5, "Must keep fees at 5% or less");

        buyOperationsFee = 1;
        buyLiquidityFee = 0;
        buyMemeFund = 0;
        buyBurnFee = 0;
        buyTotalFees = buyOperationsFee + buyLiquidityFee + buyMemeFund + buyBurnFee;
        require(buyTotalFees <= 5, "Must keep fees at 5% or less");
    }

    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(limitsInEffect){
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]){
    
                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxBuyAmount, "Buy transfer amount exceeds the max buy.");
                        require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
                //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) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if(canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        bool takeFee = true;
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        if(takeFee){
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount * sellTotalFees / 100;
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForOperations += fees * sellOperationsFee / sellTotalFees;
                tokensForMeme += fees * sellMemeFund / sellTotalFees;
                tokensForBurn += fees * sellBurnFee / sellTotalFees;
            }

            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
        	    fees = amount * buyTotalFees / 100;
        	    tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForOperations += fees * buyOperationsFee / buyTotalFees;
                tokensForMeme += fees * buyMemeFund / buyTotalFees;
                tokensForBurn += fees * buyBurnFee / buyTotalFees;
            }

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

        	amount -= fees;
        }

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

    function swapTokensForEth(uint256 tokenAmount) private {

        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(0xdead),
            block.timestamp
        );
    }

    function swapBack() private {

        if(tokensForBurn > 0 && balanceOf(address(this)) >= tokensForBurn) {
            _burn(address(this), tokensForBurn);
        }
        tokensForBurn = 0;

        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForOperations + tokensForMeme;

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

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

        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 ethForOperations = ethBalance * tokensForOperations / (totalTokensToSwap - (tokensForLiquidity/2));
        uint256 ethForMeme = ethBalance * tokensForMeme / (totalTokensToSwap - (tokensForLiquidity/2));

        ethForLiquidity -= ethForOperations + ethForMeme;

        tokensForLiquidity = 0;
        tokensForOperations = 0;
        tokensForMeme = 0;
        tokensForBurn = 0;

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

        (success,) = address(memeAddress).call{value: ethForMeme}("");

        (success,) = address(operationsAddress).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");
        require(_token != address(this), "Can't withdraw native tokens");
        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 setOperationsAddress(address _operationsAddress) external onlyOwner {
        require(_operationsAddress != address(0), "_operationsAddress address cannot be 0");
        operationsAddress = payable(_operationsAddress);
    }

    function setMemeAddress(address _memeAddress) external onlyOwner {
        require(_memeAddress != address(0), "_memeAddress address cannot be 0");
        memeAddress = payable(_memeAddress);
    }

}

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"EnabledTrading","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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"RemovedLimits","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":[{"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":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedOperationsAddress","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBurnFee","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":"buyMemeFund","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyOperationsFee","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":"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":"disableTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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":"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":"maxWalletAmount","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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"returnToNormalTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBurnFee","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":"sellMemeFund","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellOperationsFee","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":"address","name":"_memeAddress","type":"address"}],"name":"setMemeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operationsAddress","type":"address"}],"name":"setOperationsAddress","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":"tokensForBurn","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":"tokensForMeme","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForOperations","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":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_memeFund","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_memeFund","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f600e556001600f5f6101000a81548160ff0219169083151502179055505f600f60016101000a81548160ff0219169083151502179055505f600f60026101000a81548160ff021916908315150217905550600160115f6101000a81548160ff0219169083151502179055503480156200007c575f80fd5b506040518060400160405280600d81526020017f474f54544120474f2046415354000000000000000000000000000000000000008152506040518060400160405280600581526020017f53414e49430000000000000000000000000000000000000000000000000000008152508160039081620000fa919062000e96565b5080600490816200010c919062000e96565b5050505f620001206200068560201b60201c565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f3390505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000263573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000289919062000fdf565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002ef573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000315919062000fdf565b6040518363ffffffff1660e01b81526004016200033492919062001020565b6020604051808303815f875af115801562000351573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000377919062000fdf565b600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003ea600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200068c60201b60201c565b6200041e600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200071f60201b60201c565b5f6b1a00a72109b64fd0b9b00000905060646001826200043f919062001078565b6200044b9190620010ef565b600681905550606460018262000462919062001078565b6200046e9190620010ef565b600781905550606460018262000485919062001078565b620004919190620010ef565b6008819055506103e8600182620004a9919062001078565b620004b59190620010ef565b600b81905550601d6013819055505f60148190555060016015819055505f601681905550601654601554601454601354620004f1919062001126565b620004fd919062001126565b62000509919062001126565b601281905550601d6018819055505f6019819055506001601a819055505f601b81905550601b54601a5460195460185462000545919062001126565b62000551919062001126565b6200055d919062001126565b601781905550620005768360016200068c60201b60201c565b620005893060016200068c60201b60201c565b6200059e61dead60016200068c60201b60201c565b620005b1836001620007cf60201b60201c565b620005c4306001620007cf60201b60201c565b620005d961dead6001620007cf60201b60201c565b82600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200066b83826200091860201b60201c565b6200067c8362000a6260201b60201c565b5050506200136e565b5f33905090565b8060215f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051620007139291906200117c565b60405180910390a15050565b8060225f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506200078582826200068c60201b60201c565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b620007df6200068560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000870576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008679062001205565b60405180910390fd5b8060205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200090c919062001225565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000989576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000980906200128e565b60405180910390fd5b8060025f8282546200099c919062001126565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254620009f0919062001126565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a569190620012bf565b60405180910390a35050565b62000a726200068560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000b03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000afa9062001205565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000b74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b6b906200134e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000cae57607f821691505b60208210810362000cc45762000cc362000c69565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000d287fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000ceb565b62000d34868362000ceb565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000d7e62000d7862000d728462000d4c565b62000d55565b62000d4c565b9050919050565b5f819050919050565b62000d998362000d5e565b62000db162000da88262000d85565b84845462000cf7565b825550505050565b5f90565b62000dc762000db9565b62000dd481848462000d8e565b505050565b5b8181101562000dfb5762000def5f8262000dbd565b60018101905062000dda565b5050565b601f82111562000e4a5762000e148162000cca565b62000e1f8462000cdc565b8101602085101562000e2f578190505b62000e4762000e3e8562000cdc565b83018262000dd9565b50505b505050565b5f82821c905092915050565b5f62000e6c5f198460080262000e4f565b1980831691505092915050565b5f62000e86838362000e5b565b9150826002028217905092915050565b62000ea18262000c32565b67ffffffffffffffff81111562000ebd5762000ebc62000c3c565b5b62000ec9825462000c96565b62000ed682828562000dff565b5f60209050601f83116001811462000f0c575f841562000ef7578287015190505b62000f03858262000e79565b86555062000f72565b601f19841662000f1c8662000cca565b5f5b8281101562000f455784890151825560018201915060208501945060208101905062000f1e565b8683101562000f65578489015162000f61601f89168262000e5b565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000fa98262000f7e565b9050919050565b62000fbb8162000f9d565b811462000fc6575f80fd5b50565b5f8151905062000fd98162000fb0565b92915050565b5f6020828403121562000ff75762000ff662000f7a565b5b5f620010068482850162000fc9565b91505092915050565b6200101a8162000f9d565b82525050565b5f604082019050620010355f8301856200100f565b6200104460208301846200100f565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620010848262000d4c565b9150620010918362000d4c565b9250828202620010a18162000d4c565b91508282048414831517620010bb57620010ba6200104b565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620010fb8262000d4c565b9150620011088362000d4c565b9250826200111b576200111a620010c2565b5b828204905092915050565b5f620011328262000d4c565b91506200113f8362000d4c565b92508282019050808211156200115a57620011596200104b565b5b92915050565b5f8115159050919050565b620011768162001160565b82525050565b5f604082019050620011915f8301856200100f565b620011a060208301846200116b565b9392505050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f620011ed602083620011a7565b9150620011fa82620011b7565b602082019050919050565b5f6020820190508181035f8301526200121e81620011df565b9050919050565b5f6020820190506200123a5f8301846200116b565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62001276601f83620011a7565b9150620012838262001240565b602082019050919050565b5f6020820190508181035f830152620012a78162001268565b9050919050565b620012b98162000d4c565b82525050565b5f602082019050620012d45f830184620012ae565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f62001336602683620011a7565b91506200134382620012da565b604082019050919050565b5f6020820190508181035f830152620013678162001328565b9050919050565b615eb7806200137c5f395ff3fe608060405260043610610384575f3560e01c80638a8c523c116101d0578063d257b34f11610101578063e7ad9fcd1161009f578063f2fde38b1161006e578063f2fde38b14610ca5578063f5648a4f14610ccd578063f637434214610ce3578063fb002c9714610d0d5761038b565b8063e7ad9fcd14610c13578063e884f26014610c3b578063ee40166e14610c51578063f11a24d314610c7b5761038b565b8063dd62ed3e116100db578063dd62ed3e14610b6d578063e2cd5fcd14610ba9578063e2f4560514610bbf578063e71dc3f514610be95761038b565b8063d257b34f14610af3578063d85ba06314610b1b578063dc3f0d0f14610b455761038b565b8063adb873bd1161016e578063bbc0c74211610148578063bbc0c74214610a4f578063c024666814610a79578063c18bc19514610aa1578063c876d0b914610ac95761038b565b8063adb873bd146109bf578063b62496f5146109e9578063bacc66fe14610a255761038b565b80639a7a23d6116101aa5780639a7a23d6146108f5578063a457c2d71461091d578063a9059cbb14610959578063aa4bde28146109955761038b565b80638a8c523c1461088b5780638da5cb5b146108a157806395d89b41146108cb5761038b565b8063452ed4f1116102b55780636a486a8e11610253578063751039fc11610222578063751039fc146107e75780637571336a146107fd5780638366e79a1461082557806388e765ff146108615761038b565b80636a486a8e146107415780636ddd17131461076b57806370a0823114610795578063715018a6146107d15761038b565b80634f77f6c01161028f5780634f77f6c0146106995780635a139dd4146106c35780635ca4d99e146106ed57806366d602ae146107175761038b565b8063452ed4f11461061d578063499b8394146106475780634a62bb651461066f5761038b565b806323b872dd116103225780632e6ed7ef116102fc5780632e6ed7ef14610565578063313ce5671461058d57806339509351146105b75780633fc0161c146105f35761038b565b806323b872dd146104d957806327c22df1146105155780632be32b611461053d5761038b565b806310d5de531161035e57806310d5de531461041f57806318160ddd1461045b5780631a8145bb146104855780631d777856146104af5761038b565b806306fdde031461038f5780630758d924146103b9578063095ea7b3146103e35761038b565b3661038b57005b5f80fd5b34801561039a575f80fd5b506103a3610d37565b6040516103b09190614664565b60405180910390f35b3480156103c4575f80fd5b506103cd610dc7565b6040516103da91906146fe565b60405180910390f35b3480156103ee575f80fd5b5061040960048036038101906104049190614789565b610dec565b60405161041691906147e1565b60405180910390f35b34801561042a575f80fd5b50610445600480360381019061044091906147fa565b610e09565b60405161045291906147e1565b60405180910390f35b348015610466575f80fd5b5061046f610e26565b60405161047c9190614834565b60405180910390f35b348015610490575f80fd5b50610499610e2f565b6040516104a69190614834565b60405180910390f35b3480156104ba575f80fd5b506104c3610e35565b6040516104d09190614834565b60405180910390f35b3480156104e4575f80fd5b506104ff60048036038101906104fa919061484d565b610e3b565b60405161050c91906147e1565b60405180910390f35b348015610520575f80fd5b5061053b600480360381019061053691906147fa565b610f2d565b005b348015610548575f80fd5b50610563600480360381019061055e919061489d565b611074565b005b348015610570575f80fd5b5061058b600480360381019061058691906148c8565b6111d6565b005b348015610598575f80fd5b506105a1611304565b6040516105ae9190614947565b60405180910390f35b3480156105c2575f80fd5b506105dd60048036038101906105d89190614789565b61130c565b6040516105ea91906147e1565b60405180910390f35b3480156105fe575f80fd5b506106076113b3565b6040516106149190614834565b60405180910390f35b348015610628575f80fd5b506106316113b9565b60405161063e919061496f565b60405180910390f35b348015610652575f80fd5b5061066d600480360381019061066891906147fa565b6113de565b005b34801561067a575f80fd5b50610683611525565b60405161069091906147e1565b60405180910390f35b3480156106a4575f80fd5b506106ad611537565b6040516106ba9190614834565b60405180910390f35b3480156106ce575f80fd5b506106d761153d565b6040516106e49190614834565b60405180910390f35b3480156106f8575f80fd5b50610701611543565b60405161070e9190614834565b60405180910390f35b348015610722575f80fd5b5061072b611549565b6040516107389190614834565b60405180910390f35b34801561074c575f80fd5b5061075561154f565b6040516107629190614834565b60405180910390f35b348015610776575f80fd5b5061077f611555565b60405161078c91906147e1565b60405180910390f35b3480156107a0575f80fd5b506107bb60048036038101906107b691906147fa565b611568565b6040516107c89190614834565b60405180910390f35b3480156107dc575f80fd5b506107e56115ad565b005b3480156107f2575f80fd5b506107fb611700565b005b348015610808575f80fd5b50610823600480360381019061081e91906149b2565b6117f6565b005b348015610830575f80fd5b5061084b600480360381019061084691906149f0565b611979565b60405161085891906147e1565b60405180910390f35b34801561086c575f80fd5b50610875611c24565b6040516108829190614834565b60405180910390f35b348015610896575f80fd5b5061089f611c2a565b005b3480156108ac575f80fd5b506108b5611d7b565b6040516108c2919061496f565b60405180910390f35b3480156108d6575f80fd5b506108df611da3565b6040516108ec9190614664565b60405180910390f35b348015610900575f80fd5b5061091b600480360381019061091691906149b2565b611e33565b005b348015610928575f80fd5b50610943600480360381019061093e9190614789565b611fac565b60405161095091906147e1565b60405180910390f35b348015610964575f80fd5b5061097f600480360381019061097a9190614789565b612092565b60405161098c91906147e1565b60405180910390f35b3480156109a0575f80fd5b506109a96120af565b6040516109b69190614834565b60405180910390f35b3480156109ca575f80fd5b506109d36120b5565b6040516109e09190614834565b60405180910390f35b3480156109f4575f80fd5b50610a0f6004803603810190610a0a91906147fa565b6120bb565b604051610a1c91906147e1565b60405180910390f35b348015610a30575f80fd5b50610a396120d8565b604051610a469190614834565b60405180910390f35b348015610a5a575f80fd5b50610a636120de565b604051610a7091906147e1565b60405180910390f35b348015610a84575f80fd5b50610a9f6004803603810190610a9a91906149b2565b6120f1565b005b348015610aac575f80fd5b50610ac76004803603810190610ac2919061489d565b61222d565b005b348015610ad4575f80fd5b50610add61238f565b604051610aea91906147e1565b60405180910390f35b348015610afe575f80fd5b50610b196004803603810190610b14919061489d565b6123a1565b005b348015610b26575f80fd5b50610b2f612508565b604051610b3c9190614834565b60405180910390f35b348015610b50575f80fd5b50610b6b6004803603810190610b66919061489d565b61250e565b005b348015610b78575f80fd5b50610b936004803603810190610b8e91906149f0565b612670565b604051610ba09190614834565b60405180910390f35b348015610bb4575f80fd5b50610bbd6126f2565b005b348015610bca575f80fd5b50610bd36128b0565b604051610be09190614834565b60405180910390f35b348015610bf4575f80fd5b50610bfd6128b6565b604051610c0a9190614834565b60405180910390f35b348015610c1e575f80fd5b50610c396004803603810190610c3491906148c8565b6128bc565b005b348015610c46575f80fd5b50610c4f6129ea565b005b348015610c5c575f80fd5b50610c65612a9b565b604051610c729190614834565b60405180910390f35b348015610c86575f80fd5b50610c8f612aa1565b604051610c9c9190614834565b60405180910390f35b348015610cb0575f80fd5b50610ccb6004803603810190610cc691906147fa565b612aa7565b005b348015610cd8575f80fd5b50610ce1612c69565b005b348015610cee575f80fd5b50610cf7612d6c565b604051610d049190614834565b60405180910390f35b348015610d18575f80fd5b50610d21612d72565b604051610d2e9190614834565b60405180910390f35b606060038054610d4690614a5b565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7290614a5b565b8015610dbd5780601f10610d9457610100808354040283529160200191610dbd565b820191905f5260205f20905b815481529060010190602001808311610da057829003601f168201915b5050505050905090565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610dff610df8612d78565b8484612d7f565b6001905092915050565b6021602052805f5260405f205f915054906101000a900460ff1681565b5f600254905090565b601d5481565b601f5481565b5f610e47848484612f42565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610e8e612d78565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610f0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0490614afb565b60405180910390fd5b610f2185610f19612d78565b858403612d7f565b60019150509392505050565b610f35612d78565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fba90614b63565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611031576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102890614bcb565b60405180910390fd5b80600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61107c612d78565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461110a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110190614b63565b60405180910390fd5b670de0b6b3a76400006103e86002611120610e26565b61112a9190614c16565b6111349190614c84565b61113e9190614c84565b811015611180576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117790614d24565b60405180910390fd5b670de0b6b3a7640000816111949190614c16565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de410096006546040516111cb9190614834565b60405180910390a150565b6111de612d78565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461126c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126390614b63565b60405180910390fd5b8360138190555082601481905550816015819055508060168190555060165460155460145460135461129e9190614d42565b6112a89190614d42565b6112b29190614d42565b601281905550601e60125411156112fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f590614dbf565b60405180910390fd5b50505050565b5f6012905090565b5f6113a9611318612d78565b848460015f611325612d78565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546113a49190614d42565b612d7f565b6001905092915050565b601a5481565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113e6612d78565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146b90614b63565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d990614e4d565b60405180910390fd5b80600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5f9054906101000a900460ff1681565b60185481565b60135481565b60155481565b60075481565b60175481565b600f60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6115b5612d78565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611643576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163a90614b63565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611708612d78565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178d90614b63565b60405180910390fd5b5f600f5f6101000a81548160ff0219169083151502179055505f60115f6101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b6117fe612d78565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461188c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188390614b63565b60405180910390fd5b8061192157600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611920576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191790614edb565b60405180910390fd5b5b8060215f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f611982612d78565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0790614b63565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7590614f43565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae390614fab565b60405180910390fd5b5f8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611b26919061496f565b602060405180830381865afa158015611b41573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b659190614fdd565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611ba2929190615008565b6020604051808303815f875af1158015611bbe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611be29190615043565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051611c15929190615008565b60405180910390a15092915050565b60065481565b611c32612d78565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb790614b63565b60405180910390fd5b600f60019054906101000a900460ff1615611d10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d07906150b8565b60405180910390fd5b6001600f60016101000a81548160ff0219169083151502179055506001600f60026101000a81548160ff02191690831515021790555043600e819055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a1565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611db290614a5b565b80601f0160208091040260200160405190810160405280929190818152602001828054611dde90614a5b565b8015611e295780601f10611e0057610100808354040283529160200191611e29565b820191905f5260205f20905b815481529060010190602001808311611e0c57829003601f168201915b5050505050905090565b611e3b612d78565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ec9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec090614b63565b60405180910390fd5b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4f90615146565b60405180910390fd5b611f628282613ac2565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f8060015f611fb9612d78565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015612073576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206a906151d4565b60405180910390fd5b61208761207e612d78565b85858403612d7f565b600191505092915050565b5f6120a561209e612d78565b8484612f42565b6001905092915050565b60085481565b601b5481565b6022602052805f5260405f205f915054906101000a900460ff1681565b601e5481565b600f60019054906101000a900460ff1681565b6120f9612d78565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217e90614b63565b60405180910390fd5b8060205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161222191906147e1565b60405180910390a25050565b612235612d78565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ba90614b63565b60405180910390fd5b670de0b6b3a76400006103e860036122d9610e26565b6122e39190614c16565b6122ed9190614c84565b6122f79190614c84565b811015612339576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233090615262565b60405180910390fd5b670de0b6b3a76400008161234d9190614c16565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc6008546040516123849190614834565b60405180910390a150565b60115f9054906101000a900460ff1681565b6123a9612d78565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242e90614b63565b60405180910390fd5b620186a06001612445610e26565b61244f9190614c16565b6124599190614c84565b81101561249b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612492906152f0565b60405180910390fd5b6103e860016124a8610e26565b6124b29190614c16565b6124bc9190614c84565b8111156124fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f59061537e565b60405180910390fd5b80600b8190555050565b60125481565b612516612d78565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259b90614b63565b60405180910390fd5b670de0b6b3a76400006103e860026125ba610e26565b6125c49190614c16565b6125ce9190614c84565b6125d89190614c84565b81101561261a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126119061540c565b60405180910390fd5b670de0b6b3a76400008161262e9190614c16565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e6007546040516126659190614834565b60405180910390a150565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6126fa612d78565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612788576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277f90614b63565b60405180910390fd5b60016018819055505f6019819055505f601a819055505f601b81905550601b54601a546019546018546127bb9190614d42565b6127c59190614d42565b6127cf9190614d42565b6017819055506005601754111561281b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281290615474565b60405180910390fd5b60016013819055505f6014819055505f6015819055505f60168190555060165460155460145460135461284e9190614d42565b6128589190614d42565b6128629190614d42565b601281905550600560125411156128ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a590615474565b60405180910390fd5b565b600b5481565b60165481565b6128c4612d78565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612952576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294990614b63565b60405180910390fd5b836018819055508260198190555081601a8190555080601b81905550601b54601a546019546018546129849190614d42565b61298e9190614d42565b6129989190614d42565b601781905550601e60175411156129e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129db90614dbf565b60405180910390fd5b50505050565b6129f2612d78565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a7790614b63565b60405180910390fd5b5f60115f6101000a81548160ff021916908315150217905550565b600e5481565b60145481565b612aaf612d78565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3490614b63565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba290615502565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612c71612d78565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612cff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf690614b63565b60405180910390fd5b5f3373ffffffffffffffffffffffffffffffffffffffff1647604051612d249061554d565b5f6040518083038185875af1925050503d805f8114612d5e576040519150601f19603f3d011682016040523d82523d5f602084013e612d63565b606091505b50508091505050565b60195481565b601c5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de4906155d1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e529061565f565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612f359190614834565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612fb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fa7906156ed565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361301e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130159061577b565b60405180910390fd5b5f8111613060576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613057906157e3565b60405180910390fd5b600f60019054906101000a900460ff1661314f5760205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061310f575060205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b61314e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131459061584b565b60405180910390fd5b5b600f5f9054906101000a900460ff16156135d15761316b611d7b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156131d957506131a9611d7b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561321157505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561324b575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561329e575060205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156132f1575060205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156135d05760225f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015613393575060215f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561343a576006548111156133dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133d4906158d9565b60405180910390fd5b6008546133e983611568565b826133f49190614d42565b1115613435576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161342c90615941565b60405180910390fd5b6135cf565b60225f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156134d7575060215f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561352657600754811115613521576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613518906159cf565b60405180910390fd5b6135ce565b60215f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166135cd5760085461358083611568565b8261358b9190614d42565b11156135cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135c390615941565b60405180910390fd5b5b5b5b5b5b5f6135db30611568565b90505f600b5482101590508080156135ff5750600f60029054906101000a900460ff165b80156136185750600a60149054906101000a900460ff16155b801561366b575060225f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156136be575060205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015613711575060205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15613754576001600a60146101000a81548160ff021916908315150217905550613739613b6a565b5f600a60146101000a81548160ff0219169083151502179055505b5f6001905060205f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806137f4575060205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156137fd575f90505b5f8115613aae5760225f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561385b57505f601754115b15613949576064601754866138709190614c16565b61387a9190614c84565b90506017546019548261388d9190614c16565b6138979190614c84565b601d5f8282546138a79190614d42565b92505081905550601754601854826138bf9190614c16565b6138c99190614c84565b601c5f8282546138d99190614d42565b92505081905550601754601a54826138f19190614c16565b6138fb9190614c84565b601e5f82825461390b9190614d42565b92505081905550601754601b54826139239190614c16565b61392d9190614c84565b601f5f82825461393d9190614d42565b92505081905550613a8b565b60225f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156139a057505f601254115b15613a8a576064601254866139b59190614c16565b6139bf9190614c84565b9050601254601454826139d29190614c16565b6139dc9190614c84565b601d5f8282546139ec9190614d42565b9250508190555060125460135482613a049190614c16565b613a0e9190614c84565b601c5f828254613a1e9190614d42565b9250508190555060125460155482613a369190614c16565b613a409190614c84565b601e5f828254613a509190614d42565b9250508190555060125460165482613a689190614c16565b613a729190614c84565b601f5f828254613a829190614d42565b925050819055505b5b5f811115613a9f57613a9e873083613e2c565b5b8085613aab91906159ed565b94505b613ab9878787613e2c565b50505050505050565b8060225f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550613b20828261408b565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f601f54118015613b855750601f54613b8230611568565b10155b15613b9757613b9630601f5461411c565b5b5f601f819055505f613ba830611568565b90505f601e54601c54601d54613bbe9190614d42565b613bc89190614d42565b90505f821480613bd757505f81145b15613be3575050613e2a565b603c600b54613bf29190614c16565b821115613c0b57603c600b54613c089190614c16565b91505b5f80600283601d5486613c1e9190614c16565b613c289190614c84565b613c329190614c84565b9050613c488185613c4391906159ed565b6142c9565b5f4790505f8190505f6002601d54613c609190614c84565b86613c6b91906159ed565b601c5484613c799190614c16565b613c839190614c84565b90505f6002601d54613c959190614c84565b87613ca091906159ed565b601e5485613cae9190614c16565b613cb89190614c84565b90508082613cc69190614d42565b83613cd191906159ed565b92505f601d819055505f601c819055505f601e819055505f601f819055505f85118015613cfd57505f83115b15613d0d57613d0c85846144ff565b5b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613d529061554d565b5f6040518083038185875af1925050503d805f8114613d8c576040519150601f19603f3d011682016040523d82523d5f602084013e613d91565b606091505b505080965050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613ddc9061554d565b5f6040518083038185875af1925050503d805f8114613e16576040519150601f19603f3d011682016040523d82523d5f602084013e613e1b565b606091505b50508096505050505050505050505b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613e9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e91906156ed565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613f08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613eff9061577b565b60405180910390fd5b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613f8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f8290615a90565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546140199190614d42565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161407d9190614834565b60405180910390a350505050565b8060215f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051614110929190615aae565b60405180910390a15050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361418a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161418190615b45565b60405180910390fd5b5f805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561420d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161420490615bd3565b60405180910390fd5b8181035f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160025f82825403925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516142bc9190614834565b60405180910390a3505050565b5f600267ffffffffffffffff8111156142e5576142e4615bf1565b5b6040519080825280602002602001820160405280156143135781602001602082028036833780820191505090505b50905030815f8151811061432a57614329615c1e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156143ce573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906143f29190615c5f565b8160018151811061440657614405615c1e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061446c3060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612d7f565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016144ce959493929190615d7a565b5f604051808303815f87803b1580156144e5575f80fd5b505af11580156144f7573d5f803e3d5ffd5b505050505050565b61452b3060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612d7f565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8061dead426040518863ffffffff1660e01b815260040161459296959493929190615dd2565b60606040518083038185885af11580156145ae573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906145d39190615e31565b5050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156146115780820151818401526020810190506145f6565b5f8484015250505050565b5f601f19601f8301169050919050565b5f614636826145da565b61464081856145e4565b93506146508185602086016145f4565b6146598161461c565b840191505092915050565b5f6020820190508181035f83015261467c818461462c565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f6146c66146c16146bc84614684565b6146a3565b614684565b9050919050565b5f6146d7826146ac565b9050919050565b5f6146e8826146cd565b9050919050565b6146f8816146de565b82525050565b5f6020820190506147115f8301846146ef565b92915050565b5f80fd5b5f61472582614684565b9050919050565b6147358161471b565b811461473f575f80fd5b50565b5f813590506147508161472c565b92915050565b5f819050919050565b61476881614756565b8114614772575f80fd5b50565b5f813590506147838161475f565b92915050565b5f806040838503121561479f5761479e614717565b5b5f6147ac85828601614742565b92505060206147bd85828601614775565b9150509250929050565b5f8115159050919050565b6147db816147c7565b82525050565b5f6020820190506147f45f8301846147d2565b92915050565b5f6020828403121561480f5761480e614717565b5b5f61481c84828501614742565b91505092915050565b61482e81614756565b82525050565b5f6020820190506148475f830184614825565b92915050565b5f805f6060848603121561486457614863614717565b5b5f61487186828701614742565b935050602061488286828701614742565b925050604061489386828701614775565b9150509250925092565b5f602082840312156148b2576148b1614717565b5b5f6148bf84828501614775565b91505092915050565b5f805f80608085870312156148e0576148df614717565b5b5f6148ed87828801614775565b94505060206148fe87828801614775565b935050604061490f87828801614775565b925050606061492087828801614775565b91505092959194509250565b5f60ff82169050919050565b6149418161492c565b82525050565b5f60208201905061495a5f830184614938565b92915050565b6149698161471b565b82525050565b5f6020820190506149825f830184614960565b92915050565b614991816147c7565b811461499b575f80fd5b50565b5f813590506149ac81614988565b92915050565b5f80604083850312156149c8576149c7614717565b5b5f6149d585828601614742565b92505060206149e68582860161499e565b9150509250929050565b5f8060408385031215614a0657614a05614717565b5b5f614a1385828601614742565b9250506020614a2485828601614742565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680614a7257607f821691505b602082108103614a8557614a84614a2e565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f614ae56028836145e4565b9150614af082614a8b565b604082019050919050565b5f6020820190508181035f830152614b1281614ad9565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614b4d6020836145e4565b9150614b5882614b19565b602082019050919050565b5f6020820190508181035f830152614b7a81614b41565b9050919050565b7f5f6d656d654164647265737320616464726573732063616e6e6f7420626520305f82015250565b5f614bb56020836145e4565b9150614bc082614b81565b602082019050919050565b5f6020820190508181035f830152614be281614ba9565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f614c2082614756565b9150614c2b83614756565b9250828202614c3981614756565b91508282048414831517614c5057614c4f614be9565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f614c8e82614756565b9150614c9983614756565b925082614ca957614ca8614c57565b5b828204905092915050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572205f8201527f7468616e20302e32250000000000000000000000000000000000000000000000602082015250565b5f614d0e6029836145e4565b9150614d1982614cb4565b604082019050919050565b5f6020820190508181035f830152614d3b81614d02565b9050919050565b5f614d4c82614756565b9150614d5783614756565b9250828201905080821115614d6f57614d6e614be9565b5b92915050565b7f4d757374206b656570206665657320617420333025206f72206c6573730000005f82015250565b5f614da9601d836145e4565b9150614db482614d75565b602082019050919050565b5f6020820190508181035f830152614dd681614d9d565b9050919050565b7f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f5f8201527f7420626520300000000000000000000000000000000000000000000000000000602082015250565b5f614e376026836145e4565b9150614e4282614ddd565b604082019050919050565b5f6020820190508181035f830152614e6481614e2b565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d205f8201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b5f614ec56027836145e4565b9150614ed082614e6b565b604082019050919050565b5f6020820190508181035f830152614ef281614eb9565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000005f82015250565b5f614f2d601a836145e4565b9150614f3882614ef9565b602082019050919050565b5f6020820190508181035f830152614f5a81614f21565b9050919050565b7f43616e2774207769746864726177206e617469766520746f6b656e73000000005f82015250565b5f614f95601c836145e4565b9150614fa082614f61565b602082019050919050565b5f6020820190508181035f830152614fc281614f89565b9050919050565b5f81519050614fd78161475f565b92915050565b5f60208284031215614ff257614ff1614717565b5b5f614fff84828501614fc9565b91505092915050565b5f60408201905061501b5f830185614960565b6150286020830184614825565b9392505050565b5f8151905061503d81614988565b92915050565b5f6020828403121561505857615057614717565b5b5f6150658482850161502f565b91505092915050565b7f43616e6e6f74207265656e61626c652074726164696e670000000000000000005f82015250565b5f6150a26017836145e4565b91506150ad8261506e565b602082019050919050565b5f6020820190508181035f8301526150cf81615096565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f6151306039836145e4565b915061513b826150d6565b604082019050919050565b5f6020820190508181035f83015261515d81615124565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6151be6025836145e4565b91506151c982615164565b604082019050919050565b5f6020820190508181035f8301526151eb816151b2565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f775f8201527f6572207468616e20302e33250000000000000000000000000000000000000000602082015250565b5f61524c602c836145e4565b9150615257826151f2565b604082019050919050565b5f6020820190508181035f83015261527981615240565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f6152da6035836145e4565b91506152e582615280565b604082019050919050565b5f6020820190508181035f830152615307816152ce565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e312520746f74616c20737570706c792e000000000000000000000000602082015250565b5f6153686034836145e4565b91506153738261530e565b604082019050919050565b5f6020820190508181035f8301526153958161535c565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f7765725f8201527f207468616e20302e322500000000000000000000000000000000000000000000602082015250565b5f6153f6602a836145e4565b91506154018261539c565b604082019050919050565b5f6020820190508181035f830152615423816153ea565b9050919050565b7f4d757374206b6565702066656573206174203525206f72206c657373000000005f82015250565b5f61545e601c836145e4565b91506154698261542a565b602082019050919050565b5f6020820190508181035f83015261548b81615452565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6154ec6026836145e4565b91506154f782615492565b604082019050919050565b5f6020820190508181035f830152615519816154e0565b9050919050565b5f81905092915050565b50565b5f6155385f83615520565b91506155438261552a565b5f82019050919050565b5f6155578261552d565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6155bb6024836145e4565b91506155c682615561565b604082019050919050565b5f6020820190508181035f8301526155e8816155af565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6156496022836145e4565b9150615654826155ef565b604082019050919050565b5f6020820190508181035f8301526156768161563d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6156d76025836145e4565b91506156e28261567d565b604082019050919050565b5f6020820190508181035f830152615704816156cb565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6157656023836145e4565b91506157708261570b565b604082019050919050565b5f6020820190508181035f83015261579281615759565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e20300000005f82015250565b5f6157cd601d836145e4565b91506157d882615799565b602082019050919050565b5f6020820190508181035f8301526157fa816157c1565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f6158356016836145e4565b915061584082615801565b602082019050919050565b5f6020820190508181035f83015261586281615829565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b5f6158c36028836145e4565b91506158ce82615869565b604082019050919050565b5f6020820190508181035f8301526158f0816158b7565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c657400000000000000005f82015250565b5f61592b6018836145e4565b9150615936826158f7565b602082019050919050565b5f6020820190508181035f8301526159588161591f565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b5f6159b9602a836145e4565b91506159c48261595f565b604082019050919050565b5f6020820190508181035f8301526159e6816159ad565b9050919050565b5f6159f782614756565b9150615a0283614756565b9250828203905081811115615a1a57615a19614be9565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f615a7a6026836145e4565b9150615a8582615a20565b604082019050919050565b5f6020820190508181035f830152615aa781615a6e565b9050919050565b5f604082019050615ac15f830185614960565b615ace60208301846147d2565b9392505050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f615b2f6021836145e4565b9150615b3a82615ad5565b604082019050919050565b5f6020820190508181035f830152615b5c81615b23565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f615bbd6022836145e4565b9150615bc882615b63565b604082019050919050565b5f6020820190508181035f830152615bea81615bb1565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050615c598161472c565b92915050565b5f60208284031215615c7457615c73614717565b5b5f615c8184828501615c4b565b91505092915050565b5f819050919050565b5f615cad615ca8615ca384615c8a565b6146a3565b614756565b9050919050565b615cbd81615c93565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b615cf58161471b565b82525050565b5f615d068383615cec565b60208301905092915050565b5f602082019050919050565b5f615d2882615cc3565b615d328185615ccd565b9350615d3d83615cdd565b805f5b83811015615d6d578151615d548882615cfb565b9750615d5f83615d12565b925050600181019050615d40565b5085935050505092915050565b5f60a082019050615d8d5f830188614825565b615d9a6020830187615cb4565b8181036040830152615dac8186615d1e565b9050615dbb6060830185614960565b615dc86080830184614825565b9695505050505050565b5f60c082019050615de55f830189614960565b615df26020830188614825565b615dff6040830187615cb4565b615e0c6060830186615cb4565b615e196080830185614960565b615e2660a0830184614825565b979650505050505050565b5f805f60608486031215615e4857615e47614717565b5b5f615e5586828701614fc9565b9350506020615e6686828701614fc9565b9250506040615e7786828701614fc9565b915050925092509256fea2646970667358221220f512ec294ab99711e8b76a556f5e8dbce196785d6369b53065ad7aa0dda0498864736f6c63430008150033

Deployed Bytecode

0x608060405260043610610384575f3560e01c80638a8c523c116101d0578063d257b34f11610101578063e7ad9fcd1161009f578063f2fde38b1161006e578063f2fde38b14610ca5578063f5648a4f14610ccd578063f637434214610ce3578063fb002c9714610d0d5761038b565b8063e7ad9fcd14610c13578063e884f26014610c3b578063ee40166e14610c51578063f11a24d314610c7b5761038b565b8063dd62ed3e116100db578063dd62ed3e14610b6d578063e2cd5fcd14610ba9578063e2f4560514610bbf578063e71dc3f514610be95761038b565b8063d257b34f14610af3578063d85ba06314610b1b578063dc3f0d0f14610b455761038b565b8063adb873bd1161016e578063bbc0c74211610148578063bbc0c74214610a4f578063c024666814610a79578063c18bc19514610aa1578063c876d0b914610ac95761038b565b8063adb873bd146109bf578063b62496f5146109e9578063bacc66fe14610a255761038b565b80639a7a23d6116101aa5780639a7a23d6146108f5578063a457c2d71461091d578063a9059cbb14610959578063aa4bde28146109955761038b565b80638a8c523c1461088b5780638da5cb5b146108a157806395d89b41146108cb5761038b565b8063452ed4f1116102b55780636a486a8e11610253578063751039fc11610222578063751039fc146107e75780637571336a146107fd5780638366e79a1461082557806388e765ff146108615761038b565b80636a486a8e146107415780636ddd17131461076b57806370a0823114610795578063715018a6146107d15761038b565b80634f77f6c01161028f5780634f77f6c0146106995780635a139dd4146106c35780635ca4d99e146106ed57806366d602ae146107175761038b565b8063452ed4f11461061d578063499b8394146106475780634a62bb651461066f5761038b565b806323b872dd116103225780632e6ed7ef116102fc5780632e6ed7ef14610565578063313ce5671461058d57806339509351146105b75780633fc0161c146105f35761038b565b806323b872dd146104d957806327c22df1146105155780632be32b611461053d5761038b565b806310d5de531161035e57806310d5de531461041f57806318160ddd1461045b5780631a8145bb146104855780631d777856146104af5761038b565b806306fdde031461038f5780630758d924146103b9578063095ea7b3146103e35761038b565b3661038b57005b5f80fd5b34801561039a575f80fd5b506103a3610d37565b6040516103b09190614664565b60405180910390f35b3480156103c4575f80fd5b506103cd610dc7565b6040516103da91906146fe565b60405180910390f35b3480156103ee575f80fd5b5061040960048036038101906104049190614789565b610dec565b60405161041691906147e1565b60405180910390f35b34801561042a575f80fd5b50610445600480360381019061044091906147fa565b610e09565b60405161045291906147e1565b60405180910390f35b348015610466575f80fd5b5061046f610e26565b60405161047c9190614834565b60405180910390f35b348015610490575f80fd5b50610499610e2f565b6040516104a69190614834565b60405180910390f35b3480156104ba575f80fd5b506104c3610e35565b6040516104d09190614834565b60405180910390f35b3480156104e4575f80fd5b506104ff60048036038101906104fa919061484d565b610e3b565b60405161050c91906147e1565b60405180910390f35b348015610520575f80fd5b5061053b600480360381019061053691906147fa565b610f2d565b005b348015610548575f80fd5b50610563600480360381019061055e919061489d565b611074565b005b348015610570575f80fd5b5061058b600480360381019061058691906148c8565b6111d6565b005b348015610598575f80fd5b506105a1611304565b6040516105ae9190614947565b60405180910390f35b3480156105c2575f80fd5b506105dd60048036038101906105d89190614789565b61130c565b6040516105ea91906147e1565b60405180910390f35b3480156105fe575f80fd5b506106076113b3565b6040516106149190614834565b60405180910390f35b348015610628575f80fd5b506106316113b9565b60405161063e919061496f565b60405180910390f35b348015610652575f80fd5b5061066d600480360381019061066891906147fa565b6113de565b005b34801561067a575f80fd5b50610683611525565b60405161069091906147e1565b60405180910390f35b3480156106a4575f80fd5b506106ad611537565b6040516106ba9190614834565b60405180910390f35b3480156106ce575f80fd5b506106d761153d565b6040516106e49190614834565b60405180910390f35b3480156106f8575f80fd5b50610701611543565b60405161070e9190614834565b60405180910390f35b348015610722575f80fd5b5061072b611549565b6040516107389190614834565b60405180910390f35b34801561074c575f80fd5b5061075561154f565b6040516107629190614834565b60405180910390f35b348015610776575f80fd5b5061077f611555565b60405161078c91906147e1565b60405180910390f35b3480156107a0575f80fd5b506107bb60048036038101906107b691906147fa565b611568565b6040516107c89190614834565b60405180910390f35b3480156107dc575f80fd5b506107e56115ad565b005b3480156107f2575f80fd5b506107fb611700565b005b348015610808575f80fd5b50610823600480360381019061081e91906149b2565b6117f6565b005b348015610830575f80fd5b5061084b600480360381019061084691906149f0565b611979565b60405161085891906147e1565b60405180910390f35b34801561086c575f80fd5b50610875611c24565b6040516108829190614834565b60405180910390f35b348015610896575f80fd5b5061089f611c2a565b005b3480156108ac575f80fd5b506108b5611d7b565b6040516108c2919061496f565b60405180910390f35b3480156108d6575f80fd5b506108df611da3565b6040516108ec9190614664565b60405180910390f35b348015610900575f80fd5b5061091b600480360381019061091691906149b2565b611e33565b005b348015610928575f80fd5b50610943600480360381019061093e9190614789565b611fac565b60405161095091906147e1565b60405180910390f35b348015610964575f80fd5b5061097f600480360381019061097a9190614789565b612092565b60405161098c91906147e1565b60405180910390f35b3480156109a0575f80fd5b506109a96120af565b6040516109b69190614834565b60405180910390f35b3480156109ca575f80fd5b506109d36120b5565b6040516109e09190614834565b60405180910390f35b3480156109f4575f80fd5b50610a0f6004803603810190610a0a91906147fa565b6120bb565b604051610a1c91906147e1565b60405180910390f35b348015610a30575f80fd5b50610a396120d8565b604051610a469190614834565b60405180910390f35b348015610a5a575f80fd5b50610a636120de565b604051610a7091906147e1565b60405180910390f35b348015610a84575f80fd5b50610a9f6004803603810190610a9a91906149b2565b6120f1565b005b348015610aac575f80fd5b50610ac76004803603810190610ac2919061489d565b61222d565b005b348015610ad4575f80fd5b50610add61238f565b604051610aea91906147e1565b60405180910390f35b348015610afe575f80fd5b50610b196004803603810190610b14919061489d565b6123a1565b005b348015610b26575f80fd5b50610b2f612508565b604051610b3c9190614834565b60405180910390f35b348015610b50575f80fd5b50610b6b6004803603810190610b66919061489d565b61250e565b005b348015610b78575f80fd5b50610b936004803603810190610b8e91906149f0565b612670565b604051610ba09190614834565b60405180910390f35b348015610bb4575f80fd5b50610bbd6126f2565b005b348015610bca575f80fd5b50610bd36128b0565b604051610be09190614834565b60405180910390f35b348015610bf4575f80fd5b50610bfd6128b6565b604051610c0a9190614834565b60405180910390f35b348015610c1e575f80fd5b50610c396004803603810190610c3491906148c8565b6128bc565b005b348015610c46575f80fd5b50610c4f6129ea565b005b348015610c5c575f80fd5b50610c65612a9b565b604051610c729190614834565b60405180910390f35b348015610c86575f80fd5b50610c8f612aa1565b604051610c9c9190614834565b60405180910390f35b348015610cb0575f80fd5b50610ccb6004803603810190610cc691906147fa565b612aa7565b005b348015610cd8575f80fd5b50610ce1612c69565b005b348015610cee575f80fd5b50610cf7612d6c565b604051610d049190614834565b60405180910390f35b348015610d18575f80fd5b50610d21612d72565b604051610d2e9190614834565b60405180910390f35b606060038054610d4690614a5b565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7290614a5b565b8015610dbd5780601f10610d9457610100808354040283529160200191610dbd565b820191905f5260205f20905b815481529060010190602001808311610da057829003601f168201915b5050505050905090565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610dff610df8612d78565b8484612d7f565b6001905092915050565b6021602052805f5260405f205f915054906101000a900460ff1681565b5f600254905090565b601d5481565b601f5481565b5f610e47848484612f42565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610e8e612d78565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610f0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0490614afb565b60405180910390fd5b610f2185610f19612d78565b858403612d7f565b60019150509392505050565b610f35612d78565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fba90614b63565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611031576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102890614bcb565b60405180910390fd5b80600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61107c612d78565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461110a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110190614b63565b60405180910390fd5b670de0b6b3a76400006103e86002611120610e26565b61112a9190614c16565b6111349190614c84565b61113e9190614c84565b811015611180576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117790614d24565b60405180910390fd5b670de0b6b3a7640000816111949190614c16565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de410096006546040516111cb9190614834565b60405180910390a150565b6111de612d78565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461126c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126390614b63565b60405180910390fd5b8360138190555082601481905550816015819055508060168190555060165460155460145460135461129e9190614d42565b6112a89190614d42565b6112b29190614d42565b601281905550601e60125411156112fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f590614dbf565b60405180910390fd5b50505050565b5f6012905090565b5f6113a9611318612d78565b848460015f611325612d78565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546113a49190614d42565b612d7f565b6001905092915050565b601a5481565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113e6612d78565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146b90614b63565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d990614e4d565b60405180910390fd5b80600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5f9054906101000a900460ff1681565b60185481565b60135481565b60155481565b60075481565b60175481565b600f60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6115b5612d78565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611643576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163a90614b63565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611708612d78565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178d90614b63565b60405180910390fd5b5f600f5f6101000a81548160ff0219169083151502179055505f60115f6101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b6117fe612d78565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461188c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188390614b63565b60405180910390fd5b8061192157600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611920576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191790614edb565b60405180910390fd5b5b8060215f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f611982612d78565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0790614b63565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7590614f43565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae390614fab565b60405180910390fd5b5f8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611b26919061496f565b602060405180830381865afa158015611b41573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b659190614fdd565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611ba2929190615008565b6020604051808303815f875af1158015611bbe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611be29190615043565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051611c15929190615008565b60405180910390a15092915050565b60065481565b611c32612d78565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb790614b63565b60405180910390fd5b600f60019054906101000a900460ff1615611d10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d07906150b8565b60405180910390fd5b6001600f60016101000a81548160ff0219169083151502179055506001600f60026101000a81548160ff02191690831515021790555043600e819055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a1565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611db290614a5b565b80601f0160208091040260200160405190810160405280929190818152602001828054611dde90614a5b565b8015611e295780601f10611e0057610100808354040283529160200191611e29565b820191905f5260205f20905b815481529060010190602001808311611e0c57829003601f168201915b5050505050905090565b611e3b612d78565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ec9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec090614b63565b60405180910390fd5b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4f90615146565b60405180910390fd5b611f628282613ac2565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f8060015f611fb9612d78565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015612073576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206a906151d4565b60405180910390fd5b61208761207e612d78565b85858403612d7f565b600191505092915050565b5f6120a561209e612d78565b8484612f42565b6001905092915050565b60085481565b601b5481565b6022602052805f5260405f205f915054906101000a900460ff1681565b601e5481565b600f60019054906101000a900460ff1681565b6120f9612d78565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217e90614b63565b60405180910390fd5b8060205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161222191906147e1565b60405180910390a25050565b612235612d78565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ba90614b63565b60405180910390fd5b670de0b6b3a76400006103e860036122d9610e26565b6122e39190614c16565b6122ed9190614c84565b6122f79190614c84565b811015612339576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233090615262565b60405180910390fd5b670de0b6b3a76400008161234d9190614c16565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc6008546040516123849190614834565b60405180910390a150565b60115f9054906101000a900460ff1681565b6123a9612d78565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242e90614b63565b60405180910390fd5b620186a06001612445610e26565b61244f9190614c16565b6124599190614c84565b81101561249b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612492906152f0565b60405180910390fd5b6103e860016124a8610e26565b6124b29190614c16565b6124bc9190614c84565b8111156124fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f59061537e565b60405180910390fd5b80600b8190555050565b60125481565b612516612d78565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259b90614b63565b60405180910390fd5b670de0b6b3a76400006103e860026125ba610e26565b6125c49190614c16565b6125ce9190614c84565b6125d89190614c84565b81101561261a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126119061540c565b60405180910390fd5b670de0b6b3a76400008161262e9190614c16565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e6007546040516126659190614834565b60405180910390a150565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6126fa612d78565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612788576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277f90614b63565b60405180910390fd5b60016018819055505f6019819055505f601a819055505f601b81905550601b54601a546019546018546127bb9190614d42565b6127c59190614d42565b6127cf9190614d42565b6017819055506005601754111561281b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281290615474565b60405180910390fd5b60016013819055505f6014819055505f6015819055505f60168190555060165460155460145460135461284e9190614d42565b6128589190614d42565b6128629190614d42565b601281905550600560125411156128ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a590615474565b60405180910390fd5b565b600b5481565b60165481565b6128c4612d78565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612952576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294990614b63565b60405180910390fd5b836018819055508260198190555081601a8190555080601b81905550601b54601a546019546018546129849190614d42565b61298e9190614d42565b6129989190614d42565b601781905550601e60175411156129e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129db90614dbf565b60405180910390fd5b50505050565b6129f2612d78565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a7790614b63565b60405180910390fd5b5f60115f6101000a81548160ff021916908315150217905550565b600e5481565b60145481565b612aaf612d78565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3490614b63565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba290615502565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612c71612d78565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612cff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf690614b63565b60405180910390fd5b5f3373ffffffffffffffffffffffffffffffffffffffff1647604051612d249061554d565b5f6040518083038185875af1925050503d805f8114612d5e576040519150601f19603f3d011682016040523d82523d5f602084013e612d63565b606091505b50508091505050565b60195481565b601c5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de4906155d1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e529061565f565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612f359190614834565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612fb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fa7906156ed565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361301e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130159061577b565b60405180910390fd5b5f8111613060576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613057906157e3565b60405180910390fd5b600f60019054906101000a900460ff1661314f5760205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061310f575060205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b61314e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131459061584b565b60405180910390fd5b5b600f5f9054906101000a900460ff16156135d15761316b611d7b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156131d957506131a9611d7b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561321157505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561324b575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561329e575060205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156132f1575060205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156135d05760225f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015613393575060215f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561343a576006548111156133dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133d4906158d9565b60405180910390fd5b6008546133e983611568565b826133f49190614d42565b1115613435576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161342c90615941565b60405180910390fd5b6135cf565b60225f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156134d7575060215f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561352657600754811115613521576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613518906159cf565b60405180910390fd5b6135ce565b60215f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166135cd5760085461358083611568565b8261358b9190614d42565b11156135cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135c390615941565b60405180910390fd5b5b5b5b5b5b5f6135db30611568565b90505f600b5482101590508080156135ff5750600f60029054906101000a900460ff165b80156136185750600a60149054906101000a900460ff16155b801561366b575060225f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156136be575060205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015613711575060205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15613754576001600a60146101000a81548160ff021916908315150217905550613739613b6a565b5f600a60146101000a81548160ff0219169083151502179055505b5f6001905060205f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806137f4575060205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156137fd575f90505b5f8115613aae5760225f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561385b57505f601754115b15613949576064601754866138709190614c16565b61387a9190614c84565b90506017546019548261388d9190614c16565b6138979190614c84565b601d5f8282546138a79190614d42565b92505081905550601754601854826138bf9190614c16565b6138c99190614c84565b601c5f8282546138d99190614d42565b92505081905550601754601a54826138f19190614c16565b6138fb9190614c84565b601e5f82825461390b9190614d42565b92505081905550601754601b54826139239190614c16565b61392d9190614c84565b601f5f82825461393d9190614d42565b92505081905550613a8b565b60225f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156139a057505f601254115b15613a8a576064601254866139b59190614c16565b6139bf9190614c84565b9050601254601454826139d29190614c16565b6139dc9190614c84565b601d5f8282546139ec9190614d42565b9250508190555060125460135482613a049190614c16565b613a0e9190614c84565b601c5f828254613a1e9190614d42565b9250508190555060125460155482613a369190614c16565b613a409190614c84565b601e5f828254613a509190614d42565b9250508190555060125460165482613a689190614c16565b613a729190614c84565b601f5f828254613a829190614d42565b925050819055505b5b5f811115613a9f57613a9e873083613e2c565b5b8085613aab91906159ed565b94505b613ab9878787613e2c565b50505050505050565b8060225f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550613b20828261408b565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f601f54118015613b855750601f54613b8230611568565b10155b15613b9757613b9630601f5461411c565b5b5f601f819055505f613ba830611568565b90505f601e54601c54601d54613bbe9190614d42565b613bc89190614d42565b90505f821480613bd757505f81145b15613be3575050613e2a565b603c600b54613bf29190614c16565b821115613c0b57603c600b54613c089190614c16565b91505b5f80600283601d5486613c1e9190614c16565b613c289190614c84565b613c329190614c84565b9050613c488185613c4391906159ed565b6142c9565b5f4790505f8190505f6002601d54613c609190614c84565b86613c6b91906159ed565b601c5484613c799190614c16565b613c839190614c84565b90505f6002601d54613c959190614c84565b87613ca091906159ed565b601e5485613cae9190614c16565b613cb89190614c84565b90508082613cc69190614d42565b83613cd191906159ed565b92505f601d819055505f601c819055505f601e819055505f601f819055505f85118015613cfd57505f83115b15613d0d57613d0c85846144ff565b5b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613d529061554d565b5f6040518083038185875af1925050503d805f8114613d8c576040519150601f19603f3d011682016040523d82523d5f602084013e613d91565b606091505b505080965050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613ddc9061554d565b5f6040518083038185875af1925050503d805f8114613e16576040519150601f19603f3d011682016040523d82523d5f602084013e613e1b565b606091505b50508096505050505050505050505b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613e9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e91906156ed565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613f08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613eff9061577b565b60405180910390fd5b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613f8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f8290615a90565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546140199190614d42565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161407d9190614834565b60405180910390a350505050565b8060215f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051614110929190615aae565b60405180910390a15050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361418a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161418190615b45565b60405180910390fd5b5f805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561420d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161420490615bd3565b60405180910390fd5b8181035f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160025f82825403925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516142bc9190614834565b60405180910390a3505050565b5f600267ffffffffffffffff8111156142e5576142e4615bf1565b5b6040519080825280602002602001820160405280156143135781602001602082028036833780820191505090505b50905030815f8151811061432a57614329615c1e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156143ce573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906143f29190615c5f565b8160018151811061440657614405615c1e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061446c3060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612d7f565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016144ce959493929190615d7a565b5f604051808303815f87803b1580156144e5575f80fd5b505af11580156144f7573d5f803e3d5ffd5b505050505050565b61452b3060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612d7f565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8061dead426040518863ffffffff1660e01b815260040161459296959493929190615dd2565b60606040518083038185885af11580156145ae573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906145d39190615e31565b5050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156146115780820151818401526020810190506145f6565b5f8484015250505050565b5f601f19601f8301169050919050565b5f614636826145da565b61464081856145e4565b93506146508185602086016145f4565b6146598161461c565b840191505092915050565b5f6020820190508181035f83015261467c818461462c565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f6146c66146c16146bc84614684565b6146a3565b614684565b9050919050565b5f6146d7826146ac565b9050919050565b5f6146e8826146cd565b9050919050565b6146f8816146de565b82525050565b5f6020820190506147115f8301846146ef565b92915050565b5f80fd5b5f61472582614684565b9050919050565b6147358161471b565b811461473f575f80fd5b50565b5f813590506147508161472c565b92915050565b5f819050919050565b61476881614756565b8114614772575f80fd5b50565b5f813590506147838161475f565b92915050565b5f806040838503121561479f5761479e614717565b5b5f6147ac85828601614742565b92505060206147bd85828601614775565b9150509250929050565b5f8115159050919050565b6147db816147c7565b82525050565b5f6020820190506147f45f8301846147d2565b92915050565b5f6020828403121561480f5761480e614717565b5b5f61481c84828501614742565b91505092915050565b61482e81614756565b82525050565b5f6020820190506148475f830184614825565b92915050565b5f805f6060848603121561486457614863614717565b5b5f61487186828701614742565b935050602061488286828701614742565b925050604061489386828701614775565b9150509250925092565b5f602082840312156148b2576148b1614717565b5b5f6148bf84828501614775565b91505092915050565b5f805f80608085870312156148e0576148df614717565b5b5f6148ed87828801614775565b94505060206148fe87828801614775565b935050604061490f87828801614775565b925050606061492087828801614775565b91505092959194509250565b5f60ff82169050919050565b6149418161492c565b82525050565b5f60208201905061495a5f830184614938565b92915050565b6149698161471b565b82525050565b5f6020820190506149825f830184614960565b92915050565b614991816147c7565b811461499b575f80fd5b50565b5f813590506149ac81614988565b92915050565b5f80604083850312156149c8576149c7614717565b5b5f6149d585828601614742565b92505060206149e68582860161499e565b9150509250929050565b5f8060408385031215614a0657614a05614717565b5b5f614a1385828601614742565b9250506020614a2485828601614742565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680614a7257607f821691505b602082108103614a8557614a84614a2e565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f614ae56028836145e4565b9150614af082614a8b565b604082019050919050565b5f6020820190508181035f830152614b1281614ad9565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614b4d6020836145e4565b9150614b5882614b19565b602082019050919050565b5f6020820190508181035f830152614b7a81614b41565b9050919050565b7f5f6d656d654164647265737320616464726573732063616e6e6f7420626520305f82015250565b5f614bb56020836145e4565b9150614bc082614b81565b602082019050919050565b5f6020820190508181035f830152614be281614ba9565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f614c2082614756565b9150614c2b83614756565b9250828202614c3981614756565b91508282048414831517614c5057614c4f614be9565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f614c8e82614756565b9150614c9983614756565b925082614ca957614ca8614c57565b5b828204905092915050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572205f8201527f7468616e20302e32250000000000000000000000000000000000000000000000602082015250565b5f614d0e6029836145e4565b9150614d1982614cb4565b604082019050919050565b5f6020820190508181035f830152614d3b81614d02565b9050919050565b5f614d4c82614756565b9150614d5783614756565b9250828201905080821115614d6f57614d6e614be9565b5b92915050565b7f4d757374206b656570206665657320617420333025206f72206c6573730000005f82015250565b5f614da9601d836145e4565b9150614db482614d75565b602082019050919050565b5f6020820190508181035f830152614dd681614d9d565b9050919050565b7f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f5f8201527f7420626520300000000000000000000000000000000000000000000000000000602082015250565b5f614e376026836145e4565b9150614e4282614ddd565b604082019050919050565b5f6020820190508181035f830152614e6481614e2b565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d205f8201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b5f614ec56027836145e4565b9150614ed082614e6b565b604082019050919050565b5f6020820190508181035f830152614ef281614eb9565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000005f82015250565b5f614f2d601a836145e4565b9150614f3882614ef9565b602082019050919050565b5f6020820190508181035f830152614f5a81614f21565b9050919050565b7f43616e2774207769746864726177206e617469766520746f6b656e73000000005f82015250565b5f614f95601c836145e4565b9150614fa082614f61565b602082019050919050565b5f6020820190508181035f830152614fc281614f89565b9050919050565b5f81519050614fd78161475f565b92915050565b5f60208284031215614ff257614ff1614717565b5b5f614fff84828501614fc9565b91505092915050565b5f60408201905061501b5f830185614960565b6150286020830184614825565b9392505050565b5f8151905061503d81614988565b92915050565b5f6020828403121561505857615057614717565b5b5f6150658482850161502f565b91505092915050565b7f43616e6e6f74207265656e61626c652074726164696e670000000000000000005f82015250565b5f6150a26017836145e4565b91506150ad8261506e565b602082019050919050565b5f6020820190508181035f8301526150cf81615096565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f6151306039836145e4565b915061513b826150d6565b604082019050919050565b5f6020820190508181035f83015261515d81615124565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6151be6025836145e4565b91506151c982615164565b604082019050919050565b5f6020820190508181035f8301526151eb816151b2565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f775f8201527f6572207468616e20302e33250000000000000000000000000000000000000000602082015250565b5f61524c602c836145e4565b9150615257826151f2565b604082019050919050565b5f6020820190508181035f83015261527981615240565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f6152da6035836145e4565b91506152e582615280565b604082019050919050565b5f6020820190508181035f830152615307816152ce565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e312520746f74616c20737570706c792e000000000000000000000000602082015250565b5f6153686034836145e4565b91506153738261530e565b604082019050919050565b5f6020820190508181035f8301526153958161535c565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f7765725f8201527f207468616e20302e322500000000000000000000000000000000000000000000602082015250565b5f6153f6602a836145e4565b91506154018261539c565b604082019050919050565b5f6020820190508181035f830152615423816153ea565b9050919050565b7f4d757374206b6565702066656573206174203525206f72206c657373000000005f82015250565b5f61545e601c836145e4565b91506154698261542a565b602082019050919050565b5f6020820190508181035f83015261548b81615452565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6154ec6026836145e4565b91506154f782615492565b604082019050919050565b5f6020820190508181035f830152615519816154e0565b9050919050565b5f81905092915050565b50565b5f6155385f83615520565b91506155438261552a565b5f82019050919050565b5f6155578261552d565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6155bb6024836145e4565b91506155c682615561565b604082019050919050565b5f6020820190508181035f8301526155e8816155af565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6156496022836145e4565b9150615654826155ef565b604082019050919050565b5f6020820190508181035f8301526156768161563d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6156d76025836145e4565b91506156e28261567d565b604082019050919050565b5f6020820190508181035f830152615704816156cb565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6157656023836145e4565b91506157708261570b565b604082019050919050565b5f6020820190508181035f83015261579281615759565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e20300000005f82015250565b5f6157cd601d836145e4565b91506157d882615799565b602082019050919050565b5f6020820190508181035f8301526157fa816157c1565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f6158356016836145e4565b915061584082615801565b602082019050919050565b5f6020820190508181035f83015261586281615829565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b5f6158c36028836145e4565b91506158ce82615869565b604082019050919050565b5f6020820190508181035f8301526158f0816158b7565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c657400000000000000005f82015250565b5f61592b6018836145e4565b9150615936826158f7565b602082019050919050565b5f6020820190508181035f8301526159588161591f565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b5f6159b9602a836145e4565b91506159c48261595f565b604082019050919050565b5f6020820190508181035f8301526159e6816159ad565b9050919050565b5f6159f782614756565b9150615a0283614756565b9250828203905081811115615a1a57615a19614be9565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f615a7a6026836145e4565b9150615a8582615a20565b604082019050919050565b5f6020820190508181035f830152615aa781615a6e565b9050919050565b5f604082019050615ac15f830185614960565b615ace60208301846147d2565b9392505050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f615b2f6021836145e4565b9150615b3a82615ad5565b604082019050919050565b5f6020820190508181035f830152615b5c81615b23565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f615bbd6022836145e4565b9150615bc882615b63565b604082019050919050565b5f6020820190508181035f830152615bea81615bb1565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050615c598161472c565b92915050565b5f60208284031215615c7457615c73614717565b5b5f615c8184828501615c4b565b91505092915050565b5f819050919050565b5f615cad615ca8615ca384615c8a565b6146a3565b614756565b9050919050565b615cbd81615c93565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b615cf58161471b565b82525050565b5f615d068383615cec565b60208301905092915050565b5f602082019050919050565b5f615d2882615cc3565b615d328185615ccd565b9350615d3d83615cdd565b805f5b83811015615d6d578151615d548882615cfb565b9750615d5f83615d12565b925050600181019050615d40565b5085935050505092915050565b5f60a082019050615d8d5f830188614825565b615d9a6020830187615cb4565b8181036040830152615dac8186615d1e565b9050615dbb6060830185614960565b615dc86080830184614825565b9695505050505050565b5f60c082019050615de55f830189614960565b615df26020830188614825565b615dff6040830187615cb4565b615e0c6060830186615cb4565b615e196080830185614960565b615e2660a0830184614825565b979650505050505050565b5f805f60608486031215615e4857615e47614717565b5b5f615e5586828701614fc9565b9350506020615e6686828701614fc9565b9250506040615e7786828701614fc9565b915050925092509256fea2646970667358221220f512ec294ab99711e8b76a556f5e8dbce196785d6369b53065ad7aa0dda0498864736f6c63430008150033

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.