ETH Price: $3,117.85 (-1.63%)

Token

DODO (DODO)
 

Overview

Max Total Supply

10,000,000 DODO

Holders

3,512 ( -0.114%)

Market

Price

$0.25 @ 0.000080 ETH (-15.10%)

Onchain Market Cap

$2,505,480.00

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
tism.eth
Balance
120,584.659618485251359479 DODO

Value
$30,212.25 ( ~9.6901 Eth) [1.2058%]
0xc0314e2c4E464d5e9532329Df6B6EbB31c7d2BFC
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Dodo is a meme token and has no defined utility.

Market

Volume (24H):$53,500.00
Market Capitalization:$0.00
Circulating Supply:0.00 DODO
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
DODO

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : DODO.sol
// SPDX-License-Identifier: MIT

//   Website: https://dodo.lol
//   Twitter: @Dodo_eth_

pragma solidity ^0.8.10;


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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

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

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

/* Library Definitions */

library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

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


interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

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

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

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

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

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

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

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

interface IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

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

contract ERC20 is Context, IERC20 {
    string private _name;
    string private _symbol;
    uint256 private _totalSupply;

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

    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 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 transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, 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 _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

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

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

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

        _afterTokenTransfer(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);
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        _afterTokenTransfer(sender, recipient, amount);
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

/* Main Contract */
contract DODO is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapRouter;
    address public uniswapPair;

    address public mkWallet;
    address public dvWallet;

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

    uint256 public maxTxnSize;
    uint256 public swapTokensAtAmount;
    uint256 public maxWalletSize;

    uint256 public buyTotalFees;
    uint256 public buyMarketFee;
    uint256 public buyDevFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketFee;
    uint256 public sellDevFee;

    uint256 public tokensForMarket;
    uint256 public tokensForDev;

    bool private swapping;

    mapping(address => bool) private isBlackList;
    mapping(address => bool) public isExcludedFromFees;
    mapping(address => bool) public isExcludemaxTxnSize;

    mapping(address => bool) public ammPairs;
    
    constructor() ERC20("DODO", "DODO") {
        uniswapRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapPair = IUniswapV2Factory(uniswapRouter.factory()).createPair(address(this), uniswapRouter.WETH());
        
        
        mkWallet = address(0x9daB76Cefee6561d7B729C89C1fe96830D893F55);
        dvWallet = address(0x671541f988520D27c1A5bB67b1b3FF1a1CB10E48);

        isExcludemaxTxnSize[address(uniswapRouter)] = true;
        isExcludemaxTxnSize[address(uniswapPair)] = true;
        isExcludemaxTxnSize[owner()] = true;
        isExcludemaxTxnSize[address(this)] = true;
        isExcludemaxTxnSize[address(0xdead)] = true;

        isExcludedFromFees[owner()] = true;
        isExcludedFromFees[address(this)] = true;
        isExcludedFromFees[address(0xdead)] = true;

        ammPairs[address(uniswapPair)] = true;

        uint256 totalSupply = 10_000_000 * 1e18;
        swapTokensAtAmount = (totalSupply * 5) / 10000; // 0.05% swap wallet

        maxTxnSize = 200_000 * 1e18; // 2% from total supply maxTxnSizeTxn
        maxWalletSize = 200_000 * 1e18; // 2% from total supply maxWalletSize

        buyMarketFee = 0;
        buyDevFee = 0;
        buyTotalFees = buyMarketFee + buyDevFee;

        sellMarketFee = 0;
        sellDevFee = 0;
        sellTotalFees = sellMarketFee + sellDevFee;

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    function openTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
    }

    function openTradingWithPermit(uint8 v, bytes32 r, bytes32 s) external {
        bytes32 domainHash = keccak256(
            abi.encode(
                keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'),
                keccak256(bytes('Trading Token')),
                keccak256(bytes('1')),
                block.chainid,
                address(this)
            )
        );

        bytes32 structHash = keccak256(
            abi.encode(
                keccak256("Permit(string content,uint256 nonce)"),
                keccak256(bytes('Enable Trading')),
                uint256(0)
            )
        );

        bytes32 digest = keccak256(
            abi.encodePacked(
                '\x19\x01',
                domainHash,
                structHash                
            )
        );

        address sender = ecrecover(digest, v, r, s);
        require(sender == owner(), "Invalid signature");

        tradingActive = true;
        swapEnabled = true;
    }

    function excludeFrommaxTxnSize(address addr, bool value) external onlyOwner {
        isExcludemaxTxnSize[addr] = value;
    }

    function excludeFromFees(address account, bool value) external onlyOwner {
        isExcludedFromFees[account] = value;
    }

    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }

    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

    function updateMaxWalletSize(uint256 newNum) external onlyOwner {
        require(newNum >= ((totalSupply() * 5) / 1000) / 1e18, "Cannot set maxWalletSize lower than 0.5%");
        maxWalletSize = newNum * (10**18);
    }

    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool) {
        require(newAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply.");
        require(newAmount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply.");
        swapTokensAtAmount = newAmount;
        return true;
    }

    function updatemaxTxnSize(uint256 newNum) external onlyOwner {
        require(newNum >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set maxTxnSize lower than 0.1%");
        maxTxnSize = newNum * (10**18);
    }

    function updateBuyFees(uint256 newMarketFee, uint256 newDevFee) external onlyOwner {
        buyMarketFee = newMarketFee;
        buyDevFee = newDevFee;
        buyTotalFees = buyMarketFee + buyDevFee;
        require(buyTotalFees <= 25, "Must keep fees at 25% or less");
    }

    function updateSellFees(uint256 newMarketFee, uint256 newDevFee) external onlyOwner {
        sellMarketFee = newMarketFee;
        sellDevFee = newDevFee;
        sellTotalFees = sellMarketFee + sellDevFee;
        require(sellTotalFees <= 25, "Must keep fees at 25% or less");
    }

    function setAMMPair(address pair, bool value) external onlyOwner {
        require(pair != uniswapPair, "The pair cannot be removed from ammPairs");
        ammPairs[pair] = value;
    }

    function setBL(address addr, bool enable) external onlyOwner {
        isBlackList[addr] = enable;
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForMarket + tokensForDev;
        bool success;

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

        if (contractBalance > swapTokensAtAmount * 20)
            contractBalance = swapTokensAtAmount * 20;

        uint256 initialETHBalance = address(this).balance;
        swapTokensForEth(contractBalance);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
        uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap);

        tokensForMarket = 0;
        tokensForDev = 0;

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

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

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

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

    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(!isBlackList[from], "[from] black list");
        require(!isBlackList[to], "[to] black list");

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

        if (limitsInEffect) {
            if (from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping) {
                if (!tradingActive) {
                    require(isExcludedFromFees[from] || isExcludedFromFees[to], "Trading is not active.");
                }

                //when buy
                if (ammPairs[from] && !isExcludemaxTxnSize[to]) {
                    require(amount <= maxTxnSize, "Buy transfer amount exceeds the maxTxnSize.");
                    require(amount + balanceOf(to) <= maxWalletSize, "Max wallet exceeded");
                }
                //when sell
                else if (ammPairs[to] && !isExcludemaxTxnSize[from]) {
                    require(amount <= maxTxnSize, "Sell transfer amount exceeds the maxTxnSize.");
                }
                else if (!isExcludemaxTxnSize[to]) {
                    require(amount + balanceOf(to) <= maxWalletSize, "Max wallet exceeded");
                }
            }
        }

        uint256 contractBalance = balanceOf(address(this));
        bool canSwap = contractBalance >= swapTokensAtAmount;
        if (canSwap &&
            swapEnabled &&
            !swapping &&
            !ammPairs[from] &&
            !isExcludedFromFees[from] &&
            !isExcludedFromFees[to]) {

            swapping = true;
            swapBack();
            swapping = false;
        }

        bool takeFee = !swapping;
        if (isExcludedFromFees[from] || isExcludedFromFees[to])
            takeFee = false;

        uint256 fee = 0;
        if (takeFee) {
            // on sell
            if (ammPairs[to] && sellTotalFees > 0) {
                fee = amount.mul(sellTotalFees).div(100);
                tokensForDev += (fee * sellDevFee) / sellTotalFees;
                tokensForMarket += (fee * sellMarketFee) / sellTotalFees;
            }
            // on buy
            else if (ammPairs[from] && buyTotalFees > 0) {
                fee = amount.mul(buyTotalFees).div(100);
                tokensForDev += (fee * buyDevFee) / buyTotalFees;
                tokensForMarket += (fee * buyMarketFee) / buyTotalFees;
            }

            if (fee > 0)
                super._transfer(from, address(this), fee);

            amount -= fee;
        }

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

    function min(uint256 a, uint256 b) private pure returns (uint256) {
        return (a > b) ? b : a;
    }
}

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

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":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"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":"","type":"address"}],"name":"ammPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketFee","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":"dvWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFrommaxTxnSize","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":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludemaxTxnSize","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxnSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mkWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"openTradingWithPermit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketFee","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":"setAMMPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setBL","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":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarket","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":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updatemaxTxnSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526000600860146101000a81548160ff0219169083151502179055506000600860156101000a81548160ff0219169083151502179055506001600860166101000a81548160ff0219169083151502179055503480156200006257600080fd5b506040518060400160405280600481526020017f444f444f000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f444f444f000000000000000000000000000000000000000000000000000000008152508160009080519060200190620000e792919062000a79565b5080600190805190602001906200010092919062000a79565b5050506200012362000117620007fd60201b60201c565b6200080560201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060805173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001df919062000b93565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060805173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000249573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026f919062000b93565b6040518363ffffffff1660e01b81526004016200028e92919062000bd6565b6020604051808303816000875af1158015620002ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d4919062000b93565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550739dab76cefee6561d7b729c89c1fe96830d893f55600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073671541f988520d27c1a5bb67b1b3ff1a1cb10e48600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016017600060805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160176000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160176000620004a8620008cb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016017600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160166000620005c1620008cb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016016600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160186000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060006a084595161401484a000000905061271060058262000760919062000c3c565b6200076c919062000ccc565b600a81905550692a5a058fc295ed000000600981905550692a5a058fc295ed000000600b819055506000600d819055506000600e81905550600e54600d54620007b6919062000d04565b600c8190555060006010819055506000601181905550601154601054620007de919062000d04565b600f81905550620007f63382620008f560201b60201c565b5062000e77565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000968576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200095f9062000dc2565b60405180910390fd5b6200097c6000838362000a6f60201b60201c565b806002600082825462000990919062000d04565b9250508190555080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620009e8919062000d04565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a4f919062000df5565b60405180910390a362000a6b6000838362000a7460201b60201c565b5050565b505050565b505050565b82805462000a879062000e41565b90600052602060002090601f01602090048101928262000aab576000855562000af7565b82601f1062000ac657805160ff191683800117855562000af7565b8280016001018555821562000af7579182015b8281111562000af657825182559160200191906001019062000ad9565b5b50905062000b06919062000b0a565b5090565b5b8082111562000b2557600081600090555060010162000b0b565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b5b8262000b2e565b9050919050565b62000b6d8162000b4e565b811462000b7957600080fd5b50565b60008151905062000b8d8162000b62565b92915050565b60006020828403121562000bac5762000bab62000b29565b5b600062000bbc8482850162000b7c565b91505092915050565b62000bd08162000b4e565b82525050565b600060408201905062000bed600083018562000bc5565b62000bfc602083018462000bc5565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000c498262000c03565b915062000c568362000c03565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000c925762000c9162000c0d565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000cd98262000c03565b915062000ce68362000c03565b92508262000cf95762000cf862000c9d565b5b828204905092915050565b600062000d118262000c03565b915062000d1e8362000c03565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000d565762000d5562000c0d565b5b828201905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000daa601f8362000d61565b915062000db78262000d72565b602082019050919050565b6000602082019050818103600083015262000ddd8162000d9b565b9050919050565b62000def8162000c03565b82525050565b600060208201905062000e0c600083018462000de4565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000e5a57607f821691505b6020821081141562000e715762000e7062000e12565b5b50919050565b608051614c8762000ea8600039600081816116800152818161343701528181613518015261353f0152614c876000f3fe6080604052600436106102975760003560e01c80638da5cb5b1161015a578063bbc0c742116100c1578063d85ba0631161007a578063d85ba06314610a2b578063dd62ed3e14610a56578063e2f4560514610a93578063e4a1b95f14610abe578063e7a996ab14610ae9578063f2fde38b14610b125761029e565b8063bbc0c7421461092d578063c02174ca14610958578063c024666814610983578063c816841b146109ac578063c9567bf9146109d7578063d257b34f146109ee5761029e565b80639c3b4fdc116101135780639c3b4fdc146107f55780639fccce3214610820578063a0d82dc51461084b578063a457c2d714610876578063a72905a2146108b3578063a9059cbb146108f05761029e565b80638da5cb5b146106e55780638f3fa86014610710578063917d3a651461073b578063924de9b71461077857806395d89b41146107a1578063979919aa146107cc5761029e565b806345434032116101fe5780636ddd1713116101b75780636ddd1713146105e557806370a0823114610610578063715018a61461064d578063735de9f714610664578063751039fc1461068f5780637b1d787d146106ba5761029e565b806345434032146104d75780634a62bb65146105005780634fbee1931461052b5780636323d7cb1461056857806366ca9b83146105915780636a486a8e146105ba5761029e565b806324887e801161025057806324887e80146103c75780632b5f295a146103f05780632d99d32e1461041b578063313ce5671461044457806335b5fb631461046f578063395093511461049a5761029e565b806302dbd8f8146102a357806306fdde03146102cc578063095ea7b3146102f757806318160ddd146103345780631f7ea8da1461035f57806323b872dd1461038a5761029e565b3661029e57005b600080fd5b3480156102af57600080fd5b506102ca60048036038101906102c59190613626565b610b3b565b005b3480156102d857600080fd5b506102e1610c25565b6040516102ee91906136ff565b60405180910390f35b34801561030357600080fd5b5061031e6004803603810190610319919061377f565b610cb7565b60405161032b91906137da565b60405180910390f35b34801561034057600080fd5b50610349610cd5565b6040516103569190613804565b60405180910390f35b34801561036b57600080fd5b50610374610cdf565b6040516103819190613804565b60405180910390f35b34801561039657600080fd5b506103b160048036038101906103ac919061381f565b610ce5565b6040516103be91906137da565b60405180910390f35b3480156103d357600080fd5b506103ee60048036038101906103e99190613872565b610ddd565b005b3480156103fc57600080fd5b50610405610eec565b6040516104129190613804565b60405180910390f35b34801561042757600080fd5b50610442600480360381019061043d91906138cb565b610ef2565b005b34801561045057600080fd5b5061045961105a565b6040516104669190613927565b60405180910390f35b34801561047b57600080fd5b50610484611063565b6040516104919190613804565b60405180910390f35b3480156104a657600080fd5b506104c160048036038101906104bc919061377f565b611069565b6040516104ce91906137da565b60405180910390f35b3480156104e357600080fd5b506104fe60048036038101906104f991906138cb565b611115565b005b34801561050c57600080fd5b506105156111ec565b60405161052291906137da565b60405180910390f35b34801561053757600080fd5b50610552600480360381019061054d9190613942565b6111ff565b60405161055f91906137da565b60405180910390f35b34801561057457600080fd5b5061058f600480360381019061058a91906139d1565b61121f565b005b34801561059d57600080fd5b506105b860048036038101906105b39190613626565b6114aa565b005b3480156105c657600080fd5b506105cf611594565b6040516105dc9190613804565b60405180910390f35b3480156105f157600080fd5b506105fa61159a565b60405161060791906137da565b60405180910390f35b34801561061c57600080fd5b5061063760048036038101906106329190613942565b6115ad565b6040516106449190613804565b60405180910390f35b34801561065957600080fd5b506106626115f6565b005b34801561067057600080fd5b5061067961167e565b6040516106869190613a83565b60405180910390f35b34801561069b57600080fd5b506106a46116a2565b6040516106b191906137da565b60405180910390f35b3480156106c657600080fd5b506106cf611742565b6040516106dc9190613aad565b60405180910390f35b3480156106f157600080fd5b506106fa611768565b6040516107079190613aad565b60405180910390f35b34801561071c57600080fd5b50610725611792565b6040516107329190613804565b60405180910390f35b34801561074757600080fd5b50610762600480360381019061075d9190613942565b611798565b60405161076f91906137da565b60405180910390f35b34801561078457600080fd5b5061079f600480360381019061079a9190613ac8565b6117b8565b005b3480156107ad57600080fd5b506107b6611851565b6040516107c391906136ff565b60405180910390f35b3480156107d857600080fd5b506107f360048036038101906107ee9190613872565b6118e3565b005b34801561080157600080fd5b5061080a6119f2565b6040516108179190613804565b60405180910390f35b34801561082c57600080fd5b506108356119f8565b6040516108429190613804565b60405180910390f35b34801561085757600080fd5b506108606119fe565b60405161086d9190613804565b60405180910390f35b34801561088257600080fd5b5061089d6004803603810190610898919061377f565b611a04565b6040516108aa91906137da565b60405180910390f35b3480156108bf57600080fd5b506108da60048036038101906108d59190613942565b611aef565b6040516108e791906137da565b60405180910390f35b3480156108fc57600080fd5b506109176004803603810190610912919061377f565b611b0f565b60405161092491906137da565b60405180910390f35b34801561093957600080fd5b50610942611b2d565b60405161094f91906137da565b60405180910390f35b34801561096457600080fd5b5061096d611b40565b60405161097a9190613aad565b60405180910390f35b34801561098f57600080fd5b506109aa60048036038101906109a591906138cb565b611b66565b005b3480156109b857600080fd5b506109c1611c3d565b6040516109ce9190613aad565b60405180910390f35b3480156109e357600080fd5b506109ec611c63565b005b3480156109fa57600080fd5b50610a156004803603810190610a109190613872565b611d17565b604051610a2291906137da565b60405180910390f35b348015610a3757600080fd5b50610a40611e6c565b604051610a4d9190613804565b60405180910390f35b348015610a6257600080fd5b50610a7d6004803603810190610a789190613af5565b611e72565b604051610a8a9190613804565b60405180910390f35b348015610a9f57600080fd5b50610aa8611ef9565b604051610ab59190613804565b60405180910390f35b348015610aca57600080fd5b50610ad3611eff565b604051610ae09190613804565b60405180910390f35b348015610af557600080fd5b50610b106004803603810190610b0b91906138cb565b611f05565b005b348015610b1e57600080fd5b50610b396004803603810190610b349190613942565b611fdc565b005b610b436120d4565b73ffffffffffffffffffffffffffffffffffffffff16610b61611768565b73ffffffffffffffffffffffffffffffffffffffff1614610bb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bae90613b81565b60405180910390fd5b8160108190555080601181905550601154601054610bd59190613bd0565b600f819055506019600f541115610c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1890613c72565b60405180910390fd5b5050565b606060008054610c3490613cc1565b80601f0160208091040260200160405190810160405280929190818152602001828054610c6090613cc1565b8015610cad5780601f10610c8257610100808354040283529160200191610cad565b820191906000526020600020905b815481529060010190602001808311610c9057829003601f168201915b5050505050905090565b6000610ccb610cc46120d4565b84846120dc565b6001905092915050565b6000600254905090565b60125481565b6000610cf28484846122a7565b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d3d6120d4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610dbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db490613d65565b60405180910390fd5b610dd185610dc96120d4565b8584036120dc565b60019150509392505050565b610de56120d4565b73ffffffffffffffffffffffffffffffffffffffff16610e03611768565b73ffffffffffffffffffffffffffffffffffffffff1614610e59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5090613b81565b60405180910390fd5b670de0b6b3a76400006103e86005610e6f610cd5565b610e799190613d85565b610e839190613e0e565b610e8d9190613e0e565b811015610ecf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec690613eb1565b60405180910390fd5b670de0b6b3a764000081610ee39190613d85565b600b8190555050565b60095481565b610efa6120d4565b73ffffffffffffffffffffffffffffffffffffffff16610f18611768565b73ffffffffffffffffffffffffffffffffffffffff1614610f6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6590613b81565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610fff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff690613f43565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006012905090565b60105481565b600061110b6110766120d4565b8484600460006110846120d4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111069190613bd0565b6120dc565b6001905092915050565b61111d6120d4565b73ffffffffffffffffffffffffffffffffffffffff1661113b611768565b73ffffffffffffffffffffffffffffffffffffffff1614611191576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118890613b81565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600860169054906101000a900460ff1681565b60166020528060005260406000206000915054906101000a900460ff1681565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600d81526020017f54726164696e6720546f6b656e00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152508051906020012046306040516020016112d2959493929190613f72565b60405160208183030381529060405280519060200120905060007f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e6700000000000000000000000000000000000081525080519060200120600060405160200161135e93929190613fc5565b6040516020818303038152906040528051906020012090506000828260405160200161138b929190614074565b6040516020818303038152906040528051906020012090506000600182888888604051600081526020016040526040516113c894939291906140ab565b6020604051602081039080840390855afa1580156113ea573d6000803e3d6000fd5b5050506020604051035190506113fe611768565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461146b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114629061413c565b60405180910390fd5b6001600860146101000a81548160ff0219169083151502179055506001600860156101000a81548160ff02191690831515021790555050505050505050565b6114b26120d4565b73ffffffffffffffffffffffffffffffffffffffff166114d0611768565b73ffffffffffffffffffffffffffffffffffffffff1614611526576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151d90613b81565b60405180910390fd5b81600d8190555080600e81905550600e54600d546115449190613bd0565b600c819055506019600c541115611590576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158790613c72565b60405180910390fd5b5050565b600f5481565b600860159054906101000a900460ff1681565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6115fe6120d4565b73ffffffffffffffffffffffffffffffffffffffff1661161c611768565b73ffffffffffffffffffffffffffffffffffffffff1614611672576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166990613b81565b60405180910390fd5b61167c6000612e2d565b565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006116ac6120d4565b73ffffffffffffffffffffffffffffffffffffffff166116ca611768565b73ffffffffffffffffffffffffffffffffffffffff1614611720576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171790613b81565b60405180910390fd5b6000600860166101000a81548160ff0219169083151502179055506001905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b5481565b60176020528060005260406000206000915054906101000a900460ff1681565b6117c06120d4565b73ffffffffffffffffffffffffffffffffffffffff166117de611768565b73ffffffffffffffffffffffffffffffffffffffff1614611834576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182b90613b81565b60405180910390fd5b80600860156101000a81548160ff02191690831515021790555050565b60606001805461186090613cc1565b80601f016020809104026020016040519081016040528092919081815260200182805461188c90613cc1565b80156118d95780601f106118ae576101008083540402835291602001916118d9565b820191906000526020600020905b8154815290600101906020018083116118bc57829003601f168201915b5050505050905090565b6118eb6120d4565b73ffffffffffffffffffffffffffffffffffffffff16611909611768565b73ffffffffffffffffffffffffffffffffffffffff161461195f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195690613b81565b60405180910390fd5b670de0b6b3a76400006103e86001611975610cd5565b61197f9190613d85565b6119899190613e0e565b6119939190613e0e565b8110156119d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cc906141ce565b60405180910390fd5b670de0b6b3a7640000816119e99190613d85565b60098190555050565b600e5481565b60135481565b60115481565b60008060046000611a136120d4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac790614260565b60405180910390fd5b611ae4611adb6120d4565b858584036120dc565b600191505092915050565b60186020528060005260406000206000915054906101000a900460ff1681565b6000611b23611b1c6120d4565b84846122a7565b6001905092915050565b600860149054906101000a900460ff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611b6e6120d4565b73ffffffffffffffffffffffffffffffffffffffff16611b8c611768565b73ffffffffffffffffffffffffffffffffffffffff1614611be2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd990613b81565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611c6b6120d4565b73ffffffffffffffffffffffffffffffffffffffff16611c89611768565b73ffffffffffffffffffffffffffffffffffffffff1614611cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd690613b81565b60405180910390fd5b6001600860146101000a81548160ff0219169083151502179055506001600860156101000a81548160ff021916908315150217905550565b6000611d216120d4565b73ffffffffffffffffffffffffffffffffffffffff16611d3f611768565b73ffffffffffffffffffffffffffffffffffffffff1614611d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8c90613b81565b60405180910390fd5b620186a06001611da3610cd5565b611dad9190613d85565b611db79190613e0e565b821015611df9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df0906142f2565b60405180910390fd5b6103e86005611e06610cd5565b611e109190613d85565b611e1a9190613e0e565b821115611e5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5390614384565b60405180910390fd5b81600a8190555060019050919050565b600c5481565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b600d5481565b611f0d6120d4565b73ffffffffffffffffffffffffffffffffffffffff16611f2b611768565b73ffffffffffffffffffffffffffffffffffffffff1614611f81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7890613b81565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611fe46120d4565b73ffffffffffffffffffffffffffffffffffffffff16612002611768565b73ffffffffffffffffffffffffffffffffffffffff1614612058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204f90613b81565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156120c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bf90614416565b60405180910390fd5b6120d181612e2d565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561214c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612143906144a8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b39061453a565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161229a9190613804565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612317576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230e906145cc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237e9061465e565b60405180910390fd5b601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612414576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240b906146ca565b60405180910390fd5b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156124a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249890614736565b60405180910390fd5b60008114156124bb576124b683836000612ef3565b612e28565b600860169054906101000a900460ff16156129b6576124d8611768565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156125465750612516611768565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561257f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125b9575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125d25750601460009054906101000a900460ff16155b156129b557600860149054906101000a900460ff166126cc57601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061268c5750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6126cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c2906147a2565b60405180910390fd5b5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561276f5750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612816576009548111156127b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b090614834565b60405180910390fd5b600b546127c5836115ad565b826127d09190613bd0565b1115612811576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612808906148a0565b60405180910390fd5b6129b4565b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156128b95750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561290857600954811115612903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128fa90614932565b60405180910390fd5b6129b3565b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166129b257600b54612965836115ad565b826129709190613bd0565b11156129b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a8906148a0565b60405180910390fd5b5b5b5b5b5b60006129c1306115ad565b90506000600a5482101590508080156129e65750600860159054906101000a900460ff165b80156129ff5750601460009054906101000a900460ff16155b8015612a555750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612aab5750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612b015750601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b45576001601460006101000a81548160ff021916908315150217905550612b29613177565b6000601460006101000a81548160ff0219169083151502179055505b6000601460009054906101000a900460ff16159050601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612bfb5750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612c0557600090505b60008115612e1857601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c6857506000600f54115b15612d0257612c956064612c87600f548861336290919063ffffffff16565b61337890919063ffffffff16565b9050600f5460115482612ca89190613d85565b612cb29190613e0e565b60136000828254612cc39190613bd0565b92505081905550600f5460105482612cdb9190613d85565b612ce59190613e0e565b60126000828254612cf69190613bd0565b92505081905550612df4565b601860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612d5d57506000600c54115b15612df357612d8a6064612d7c600c548861336290919063ffffffff16565b61337890919063ffffffff16565b9050600c54600e5482612d9d9190613d85565b612da79190613e0e565b60136000828254612db89190613bd0565b92505081905550600c54600d5482612dd09190613d85565b612dda9190613e0e565b60126000828254612deb9190613bd0565b925050819055505b5b6000811115612e0957612e08873083612ef3565b5b8085612e159190614952565b94505b612e23878787612ef3565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612f63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f5a906145cc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fca9061465e565b60405180910390fd5b612fde83838361338e565b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305c906149f8565b60405180910390fd5b818103600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546130fa9190613bd0565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161315e9190613804565b60405180910390a3613171848484613393565b50505050565b6000613182306115ad565b905060006013546012546131969190613bd0565b90506000808314806131a85750600082145b156131b557505050613360565b6014600a546131c49190613d85565b8311156131dd576014600a546131da9190613d85565b92505b60004790506131eb84613398565b600061320082476135d590919063ffffffff16565b9050600061322b8561321d6013548561336290919063ffffffff16565b61337890919063ffffffff16565b905060006012819055506000601381905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161328390614a49565b60006040518083038185875af1925050503d80600081146132c0576040519150601f19603f3d011682016040523d82523d6000602084013e6132c5565b606091505b505080945050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161331190614a49565b60006040518083038185875af1925050503d806000811461334e576040519150601f19603f3d011682016040523d82523d6000602084013e613353565b606091505b5050809450505050505050505b565b600081836133709190613d85565b905092915050565b600081836133869190613e0e565b905092915050565b505050565b505050565b6000600267ffffffffffffffff8111156133b5576133b4614a5e565b5b6040519080825280602002602001820160405280156133e35781602001602082028036833780820191505090505b50905030816000815181106133fb576133fa614a8d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134c49190614ad1565b816001815181106134d8576134d7614a8d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061353d307f0000000000000000000000000000000000000000000000000000000000000000846120dc565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161359f959493929190614bf7565b600060405180830381600087803b1580156135b957600080fd5b505af11580156135cd573d6000803e3d6000fd5b505050505050565b600081836135e39190614952565b905092915050565b600080fd5b6000819050919050565b613603816135f0565b811461360e57600080fd5b50565b600081359050613620816135fa565b92915050565b6000806040838503121561363d5761363c6135eb565b5b600061364b85828601613611565b925050602061365c85828601613611565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b838110156136a0578082015181840152602081019050613685565b838111156136af576000848401525b50505050565b6000601f19601f8301169050919050565b60006136d182613666565b6136db8185613671565b93506136eb818560208601613682565b6136f4816136b5565b840191505092915050565b6000602082019050818103600083015261371981846136c6565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061374c82613721565b9050919050565b61375c81613741565b811461376757600080fd5b50565b60008135905061377981613753565b92915050565b60008060408385031215613796576137956135eb565b5b60006137a48582860161376a565b92505060206137b585828601613611565b9150509250929050565b60008115159050919050565b6137d4816137bf565b82525050565b60006020820190506137ef60008301846137cb565b92915050565b6137fe816135f0565b82525050565b600060208201905061381960008301846137f5565b92915050565b600080600060608486031215613838576138376135eb565b5b60006138468682870161376a565b93505060206138578682870161376a565b925050604061386886828701613611565b9150509250925092565b600060208284031215613888576138876135eb565b5b600061389684828501613611565b91505092915050565b6138a8816137bf565b81146138b357600080fd5b50565b6000813590506138c58161389f565b92915050565b600080604083850312156138e2576138e16135eb565b5b60006138f08582860161376a565b9250506020613901858286016138b6565b9150509250929050565b600060ff82169050919050565b6139218161390b565b82525050565b600060208201905061393c6000830184613918565b92915050565b600060208284031215613958576139576135eb565b5b60006139668482850161376a565b91505092915050565b6139788161390b565b811461398357600080fd5b50565b6000813590506139958161396f565b92915050565b6000819050919050565b6139ae8161399b565b81146139b957600080fd5b50565b6000813590506139cb816139a5565b92915050565b6000806000606084860312156139ea576139e96135eb565b5b60006139f886828701613986565b9350506020613a09868287016139bc565b9250506040613a1a868287016139bc565b9150509250925092565b6000819050919050565b6000613a49613a44613a3f84613721565b613a24565b613721565b9050919050565b6000613a5b82613a2e565b9050919050565b6000613a6d82613a50565b9050919050565b613a7d81613a62565b82525050565b6000602082019050613a986000830184613a74565b92915050565b613aa781613741565b82525050565b6000602082019050613ac26000830184613a9e565b92915050565b600060208284031215613ade57613add6135eb565b5b6000613aec848285016138b6565b91505092915050565b60008060408385031215613b0c57613b0b6135eb565b5b6000613b1a8582860161376a565b9250506020613b2b8582860161376a565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613b6b602083613671565b9150613b7682613b35565b602082019050919050565b60006020820190508181036000830152613b9a81613b5e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613bdb826135f0565b9150613be6836135f0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613c1b57613c1a613ba1565b5b828201905092915050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b6000613c5c601d83613671565b9150613c6782613c26565b602082019050919050565b60006020820190508181036000830152613c8b81613c4f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613cd957607f821691505b60208210811415613ced57613cec613c92565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613d4f602883613671565b9150613d5a82613cf3565b604082019050919050565b60006020820190508181036000830152613d7e81613d42565b9050919050565b6000613d90826135f0565b9150613d9b836135f0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613dd457613dd3613ba1565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613e19826135f0565b9150613e24836135f0565b925082613e3457613e33613ddf565b5b828204905092915050565b7f43616e6e6f7420736574206d617857616c6c657453697a65206c6f776572207460008201527f68616e20302e3525000000000000000000000000000000000000000000000000602082015250565b6000613e9b602883613671565b9150613ea682613e3f565b604082019050919050565b60006020820190508181036000830152613eca81613e8e565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f616d6d5061697273000000000000000000000000000000000000000000000000602082015250565b6000613f2d602883613671565b9150613f3882613ed1565b604082019050919050565b60006020820190508181036000830152613f5c81613f20565b9050919050565b613f6c8161399b565b82525050565b600060a082019050613f876000830188613f63565b613f946020830187613f63565b613fa16040830186613f63565b613fae60608301856137f5565b613fbb6080830184613a9e565b9695505050505050565b6000606082019050613fda6000830186613f63565b613fe76020830185613f63565b613ff460408301846137f5565b949350505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b600061403d600283613ffc565b915061404882614007565b600282019050919050565b6000819050919050565b61406e6140698261399b565b614053565b82525050565b600061407f82614030565b915061408b828561405d565b60208201915061409b828461405d565b6020820191508190509392505050565b60006080820190506140c06000830187613f63565b6140cd6020830186613918565b6140da6040830185613f63565b6140e76060830184613f63565b95945050505050565b7f496e76616c6964207369676e6174757265000000000000000000000000000000600082015250565b6000614126601183613671565b9150614131826140f0565b602082019050919050565b6000602082019050818103600083015261415581614119565b9050919050565b7f43616e6e6f7420736574206d617854786e53697a65206c6f776572207468616e60008201527f20302e3125000000000000000000000000000000000000000000000000000000602082015250565b60006141b8602583613671565b91506141c38261415c565b604082019050919050565b600060208201905081810360008301526141e7816141ab565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061424a602583613671565b9150614255826141ee565b604082019050919050565b600060208201905081810360008301526142798161423d565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006142dc603583613671565b91506142e782614280565b604082019050919050565b6000602082019050818103600083015261430b816142cf565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b600061436e603483613671565b915061437982614312565b604082019050919050565b6000602082019050818103600083015261439d81614361565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614400602683613671565b915061440b826143a4565b604082019050919050565b6000602082019050818103600083015261442f816143f3565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614492602483613671565b915061449d82614436565b604082019050919050565b600060208201905081810360008301526144c181614485565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614524602283613671565b915061452f826144c8565b604082019050919050565b6000602082019050818103600083015261455381614517565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006145b6602583613671565b91506145c18261455a565b604082019050919050565b600060208201905081810360008301526145e5816145a9565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614648602383613671565b9150614653826145ec565b604082019050919050565b600060208201905081810360008301526146778161463b565b9050919050565b7f5b66726f6d5d20626c61636b206c697374000000000000000000000000000000600082015250565b60006146b4601183613671565b91506146bf8261467e565b602082019050919050565b600060208201905081810360008301526146e3816146a7565b9050919050565b7f5b746f5d20626c61636b206c6973740000000000000000000000000000000000600082015250565b6000614720600f83613671565b915061472b826146ea565b602082019050919050565b6000602082019050818103600083015261474f81614713565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061478c601683613671565b915061479782614756565b602082019050919050565b600060208201905081810360008301526147bb8161477f565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d617854786e53697a652e000000000000000000000000000000000000000000602082015250565b600061481e602b83613671565b9150614829826147c2565b604082019050919050565b6000602082019050818103600083015261484d81614811565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061488a601383613671565b915061489582614854565b602082019050919050565b600060208201905081810360008301526148b98161487d565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d617854786e53697a652e0000000000000000000000000000000000000000602082015250565b600061491c602c83613671565b9150614927826148c0565b604082019050919050565b6000602082019050818103600083015261494b8161490f565b9050919050565b600061495d826135f0565b9150614968836135f0565b92508282101561497b5761497a613ba1565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006149e2602683613671565b91506149ed82614986565b604082019050919050565b60006020820190508181036000830152614a11816149d5565b9050919050565b600081905092915050565b50565b6000614a33600083614a18565b9150614a3e82614a23565b600082019050919050565b6000614a5482614a26565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614acb81613753565b92915050565b600060208284031215614ae757614ae66135eb565b5b6000614af584828501614abc565b91505092915050565b6000819050919050565b6000614b23614b1e614b1984614afe565b613a24565b6135f0565b9050919050565b614b3381614b08565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614b6e81613741565b82525050565b6000614b808383614b65565b60208301905092915050565b6000602082019050919050565b6000614ba482614b39565b614bae8185614b44565b9350614bb983614b55565b8060005b83811015614bea578151614bd18882614b74565b9750614bdc83614b8c565b925050600181019050614bbd565b5085935050505092915050565b600060a082019050614c0c60008301886137f5565b614c196020830187614b2a565b8181036040830152614c2b8186614b99565b9050614c3a6060830185613a9e565b614c4760808301846137f5565b969550505050505056fea26469706673582212208c718c18342280bd8f056298a52e6c78654a524a4cf2f3e3f4c1c075e5d9cddc64736f6c634300080a0033

Deployed Bytecode

0x6080604052600436106102975760003560e01c80638da5cb5b1161015a578063bbc0c742116100c1578063d85ba0631161007a578063d85ba06314610a2b578063dd62ed3e14610a56578063e2f4560514610a93578063e4a1b95f14610abe578063e7a996ab14610ae9578063f2fde38b14610b125761029e565b8063bbc0c7421461092d578063c02174ca14610958578063c024666814610983578063c816841b146109ac578063c9567bf9146109d7578063d257b34f146109ee5761029e565b80639c3b4fdc116101135780639c3b4fdc146107f55780639fccce3214610820578063a0d82dc51461084b578063a457c2d714610876578063a72905a2146108b3578063a9059cbb146108f05761029e565b80638da5cb5b146106e55780638f3fa86014610710578063917d3a651461073b578063924de9b71461077857806395d89b41146107a1578063979919aa146107cc5761029e565b806345434032116101fe5780636ddd1713116101b75780636ddd1713146105e557806370a0823114610610578063715018a61461064d578063735de9f714610664578063751039fc1461068f5780637b1d787d146106ba5761029e565b806345434032146104d75780634a62bb65146105005780634fbee1931461052b5780636323d7cb1461056857806366ca9b83146105915780636a486a8e146105ba5761029e565b806324887e801161025057806324887e80146103c75780632b5f295a146103f05780632d99d32e1461041b578063313ce5671461044457806335b5fb631461046f578063395093511461049a5761029e565b806302dbd8f8146102a357806306fdde03146102cc578063095ea7b3146102f757806318160ddd146103345780631f7ea8da1461035f57806323b872dd1461038a5761029e565b3661029e57005b600080fd5b3480156102af57600080fd5b506102ca60048036038101906102c59190613626565b610b3b565b005b3480156102d857600080fd5b506102e1610c25565b6040516102ee91906136ff565b60405180910390f35b34801561030357600080fd5b5061031e6004803603810190610319919061377f565b610cb7565b60405161032b91906137da565b60405180910390f35b34801561034057600080fd5b50610349610cd5565b6040516103569190613804565b60405180910390f35b34801561036b57600080fd5b50610374610cdf565b6040516103819190613804565b60405180910390f35b34801561039657600080fd5b506103b160048036038101906103ac919061381f565b610ce5565b6040516103be91906137da565b60405180910390f35b3480156103d357600080fd5b506103ee60048036038101906103e99190613872565b610ddd565b005b3480156103fc57600080fd5b50610405610eec565b6040516104129190613804565b60405180910390f35b34801561042757600080fd5b50610442600480360381019061043d91906138cb565b610ef2565b005b34801561045057600080fd5b5061045961105a565b6040516104669190613927565b60405180910390f35b34801561047b57600080fd5b50610484611063565b6040516104919190613804565b60405180910390f35b3480156104a657600080fd5b506104c160048036038101906104bc919061377f565b611069565b6040516104ce91906137da565b60405180910390f35b3480156104e357600080fd5b506104fe60048036038101906104f991906138cb565b611115565b005b34801561050c57600080fd5b506105156111ec565b60405161052291906137da565b60405180910390f35b34801561053757600080fd5b50610552600480360381019061054d9190613942565b6111ff565b60405161055f91906137da565b60405180910390f35b34801561057457600080fd5b5061058f600480360381019061058a91906139d1565b61121f565b005b34801561059d57600080fd5b506105b860048036038101906105b39190613626565b6114aa565b005b3480156105c657600080fd5b506105cf611594565b6040516105dc9190613804565b60405180910390f35b3480156105f157600080fd5b506105fa61159a565b60405161060791906137da565b60405180910390f35b34801561061c57600080fd5b5061063760048036038101906106329190613942565b6115ad565b6040516106449190613804565b60405180910390f35b34801561065957600080fd5b506106626115f6565b005b34801561067057600080fd5b5061067961167e565b6040516106869190613a83565b60405180910390f35b34801561069b57600080fd5b506106a46116a2565b6040516106b191906137da565b60405180910390f35b3480156106c657600080fd5b506106cf611742565b6040516106dc9190613aad565b60405180910390f35b3480156106f157600080fd5b506106fa611768565b6040516107079190613aad565b60405180910390f35b34801561071c57600080fd5b50610725611792565b6040516107329190613804565b60405180910390f35b34801561074757600080fd5b50610762600480360381019061075d9190613942565b611798565b60405161076f91906137da565b60405180910390f35b34801561078457600080fd5b5061079f600480360381019061079a9190613ac8565b6117b8565b005b3480156107ad57600080fd5b506107b6611851565b6040516107c391906136ff565b60405180910390f35b3480156107d857600080fd5b506107f360048036038101906107ee9190613872565b6118e3565b005b34801561080157600080fd5b5061080a6119f2565b6040516108179190613804565b60405180910390f35b34801561082c57600080fd5b506108356119f8565b6040516108429190613804565b60405180910390f35b34801561085757600080fd5b506108606119fe565b60405161086d9190613804565b60405180910390f35b34801561088257600080fd5b5061089d6004803603810190610898919061377f565b611a04565b6040516108aa91906137da565b60405180910390f35b3480156108bf57600080fd5b506108da60048036038101906108d59190613942565b611aef565b6040516108e791906137da565b60405180910390f35b3480156108fc57600080fd5b506109176004803603810190610912919061377f565b611b0f565b60405161092491906137da565b60405180910390f35b34801561093957600080fd5b50610942611b2d565b60405161094f91906137da565b60405180910390f35b34801561096457600080fd5b5061096d611b40565b60405161097a9190613aad565b60405180910390f35b34801561098f57600080fd5b506109aa60048036038101906109a591906138cb565b611b66565b005b3480156109b857600080fd5b506109c1611c3d565b6040516109ce9190613aad565b60405180910390f35b3480156109e357600080fd5b506109ec611c63565b005b3480156109fa57600080fd5b50610a156004803603810190610a109190613872565b611d17565b604051610a2291906137da565b60405180910390f35b348015610a3757600080fd5b50610a40611e6c565b604051610a4d9190613804565b60405180910390f35b348015610a6257600080fd5b50610a7d6004803603810190610a789190613af5565b611e72565b604051610a8a9190613804565b60405180910390f35b348015610a9f57600080fd5b50610aa8611ef9565b604051610ab59190613804565b60405180910390f35b348015610aca57600080fd5b50610ad3611eff565b604051610ae09190613804565b60405180910390f35b348015610af557600080fd5b50610b106004803603810190610b0b91906138cb565b611f05565b005b348015610b1e57600080fd5b50610b396004803603810190610b349190613942565b611fdc565b005b610b436120d4565b73ffffffffffffffffffffffffffffffffffffffff16610b61611768565b73ffffffffffffffffffffffffffffffffffffffff1614610bb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bae90613b81565b60405180910390fd5b8160108190555080601181905550601154601054610bd59190613bd0565b600f819055506019600f541115610c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1890613c72565b60405180910390fd5b5050565b606060008054610c3490613cc1565b80601f0160208091040260200160405190810160405280929190818152602001828054610c6090613cc1565b8015610cad5780601f10610c8257610100808354040283529160200191610cad565b820191906000526020600020905b815481529060010190602001808311610c9057829003601f168201915b5050505050905090565b6000610ccb610cc46120d4565b84846120dc565b6001905092915050565b6000600254905090565b60125481565b6000610cf28484846122a7565b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d3d6120d4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610dbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db490613d65565b60405180910390fd5b610dd185610dc96120d4565b8584036120dc565b60019150509392505050565b610de56120d4565b73ffffffffffffffffffffffffffffffffffffffff16610e03611768565b73ffffffffffffffffffffffffffffffffffffffff1614610e59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5090613b81565b60405180910390fd5b670de0b6b3a76400006103e86005610e6f610cd5565b610e799190613d85565b610e839190613e0e565b610e8d9190613e0e565b811015610ecf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec690613eb1565b60405180910390fd5b670de0b6b3a764000081610ee39190613d85565b600b8190555050565b60095481565b610efa6120d4565b73ffffffffffffffffffffffffffffffffffffffff16610f18611768565b73ffffffffffffffffffffffffffffffffffffffff1614610f6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6590613b81565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610fff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff690613f43565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006012905090565b60105481565b600061110b6110766120d4565b8484600460006110846120d4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111069190613bd0565b6120dc565b6001905092915050565b61111d6120d4565b73ffffffffffffffffffffffffffffffffffffffff1661113b611768565b73ffffffffffffffffffffffffffffffffffffffff1614611191576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118890613b81565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600860169054906101000a900460ff1681565b60166020528060005260406000206000915054906101000a900460ff1681565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600d81526020017f54726164696e6720546f6b656e00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152508051906020012046306040516020016112d2959493929190613f72565b60405160208183030381529060405280519060200120905060007f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e6700000000000000000000000000000000000081525080519060200120600060405160200161135e93929190613fc5565b6040516020818303038152906040528051906020012090506000828260405160200161138b929190614074565b6040516020818303038152906040528051906020012090506000600182888888604051600081526020016040526040516113c894939291906140ab565b6020604051602081039080840390855afa1580156113ea573d6000803e3d6000fd5b5050506020604051035190506113fe611768565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461146b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114629061413c565b60405180910390fd5b6001600860146101000a81548160ff0219169083151502179055506001600860156101000a81548160ff02191690831515021790555050505050505050565b6114b26120d4565b73ffffffffffffffffffffffffffffffffffffffff166114d0611768565b73ffffffffffffffffffffffffffffffffffffffff1614611526576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151d90613b81565b60405180910390fd5b81600d8190555080600e81905550600e54600d546115449190613bd0565b600c819055506019600c541115611590576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158790613c72565b60405180910390fd5b5050565b600f5481565b600860159054906101000a900460ff1681565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6115fe6120d4565b73ffffffffffffffffffffffffffffffffffffffff1661161c611768565b73ffffffffffffffffffffffffffffffffffffffff1614611672576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166990613b81565b60405180910390fd5b61167c6000612e2d565b565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b60006116ac6120d4565b73ffffffffffffffffffffffffffffffffffffffff166116ca611768565b73ffffffffffffffffffffffffffffffffffffffff1614611720576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171790613b81565b60405180910390fd5b6000600860166101000a81548160ff0219169083151502179055506001905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b5481565b60176020528060005260406000206000915054906101000a900460ff1681565b6117c06120d4565b73ffffffffffffffffffffffffffffffffffffffff166117de611768565b73ffffffffffffffffffffffffffffffffffffffff1614611834576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182b90613b81565b60405180910390fd5b80600860156101000a81548160ff02191690831515021790555050565b60606001805461186090613cc1565b80601f016020809104026020016040519081016040528092919081815260200182805461188c90613cc1565b80156118d95780601f106118ae576101008083540402835291602001916118d9565b820191906000526020600020905b8154815290600101906020018083116118bc57829003601f168201915b5050505050905090565b6118eb6120d4565b73ffffffffffffffffffffffffffffffffffffffff16611909611768565b73ffffffffffffffffffffffffffffffffffffffff161461195f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195690613b81565b60405180910390fd5b670de0b6b3a76400006103e86001611975610cd5565b61197f9190613d85565b6119899190613e0e565b6119939190613e0e565b8110156119d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cc906141ce565b60405180910390fd5b670de0b6b3a7640000816119e99190613d85565b60098190555050565b600e5481565b60135481565b60115481565b60008060046000611a136120d4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac790614260565b60405180910390fd5b611ae4611adb6120d4565b858584036120dc565b600191505092915050565b60186020528060005260406000206000915054906101000a900460ff1681565b6000611b23611b1c6120d4565b84846122a7565b6001905092915050565b600860149054906101000a900460ff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611b6e6120d4565b73ffffffffffffffffffffffffffffffffffffffff16611b8c611768565b73ffffffffffffffffffffffffffffffffffffffff1614611be2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd990613b81565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611c6b6120d4565b73ffffffffffffffffffffffffffffffffffffffff16611c89611768565b73ffffffffffffffffffffffffffffffffffffffff1614611cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd690613b81565b60405180910390fd5b6001600860146101000a81548160ff0219169083151502179055506001600860156101000a81548160ff021916908315150217905550565b6000611d216120d4565b73ffffffffffffffffffffffffffffffffffffffff16611d3f611768565b73ffffffffffffffffffffffffffffffffffffffff1614611d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8c90613b81565b60405180910390fd5b620186a06001611da3610cd5565b611dad9190613d85565b611db79190613e0e565b821015611df9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df0906142f2565b60405180910390fd5b6103e86005611e06610cd5565b611e109190613d85565b611e1a9190613e0e565b821115611e5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5390614384565b60405180910390fd5b81600a8190555060019050919050565b600c5481565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b600d5481565b611f0d6120d4565b73ffffffffffffffffffffffffffffffffffffffff16611f2b611768565b73ffffffffffffffffffffffffffffffffffffffff1614611f81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7890613b81565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611fe46120d4565b73ffffffffffffffffffffffffffffffffffffffff16612002611768565b73ffffffffffffffffffffffffffffffffffffffff1614612058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204f90613b81565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156120c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bf90614416565b60405180910390fd5b6120d181612e2d565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561214c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612143906144a8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b39061453a565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161229a9190613804565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612317576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230e906145cc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237e9061465e565b60405180910390fd5b601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612414576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240b906146ca565b60405180910390fd5b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156124a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249890614736565b60405180910390fd5b60008114156124bb576124b683836000612ef3565b612e28565b600860169054906101000a900460ff16156129b6576124d8611768565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156125465750612516611768565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561257f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125b9575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125d25750601460009054906101000a900460ff16155b156129b557600860149054906101000a900460ff166126cc57601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061268c5750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6126cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c2906147a2565b60405180910390fd5b5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561276f5750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612816576009548111156127b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b090614834565b60405180910390fd5b600b546127c5836115ad565b826127d09190613bd0565b1115612811576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612808906148a0565b60405180910390fd5b6129b4565b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156128b95750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561290857600954811115612903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128fa90614932565b60405180910390fd5b6129b3565b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166129b257600b54612965836115ad565b826129709190613bd0565b11156129b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a8906148a0565b60405180910390fd5b5b5b5b5b5b60006129c1306115ad565b90506000600a5482101590508080156129e65750600860159054906101000a900460ff165b80156129ff5750601460009054906101000a900460ff16155b8015612a555750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612aab5750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612b015750601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b45576001601460006101000a81548160ff021916908315150217905550612b29613177565b6000601460006101000a81548160ff0219169083151502179055505b6000601460009054906101000a900460ff16159050601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612bfb5750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612c0557600090505b60008115612e1857601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c6857506000600f54115b15612d0257612c956064612c87600f548861336290919063ffffffff16565b61337890919063ffffffff16565b9050600f5460115482612ca89190613d85565b612cb29190613e0e565b60136000828254612cc39190613bd0565b92505081905550600f5460105482612cdb9190613d85565b612ce59190613e0e565b60126000828254612cf69190613bd0565b92505081905550612df4565b601860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612d5d57506000600c54115b15612df357612d8a6064612d7c600c548861336290919063ffffffff16565b61337890919063ffffffff16565b9050600c54600e5482612d9d9190613d85565b612da79190613e0e565b60136000828254612db89190613bd0565b92505081905550600c54600d5482612dd09190613d85565b612dda9190613e0e565b60126000828254612deb9190613bd0565b925050819055505b5b6000811115612e0957612e08873083612ef3565b5b8085612e159190614952565b94505b612e23878787612ef3565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612f63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f5a906145cc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fca9061465e565b60405180910390fd5b612fde83838361338e565b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305c906149f8565b60405180910390fd5b818103600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546130fa9190613bd0565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161315e9190613804565b60405180910390a3613171848484613393565b50505050565b6000613182306115ad565b905060006013546012546131969190613bd0565b90506000808314806131a85750600082145b156131b557505050613360565b6014600a546131c49190613d85565b8311156131dd576014600a546131da9190613d85565b92505b60004790506131eb84613398565b600061320082476135d590919063ffffffff16565b9050600061322b8561321d6013548561336290919063ffffffff16565b61337890919063ffffffff16565b905060006012819055506000601381905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161328390614a49565b60006040518083038185875af1925050503d80600081146132c0576040519150601f19603f3d011682016040523d82523d6000602084013e6132c5565b606091505b505080945050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161331190614a49565b60006040518083038185875af1925050503d806000811461334e576040519150601f19603f3d011682016040523d82523d6000602084013e613353565b606091505b5050809450505050505050505b565b600081836133709190613d85565b905092915050565b600081836133869190613e0e565b905092915050565b505050565b505050565b6000600267ffffffffffffffff8111156133b5576133b4614a5e565b5b6040519080825280602002602001820160405280156133e35781602001602082028036833780820191505090505b50905030816000815181106133fb576133fa614a8d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134c49190614ad1565b816001815181106134d8576134d7614a8d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061353d307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846120dc565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161359f959493929190614bf7565b600060405180830381600087803b1580156135b957600080fd5b505af11580156135cd573d6000803e3d6000fd5b505050505050565b600081836135e39190614952565b905092915050565b600080fd5b6000819050919050565b613603816135f0565b811461360e57600080fd5b50565b600081359050613620816135fa565b92915050565b6000806040838503121561363d5761363c6135eb565b5b600061364b85828601613611565b925050602061365c85828601613611565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b838110156136a0578082015181840152602081019050613685565b838111156136af576000848401525b50505050565b6000601f19601f8301169050919050565b60006136d182613666565b6136db8185613671565b93506136eb818560208601613682565b6136f4816136b5565b840191505092915050565b6000602082019050818103600083015261371981846136c6565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061374c82613721565b9050919050565b61375c81613741565b811461376757600080fd5b50565b60008135905061377981613753565b92915050565b60008060408385031215613796576137956135eb565b5b60006137a48582860161376a565b92505060206137b585828601613611565b9150509250929050565b60008115159050919050565b6137d4816137bf565b82525050565b60006020820190506137ef60008301846137cb565b92915050565b6137fe816135f0565b82525050565b600060208201905061381960008301846137f5565b92915050565b600080600060608486031215613838576138376135eb565b5b60006138468682870161376a565b93505060206138578682870161376a565b925050604061386886828701613611565b9150509250925092565b600060208284031215613888576138876135eb565b5b600061389684828501613611565b91505092915050565b6138a8816137bf565b81146138b357600080fd5b50565b6000813590506138c58161389f565b92915050565b600080604083850312156138e2576138e16135eb565b5b60006138f08582860161376a565b9250506020613901858286016138b6565b9150509250929050565b600060ff82169050919050565b6139218161390b565b82525050565b600060208201905061393c6000830184613918565b92915050565b600060208284031215613958576139576135eb565b5b60006139668482850161376a565b91505092915050565b6139788161390b565b811461398357600080fd5b50565b6000813590506139958161396f565b92915050565b6000819050919050565b6139ae8161399b565b81146139b957600080fd5b50565b6000813590506139cb816139a5565b92915050565b6000806000606084860312156139ea576139e96135eb565b5b60006139f886828701613986565b9350506020613a09868287016139bc565b9250506040613a1a868287016139bc565b9150509250925092565b6000819050919050565b6000613a49613a44613a3f84613721565b613a24565b613721565b9050919050565b6000613a5b82613a2e565b9050919050565b6000613a6d82613a50565b9050919050565b613a7d81613a62565b82525050565b6000602082019050613a986000830184613a74565b92915050565b613aa781613741565b82525050565b6000602082019050613ac26000830184613a9e565b92915050565b600060208284031215613ade57613add6135eb565b5b6000613aec848285016138b6565b91505092915050565b60008060408385031215613b0c57613b0b6135eb565b5b6000613b1a8582860161376a565b9250506020613b2b8582860161376a565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613b6b602083613671565b9150613b7682613b35565b602082019050919050565b60006020820190508181036000830152613b9a81613b5e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613bdb826135f0565b9150613be6836135f0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613c1b57613c1a613ba1565b5b828201905092915050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b6000613c5c601d83613671565b9150613c6782613c26565b602082019050919050565b60006020820190508181036000830152613c8b81613c4f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613cd957607f821691505b60208210811415613ced57613cec613c92565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613d4f602883613671565b9150613d5a82613cf3565b604082019050919050565b60006020820190508181036000830152613d7e81613d42565b9050919050565b6000613d90826135f0565b9150613d9b836135f0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613dd457613dd3613ba1565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613e19826135f0565b9150613e24836135f0565b925082613e3457613e33613ddf565b5b828204905092915050565b7f43616e6e6f7420736574206d617857616c6c657453697a65206c6f776572207460008201527f68616e20302e3525000000000000000000000000000000000000000000000000602082015250565b6000613e9b602883613671565b9150613ea682613e3f565b604082019050919050565b60006020820190508181036000830152613eca81613e8e565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f616d6d5061697273000000000000000000000000000000000000000000000000602082015250565b6000613f2d602883613671565b9150613f3882613ed1565b604082019050919050565b60006020820190508181036000830152613f5c81613f20565b9050919050565b613f6c8161399b565b82525050565b600060a082019050613f876000830188613f63565b613f946020830187613f63565b613fa16040830186613f63565b613fae60608301856137f5565b613fbb6080830184613a9e565b9695505050505050565b6000606082019050613fda6000830186613f63565b613fe76020830185613f63565b613ff460408301846137f5565b949350505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b600061403d600283613ffc565b915061404882614007565b600282019050919050565b6000819050919050565b61406e6140698261399b565b614053565b82525050565b600061407f82614030565b915061408b828561405d565b60208201915061409b828461405d565b6020820191508190509392505050565b60006080820190506140c06000830187613f63565b6140cd6020830186613918565b6140da6040830185613f63565b6140e76060830184613f63565b95945050505050565b7f496e76616c6964207369676e6174757265000000000000000000000000000000600082015250565b6000614126601183613671565b9150614131826140f0565b602082019050919050565b6000602082019050818103600083015261415581614119565b9050919050565b7f43616e6e6f7420736574206d617854786e53697a65206c6f776572207468616e60008201527f20302e3125000000000000000000000000000000000000000000000000000000602082015250565b60006141b8602583613671565b91506141c38261415c565b604082019050919050565b600060208201905081810360008301526141e7816141ab565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061424a602583613671565b9150614255826141ee565b604082019050919050565b600060208201905081810360008301526142798161423d565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006142dc603583613671565b91506142e782614280565b604082019050919050565b6000602082019050818103600083015261430b816142cf565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b600061436e603483613671565b915061437982614312565b604082019050919050565b6000602082019050818103600083015261439d81614361565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614400602683613671565b915061440b826143a4565b604082019050919050565b6000602082019050818103600083015261442f816143f3565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614492602483613671565b915061449d82614436565b604082019050919050565b600060208201905081810360008301526144c181614485565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614524602283613671565b915061452f826144c8565b604082019050919050565b6000602082019050818103600083015261455381614517565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006145b6602583613671565b91506145c18261455a565b604082019050919050565b600060208201905081810360008301526145e5816145a9565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614648602383613671565b9150614653826145ec565b604082019050919050565b600060208201905081810360008301526146778161463b565b9050919050565b7f5b66726f6d5d20626c61636b206c697374000000000000000000000000000000600082015250565b60006146b4601183613671565b91506146bf8261467e565b602082019050919050565b600060208201905081810360008301526146e3816146a7565b9050919050565b7f5b746f5d20626c61636b206c6973740000000000000000000000000000000000600082015250565b6000614720600f83613671565b915061472b826146ea565b602082019050919050565b6000602082019050818103600083015261474f81614713565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061478c601683613671565b915061479782614756565b602082019050919050565b600060208201905081810360008301526147bb8161477f565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d617854786e53697a652e000000000000000000000000000000000000000000602082015250565b600061481e602b83613671565b9150614829826147c2565b604082019050919050565b6000602082019050818103600083015261484d81614811565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061488a601383613671565b915061489582614854565b602082019050919050565b600060208201905081810360008301526148b98161487d565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d617854786e53697a652e0000000000000000000000000000000000000000602082015250565b600061491c602c83613671565b9150614927826148c0565b604082019050919050565b6000602082019050818103600083015261494b8161490f565b9050919050565b600061495d826135f0565b9150614968836135f0565b92508282101561497b5761497a613ba1565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006149e2602683613671565b91506149ed82614986565b604082019050919050565b60006020820190508181036000830152614a11816149d5565b9050919050565b600081905092915050565b50565b6000614a33600083614a18565b9150614a3e82614a23565b600082019050919050565b6000614a5482614a26565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614acb81613753565b92915050565b600060208284031215614ae757614ae66135eb565b5b6000614af584828501614abc565b91505092915050565b6000819050919050565b6000614b23614b1e614b1984614afe565b613a24565b6135f0565b9050919050565b614b3381614b08565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614b6e81613741565b82525050565b6000614b808383614b65565b60208301905092915050565b6000602082019050919050565b6000614ba482614b39565b614bae8185614b44565b9350614bb983614b55565b8060005b83811015614bea578151614bd18882614b74565b9750614bdc83614b8c565b925050600181019050614bbd565b5085935050505092915050565b600060a082019050614c0c60008301886137f5565b614c196020830187614b2a565b8181036040830152614c2b8186614b99565b9050614c3a6060830185613a9e565b614c4760808301846137f5565b969550505050505056fea26469706673582212208c718c18342280bd8f056298a52e6c78654a524a4cf2f3e3f4c1c075e5d9cddc64736f6c634300080a0033

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.