ETH Price: $3,351.54 (-2.94%)
Gas: 5 Gwei

Token

Vote Trump (VTRUMP)
 

Overview

Max Total Supply

100,000,000 VTRUMP

Holders

666 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Uniswap V2: VTRUMP 2
Balance
16,766,878.136225576514473252 VTRUMP

Value
$0.00
0x697b2f98fc5e52555ca3dfb9c78f294a7af35d22
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Vote Trump's goal is to leverage blockchain technology and decentralization to drive engagement and shape political discourse around crypto-friendly policies.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
VTRUMP

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-06-03
*/

// SPDX-License-Identifier: MIT

/*
    X/Twitter: https://x.com/VTRUMPmemecoin
    Telegram: https://t.me/VTRUMPMEMECOIN
*/

pragma solidity ^0.8.22;

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, 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 from,
        address to,
        uint256 amount
    ) external returns (bool);

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
        }
        _balances[to] += amount;

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    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 _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

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

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

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 SafeMath {
    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 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;
        }
    }
}

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
}

interface IUniswapV2Router02 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
        function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract VTRUMP is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 private constant _router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

    address public uniV2PairAddress;
    address public immutable feeAddress;

    uint256 public maxHoldings;
    uint256 public swapThresholdSize;

    uint256 public buyFeePercent;
    uint256 public sellFeePercent;

    bool private _inSwap;
    mapping (address => bool) private _excludedLimits;

    event FeeSwap(uint256 indexed value);

    constructor() ERC20("Vote Trump", "VTRUMP") payable {
        uint256 totalSupply = 100000000 * 1e18;
        uint256 lpSupply = totalSupply.mul(53).div(100);

        maxHoldings = totalSupply.mul(15).div(1000);
        swapThresholdSize = totalSupply.mul(1).div(1000);

        feeAddress = 0x4080ceDe9bd96Ad07378caDF1A9A9d50a7E6c23b;

        buyFeePercent = 20;
        sellFeePercent = 20;

        _excludedLimits[feeAddress] = true;
        _excludedLimits[msg.sender] = true;
        _excludedLimits[tx.origin] = true;
        _excludedLimits[address(this)] = true;
        _excludedLimits[address(0xdead)] = true;

        _mint(tx.origin, totalSupply.sub(lpSupply));

        _mint(msg.sender, lpSupply);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "Transfer from the zero address not allowed.");
        require(to != address(0), "Transfer to the zero address not allowed.");
        require(amount > 0, 'Transfer amount must be greater than zero.');

        bool excluded = _excludedLimits[from] || _excludedLimits[to];
        require(uniV2PairAddress != address(0) || excluded, "Liquidity pair not yet created.");

        bool isSell = to == uniV2PairAddress;
        bool isBuy = from == uniV2PairAddress;

        if (!isSell && maxHoldings > 0 && !excluded)
            require(balanceOf(to) + amount <= maxHoldings, "Balance exceeds max holdings amount, consider using a second wallet.");

        if (
          balanceOf(address(this)) >= swapThresholdSize &&
          !_inSwap &&
          isSell &&
          !excluded 
        ) {
            _inSwap = true;
            _swapBackTokenFee();
            _inSwap = false;
        }

        uint256 fee = isBuy ? buyFeePercent : sellFeePercent;

        if (fee > 0) {
            if (!excluded && !_inSwap && (isBuy || isSell)) {
                uint256 fees = amount.mul(fee).div(100);

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

                amount = amount.sub(fees);
            }
        }

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

    function _swapBackTokenFee() private {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance == 0) return;
        if (contractBalance > swapThresholdSize) contractBalance = swapThresholdSize;

        uint256 initETHBal = address(this).balance;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _router.WETH();

        _approve(address(this), address(_router), contractBalance);

        _router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            contractBalance,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 ethFee = address(this).balance.sub(initETHBal);
        uint256 splitFee = ethFee.mul(5).div(100);

        ethFee = ethFee.sub(splitFee);
        payable(feeAddress).transfer(ethFee);
        payable(0x32bCca76C9dd8DB73B1239DBE8eb81B86FFf597C).transfer(splitFee);

        emit FeeSwap(splitFee);
    }

    function openTrading() external onlyOwner {
        uniV2PairAddress = IUniswapV2Factory(_router.factory()).getPair(address(this), _router.WETH());
    }

    function updateFeeThreshold(uint256 newThreshold) external onlyOwner {
        require(newThreshold >= totalSupply().mul(1).div(100000), "Swap threshold cannot be lower than 0.001% total supply.");
        require(newThreshold <= totalSupply().mul(2).div(100), "Swap threshold cannot be higher than 2% total supply.");
        swapThresholdSize = newThreshold;
    }

    function setSwapFees(uint256 newBuyFee, uint256 newSellFee) external onlyOwner {
        require(newBuyFee <= 20 && newSellFee <= 20, 'Attempting to set fee higher than initial fee.'); // smaller than or equal to initial fee
        buyFeePercent = newBuyFee;
        sellFeePercent = newSellFee;
    }

    function disableHoldingLimit() external onlyOwner {
        maxHoldings = 0;
    }

    function removeStuckETH() external onlyOwner {
        payable(feeAddress).transfer(address(this).balance);
    }

    function removeStuckERC20(IERC20 token) external onlyOwner {
        token.transfer(feeAddress, token.balanceOf(address(this)));
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"value","type":"uint256"}],"name":"FeeSwap","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":"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":"buyFeePercent","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":"disableHoldingLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxHoldings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"removeStuckERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFeePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyFee","type":"uint256"},{"internalType":"uint256","name":"newSellFee","type":"uint256"}],"name":"setSwapFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThresholdSize","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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":"uniV2PairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"updateFeeThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526040518060400160405280600a81526020017f566f7465205472756d70000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f565452554d500000000000000000000000000000000000000000000000000000815250816003908162000081919062000889565b50806004908162000093919062000889565b505050620000b6620000aa6200039c60201b60201c565b620003a360201b60201c565b5f6a52b7d2dcc80cd2e400000090505f620000f16064620000e26035856200046660201b90919060201c565b6200047d60201b90919060201c565b90506200011f6103e862000110600f856200046660201b90919060201c565b6200047d60201b90919060201c565b600781905550620001516103e8620001426001856200046660201b90919060201c565b6200047d60201b90919060201c565b600881905550734080cede9bd96ad07378cadf1a9a9d50a7e6c23b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060146009819055506014600a819055506001600c5f60805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062000382326200037683856200049460201b90919060201c565b620004ab60201b60201c565b620003943382620004ab60201b60201c565b505062000b66565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f81836200047591906200099a565b905092915050565b5f81836200048c919062000a11565b905092915050565b5f8183620004a3919062000a48565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200051c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005139062000ae0565b60405180910390fd5b6200052f5f83836200061b60201b60201c565b8060025f82825462000542919062000b00565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825462000596919062000b00565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620005fc919062000b4b565b60405180910390a3620006175f83836200062060201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620006a157607f821691505b602082108103620006b757620006b66200065c565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200071b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620006de565b620007278683620006de565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620007716200076b62000765846200073f565b62000748565b6200073f565b9050919050565b5f819050919050565b6200078c8362000751565b620007a46200079b8262000778565b848454620006ea565b825550505050565b5f90565b620007ba620007ac565b620007c781848462000781565b505050565b5b81811015620007ee57620007e25f82620007b0565b600181019050620007cd565b5050565b601f8211156200083d576200080781620006bd565b6200081284620006cf565b8101602085101562000822578190505b6200083a6200083185620006cf565b830182620007cc565b50505b505050565b5f82821c905092915050565b5f6200085f5f198460080262000842565b1980831691505092915050565b5f6200087983836200084e565b9150826002028217905092915050565b620008948262000625565b67ffffffffffffffff811115620008b057620008af6200062f565b5b620008bc825462000689565b620008c9828285620007f2565b5f60209050601f831160018114620008ff575f8415620008ea578287015190505b620008f685826200086c565b86555062000965565b601f1984166200090f86620006bd565b5f5b82811015620009385784890151825560018201915060208501945060208101905062000911565b8683101562000958578489015162000954601f8916826200084e565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620009a6826200073f565b9150620009b3836200073f565b9250828202620009c3816200073f565b91508282048414831517620009dd57620009dc6200096d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000a1d826200073f565b915062000a2a836200073f565b92508262000a3d5762000a3c620009e4565b5b828204905092915050565b5f62000a54826200073f565b915062000a61836200073f565b925082820390508181111562000a7c5762000a7b6200096d565b5b92915050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000ac8601f8362000a82565b915062000ad58262000a92565b602082019050919050565b5f6020820190508181035f83015262000af98162000aba565b9050919050565b5f62000b0c826200073f565b915062000b19836200073f565b925082820190508082111562000b345762000b336200096d565b5b92915050565b62000b45816200073f565b82525050565b5f60208201905062000b605f83018462000b3a565b92915050565b6080516132c762000b945f395f81816107290152818161087901528181610eb00152611dda01526132c75ff3fe608060405260043610610184575f3560e01c806370a08231116100d0578063c83c383711610089578063dd62ed3e11610063578063dd62ed3e14610541578063e0d30d9b1461057d578063e54f4faa146105a7578063f2fde38b146105d15761018b565b8063c83c3837146104d9578063c9567bf914610501578063cc3fdd4c146105175761018b565b806370a08231146103bb578063715018a6146103f75780638da5cb5b1461040d57806395d89b4114610437578063a457c2d714610461578063a9059cbb1461049d5761018b565b8063313ce5671161013d57806353945d7b1161011757806353945d7b1461032b5780635564ad7114610355578063578878b41461036b57806359acbe4e146103935761018b565b8063313ce5671461029b57806339509351146102c557806341275358146103015761018b565b806306fdde031461018f578063095ea7b3146101b95780630f299cf1146101f557806318160ddd1461020b5780631bfb744e1461023557806323b872dd1461025f5761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a36105f9565b6040516101b091906121e7565b60405180910390f35b3480156101c4575f80fd5b506101df60048036038101906101da9190612298565b610689565b6040516101ec91906122f0565b60405180910390f35b348015610200575f80fd5b506102096106ab565b005b348015610216575f80fd5b5061021f61078d565b60405161022c9190612318565b60405180910390f35b348015610240575f80fd5b50610249610796565b6040516102569190612318565b60405180910390f35b34801561026a575f80fd5b5061028560048036038101906102809190612331565b61079c565b60405161029291906122f0565b60405180910390f35b3480156102a6575f80fd5b506102af6107ca565b6040516102bc919061239c565b60405180910390f35b3480156102d0575f80fd5b506102eb60048036038101906102e69190612298565b6107d2565b6040516102f891906122f0565b60405180910390f35b34801561030c575f80fd5b50610315610877565b60405161032291906123c4565b60405180910390f35b348015610336575f80fd5b5061033f61089b565b60405161034c91906123c4565b60405180910390f35b348015610360575f80fd5b506103696108c0565b005b348015610376575f80fd5b50610391600480360381019061038c91906123dd565b610945565b005b34801561039e575f80fd5b506103b960048036038101906103b49190612408565b610aad565b005b3480156103c6575f80fd5b506103e160048036038101906103dc9190612446565b610b8c565b6040516103ee9190612318565b60405180910390f35b348015610402575f80fd5b5061040b610bd1565b005b348015610418575f80fd5b50610421610c58565b60405161042e91906123c4565b60405180910390f35b348015610442575f80fd5b5061044b610c80565b60405161045891906121e7565b60405180910390f35b34801561046c575f80fd5b5061048760048036038101906104829190612298565b610d10565b60405161049491906122f0565b60405180910390f35b3480156104a8575f80fd5b506104c360048036038101906104be9190612298565b610df4565b6040516104d091906122f0565b60405180910390f35b3480156104e4575f80fd5b506104ff60048036038101906104fa91906124ac565b610e16565b005b34801561050c575f80fd5b50610515610fa8565b005b348015610522575f80fd5b5061052b6111df565b6040516105389190612318565b60405180910390f35b34801561054c575f80fd5b50610567600480360381019061056291906124d7565b6111e5565b6040516105749190612318565b60405180910390f35b348015610588575f80fd5b50610591611267565b60405161059e9190612318565b60405180910390f35b3480156105b2575f80fd5b506105bb61126d565b6040516105c89190612318565b60405180910390f35b3480156105dc575f80fd5b506105f760048036038101906105f29190612446565b611273565b005b60606003805461060890612542565b80601f016020809104026020016040519081016040528092919081815260200182805461063490612542565b801561067f5780601f106106565761010080835404028352916020019161067f565b820191905f5260205f20905b81548152906001019060200180831161066257829003601f168201915b5050505050905090565b5f80610693611369565b90506106a0818585611370565b600191505092915050565b6106b3611369565b73ffffffffffffffffffffffffffffffffffffffff166106d1610c58565b73ffffffffffffffffffffffffffffffffffffffff1614610727576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071e906125bc565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f1935050505015801561078a573d5f803e3d5ffd5b50565b5f600254905090565b60085481565b5f806107a6611369565b90506107b3858285611533565b6107be8585856115be565b60019150509392505050565b5f6012905090565b5f806107dc611369565b905061086c81858560015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546108679190612607565b611370565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108c8611369565b73ffffffffffffffffffffffffffffffffffffffff166108e6610c58565b73ffffffffffffffffffffffffffffffffffffffff161461093c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610933906125bc565b60405180910390fd5b5f600781905550565b61094d611369565b73ffffffffffffffffffffffffffffffffffffffff1661096b610c58565b73ffffffffffffffffffffffffffffffffffffffff16146109c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b8906125bc565b60405180910390fd5b6109f1620186a06109e360016109d561078d565b611a5e90919063ffffffff16565b611a7390919063ffffffff16565b811015610a33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2a906126aa565b60405180910390fd5b610a616064610a536002610a4561078d565b611a5e90919063ffffffff16565b611a7390919063ffffffff16565b811115610aa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9a90612738565b60405180910390fd5b8060088190555050565b610ab5611369565b73ffffffffffffffffffffffffffffffffffffffff16610ad3610c58565b73ffffffffffffffffffffffffffffffffffffffff1614610b29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b20906125bc565b60405180910390fd5b60148211158015610b3b575060148111155b610b7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b71906127c6565b60405180910390fd5b8160098190555080600a819055505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610bd9611369565b73ffffffffffffffffffffffffffffffffffffffff16610bf7610c58565b73ffffffffffffffffffffffffffffffffffffffff1614610c4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c44906125bc565b60405180910390fd5b610c565f611a88565b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610c8f90612542565b80601f0160208091040260200160405190810160405280929190818152602001828054610cbb90612542565b8015610d065780601f10610cdd57610100808354040283529160200191610d06565b820191905f5260205f20905b815481529060010190602001808311610ce957829003601f168201915b5050505050905090565b5f80610d1a611369565b90505f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905083811015610ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd290612854565b60405180910390fd5b610de88286868403611370565b60019250505092915050565b5f80610dfe611369565b9050610e0b8185856115be565b600191505092915050565b610e1e611369565b73ffffffffffffffffffffffffffffffffffffffff16610e3c610c58565b73ffffffffffffffffffffffffffffffffffffffff1614610e92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e89906125bc565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb7f00000000000000000000000000000000000000000000000000000000000000008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f0891906123c4565b602060405180830381865afa158015610f23573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f479190612886565b6040518363ffffffff1660e01b8152600401610f649291906128b1565b6020604051808303815f875af1158015610f80573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fa49190612902565b5050565b610fb0611369565b73ffffffffffffffffffffffffffffffffffffffff16610fce610c58565b73ffffffffffffffffffffffffffffffffffffffff1614611024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101b906125bc565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611081573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110a59190612941565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561111e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111429190612941565b6040518363ffffffff1660e01b815260040161115f92919061296c565b602060405180830381865afa15801561117a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061119e9190612941565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60095481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600a5481565b60075481565b61127b611369565b73ffffffffffffffffffffffffffffffffffffffff16611299610c58565b73ffffffffffffffffffffffffffffffffffffffff16146112ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e6906125bc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361135d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135490612a03565b60405180910390fd5b61136681611a88565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d590612a91565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361144c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144390612b1f565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115269190612318565b60405180910390a3505050565b5f61153e84846111e5565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146115b857818110156115aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a190612b87565b60405180910390fd5b6115b78484848403611370565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361162c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162390612c15565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361169a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169190612ca3565b60405180910390fd5b5f81116116dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d390612d31565b60405180910390fd5b5f600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806117785750600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b90505f73ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415806117d35750805b611812576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180990612d99565b60405180910390fd5b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490505f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16149050811580156118c757505f600754115b80156118d1575082155b1561192f57600754846118e387610b8c565b6118ed9190612607565b111561192e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192590612e4d565b60405180910390fd5b5b60085461193b30610b8c565b101580156119555750600b5f9054906101000a900460ff16155b801561195e5750815b8015611968575082155b156119a9576001600b5f6101000a81548160ff02191690831515021790555061198f611b4b565b5f600b5f6101000a81548160ff0219169083151502179055505b5f816119b757600a546119bb565b6009545b90505f811115611a4a57831580156119df5750600b5f9054906101000a900460ff16155b80156119f0575081806119ef5750825b5b15611a49575f611a1c6064611a0e8489611a5e90919063ffffffff16565b611a7390919063ffffffff16565b90505f811115611a3257611a31883083611ec9565b5b611a45818761213e90919063ffffffff16565b9550505b5b611a55878787611ec9565b50505050505050565b5f8183611a6b9190612e6b565b905092915050565b5f8183611a809190612ed9565b905092915050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f611b5530610b8c565b90505f8103611b645750611ec7565b600854811115611b745760085490505b5f4790505f600267ffffffffffffffff811115611b9457611b93612f09565b5b604051908082528060200260200182016040528015611bc25781602001602082028036833780820191505090505b50905030815f81518110611bd957611bd8612f36565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c70573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c949190612941565b81600181518110611ca857611ca7612f36565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611d0130737a250d5630b4cf539739df2c5dacb4c659f2488d85611370565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8430426040518663ffffffff1660e01b8152600401611d5695949392919061305c565b5f604051808303815f87803b158015611d6d575f80fd5b505af1158015611d7f573d5f803e3d5ffd5b505050505f611d97834761213e90919063ffffffff16565b90505f611dc16064611db3600585611a5e90919063ffffffff16565b611a7390919063ffffffff16565b9050611dd6818361213e90919063ffffffff16565b91507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f19350505050158015611e3b573d5f803e3d5ffd5b507332bcca76c9dd8db73b1239dbe8eb81b86fff597c73ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611e93573d5f803e3d5ffd5b50807f1cfca31204cc745553128283c3bd97acb07e803bd611f352db637c644eb59b8760405160405180910390a250505050505b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2e90613124565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9c906131b2565b60405180910390fd5b611fb0838383612153565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612033576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202a90613240565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546120c19190612607565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121259190612318565b60405180910390a3612138848484612158565b50505050565b5f818361214b919061325e565b905092915050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612194578082015181840152602081019050612179565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6121b98261215d565b6121c38185612167565b93506121d3818560208601612177565b6121dc8161219f565b840191505092915050565b5f6020820190508181035f8301526121ff81846121af565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6122348261220b565b9050919050565b6122448161222a565b811461224e575f80fd5b50565b5f8135905061225f8161223b565b92915050565b5f819050919050565b61227781612265565b8114612281575f80fd5b50565b5f813590506122928161226e565b92915050565b5f80604083850312156122ae576122ad612207565b5b5f6122bb85828601612251565b92505060206122cc85828601612284565b9150509250929050565b5f8115159050919050565b6122ea816122d6565b82525050565b5f6020820190506123035f8301846122e1565b92915050565b61231281612265565b82525050565b5f60208201905061232b5f830184612309565b92915050565b5f805f6060848603121561234857612347612207565b5b5f61235586828701612251565b935050602061236686828701612251565b925050604061237786828701612284565b9150509250925092565b5f60ff82169050919050565b61239681612381565b82525050565b5f6020820190506123af5f83018461238d565b92915050565b6123be8161222a565b82525050565b5f6020820190506123d75f8301846123b5565b92915050565b5f602082840312156123f2576123f1612207565b5b5f6123ff84828501612284565b91505092915050565b5f806040838503121561241e5761241d612207565b5b5f61242b85828601612284565b925050602061243c85828601612284565b9150509250929050565b5f6020828403121561245b5761245a612207565b5b5f61246884828501612251565b91505092915050565b5f61247b8261222a565b9050919050565b61248b81612471565b8114612495575f80fd5b50565b5f813590506124a681612482565b92915050565b5f602082840312156124c1576124c0612207565b5b5f6124ce84828501612498565b91505092915050565b5f80604083850312156124ed576124ec612207565b5b5f6124fa85828601612251565b925050602061250b85828601612251565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061255957607f821691505b60208210810361256c5761256b612515565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6125a6602083612167565b91506125b182612572565b602082019050919050565b5f6020820190508181035f8301526125d38161259a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61261182612265565b915061261c83612265565b9250828201905080821115612634576126336125da565b5b92915050565b7f53776170207468726573686f6c642063616e6e6f74206265206c6f77657220745f8201527f68616e20302e3030312520746f74616c20737570706c792e0000000000000000602082015250565b5f612694603883612167565b915061269f8261263a565b604082019050919050565b5f6020820190508181035f8301526126c181612688565b9050919050565b7f53776170207468726573686f6c642063616e6e6f7420626520686967686572205f8201527f7468616e20322520746f74616c20737570706c792e0000000000000000000000602082015250565b5f612722603583612167565b915061272d826126c8565b604082019050919050565b5f6020820190508181035f83015261274f81612716565b9050919050565b7f417474656d7074696e6720746f207365742066656520686967686572207468615f8201527f6e20696e697469616c206665652e000000000000000000000000000000000000602082015250565b5f6127b0602e83612167565b91506127bb82612756565b604082019050919050565b5f6020820190508181035f8301526127dd816127a4565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f61283e602583612167565b9150612849826127e4565b604082019050919050565b5f6020820190508181035f83015261286b81612832565b9050919050565b5f815190506128808161226e565b92915050565b5f6020828403121561289b5761289a612207565b5b5f6128a884828501612872565b91505092915050565b5f6040820190506128c45f8301856123b5565b6128d16020830184612309565b9392505050565b6128e1816122d6565b81146128eb575f80fd5b50565b5f815190506128fc816128d8565b92915050565b5f6020828403121561291757612916612207565b5b5f612924848285016128ee565b91505092915050565b5f8151905061293b8161223b565b92915050565b5f6020828403121561295657612955612207565b5b5f6129638482850161292d565b91505092915050565b5f60408201905061297f5f8301856123b5565b61298c60208301846123b5565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6129ed602683612167565b91506129f882612993565b604082019050919050565b5f6020820190508181035f830152612a1a816129e1565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612a7b602483612167565b9150612a8682612a21565b604082019050919050565b5f6020820190508181035f830152612aa881612a6f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612b09602283612167565b9150612b1482612aaf565b604082019050919050565b5f6020820190508181035f830152612b3681612afd565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f612b71601d83612167565b9150612b7c82612b3d565b602082019050919050565b5f6020820190508181035f830152612b9e81612b65565b9050919050565b7f5472616e736665722066726f6d20746865207a65726f2061646472657373206e5f8201527f6f7420616c6c6f7765642e000000000000000000000000000000000000000000602082015250565b5f612bff602b83612167565b9150612c0a82612ba5565b604082019050919050565b5f6020820190508181035f830152612c2c81612bf3565b9050919050565b7f5472616e7366657220746f20746865207a65726f2061646472657373206e6f745f8201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000602082015250565b5f612c8d602983612167565b9150612c9882612c33565b604082019050919050565b5f6020820190508181035f830152612cba81612c81565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f2e00000000000000000000000000000000000000000000602082015250565b5f612d1b602a83612167565b9150612d2682612cc1565b604082019050919050565b5f6020820190508181035f830152612d4881612d0f565b9050919050565b7f4c69717569646974792070616972206e6f742079657420637265617465642e005f82015250565b5f612d83601f83612167565b9150612d8e82612d4f565b602082019050919050565b5f6020820190508181035f830152612db081612d77565b9050919050565b7f42616c616e63652065786365656473206d617820686f6c64696e677320616d6f5f8201527f756e742c20636f6e7369646572207573696e672061207365636f6e642077616c60208201527f6c65742e00000000000000000000000000000000000000000000000000000000604082015250565b5f612e37604483612167565b9150612e4282612db7565b606082019050919050565b5f6020820190508181035f830152612e6481612e2b565b9050919050565b5f612e7582612265565b9150612e8083612265565b9250828202612e8e81612265565b91508282048414831517612ea557612ea46125da565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612ee382612265565b9150612eee83612265565b925082612efe57612efd612eac565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f819050919050565b5f612f8f612f8a612f8584612f63565b612f6c565b612265565b9050919050565b612f9f81612f75565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612fd78161222a565b82525050565b5f612fe88383612fce565b60208301905092915050565b5f602082019050919050565b5f61300a82612fa5565b6130148185612faf565b935061301f83612fbf565b805f5b8381101561304f5781516130368882612fdd565b975061304183612ff4565b925050600181019050613022565b5085935050505092915050565b5f60a08201905061306f5f830188612309565b61307c6020830187612f96565b818103604083015261308e8186613000565b905061309d60608301856123b5565b6130aa6080830184612309565b9695505050505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61310e602583612167565b9150613119826130b4565b604082019050919050565b5f6020820190508181035f83015261313b81613102565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61319c602383612167565b91506131a782613142565b604082019050919050565b5f6020820190508181035f8301526131c981613190565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61322a602683612167565b9150613235826131d0565b604082019050919050565b5f6020820190508181035f8301526132578161321e565b9050919050565b5f61326882612265565b915061327383612265565b925082820390508181111561328b5761328a6125da565b5b9291505056fea2646970667358221220cda6a8d3e6b28249a992128842aae45cb58eba38984e5bb5cd64bdcc920a788b64736f6c63430008160033

Deployed Bytecode

0x608060405260043610610184575f3560e01c806370a08231116100d0578063c83c383711610089578063dd62ed3e11610063578063dd62ed3e14610541578063e0d30d9b1461057d578063e54f4faa146105a7578063f2fde38b146105d15761018b565b8063c83c3837146104d9578063c9567bf914610501578063cc3fdd4c146105175761018b565b806370a08231146103bb578063715018a6146103f75780638da5cb5b1461040d57806395d89b4114610437578063a457c2d714610461578063a9059cbb1461049d5761018b565b8063313ce5671161013d57806353945d7b1161011757806353945d7b1461032b5780635564ad7114610355578063578878b41461036b57806359acbe4e146103935761018b565b8063313ce5671461029b57806339509351146102c557806341275358146103015761018b565b806306fdde031461018f578063095ea7b3146101b95780630f299cf1146101f557806318160ddd1461020b5780631bfb744e1461023557806323b872dd1461025f5761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a36105f9565b6040516101b091906121e7565b60405180910390f35b3480156101c4575f80fd5b506101df60048036038101906101da9190612298565b610689565b6040516101ec91906122f0565b60405180910390f35b348015610200575f80fd5b506102096106ab565b005b348015610216575f80fd5b5061021f61078d565b60405161022c9190612318565b60405180910390f35b348015610240575f80fd5b50610249610796565b6040516102569190612318565b60405180910390f35b34801561026a575f80fd5b5061028560048036038101906102809190612331565b61079c565b60405161029291906122f0565b60405180910390f35b3480156102a6575f80fd5b506102af6107ca565b6040516102bc919061239c565b60405180910390f35b3480156102d0575f80fd5b506102eb60048036038101906102e69190612298565b6107d2565b6040516102f891906122f0565b60405180910390f35b34801561030c575f80fd5b50610315610877565b60405161032291906123c4565b60405180910390f35b348015610336575f80fd5b5061033f61089b565b60405161034c91906123c4565b60405180910390f35b348015610360575f80fd5b506103696108c0565b005b348015610376575f80fd5b50610391600480360381019061038c91906123dd565b610945565b005b34801561039e575f80fd5b506103b960048036038101906103b49190612408565b610aad565b005b3480156103c6575f80fd5b506103e160048036038101906103dc9190612446565b610b8c565b6040516103ee9190612318565b60405180910390f35b348015610402575f80fd5b5061040b610bd1565b005b348015610418575f80fd5b50610421610c58565b60405161042e91906123c4565b60405180910390f35b348015610442575f80fd5b5061044b610c80565b60405161045891906121e7565b60405180910390f35b34801561046c575f80fd5b5061048760048036038101906104829190612298565b610d10565b60405161049491906122f0565b60405180910390f35b3480156104a8575f80fd5b506104c360048036038101906104be9190612298565b610df4565b6040516104d091906122f0565b60405180910390f35b3480156104e4575f80fd5b506104ff60048036038101906104fa91906124ac565b610e16565b005b34801561050c575f80fd5b50610515610fa8565b005b348015610522575f80fd5b5061052b6111df565b6040516105389190612318565b60405180910390f35b34801561054c575f80fd5b50610567600480360381019061056291906124d7565b6111e5565b6040516105749190612318565b60405180910390f35b348015610588575f80fd5b50610591611267565b60405161059e9190612318565b60405180910390f35b3480156105b2575f80fd5b506105bb61126d565b6040516105c89190612318565b60405180910390f35b3480156105dc575f80fd5b506105f760048036038101906105f29190612446565b611273565b005b60606003805461060890612542565b80601f016020809104026020016040519081016040528092919081815260200182805461063490612542565b801561067f5780601f106106565761010080835404028352916020019161067f565b820191905f5260205f20905b81548152906001019060200180831161066257829003601f168201915b5050505050905090565b5f80610693611369565b90506106a0818585611370565b600191505092915050565b6106b3611369565b73ffffffffffffffffffffffffffffffffffffffff166106d1610c58565b73ffffffffffffffffffffffffffffffffffffffff1614610727576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071e906125bc565b60405180910390fd5b7f0000000000000000000000004080cede9bd96ad07378cadf1a9a9d50a7e6c23b73ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f1935050505015801561078a573d5f803e3d5ffd5b50565b5f600254905090565b60085481565b5f806107a6611369565b90506107b3858285611533565b6107be8585856115be565b60019150509392505050565b5f6012905090565b5f806107dc611369565b905061086c81858560015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546108679190612607565b611370565b600191505092915050565b7f0000000000000000000000004080cede9bd96ad07378cadf1a9a9d50a7e6c23b81565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108c8611369565b73ffffffffffffffffffffffffffffffffffffffff166108e6610c58565b73ffffffffffffffffffffffffffffffffffffffff161461093c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610933906125bc565b60405180910390fd5b5f600781905550565b61094d611369565b73ffffffffffffffffffffffffffffffffffffffff1661096b610c58565b73ffffffffffffffffffffffffffffffffffffffff16146109c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b8906125bc565b60405180910390fd5b6109f1620186a06109e360016109d561078d565b611a5e90919063ffffffff16565b611a7390919063ffffffff16565b811015610a33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2a906126aa565b60405180910390fd5b610a616064610a536002610a4561078d565b611a5e90919063ffffffff16565b611a7390919063ffffffff16565b811115610aa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9a90612738565b60405180910390fd5b8060088190555050565b610ab5611369565b73ffffffffffffffffffffffffffffffffffffffff16610ad3610c58565b73ffffffffffffffffffffffffffffffffffffffff1614610b29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b20906125bc565b60405180910390fd5b60148211158015610b3b575060148111155b610b7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b71906127c6565b60405180910390fd5b8160098190555080600a819055505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610bd9611369565b73ffffffffffffffffffffffffffffffffffffffff16610bf7610c58565b73ffffffffffffffffffffffffffffffffffffffff1614610c4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c44906125bc565b60405180910390fd5b610c565f611a88565b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610c8f90612542565b80601f0160208091040260200160405190810160405280929190818152602001828054610cbb90612542565b8015610d065780601f10610cdd57610100808354040283529160200191610d06565b820191905f5260205f20905b815481529060010190602001808311610ce957829003601f168201915b5050505050905090565b5f80610d1a611369565b90505f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905083811015610ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd290612854565b60405180910390fd5b610de88286868403611370565b60019250505092915050565b5f80610dfe611369565b9050610e0b8185856115be565b600191505092915050565b610e1e611369565b73ffffffffffffffffffffffffffffffffffffffff16610e3c610c58565b73ffffffffffffffffffffffffffffffffffffffff1614610e92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e89906125bc565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb7f0000000000000000000000004080cede9bd96ad07378cadf1a9a9d50a7e6c23b8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f0891906123c4565b602060405180830381865afa158015610f23573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f479190612886565b6040518363ffffffff1660e01b8152600401610f649291906128b1565b6020604051808303815f875af1158015610f80573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fa49190612902565b5050565b610fb0611369565b73ffffffffffffffffffffffffffffffffffffffff16610fce610c58565b73ffffffffffffffffffffffffffffffffffffffff1614611024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101b906125bc565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611081573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110a59190612941565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561111e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111429190612941565b6040518363ffffffff1660e01b815260040161115f92919061296c565b602060405180830381865afa15801561117a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061119e9190612941565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60095481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600a5481565b60075481565b61127b611369565b73ffffffffffffffffffffffffffffffffffffffff16611299610c58565b73ffffffffffffffffffffffffffffffffffffffff16146112ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e6906125bc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361135d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135490612a03565b60405180910390fd5b61136681611a88565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d590612a91565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361144c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144390612b1f565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115269190612318565b60405180910390a3505050565b5f61153e84846111e5565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146115b857818110156115aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a190612b87565b60405180910390fd5b6115b78484848403611370565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361162c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162390612c15565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361169a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169190612ca3565b60405180910390fd5b5f81116116dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d390612d31565b60405180910390fd5b5f600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806117785750600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b90505f73ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415806117d35750805b611812576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180990612d99565b60405180910390fd5b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490505f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16149050811580156118c757505f600754115b80156118d1575082155b1561192f57600754846118e387610b8c565b6118ed9190612607565b111561192e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192590612e4d565b60405180910390fd5b5b60085461193b30610b8c565b101580156119555750600b5f9054906101000a900460ff16155b801561195e5750815b8015611968575082155b156119a9576001600b5f6101000a81548160ff02191690831515021790555061198f611b4b565b5f600b5f6101000a81548160ff0219169083151502179055505b5f816119b757600a546119bb565b6009545b90505f811115611a4a57831580156119df5750600b5f9054906101000a900460ff16155b80156119f0575081806119ef5750825b5b15611a49575f611a1c6064611a0e8489611a5e90919063ffffffff16565b611a7390919063ffffffff16565b90505f811115611a3257611a31883083611ec9565b5b611a45818761213e90919063ffffffff16565b9550505b5b611a55878787611ec9565b50505050505050565b5f8183611a6b9190612e6b565b905092915050565b5f8183611a809190612ed9565b905092915050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f611b5530610b8c565b90505f8103611b645750611ec7565b600854811115611b745760085490505b5f4790505f600267ffffffffffffffff811115611b9457611b93612f09565b5b604051908082528060200260200182016040528015611bc25781602001602082028036833780820191505090505b50905030815f81518110611bd957611bd8612f36565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c70573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c949190612941565b81600181518110611ca857611ca7612f36565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611d0130737a250d5630b4cf539739df2c5dacb4c659f2488d85611370565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8430426040518663ffffffff1660e01b8152600401611d5695949392919061305c565b5f604051808303815f87803b158015611d6d575f80fd5b505af1158015611d7f573d5f803e3d5ffd5b505050505f611d97834761213e90919063ffffffff16565b90505f611dc16064611db3600585611a5e90919063ffffffff16565b611a7390919063ffffffff16565b9050611dd6818361213e90919063ffffffff16565b91507f0000000000000000000000004080cede9bd96ad07378cadf1a9a9d50a7e6c23b73ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f19350505050158015611e3b573d5f803e3d5ffd5b507332bcca76c9dd8db73b1239dbe8eb81b86fff597c73ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611e93573d5f803e3d5ffd5b50807f1cfca31204cc745553128283c3bd97acb07e803bd611f352db637c644eb59b8760405160405180910390a250505050505b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2e90613124565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9c906131b2565b60405180910390fd5b611fb0838383612153565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612033576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202a90613240565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546120c19190612607565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121259190612318565b60405180910390a3612138848484612158565b50505050565b5f818361214b919061325e565b905092915050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612194578082015181840152602081019050612179565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6121b98261215d565b6121c38185612167565b93506121d3818560208601612177565b6121dc8161219f565b840191505092915050565b5f6020820190508181035f8301526121ff81846121af565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6122348261220b565b9050919050565b6122448161222a565b811461224e575f80fd5b50565b5f8135905061225f8161223b565b92915050565b5f819050919050565b61227781612265565b8114612281575f80fd5b50565b5f813590506122928161226e565b92915050565b5f80604083850312156122ae576122ad612207565b5b5f6122bb85828601612251565b92505060206122cc85828601612284565b9150509250929050565b5f8115159050919050565b6122ea816122d6565b82525050565b5f6020820190506123035f8301846122e1565b92915050565b61231281612265565b82525050565b5f60208201905061232b5f830184612309565b92915050565b5f805f6060848603121561234857612347612207565b5b5f61235586828701612251565b935050602061236686828701612251565b925050604061237786828701612284565b9150509250925092565b5f60ff82169050919050565b61239681612381565b82525050565b5f6020820190506123af5f83018461238d565b92915050565b6123be8161222a565b82525050565b5f6020820190506123d75f8301846123b5565b92915050565b5f602082840312156123f2576123f1612207565b5b5f6123ff84828501612284565b91505092915050565b5f806040838503121561241e5761241d612207565b5b5f61242b85828601612284565b925050602061243c85828601612284565b9150509250929050565b5f6020828403121561245b5761245a612207565b5b5f61246884828501612251565b91505092915050565b5f61247b8261222a565b9050919050565b61248b81612471565b8114612495575f80fd5b50565b5f813590506124a681612482565b92915050565b5f602082840312156124c1576124c0612207565b5b5f6124ce84828501612498565b91505092915050565b5f80604083850312156124ed576124ec612207565b5b5f6124fa85828601612251565b925050602061250b85828601612251565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061255957607f821691505b60208210810361256c5761256b612515565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6125a6602083612167565b91506125b182612572565b602082019050919050565b5f6020820190508181035f8301526125d38161259a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61261182612265565b915061261c83612265565b9250828201905080821115612634576126336125da565b5b92915050565b7f53776170207468726573686f6c642063616e6e6f74206265206c6f77657220745f8201527f68616e20302e3030312520746f74616c20737570706c792e0000000000000000602082015250565b5f612694603883612167565b915061269f8261263a565b604082019050919050565b5f6020820190508181035f8301526126c181612688565b9050919050565b7f53776170207468726573686f6c642063616e6e6f7420626520686967686572205f8201527f7468616e20322520746f74616c20737570706c792e0000000000000000000000602082015250565b5f612722603583612167565b915061272d826126c8565b604082019050919050565b5f6020820190508181035f83015261274f81612716565b9050919050565b7f417474656d7074696e6720746f207365742066656520686967686572207468615f8201527f6e20696e697469616c206665652e000000000000000000000000000000000000602082015250565b5f6127b0602e83612167565b91506127bb82612756565b604082019050919050565b5f6020820190508181035f8301526127dd816127a4565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f61283e602583612167565b9150612849826127e4565b604082019050919050565b5f6020820190508181035f83015261286b81612832565b9050919050565b5f815190506128808161226e565b92915050565b5f6020828403121561289b5761289a612207565b5b5f6128a884828501612872565b91505092915050565b5f6040820190506128c45f8301856123b5565b6128d16020830184612309565b9392505050565b6128e1816122d6565b81146128eb575f80fd5b50565b5f815190506128fc816128d8565b92915050565b5f6020828403121561291757612916612207565b5b5f612924848285016128ee565b91505092915050565b5f8151905061293b8161223b565b92915050565b5f6020828403121561295657612955612207565b5b5f6129638482850161292d565b91505092915050565b5f60408201905061297f5f8301856123b5565b61298c60208301846123b5565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6129ed602683612167565b91506129f882612993565b604082019050919050565b5f6020820190508181035f830152612a1a816129e1565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612a7b602483612167565b9150612a8682612a21565b604082019050919050565b5f6020820190508181035f830152612aa881612a6f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612b09602283612167565b9150612b1482612aaf565b604082019050919050565b5f6020820190508181035f830152612b3681612afd565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f612b71601d83612167565b9150612b7c82612b3d565b602082019050919050565b5f6020820190508181035f830152612b9e81612b65565b9050919050565b7f5472616e736665722066726f6d20746865207a65726f2061646472657373206e5f8201527f6f7420616c6c6f7765642e000000000000000000000000000000000000000000602082015250565b5f612bff602b83612167565b9150612c0a82612ba5565b604082019050919050565b5f6020820190508181035f830152612c2c81612bf3565b9050919050565b7f5472616e7366657220746f20746865207a65726f2061646472657373206e6f745f8201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000602082015250565b5f612c8d602983612167565b9150612c9882612c33565b604082019050919050565b5f6020820190508181035f830152612cba81612c81565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f2e00000000000000000000000000000000000000000000602082015250565b5f612d1b602a83612167565b9150612d2682612cc1565b604082019050919050565b5f6020820190508181035f830152612d4881612d0f565b9050919050565b7f4c69717569646974792070616972206e6f742079657420637265617465642e005f82015250565b5f612d83601f83612167565b9150612d8e82612d4f565b602082019050919050565b5f6020820190508181035f830152612db081612d77565b9050919050565b7f42616c616e63652065786365656473206d617820686f6c64696e677320616d6f5f8201527f756e742c20636f6e7369646572207573696e672061207365636f6e642077616c60208201527f6c65742e00000000000000000000000000000000000000000000000000000000604082015250565b5f612e37604483612167565b9150612e4282612db7565b606082019050919050565b5f6020820190508181035f830152612e6481612e2b565b9050919050565b5f612e7582612265565b9150612e8083612265565b9250828202612e8e81612265565b91508282048414831517612ea557612ea46125da565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612ee382612265565b9150612eee83612265565b925082612efe57612efd612eac565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f819050919050565b5f612f8f612f8a612f8584612f63565b612f6c565b612265565b9050919050565b612f9f81612f75565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612fd78161222a565b82525050565b5f612fe88383612fce565b60208301905092915050565b5f602082019050919050565b5f61300a82612fa5565b6130148185612faf565b935061301f83612fbf565b805f5b8381101561304f5781516130368882612fdd565b975061304183612ff4565b925050600181019050613022565b5085935050505092915050565b5f60a08201905061306f5f830188612309565b61307c6020830187612f96565b818103604083015261308e8186613000565b905061309d60608301856123b5565b6130aa6080830184612309565b9695505050505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61310e602583612167565b9150613119826130b4565b604082019050919050565b5f6020820190508181035f83015261313b81613102565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61319c602383612167565b91506131a782613142565b604082019050919050565b5f6020820190508181035f8301526131c981613190565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61322a602683612167565b9150613235826131d0565b604082019050919050565b5f6020820190508181035f8301526132578161321e565b9050919050565b5f61326882612265565b915061327383612265565b925082820390508181111561328b5761328a6125da565b5b9291505056fea2646970667358221220cda6a8d3e6b28249a992128842aae45cb58eba38984e5bb5cd64bdcc920a788b64736f6c63430008160033

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.