ETH Price: $2,503.20 (-0.88%)

Token

BITCOIN BLACK GOLD (BLACK GOLD)
 

Overview

Max Total Supply

21,000,000 BLACK GOLD

Holders

52

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
BITCOINBLACKGOLD

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-05
*/

//SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.17;

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

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

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

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The defaut value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    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");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `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");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    /** This function will be used to generate the total supply
    * while deploying the contract
    *
    * This function can never be called again after deploying contract
    */
    function _tokengeneration(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: generation to the zero address");

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

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

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    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);
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * generation and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be generated for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

library Address {
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_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 {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

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

    function WETH() external pure returns (address);

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

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

contract BITCOINBLACKGOLD is ERC20, Ownable {
    using Address for address payable;

    IRouter public router;
    address public pair;

    bool private _liquidityMutex = false;
    bool public providingLiquidity = false;
    bool public tradingEnabled = false;

    uint256 public tokenLiquidityThreshold = 42e3 * 10**18;
    uint256 public maxBuyLimit = 42e4 * 10**18;
    uint256 public maxSellLimit = 42e4 * 10**18;
    uint256 public maxWalletLimit = 42e4 * 10**18;

    uint256 public genesis_block;
    uint256 private deadline = 2;
    uint256 private launchtax = 99;

    address private devWallet = 0xa510A48c8D4c0172c12F5540e87a25FdA48dB14a;
	address public constant deadWallet = 0x000000000000000000000000000000000000dEaD;

    struct Taxes {
        uint256 liquidity;
        uint256 dev;
    }

    Taxes public taxes = Taxes(0, 0);
    Taxes public sellTaxes = Taxes(0, 0);

    mapping(address => bool) public exemptFee;
    mapping(address => bool) public isearlybuyer;

    //Anti Dump
    mapping(address => uint256) private _lastSell;
    bool public coolDownEnabled = false;
    uint256 public coolDownTime = 60 seconds;

    modifier mutexLock() {
        if (!_liquidityMutex) {
            _liquidityMutex = true;
            _;
            _liquidityMutex = false;
        }
    }

    constructor() ERC20("BITCOIN BLACK GOLD", "BLACK GOLD") {
        _tokengeneration(msg.sender, 21e6 * 10**decimals());
        exemptFee[msg.sender] = true;

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        // Create a pair for this new token
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        exemptFee[address(this)] = true;
        exemptFee[devWallet] = true;
        exemptFee[deadWallet] = true;
        exemptFee[0x71B5759d73262FBb223956913ecF4ecC51057641] = true;
        exemptFee[0xD152f549545093347A162Dce210e7293f1452150] = true;
        exemptFee[0xE2fE530C047f2d85298b07D9333C05737f1435fB] = true;

    }

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

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

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

        return true;
    }

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

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

        return true;
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");
        require(
            !isearlybuyer[sender] && !isearlybuyer[recipient],
            "You can't transfer tokens"
        );

        if (!exemptFee[sender] && !exemptFee[recipient]) {
            require(tradingEnabled, "Trading not enabled");
        }

        if (sender == pair && !exemptFee[recipient] && !_liquidityMutex) {
            require(amount <= maxBuyLimit, "You are exceeding maxBuyLimit");
            require(
                balanceOf(recipient) + amount <= maxWalletLimit,
                "You are exceeding maxWalletLimit"
            );
        }

        if (
            sender != pair && !exemptFee[recipient] && !exemptFee[sender] && !_liquidityMutex
        ) {
            require(amount <= maxSellLimit, "You are exceeding maxSellLimit");
            if (recipient != pair) {
                require(
                    balanceOf(recipient) + amount <= maxWalletLimit,
                    "You are exceeding maxWalletLimit"
                );
            }
            if (coolDownEnabled) {
                uint256 timePassed = block.timestamp - _lastSell[sender];
                require(timePassed >= coolDownTime, "Cooldown enabled");
                _lastSell[sender] = block.timestamp;
            }
        }

        uint256 feeswap;
        uint256 feesum;
        uint256 fee;
        Taxes memory currentTaxes;

        bool useLaunchFee = !exemptFee[sender] &&
            !exemptFee[recipient] &&
            block.number < genesis_block + deadline;

        //set fee to zero if fees in contract are handled or exempted
        if (_liquidityMutex || exemptFee[sender] || exemptFee[recipient])
            fee = 0;

            //calculate fee
        else if (recipient == pair && !useLaunchFee) {
            feeswap =
                sellTaxes.liquidity +        
                sellTaxes.dev ;
            feesum = feeswap;
            currentTaxes = sellTaxes;
        } else if (!useLaunchFee) {
            feeswap =
                taxes.liquidity +
                taxes.dev ;
            feesum = feeswap;
            currentTaxes = taxes;
        } else if (useLaunchFee) {
            feeswap = launchtax;
            feesum = launchtax;
        }

        fee = (amount * feesum) / 100;

        //send fees if threshold has been reached
        //don't do this on buys, breaks swap
        if (providingLiquidity && sender != pair) handle_fees(feeswap, currentTaxes);

        //rest to recipient
        super._transfer(sender, recipient, amount - fee);
        if (fee > 0) {
            //send the fee to the contract
            if (feeswap > 0) {
                uint256 feeAmount = (amount * feeswap) / 100;
                super._transfer(sender, address(this), feeAmount);
            }

        }
    }

    function handle_fees(uint256 feeswap, Taxes memory swapTaxes) private mutexLock {


	if(feeswap == 0){
            return;
        }	

        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= tokenLiquidityThreshold) {
            if (tokenLiquidityThreshold > 1) {
                contractBalance = tokenLiquidityThreshold;
            }

            // Split the contract balance into halves
            uint256 denominator = feeswap * 2;
            uint256 tokensToAddLiquidityWith = (contractBalance * swapTaxes.liquidity) /
                denominator;
            uint256 toSwap = contractBalance - tokensToAddLiquidityWith;

            uint256 initialBalance = address(this).balance;

            swapTokensForETH(toSwap);

            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 unitBalance = deltaBalance / (denominator - swapTaxes.liquidity);
            uint256 ethToAddLiquidityWith = unitBalance * swapTaxes.liquidity;

            if (ethToAddLiquidityWith > 0) {
                // Add liquidity
                addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
            }

            uint256 devAmt = unitBalance * 2 * swapTaxes.dev;
            if (devAmt > 0) {
                payable(devWallet).sendValue(devAmt);
            }

        }
    }

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

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

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

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

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

    function updateLiquidityProvide(bool state) external onlyOwner {
        //update liquidity providing state
        providingLiquidity = state;
    }

    function updateLiquidityTreshhold(uint256 new_amount) external onlyOwner {
        //update the treshhold
        tokenLiquidityThreshold = new_amount * 10**decimals();
    }


    function updateRouterAndPair(address newRouter, address newPair) external onlyOwner {
        router = IRouter(newRouter);
        pair = newPair;
    }

   function enableTrading() external onlyOwner {
        require(!tradingEnabled, "Trading is already enabled");
        tradingEnabled = true;
        providingLiquidity = true;
        genesis_block = block.number;
    }

    function updateCooldown(bool state, uint256 time) external onlyOwner {
        coolDownTime = time * 1 seconds;
        coolDownEnabled = state;
        require(time <= 60, "cooldown timer cannot exceed 1 minutes");
    }

    function updateIsEarlyBuyer(address account, bool state) external onlyOwner {
        isearlybuyer[account] = state;
    }

    function bulkIsEarlyBuyer(address[] memory accounts, bool state) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            isearlybuyer[accounts[i]] = state;
        }
    }

    function updateExemptFee(address _address, bool state) external onlyOwner {
        exemptFee[_address] = state;
    }

    function bulkExemptFee(address[] memory accounts, bool state) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            exemptFee[accounts[i]] = state;
        }
    }

    function updateMaxTxLimit(uint256 maxBuy, uint256 maxSell, uint256 maxWallet) external onlyOwner {
        require(maxBuy >= 21e3, "Cannot set max buy amount lower than 0.1%");
        require(maxSell >= 21e3, "Cannot set max sell amount lower than 0.1%");
        require(maxWallet >= 21e3, "Cannot set max wallet amount lower than 0.1%");
        maxBuyLimit = maxBuy * 10**decimals();
        maxSellLimit = maxSell * 10**decimals();
        maxWalletLimit = maxWallet * 10**decimals(); 
    }

    function rescueETH(uint256 weiAmount) external {
        payable(devWallet).transfer(weiAmount);
    }

    function callWithdrawl(address tokenAdd, uint256 amount) external {
        IERC20(tokenAdd).transfer(devWallet, amount);
    }

    // fallbacks
    receive() external payable {}
}

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":"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":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkIsEarlyBuyer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAdd","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"callWithdrawl","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"coolDownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"coolDownTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"genesis_block","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"address","name":"","type":"address"}],"name":"isearlybuyer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"providingLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenLiquidityThreshold","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":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"},{"internalType":"uint256","name":"time","type":"uint256"}],"name":"updateCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateIsEarlyBuyer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"updateLiquidityProvide","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"updateLiquidityTreshhold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"uint256","name":"maxSell","type":"uint256"},{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"updateMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"},{"internalType":"address","name":"newPair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6007805462ffffff60a01b191690556908e4d3168276864000006008556958f03ee118a13e8000006009819055600a819055600b556002600d556063600e55600f80546001600160a01b03191673a510a48c8d4c0172c12f5540e87a25fda48db14a1790556000608081905260a08190526010819055601181905561010060405260c081905260e081905260128190556013556017805460ff19169055603c601855348015620000ae57600080fd5b506040518060400160405280601281526020017110925510d3d2538810931050d2c811d3d31160721b8152506040518060400160405280600a81526020016910931050d2c811d3d31160b21b81525081600390816200010e9190620005bd565b5060046200011d8282620005bd565b5050506200013a620001346200040160201b60201c565b62000405565b62000163336200014d6012600a6200079e565b6200015d906301406f40620007b6565b62000457565b336000908152601460209081526040808320805460ff19166001179055805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9392849263c45a015592600480830193928290030181865afa158015620001ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f49190620007d0565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000242573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002689190620007d0565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc9190620007d0565b600680546001600160a01b03199081166001600160a01b0395861617909155600780549091169184169190911790555030600090815260146020526040808220805460ff199081166001908117909255600f54909416835290822080548416821790557f8b9e18c5e04efe171d1e4f682ad90d753958a5ffe56db5290b0236c8e0b6db0080548416821790557f586ff138e52109f735a0eb3bbb6d60c4d58f0b083989bb0fc652c57b279f63f080548416821790557f5c5b513987f7fdc52fe83875f2c9ef27a34386f453e523bc51b9e1d070a01774805484168217905573e2fe530c047f2d85298b07d9333c05737f1435fb9091527f2e7f1387ef17d0b834080bff5908285a81c37b1adf883fad4370ba0c412a19ac8054909216179055620007fb565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620004c05760405162461bcd60e51b815260206004820152602560248201527f45524332303a2067656e65726174696f6e20746f20746865207a65726f206164604482015264647265737360d81b606482015260840160405180910390fd5b60028190556001600160a01b038216600081815260208181526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200054457607f821691505b6020821081036200056557634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200051457600081815260208120601f850160051c81016020861015620005945750805b601f850160051c820191505b81811015620005b557828155600101620005a0565b505050505050565b81516001600160401b03811115620005d957620005d962000519565b620005f181620005ea84546200052f565b846200056b565b602080601f831160018114620006295760008415620006105750858301515b600019600386901b1c1916600185901b178555620005b5565b600085815260208120601f198616915b828110156200065a5788860151825594840194600190910190840162000639565b5085821015620006795787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006e0578160001904821115620006c457620006c462000689565b80851615620006d257918102915b93841c9390800290620006a4565b509250929050565b600082620006f95750600162000798565b81620007085750600062000798565b81600181146200072157600281146200072c576200074c565b600191505062000798565b60ff84111562000740576200074062000689565b50506001821b62000798565b5060208310610133831016604e8410600b841016171562000771575081810a62000798565b6200077d83836200069f565b806000190482111562000794576200079462000689565b0290505b92915050565b6000620007af60ff841683620006e8565b9392505050565b808202811582820484141762000798576200079862000689565b600060208284031215620007e357600080fd5b81516001600160a01b0381168114620007af57600080fd5b6125d2806200080b6000396000f3fe6080604052600436106102555760003560e01c80638514022d11610139578063c5d32bb2116100b6578063e517f2b91161007a578063e517f2b914610719578063ee36e35914610739578063f2fde38b14610753578063f66895a314610773578063f887ea401461078e578063fbe6324e146107ae57600080fd5b8063c5d32bb21461064d578063d2ce0db21461067d578063d9967ddb14610693578063dd62ed3e146106b3578063e1b450ad146106f957600080fd5b80639e252f00116100fd5780639e252f001461059d578063a0cc1c2a146105bd578063a457c2d7146105ed578063a8aa1b311461060d578063a9059cbb1461062d57600080fd5b80638514022d1461050757806385141a77146105275780638a8c523c146105555780638da5cb5b1461056a57806395d89b411461058857600080fd5b8063355496ca116101d2578063652e2f0411610196578063652e2f041461044a57806366a88d96146104605780636aa5b37f1461047657806370a082311461048c578063715018a6146104c2578063728f8eea146104d757600080fd5b8063355496ca146103a957806339509351146103c957806340b28c2f146103e957806342b6fa11146104095780634ada218b1461042957600080fd5b806318160ddd1161021957806318160ddd14610322578063215d92a61461033757806323b872dd14610357578063274a533c14610377578063313ce5671461038d57600080fd5b806306fdde0314610261578063095ea7b31461028c5780630e375a5c146102bc5780631340538f146102de5780631675d802146102fe57600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b506102766107cf565b6040516102839190611fcc565b60405180910390f35b34801561029857600080fd5b506102ac6102a736600461203f565b610861565b6040519015158152602001610283565b3480156102c857600080fd5b506102dc6102d736600461209a565b610878565b005b3480156102ea57600080fd5b506102dc6102f9366004612171565b610917565b34801561030a57600080fd5b5061031460085481565b604051908152602001610283565b34801561032e57600080fd5b50600254610314565b34801561034357600080fd5b506102dc61035236600461209a565b61095f565b34801561036357600080fd5b506102ac610372366004612195565b6109f0565b34801561038357600080fd5b50610314600c5481565b34801561039957600080fd5b5060405160128152602001610283565b3480156103b557600080fd5b506102dc6103c43660046121d6565b610aa1565b3480156103d557600080fd5b506102ac6103e436600461203f565b610af6565b3480156103f557600080fd5b506102dc61040436600461220f565b610b2d565b34801561041557600080fd5b506102dc61042436600461223d565b610b85565b34801561043557600080fd5b506007546102ac90600160b01b900460ff1681565b34801561045657600080fd5b50610314600a5481565b34801561046c57600080fd5b50610314600b5481565b34801561048257600080fd5b5061031460095481565b34801561049857600080fd5b506103146104a7366004612256565b6001600160a01b031660009081526020819052604090205490565b3480156104ce57600080fd5b506102dc610bcb565b3480156104e357600080fd5b506010546011546104f2919082565b60408051928352602083019190915201610283565b34801561051357600080fd5b506102dc6105223660046121d6565b610c01565b34801561053357600080fd5b5061053d61dead81565b6040516001600160a01b039091168152602001610283565b34801561056157600080fd5b506102dc610c56565b34801561057657600080fd5b506005546001600160a01b031661053d565b34801561059457600080fd5b50610276610cf5565b3480156105a957600080fd5b506102dc6105b836600461223d565b610d04565b3480156105c957600080fd5b506102ac6105d8366004612256565b60156020526000908152604090205460ff1681565b3480156105f957600080fd5b506102ac61060836600461203f565b610d42565b34801561061957600080fd5b5060075461053d906001600160a01b031681565b34801561063957600080fd5b506102ac61064836600461203f565b610ddd565b34801561065957600080fd5b506102ac610668366004612256565b60146020526000908152604090205460ff1681565b34801561068957600080fd5b5061031460185481565b34801561069f57600080fd5b506102dc6106ae36600461203f565b610dea565b3480156106bf57600080fd5b506103146106ce36600461220f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561070557600080fd5b506102dc610714366004612273565b610e61565b34801561072557600080fd5b506102dc61073436600461229f565b61100c565b34801561074557600080fd5b506017546102ac9060ff1681565b34801561075f57600080fd5b506102dc61076e366004612256565b6110b2565b34801561077f57600080fd5b506012546013546104f2919082565b34801561079a57600080fd5b5060065461053d906001600160a01b031681565b3480156107ba57600080fd5b506007546102ac90600160a81b900460ff1681565b6060600380546107de906122bd565b80601f016020809104026020016040519081016040528092919081815260200182805461080a906122bd565b80156108575780601f1061082c57610100808354040283529160200191610857565b820191906000526020600020905b81548152906001019060200180831161083a57829003601f168201915b5050505050905090565b600061086e33848461114d565b5060015b92915050565b6005546001600160a01b031633146108ab5760405162461bcd60e51b81526004016108a2906122f7565b60405180910390fd5b60005b82518110156109125781601460008584815181106108ce576108ce61232c565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061090a81612358565b9150506108ae565b505050565b6005546001600160a01b031633146109415760405162461bcd60e51b81526004016108a2906122f7565b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b031633146109895760405162461bcd60e51b81526004016108a2906122f7565b60005b82518110156109125781601560008584815181106109ac576109ac61232c565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806109e881612358565b91505061098c565b60006109fd848484611271565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610a825760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108a2565b610a968533610a918685612371565b61114d565b506001949350505050565b6005546001600160a01b03163314610acb5760405162461bcd60e51b81526004016108a2906122f7565b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161086e918590610a91908690612384565b6005546001600160a01b03163314610b575760405162461bcd60e51b81526004016108a2906122f7565b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b6005546001600160a01b03163314610baf5760405162461bcd60e51b81526004016108a2906122f7565b610bbb6012600a61247b565b610bc5908261248a565b60085550565b6005546001600160a01b03163314610bf55760405162461bcd60e51b81526004016108a2906122f7565b610bff600061191e565b565b6005546001600160a01b03163314610c2b5760405162461bcd60e51b81526004016108a2906122f7565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610c805760405162461bcd60e51b81526004016108a2906122f7565b600754600160b01b900460ff1615610cda5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c656400000000000060448201526064016108a2565b6007805461ffff60a81b191661010160a81b17905543600c55565b6060600480546107de906122bd565b600f546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610d3e573d6000803e3d6000fd5b5050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610dc45760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108a2565b610dd33385610a918685612371565b5060019392505050565b600061086e338484611271565b600f5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610e3d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091291906124a1565b6005546001600160a01b03163314610e8b5760405162461bcd60e51b81526004016108a2906122f7565b615208831015610eef5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e312560b81b60648201526084016108a2565b615208821015610f545760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e312560b01b60648201526084016108a2565b615208811015610fbb5760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e312560a01b60648201526084016108a2565b610fc76012600a61247b565b610fd1908461248a565b600955610fe06012600a61247b565b610fea908361248a565b600a556012610ffa90600a61247b565b611004908261248a565b600b55505050565b6005546001600160a01b031633146110365760405162461bcd60e51b81526004016108a2906122f7565b61104181600161248a565b6018556017805460ff1916831515179055603c811115610d3e5760405162461bcd60e51b815260206004820152602660248201527f636f6f6c646f776e2074696d65722063616e6e6f74206578636565642031206d604482015265696e7574657360d01b60648201526084016108a2565b6005546001600160a01b031633146110dc5760405162461bcd60e51b81526004016108a2906122f7565b6001600160a01b0381166111415760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108a2565b61114a8161191e565b50565b6001600160a01b0383166111af5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108a2565b6001600160a01b0382166112105760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108a2565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116112d35760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108a2565b6001600160a01b03831660009081526015602052604090205460ff1615801561131557506001600160a01b03821660009081526015602052604090205460ff16155b6113615760405162461bcd60e51b815260206004820152601960248201527f596f752063616e2774207472616e7366657220746f6b656e730000000000000060448201526064016108a2565b6001600160a01b03831660009081526014602052604090205460ff161580156113a357506001600160a01b03821660009081526014602052604090205460ff16155b156113f757600754600160b01b900460ff166113f75760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016108a2565b6007546001600160a01b03848116911614801561142d57506001600160a01b03821660009081526014602052604090205460ff16155b80156114435750600754600160a01b900460ff16155b156115155760095481111561149a5760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d697400000060448201526064016108a2565b600b54816114bd846001600160a01b031660009081526020819052604090205490565b6114c79190612384565b11156115155760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108a2565b6007546001600160a01b0384811691161480159061154c57506001600160a01b03821660009081526014602052604090205460ff16155b801561157157506001600160a01b03831660009081526014602052604090205460ff16155b80156115875750600754600160a01b900460ff16155b1561170057600a548111156115de5760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d6974000060448201526064016108a2565b6007546001600160a01b0383811691161461166e57600b5481611616846001600160a01b031660009081526020819052604090205490565b6116209190612384565b111561166e5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108a2565b60175460ff1615611700576001600160a01b03831660009081526016602052604081205461169c9042612371565b90506018548110156116e35760405162461bcd60e51b815260206004820152601060248201526f10dbdbdb191bdddb88195b98589b195960821b60448201526064016108a2565b506001600160a01b03831660009081526016602052604090204290555b6000806000611722604051806040016040528060008152602001600081525090565b6001600160a01b03871660009081526014602052604081205460ff1615801561176457506001600160a01b03871660009081526014602052604090205460ff16155b801561177e5750600d54600c5461177b9190612384565b43105b600754909150600160a01b900460ff16806117b157506001600160a01b03881660009081526014602052604090205460ff165b806117d457506001600160a01b03871660009081526014602052604090205460ff165b156117e2576000925061187e565b6007546001600160a01b0388811691161480156117fd575080155b15611836576013546012546118129190612384565b6040805180820190915260125481526013546020820152909550859450915061187e565b8061186f5760115460105461184b9190612384565b6040805180820190915260105481526011546020820152909550859450915061187e565b801561187e57600e5494508493505b606461188a858861248a565b61189491906124be565b600754909350600160a81b900460ff1680156118be57506007546001600160a01b03898116911614155b156118cd576118cd8583611970565b6118e188886118dc868a612371565b611aac565b821561191457841561191457600060646118fb878961248a565b61190591906124be565b9050611912893083611aac565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff16610d3e576007805460ff60a01b1916600160a01b1790558115611a9b57306000908152602081905260409020546008548110611a9957600160085411156119c357506008545b60006119d084600261248a565b90506000818460000151846119e5919061248a565b6119ef91906124be565b905060006119fd8285612371565b905047611a0982611c84565b6000611a158247612371565b8751909150600090611a279087612371565b611a3190836124be565b8851909150600090611a43908361248a565b90508015611a5557611a558682611dde565b6020890151600090611a6884600261248a565b611a72919061248a565b90508015611a9057600f54611a90906001600160a01b031682611eb3565b50505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b038316611b105760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108a2565b6001600160a01b038216611b725760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108a2565b6001600160a01b03831660009081526020819052604090205481811015611bea5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108a2565b611bf48282612371565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611c2a908490612384565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c7691815260200190565b60405180910390a350505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611cb957611cb961232c565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611d12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d3691906124e0565b81600181518110611d4957611d4961232c565b6001600160a01b039283166020918202929092010152600654611d6f913091168461114d565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611da89085906000908690309042906004016124fd565b600060405180830381600087803b158015611dc257600080fd5b505af1158015611dd6573d6000803e3d6000fd5b505050505050565b600654611df69030906001600160a01b03168461114d565b6006546001600160a01b031663f305d719823085600080611e1f6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611e87573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611eac919061256e565b5050505050565b80471015611f035760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016108a2565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611f50576040519150601f19603f3d011682016040523d82523d6000602084013e611f55565b606091505b50509050806109125760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016108a2565b600060208083528351808285015260005b81811015611ff957858101830151858201604001528201611fdd565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461114a57600080fd5b803561203a8161201a565b919050565b6000806040838503121561205257600080fd5b823561205d8161201a565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b801515811461114a57600080fd5b803561203a81612081565b600080604083850312156120ad57600080fd5b823567ffffffffffffffff808211156120c557600080fd5b818501915085601f8301126120d957600080fd5b81356020828211156120ed576120ed61206b565b8160051b604051601f19603f830116810181811086821117156121125761211261206b565b60405292835281830193508481018201928984111561213057600080fd5b948201945b83861015612155576121468661202f565b85529482019493820193612135565b9650612164905087820161208f565b9450505050509250929050565b60006020828403121561218357600080fd5b813561218e81612081565b9392505050565b6000806000606084860312156121aa57600080fd5b83356121b58161201a565b925060208401356121c58161201a565b929592945050506040919091013590565b600080604083850312156121e957600080fd5b82356121f48161201a565b9150602083013561220481612081565b809150509250929050565b6000806040838503121561222257600080fd5b823561222d8161201a565b915060208301356122048161201a565b60006020828403121561224f57600080fd5b5035919050565b60006020828403121561226857600080fd5b813561218e8161201a565b60008060006060848603121561228857600080fd5b505081359360208301359350604090920135919050565b600080604083850312156122b257600080fd5b823561205d81612081565b600181811c908216806122d157607f821691505b6020821081036122f157634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161236a5761236a612342565b5060010190565b8181038181111561087257610872612342565b8082018082111561087257610872612342565b600181815b808511156123d25781600019048211156123b8576123b8612342565b808516156123c557918102915b93841c939080029061239c565b509250929050565b6000826123e957506001610872565b816123f657506000610872565b816001811461240c576002811461241657612432565b6001915050610872565b60ff84111561242757612427612342565b50506001821b610872565b5060208310610133831016604e8410600b8410161715612455575081810a610872565b61245f8383612397565b806000190482111561247357612473612342565b029392505050565b600061218e60ff8416836123da565b808202811582820484141761087257610872612342565b6000602082840312156124b357600080fd5b815161218e81612081565b6000826124db57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156124f257600080fd5b815161218e8161201a565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561254d5784516001600160a01b031683529383019391830191600101612528565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561258357600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212205de80298e3fbbda1402fd130bbe51623f22c0804667a5e4ccbb775419d68c26064736f6c63430008110033

Deployed Bytecode

0x6080604052600436106102555760003560e01c80638514022d11610139578063c5d32bb2116100b6578063e517f2b91161007a578063e517f2b914610719578063ee36e35914610739578063f2fde38b14610753578063f66895a314610773578063f887ea401461078e578063fbe6324e146107ae57600080fd5b8063c5d32bb21461064d578063d2ce0db21461067d578063d9967ddb14610693578063dd62ed3e146106b3578063e1b450ad146106f957600080fd5b80639e252f00116100fd5780639e252f001461059d578063a0cc1c2a146105bd578063a457c2d7146105ed578063a8aa1b311461060d578063a9059cbb1461062d57600080fd5b80638514022d1461050757806385141a77146105275780638a8c523c146105555780638da5cb5b1461056a57806395d89b411461058857600080fd5b8063355496ca116101d2578063652e2f0411610196578063652e2f041461044a57806366a88d96146104605780636aa5b37f1461047657806370a082311461048c578063715018a6146104c2578063728f8eea146104d757600080fd5b8063355496ca146103a957806339509351146103c957806340b28c2f146103e957806342b6fa11146104095780634ada218b1461042957600080fd5b806318160ddd1161021957806318160ddd14610322578063215d92a61461033757806323b872dd14610357578063274a533c14610377578063313ce5671461038d57600080fd5b806306fdde0314610261578063095ea7b31461028c5780630e375a5c146102bc5780631340538f146102de5780631675d802146102fe57600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b506102766107cf565b6040516102839190611fcc565b60405180910390f35b34801561029857600080fd5b506102ac6102a736600461203f565b610861565b6040519015158152602001610283565b3480156102c857600080fd5b506102dc6102d736600461209a565b610878565b005b3480156102ea57600080fd5b506102dc6102f9366004612171565b610917565b34801561030a57600080fd5b5061031460085481565b604051908152602001610283565b34801561032e57600080fd5b50600254610314565b34801561034357600080fd5b506102dc61035236600461209a565b61095f565b34801561036357600080fd5b506102ac610372366004612195565b6109f0565b34801561038357600080fd5b50610314600c5481565b34801561039957600080fd5b5060405160128152602001610283565b3480156103b557600080fd5b506102dc6103c43660046121d6565b610aa1565b3480156103d557600080fd5b506102ac6103e436600461203f565b610af6565b3480156103f557600080fd5b506102dc61040436600461220f565b610b2d565b34801561041557600080fd5b506102dc61042436600461223d565b610b85565b34801561043557600080fd5b506007546102ac90600160b01b900460ff1681565b34801561045657600080fd5b50610314600a5481565b34801561046c57600080fd5b50610314600b5481565b34801561048257600080fd5b5061031460095481565b34801561049857600080fd5b506103146104a7366004612256565b6001600160a01b031660009081526020819052604090205490565b3480156104ce57600080fd5b506102dc610bcb565b3480156104e357600080fd5b506010546011546104f2919082565b60408051928352602083019190915201610283565b34801561051357600080fd5b506102dc6105223660046121d6565b610c01565b34801561053357600080fd5b5061053d61dead81565b6040516001600160a01b039091168152602001610283565b34801561056157600080fd5b506102dc610c56565b34801561057657600080fd5b506005546001600160a01b031661053d565b34801561059457600080fd5b50610276610cf5565b3480156105a957600080fd5b506102dc6105b836600461223d565b610d04565b3480156105c957600080fd5b506102ac6105d8366004612256565b60156020526000908152604090205460ff1681565b3480156105f957600080fd5b506102ac61060836600461203f565b610d42565b34801561061957600080fd5b5060075461053d906001600160a01b031681565b34801561063957600080fd5b506102ac61064836600461203f565b610ddd565b34801561065957600080fd5b506102ac610668366004612256565b60146020526000908152604090205460ff1681565b34801561068957600080fd5b5061031460185481565b34801561069f57600080fd5b506102dc6106ae36600461203f565b610dea565b3480156106bf57600080fd5b506103146106ce36600461220f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561070557600080fd5b506102dc610714366004612273565b610e61565b34801561072557600080fd5b506102dc61073436600461229f565b61100c565b34801561074557600080fd5b506017546102ac9060ff1681565b34801561075f57600080fd5b506102dc61076e366004612256565b6110b2565b34801561077f57600080fd5b506012546013546104f2919082565b34801561079a57600080fd5b5060065461053d906001600160a01b031681565b3480156107ba57600080fd5b506007546102ac90600160a81b900460ff1681565b6060600380546107de906122bd565b80601f016020809104026020016040519081016040528092919081815260200182805461080a906122bd565b80156108575780601f1061082c57610100808354040283529160200191610857565b820191906000526020600020905b81548152906001019060200180831161083a57829003601f168201915b5050505050905090565b600061086e33848461114d565b5060015b92915050565b6005546001600160a01b031633146108ab5760405162461bcd60e51b81526004016108a2906122f7565b60405180910390fd5b60005b82518110156109125781601460008584815181106108ce576108ce61232c565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061090a81612358565b9150506108ae565b505050565b6005546001600160a01b031633146109415760405162461bcd60e51b81526004016108a2906122f7565b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b031633146109895760405162461bcd60e51b81526004016108a2906122f7565b60005b82518110156109125781601560008584815181106109ac576109ac61232c565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806109e881612358565b91505061098c565b60006109fd848484611271565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610a825760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108a2565b610a968533610a918685612371565b61114d565b506001949350505050565b6005546001600160a01b03163314610acb5760405162461bcd60e51b81526004016108a2906122f7565b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161086e918590610a91908690612384565b6005546001600160a01b03163314610b575760405162461bcd60e51b81526004016108a2906122f7565b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b6005546001600160a01b03163314610baf5760405162461bcd60e51b81526004016108a2906122f7565b610bbb6012600a61247b565b610bc5908261248a565b60085550565b6005546001600160a01b03163314610bf55760405162461bcd60e51b81526004016108a2906122f7565b610bff600061191e565b565b6005546001600160a01b03163314610c2b5760405162461bcd60e51b81526004016108a2906122f7565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610c805760405162461bcd60e51b81526004016108a2906122f7565b600754600160b01b900460ff1615610cda5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c656400000000000060448201526064016108a2565b6007805461ffff60a81b191661010160a81b17905543600c55565b6060600480546107de906122bd565b600f546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610d3e573d6000803e3d6000fd5b5050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610dc45760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108a2565b610dd33385610a918685612371565b5060019392505050565b600061086e338484611271565b600f5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610e3d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091291906124a1565b6005546001600160a01b03163314610e8b5760405162461bcd60e51b81526004016108a2906122f7565b615208831015610eef5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e312560b81b60648201526084016108a2565b615208821015610f545760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e312560b01b60648201526084016108a2565b615208811015610fbb5760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e312560a01b60648201526084016108a2565b610fc76012600a61247b565b610fd1908461248a565b600955610fe06012600a61247b565b610fea908361248a565b600a556012610ffa90600a61247b565b611004908261248a565b600b55505050565b6005546001600160a01b031633146110365760405162461bcd60e51b81526004016108a2906122f7565b61104181600161248a565b6018556017805460ff1916831515179055603c811115610d3e5760405162461bcd60e51b815260206004820152602660248201527f636f6f6c646f776e2074696d65722063616e6e6f74206578636565642031206d604482015265696e7574657360d01b60648201526084016108a2565b6005546001600160a01b031633146110dc5760405162461bcd60e51b81526004016108a2906122f7565b6001600160a01b0381166111415760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108a2565b61114a8161191e565b50565b6001600160a01b0383166111af5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108a2565b6001600160a01b0382166112105760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108a2565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116112d35760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108a2565b6001600160a01b03831660009081526015602052604090205460ff1615801561131557506001600160a01b03821660009081526015602052604090205460ff16155b6113615760405162461bcd60e51b815260206004820152601960248201527f596f752063616e2774207472616e7366657220746f6b656e730000000000000060448201526064016108a2565b6001600160a01b03831660009081526014602052604090205460ff161580156113a357506001600160a01b03821660009081526014602052604090205460ff16155b156113f757600754600160b01b900460ff166113f75760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016108a2565b6007546001600160a01b03848116911614801561142d57506001600160a01b03821660009081526014602052604090205460ff16155b80156114435750600754600160a01b900460ff16155b156115155760095481111561149a5760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d697400000060448201526064016108a2565b600b54816114bd846001600160a01b031660009081526020819052604090205490565b6114c79190612384565b11156115155760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108a2565b6007546001600160a01b0384811691161480159061154c57506001600160a01b03821660009081526014602052604090205460ff16155b801561157157506001600160a01b03831660009081526014602052604090205460ff16155b80156115875750600754600160a01b900460ff16155b1561170057600a548111156115de5760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d6974000060448201526064016108a2565b6007546001600160a01b0383811691161461166e57600b5481611616846001600160a01b031660009081526020819052604090205490565b6116209190612384565b111561166e5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108a2565b60175460ff1615611700576001600160a01b03831660009081526016602052604081205461169c9042612371565b90506018548110156116e35760405162461bcd60e51b815260206004820152601060248201526f10dbdbdb191bdddb88195b98589b195960821b60448201526064016108a2565b506001600160a01b03831660009081526016602052604090204290555b6000806000611722604051806040016040528060008152602001600081525090565b6001600160a01b03871660009081526014602052604081205460ff1615801561176457506001600160a01b03871660009081526014602052604090205460ff16155b801561177e5750600d54600c5461177b9190612384565b43105b600754909150600160a01b900460ff16806117b157506001600160a01b03881660009081526014602052604090205460ff165b806117d457506001600160a01b03871660009081526014602052604090205460ff165b156117e2576000925061187e565b6007546001600160a01b0388811691161480156117fd575080155b15611836576013546012546118129190612384565b6040805180820190915260125481526013546020820152909550859450915061187e565b8061186f5760115460105461184b9190612384565b6040805180820190915260105481526011546020820152909550859450915061187e565b801561187e57600e5494508493505b606461188a858861248a565b61189491906124be565b600754909350600160a81b900460ff1680156118be57506007546001600160a01b03898116911614155b156118cd576118cd8583611970565b6118e188886118dc868a612371565b611aac565b821561191457841561191457600060646118fb878961248a565b61190591906124be565b9050611912893083611aac565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff16610d3e576007805460ff60a01b1916600160a01b1790558115611a9b57306000908152602081905260409020546008548110611a9957600160085411156119c357506008545b60006119d084600261248a565b90506000818460000151846119e5919061248a565b6119ef91906124be565b905060006119fd8285612371565b905047611a0982611c84565b6000611a158247612371565b8751909150600090611a279087612371565b611a3190836124be565b8851909150600090611a43908361248a565b90508015611a5557611a558682611dde565b6020890151600090611a6884600261248a565b611a72919061248a565b90508015611a9057600f54611a90906001600160a01b031682611eb3565b50505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b038316611b105760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108a2565b6001600160a01b038216611b725760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108a2565b6001600160a01b03831660009081526020819052604090205481811015611bea5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108a2565b611bf48282612371565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611c2a908490612384565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c7691815260200190565b60405180910390a350505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611cb957611cb961232c565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611d12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d3691906124e0565b81600181518110611d4957611d4961232c565b6001600160a01b039283166020918202929092010152600654611d6f913091168461114d565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611da89085906000908690309042906004016124fd565b600060405180830381600087803b158015611dc257600080fd5b505af1158015611dd6573d6000803e3d6000fd5b505050505050565b600654611df69030906001600160a01b03168461114d565b6006546001600160a01b031663f305d719823085600080611e1f6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611e87573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611eac919061256e565b5050505050565b80471015611f035760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016108a2565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611f50576040519150601f19603f3d011682016040523d82523d6000602084013e611f55565b606091505b50509050806109125760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016108a2565b600060208083528351808285015260005b81811015611ff957858101830151858201604001528201611fdd565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461114a57600080fd5b803561203a8161201a565b919050565b6000806040838503121561205257600080fd5b823561205d8161201a565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b801515811461114a57600080fd5b803561203a81612081565b600080604083850312156120ad57600080fd5b823567ffffffffffffffff808211156120c557600080fd5b818501915085601f8301126120d957600080fd5b81356020828211156120ed576120ed61206b565b8160051b604051601f19603f830116810181811086821117156121125761211261206b565b60405292835281830193508481018201928984111561213057600080fd5b948201945b83861015612155576121468661202f565b85529482019493820193612135565b9650612164905087820161208f565b9450505050509250929050565b60006020828403121561218357600080fd5b813561218e81612081565b9392505050565b6000806000606084860312156121aa57600080fd5b83356121b58161201a565b925060208401356121c58161201a565b929592945050506040919091013590565b600080604083850312156121e957600080fd5b82356121f48161201a565b9150602083013561220481612081565b809150509250929050565b6000806040838503121561222257600080fd5b823561222d8161201a565b915060208301356122048161201a565b60006020828403121561224f57600080fd5b5035919050565b60006020828403121561226857600080fd5b813561218e8161201a565b60008060006060848603121561228857600080fd5b505081359360208301359350604090920135919050565b600080604083850312156122b257600080fd5b823561205d81612081565b600181811c908216806122d157607f821691505b6020821081036122f157634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161236a5761236a612342565b5060010190565b8181038181111561087257610872612342565b8082018082111561087257610872612342565b600181815b808511156123d25781600019048211156123b8576123b8612342565b808516156123c557918102915b93841c939080029061239c565b509250929050565b6000826123e957506001610872565b816123f657506000610872565b816001811461240c576002811461241657612432565b6001915050610872565b60ff84111561242757612427612342565b50506001821b610872565b5060208310610133831016604e8410600b8410161715612455575081810a610872565b61245f8383612397565b806000190482111561247357612473612342565b029392505050565b600061218e60ff8416836123da565b808202811582820484141761087257610872612342565b6000602082840312156124b357600080fd5b815161218e81612081565b6000826124db57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156124f257600080fd5b815161218e8161201a565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561254d5784516001600160a01b031683529383019391830191600101612528565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561258357600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212205de80298e3fbbda1402fd130bbe51623f22c0804667a5e4ccbb775419d68c26064736f6c63430008110033

Deployed Bytecode Sourcemap

12687:11592:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2378:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14830:161;;;;;;;;;;-1:-1:-1;14830:161:0;;;;;:::i;:::-;;:::i;:::-;;;1327:14:1;;1320:22;1302:41;;1290:2;1275:18;14830:161:0;1162:187:1;23259:202:0;;;;;;;;;;-1:-1:-1;23259:202:0;;;;;:::i;:::-;;:::i;:::-;;21809:152;;;;;;;;;;-1:-1:-1;21809:152:0;;;;;:::i;:::-;;:::i;12967:54::-;;;;;;;;;;;;;;;;;;;3330:25:1;;;3318:2;3303:18;12967:54:0;3184:177:1;3498:108:0;;;;;;;;;;-1:-1:-1;3586:12:0;;3498:108;;22915:208;;;;;;;;;;-1:-1:-1;22915:208:0;;;;;:::i;:::-;;:::i;14999:448::-;;;;;;;;;;-1:-1:-1;14999:448:0;;;;;:::i;:::-;;:::i;13181:28::-;;;;;;;;;;;;;;;;3340:93;;;;;;;;;;-1:-1:-1;3340:93:0;;3423:2;3969:36:1;;3957:2;3942:18;3340:93:0;3827:184:1;23131:120:0;;;;;;;;;;-1:-1:-1;23131:120:0;;;;;:::i;:::-;;:::i;15455:248::-;;;;;;;;;;-1:-1:-1;15455:248:0;;;;;:::i;:::-;;:::i;22156:155::-;;;;;;;;;;-1:-1:-1;22156:155:0;;;;;:::i;:::-;;:::i;21969:177::-;;;;;;;;;;-1:-1:-1;21969:177:0;;;;;:::i;:::-;;:::i;12924:34::-;;;;;;;;;;-1:-1:-1;12924:34:0;;;;-1:-1:-1;;;12924:34:0;;;;;;13077:43;;;;;;;;;;;;;;;;13127:45;;;;;;;;;;;;;;;;13028:42;;;;;;;;;;;;;;;;3669:127;;;;;;;;;;-1:-1:-1;3669:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3770:18:0;3743:7;3770:18;;;;;;;;;;;;3669:127;11350:94;;;;;;;;;;;;;:::i;13531:32::-;;;;;;;;;;-1:-1:-1;13531:32:0;;;;;;;;;;;;;5407:25:1;;;5463:2;5448:18;;5441:34;;;;5380:18;13531:32:0;5233:248:1;22783:124:0;;;;;;;;;;-1:-1:-1;22783:124:0;;;;;:::i;:::-;;:::i;13364:79::-;;;;;;;;;;;;13401:42;13364:79;;;;;-1:-1:-1;;;;;5650:32:1;;;5632:51;;5620:2;5605:18;13364:79:0;5486:203:1;22318:224:0;;;;;;;;;;;;;:::i;11127:87::-;;;;;;;;;;-1:-1:-1;11200:6:0;;-1:-1:-1;;;;;11200:6:0;11127:87;;2597:104;;;;;;;;;;;;;:::i;23980:::-;;;;;;;;;;-1:-1:-1;23980:104:0;;;;;:::i;:::-;;:::i;13663:44::-;;;;;;;;;;-1:-1:-1;13663:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15711:410;;;;;;;;;;-1:-1:-1;15711:410:0;;;;;:::i;:::-;;:::i;12808:19::-;;;;;;;;;;-1:-1:-1;12808:19:0;;;;-1:-1:-1;;;;;12808:19:0;;;16129:165;;;;;;;;;;-1:-1:-1;16129:165:0;;;;;:::i;:::-;;:::i;13615:41::-;;;;;;;;;;-1:-1:-1;13615:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13827:40;;;;;;;;;;;;;;;;24092:129;;;;;;;;;;-1:-1:-1;24092:129:0;;;;;:::i;:::-;;:::i;4288:201::-;;;;;;;;;;-1:-1:-1;4288:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;4454:18:0;;;4422:7;4454:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4288:201;23469:503;;;;;;;;;;-1:-1:-1;23469:503:0;;;;;:::i;:::-;;:::i;22550:225::-;;;;;;;;;;-1:-1:-1;22550:225:0;;;;;:::i;:::-;;:::i;13785:35::-;;;;;;;;;;-1:-1:-1;13785:35:0;;;;;;;;11452:192;;;;;;;;;;-1:-1:-1;11452:192:0;;;;;:::i;:::-;;:::i;13570:36::-;;;;;;;;;;-1:-1:-1;13570:36:0;;;;;;;;;12780:21;;;;;;;;;;-1:-1:-1;12780:21:0;;;;-1:-1:-1;;;;;12780:21:0;;;12879:38;;;;;;;;;;-1:-1:-1;12879:38:0;;;;-1:-1:-1;;;12879:38:0;;;;;;2378:100;2432:13;2465:5;2458:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2378:100;:::o;14830:161::-;14905:4;14922:39;180:10;14945:7;14954:6;14922:8;:39::i;:::-;-1:-1:-1;14979:4:0;14830:161;;;;;:::o;23259:202::-;11200:6;;-1:-1:-1;;;;;11200:6:0;180:10;11262:23;11254:68;;;;-1:-1:-1;;;11254:68:0;;;;;;;:::i;:::-;;;;;;;;;23356:9:::1;23351:103;23375:8;:15;23371:1;:19;23351:103;;;23437:5;23412:9;:22;23422:8;23431:1;23422:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;23412:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;23412:22:0;:30;;-1:-1:-1;;23412:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23392:3;::::1;::::0;::::1;:::i;:::-;;;;23351:103;;;;23259:202:::0;;:::o;21809:152::-;11200:6;;-1:-1:-1;;;;;11200:6:0;180:10;11262:23;11254:68;;;;-1:-1:-1;;;11254:68:0;;;;;;;:::i;:::-;21927:18:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;21927:26:0::1;-1:-1:-1::0;;;;21927:26:0;;::::1;::::0;;;::::1;::::0;;21809:152::o;22915:208::-;11200:6;;-1:-1:-1;;;;;11200:6:0;180:10;11262:23;11254:68;;;;-1:-1:-1;;;11254:68:0;;;;;;;:::i;:::-;23015:9:::1;23010:106;23034:8;:15;23030:1;:19;23010:106;;;23099:5;23071:12;:25;23084:8;23093:1;23084:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;23071:25:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;23071:25:0;:33;;-1:-1:-1;;23071:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23051:3;::::1;::::0;::::1;:::i;:::-;;;;23010:106;;14999:448:::0;15131:4;15148:36;15158:6;15166:9;15177:6;15148:9;:36::i;:::-;-1:-1:-1;;;;;15224:19:0;;15197:24;15224:19;;;:11;:19;;;;;;;;180:10;15224:33;;;;;;;;15276:26;;;;15268:79;;;;-1:-1:-1;;;15268:79:0;;7904:2:1;15268:79:0;;;7886:21:1;7943:2;7923:18;;;7916:30;7982:34;7962:18;;;7955:62;-1:-1:-1;;;8033:18:1;;;8026:38;8081:19;;15268:79:0;7702:404:1;15268:79:0;15358:57;15367:6;180:10;15389:25;15408:6;15389:16;:25;:::i;:::-;15358:8;:57::i;:::-;-1:-1:-1;15435:4:0;;14999:448;-1:-1:-1;;;;14999:448:0:o;23131:120::-;11200:6;;-1:-1:-1;;;;;11200:6:0;180:10;11262:23;11254:68;;;;-1:-1:-1;;;11254:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23216:19:0;;;::::1;;::::0;;;:9:::1;:19;::::0;;;;:27;;-1:-1:-1;;23216:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23131:120::o;15455:248::-;180:10;15571:4;15625:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15625:34:0;;;;;;;;;;15571:4;;15593:80;;15616:7;;15625:47;;15662:10;;15625:47;:::i;22156:155::-;11200:6;;-1:-1:-1;;;;;11200:6:0;180:10;11262:23;11254:68;;;;-1:-1:-1;;;11254:68:0;;;;;;;:::i;:::-;22251:6:::1;:27:::0;;-1:-1:-1;;;;;22251:27:0;;::::1;-1:-1:-1::0;;;;;;22251:27:0;;::::1;;::::0;;;22289:4:::1;:14:::0;;;;;::::1;::::0;::::1;;::::0;;22156:155::o;21969:177::-;11200:6;;-1:-1:-1;;;;;11200:6:0;180:10;11262:23;11254:68;;;;-1:-1:-1;;;11254:68:0;;;;;;;:::i;:::-;22124:14:::1;3423:2:::0;22124::::1;:14;:::i;:::-;22111:27;::::0;:10;:27:::1;:::i;:::-;22085:23;:53:::0;-1:-1:-1;21969:177:0:o;11350:94::-;11200:6;;-1:-1:-1;;;;;11200:6:0;180:10;11262:23;11254:68;;;;-1:-1:-1;;;11254:68:0;;;;;;;:::i;:::-;11415:21:::1;11433:1;11415:9;:21::i;:::-;11350:94::o:0;22783:124::-;11200:6;;-1:-1:-1;;;;;11200:6:0;180:10;11262:23;11254:68;;;;-1:-1:-1;;;11254:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22870:21:0;;;::::1;;::::0;;;:12:::1;:21;::::0;;;;:29;;-1:-1:-1;;22870:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22783:124::o;22318:224::-;11200:6;;-1:-1:-1;;;;;11200:6:0;180:10;11262:23;11254:68;;;;-1:-1:-1;;;11254:68:0;;;;;;;:::i;:::-;22382:14:::1;::::0;-1:-1:-1;;;22382:14:0;::::1;;;22381:15;22373:54;;;::::0;-1:-1:-1;;;22373:54:0;;10132:2:1;22373:54:0::1;::::0;::::1;10114:21:1::0;10171:2;10151:18;;;10144:30;10210:28;10190:18;;;10183:56;10256:18;;22373:54:0::1;9930:350:1::0;22373:54:0::1;22438:14;:21:::0;;-1:-1:-1;;;;22470:25:0;-1:-1:-1;;;22470:25:0;;;22522:12:::1;22506:13;:28:::0;22318:224::o;2597:104::-;2653:13;2686:7;2679:14;;;;;:::i;23980:104::-;24046:9;;24038:38;;-1:-1:-1;;;;;24046:9:0;;;;24038:38;;;;;24066:9;;24046;24038:38;24046:9;24038:38;24066:9;24046;24038:38;;;;;;;;;;;;;;;;;;;;;23980:104;:::o;15711:410::-;180:10;15832:4;15881:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15881:34:0;;;;;;;;;;15934:35;;;;15926:85;;;;-1:-1:-1;;;15926:85:0;;10487:2:1;15926:85:0;;;10469:21:1;10526:2;10506:18;;;10499:30;10565:34;10545:18;;;10538:62;-1:-1:-1;;;10616:18:1;;;10609:35;10661:19;;15926:85:0;10285:401:1;15926:85:0;16022:67;180:10;16045:7;16054:34;16073:15;16054:16;:34;:::i;16022:67::-;-1:-1:-1;16109:4:0;;15711:410;-1:-1:-1;;;15711:410:0:o;16129:165::-;16207:4;16224:40;16234:10;16246:9;16257:6;16224:9;:40::i;24092:129::-;24195:9;;24169:44;;-1:-1:-1;;;24169:44:0;;-1:-1:-1;;;;;24195:9:0;;;24169:44;;;10865:51:1;10932:18;;;10925:34;;;24169:25:0;;;;;;10838:18:1;;24169:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;23469:503::-;11200:6;;-1:-1:-1;;;;;11200:6:0;180:10;11262:23;11254:68;;;;-1:-1:-1;;;11254:68:0;;;;;;;:::i;:::-;23595:4:::1;23585:6;:14;;23577:68;;;::::0;-1:-1:-1;;;23577:68:0;;11422:2:1;23577:68:0::1;::::0;::::1;11404:21:1::0;11461:2;11441:18;;;11434:30;11500:34;11480:18;;;11473:62;-1:-1:-1;;;11551:18:1;;;11544:39;11600:19;;23577:68:0::1;11220:405:1::0;23577:68:0::1;23675:4;23664:7;:15;;23656:70;;;::::0;-1:-1:-1;;;23656:70:0;;11832:2:1;23656:70:0::1;::::0;::::1;11814:21:1::0;11871:2;11851:18;;;11844:30;11910:34;11890:18;;;11883:62;-1:-1:-1;;;11961:18:1;;;11954:40;12011:19;;23656:70:0::1;11630:406:1::0;23656:70:0::1;23758:4;23745:9;:17;;23737:74;;;::::0;-1:-1:-1;;;23737:74:0;;12243:2:1;23737:74:0::1;::::0;::::1;12225:21:1::0;12282:2;12262:18;;;12255:30;12321:34;12301:18;;;12294:62;-1:-1:-1;;;12372:18:1;;;12365:42;12424:19;;23737:74:0::1;12041:408:1::0;23737:74:0::1;23845:14;3423:2:::0;23845::::1;:14;:::i;:::-;23836:23;::::0;:6;:23:::1;:::i;:::-;23822:11;:37:::0;23895:14:::1;3423:2:::0;23895::::1;:14;:::i;:::-;23885:24;::::0;:7;:24:::1;:::i;:::-;23870:12;:39:::0;3423:2;23949:14:::1;::::0;:2:::1;:14;:::i;:::-;23937:26;::::0;:9;:26:::1;:::i;:::-;23920:14;:43:::0;-1:-1:-1;;;23469:503:0:o;22550:225::-;11200:6;;-1:-1:-1;;;;;11200:6:0;180:10;11262:23;11254:68;;;;-1:-1:-1;;;11254:68:0;;;;;;;:::i;:::-;22645:16:::1;:4:::0;22652:9:::1;22645:16;:::i;:::-;22630:12;:31:::0;22672:15:::1;:23:::0;;-1:-1:-1;;22672:23:0::1;::::0;::::1;;;::::0;;22722:2:::1;22714:10:::0;::::1;;22706:61;;;::::0;-1:-1:-1;;;22706:61:0;;12656:2:1;22706:61:0::1;::::0;::::1;12638:21:1::0;12695:2;12675:18;;;12668:30;12734:34;12714:18;;;12707:62;-1:-1:-1;;;12785:18:1;;;12778:36;12831:19;;22706:61:0::1;12454:402:1::0;11452:192:0;11200:6;;-1:-1:-1;;;;;11200:6:0;180:10;11262:23;11254:68;;;;-1:-1:-1;;;11254:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11541:22:0;::::1;11533:73;;;::::0;-1:-1:-1;;;11533:73:0;;13063:2:1;11533:73:0::1;::::0;::::1;13045:21:1::0;13102:2;13082:18;;;13075:30;13141:34;13121:18;;;13114:62;-1:-1:-1;;;13192:18:1;;;13185:36;13238:19;;11533:73:0::1;12861:402:1::0;11533:73:0::1;11617:19;11627:8;11617:9;:19::i;:::-;11452:192:::0;:::o;9426:380::-;-1:-1:-1;;;;;9562:19:0;;9554:68;;;;-1:-1:-1;;;9554:68:0;;13470:2:1;9554:68:0;;;13452:21:1;13509:2;13489:18;;;13482:30;13548:34;13528:18;;;13521:62;-1:-1:-1;;;13599:18:1;;;13592:34;13643:19;;9554:68:0;13268:400:1;9554:68:0;-1:-1:-1;;;;;9641:21:0;;9633:68;;;;-1:-1:-1;;;9633:68:0;;13875:2:1;9633:68:0;;;13857:21:1;13914:2;13894:18;;;13887:30;13953:34;13933:18;;;13926:62;-1:-1:-1;;;14004:18:1;;;13997:32;14046:19;;9633:68:0;13673:398:1;9633:68:0;-1:-1:-1;;;;;9714:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9766:32;;3330:25:1;;;9766:32:0;;3303:18:1;9766:32:0;;;;;;;9426:380;;;:::o;16302:3058::-;16452:1;16443:6;:10;16435:64;;;;-1:-1:-1;;;16435:64:0;;14278:2:1;16435:64:0;;;14260:21:1;14317:2;14297:18;;;14290:30;14356:34;14336:18;;;14329:62;-1:-1:-1;;;14407:18:1;;;14400:39;14456:19;;16435:64:0;14076:405:1;16435:64:0;-1:-1:-1;;;;;16533:20:0;;;;;;:12;:20;;;;;;;;16532:21;:49;;;;-1:-1:-1;;;;;;16558:23:0;;;;;;:12;:23;;;;;;;;16557:24;16532:49;16510:124;;;;-1:-1:-1;;;16510:124:0;;14688:2:1;16510:124:0;;;14670:21:1;14727:2;14707:18;;;14700:30;14766:27;14746:18;;;14739:55;14811:18;;16510:124:0;14486:349:1;16510:124:0;-1:-1:-1;;;;;16652:17:0;;;;;;:9;:17;;;;;;;;16651:18;:43;;;;-1:-1:-1;;;;;;16674:20:0;;;;;;:9;:20;;;;;;;;16673:21;16651:43;16647:122;;;16719:14;;-1:-1:-1;;;16719:14:0;;;;16711:46;;;;-1:-1:-1;;;16711:46:0;;15042:2:1;16711:46:0;;;15024:21:1;15081:2;15061:18;;;15054:30;-1:-1:-1;;;15100:18:1;;;15093:49;15159:18;;16711:46:0;14840:343:1;16711:46:0;16795:4;;-1:-1:-1;;;;;16785:14:0;;;16795:4;;16785:14;:39;;;;-1:-1:-1;;;;;;16804:20:0;;;;;;:9;:20;;;;;;;;16803:21;16785:39;:59;;;;-1:-1:-1;16829:15:0;;-1:-1:-1;;;16829:15:0;;;;16828:16;16785:59;16781:311;;;16879:11;;16869:6;:21;;16861:63;;;;-1:-1:-1;;;16861:63:0;;15390:2:1;16861:63:0;;;15372:21:1;15429:2;15409:18;;;15402:30;15468:31;15448:18;;;15441:59;15517:18;;16861:63:0;15188:353:1;16861:63:0;16998:14;;16988:6;16965:20;16975:9;-1:-1:-1;;;;;3770:18:0;3743:7;3770:18;;;;;;;;;;;;3669:127;16965:20;:29;;;;:::i;:::-;:47;;16939:141;;;;-1:-1:-1;;;16939:141:0;;15748:2:1;16939:141:0;;;15730:21:1;;;15767:18;;;15760:30;15826:34;15806:18;;;15799:62;15878:18;;16939:141:0;15546:356:1;16939:141:0;17132:4;;-1:-1:-1;;;;;17122:14:0;;;17132:4;;17122:14;;;;:39;;-1:-1:-1;;;;;;17141:20:0;;;;;;:9;:20;;;;;;;;17140:21;17122:39;:61;;;;-1:-1:-1;;;;;;17166:17:0;;;;;;:9;:17;;;;;;;;17165:18;17122:61;:81;;;;-1:-1:-1;17188:15:0;;-1:-1:-1;;;17188:15:0;;;;17187:16;17122:81;17104:682;;;17248:12;;17238:6;:22;;17230:65;;;;-1:-1:-1;;;17230:65:0;;16109:2:1;17230:65:0;;;16091:21:1;16148:2;16128:18;;;16121:30;16187:32;16167:18;;;16160:60;16237:18;;17230:65:0;15907:354:1;17230:65:0;17327:4;;-1:-1:-1;;;;;17314:17:0;;;17327:4;;17314:17;17310:211;;17415:14;;17405:6;17382:20;17392:9;-1:-1:-1;;;;;3770:18:0;3743:7;3770:18;;;;;;;;;;;;3669:127;17382:20;:29;;;;:::i;:::-;:47;;17352:153;;;;-1:-1:-1;;;17352:153:0;;15748:2:1;17352:153:0;;;15730:21:1;;;15767:18;;;15760:30;15826:34;15806:18;;;15799:62;15878:18;;17352:153:0;15546:356:1;17352:153:0;17539:15;;;;17535:240;;;-1:-1:-1;;;;;17614:17:0;;17575:18;17614:17;;;:9;:17;;;;;;17596:35;;:15;:35;:::i;:::-;17575:56;;17672:12;;17658:10;:26;;17650:55;;;;-1:-1:-1;;;17650:55:0;;16468:2:1;17650:55:0;;;16450:21:1;16507:2;16487:18;;;16480:30;-1:-1:-1;;;16526:18:1;;;16519:46;16582:18;;17650:55:0;16266:340:1;17650:55:0;-1:-1:-1;;;;;;17724:17:0;;;;;;:9;:17;;;;;17744:15;17724:35;;17535:240;17798:15;17824:14;17849:11;17871:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;17871:25:0;-1:-1:-1;;;;;17930:17:0;;17909;17930;;;:9;:17;;;;;;;;17929:18;:56;;;;-1:-1:-1;;;;;;17965:20:0;;;;;;:9;:20;;;;;;;;17964:21;17929:56;:112;;;;;18033:8;;18017:13;;:24;;;;:::i;:::-;18002:12;:39;17929:112;18129:15;;17909:132;;-1:-1:-1;;;;18129:15:0;;;;;:36;;-1:-1:-1;;;;;;18148:17:0;;;;;;:9;:17;;;;;;;;18129:36;:60;;;-1:-1:-1;;;;;;18169:20:0;;;;;;:9;:20;;;;;;;;18129:60;18125:651;;;18210:1;18204:7;;18125:651;;;18275:4;;-1:-1:-1;;;;;18262:17:0;;;18275:4;;18262:17;:34;;;;;18284:12;18283:13;18262:34;18258:518;;;18387:13;;:9;18340:19;:60;;18387:13;18340:60;:::i;:::-;18447:24;;;;;;;;;18462:9;18447:24;;;;;;;;;18313:87;;-1:-1:-1;18313:87:0;;-1:-1:-1;18447:24:0;-1:-1:-1;18258:518:0;;;18494:12;18489:287;;18585:9;;:5;18550:15;:44;;18585:9;18550:44;:::i;:::-;18641:20;;;;;;;;;18656:5;18641:20;;;;;;;;;18523:71;;-1:-1:-1;18523:71:0;;-1:-1:-1;18641:20:0;-1:-1:-1;18489:287:0;;;18683:12;18679:97;;;18722:9;;;-1:-1:-1;18722:9:0;;-1:-1:-1;18679:97:0;18814:3;18795:15;18804:6;18795;:15;:::i;:::-;18794:23;;;;:::i;:::-;18931:18;;18788:29;;-1:-1:-1;;;;18931:18:0;;;;:36;;;;-1:-1:-1;18963:4:0;;-1:-1:-1;;;;;18953:14:0;;;18963:4;;18953:14;;18931:36;18927:76;;;18969:34;18981:7;18990:12;18969:11;:34::i;:::-;19045:48;19061:6;19069:9;19080:12;19089:3;19080:6;:12;:::i;:::-;19045:15;:48::i;:::-;19108:7;;19104:249;;19180:11;;19176:164;;19212:17;19253:3;19233:16;19242:7;19233:6;:16;:::i;:::-;19232:24;;;;:::i;:::-;19212:44;;19275:49;19291:6;19307:4;19314:9;19275:15;:49::i;:::-;19193:147;19176:164;16424:2936;;;;;16302:3058;;;:::o;11652:173::-;11727:6;;;-1:-1:-1;;;;;11744:17:0;;;-1:-1:-1;;;;;;11744:17:0;;;;;;;11777:40;;11727:6;;;11744:17;11727:6;;11777:40;;11708:16;;11777:40;11697:128;11652:173;:::o;19368:1394::-;13913:15;;-1:-1:-1;;;13913:15:0;;;;13908:125;;13945:15;:22;;-1:-1:-1;;;;13945:22:0;-1:-1:-1;;;13945:22:0;;;19456:49;;19487:7:::1;19456:49;19562:4;19518:23;3770:18:::0;;;;;;;;;;;19602:23:::1;::::0;19583:42;::::1;19579:1176;;19672:1;19646:23;;:27;19642:109;;;-1:-1:-1::0;19712:23:0::1;::::0;19642:109:::1;19822:19;19844:11;:7:::0;19854:1:::1;19844:11;:::i;:::-;19822:33;;19870:32;19964:11;19924:9;:19;;;19906:15;:37;;;;:::i;:::-;19905:70;;;;:::i;:::-;19870:105:::0;-1:-1:-1;19990:14:0::1;20007:42;19870:105:::0;20007:15;:42:::1;:::i;:::-;19990:59:::0;-1:-1:-1;20091:21:0::1;20129:24;19990:59:::0;20129:16:::1;:24::i;:::-;20170:20;20193:38;20217:14:::0;20193:21:::1;:38;:::i;:::-;20298:19:::0;;20170:61;;-1:-1:-1;20246:19:0::1;::::0;20284:33:::1;::::0;:11;:33:::1;:::i;:::-;20268:50;::::0;:12;:50:::1;:::i;:::-;20379:19:::0;;20246:72;;-1:-1:-1;20333:29:0::1;::::0;20365:33:::1;::::0;20246:72;20365:33:::1;:::i;:::-;20333:65:::0;-1:-1:-1;20419:25:0;;20415:161:::1;;20499:61;20512:24;20538:21;20499:12;:61::i;:::-;20627:13;::::0;::::1;::::0;20592:14:::1;::::0;20609:15:::1;:11:::0;20623:1:::1;20609:15;:::i;:::-;:31;;;;:::i;:::-;20592:48:::0;-1:-1:-1;20659:10:0;;20655:87:::1;;20698:9;::::0;20690:36:::1;::::0;-1:-1:-1;;;;;20698:9:0::1;20719:6:::0;20690:28:::1;:36::i;:::-;19627:1128;;;;;;;;19579:1176;19448:1314;13982:1;13998:15:::0;:23;;-1:-1:-1;;;;13998:23:0;;;19368:1394;;:::o;7801:638::-;-1:-1:-1;;;;;7941:20:0;;7933:70;;;;-1:-1:-1;;;7933:70:0;;17035:2:1;7933:70:0;;;17017:21:1;17074:2;17054:18;;;17047:30;17113:34;17093:18;;;17086:62;-1:-1:-1;;;17164:18:1;;;17157:35;17209:19;;7933:70:0;16833:401:1;7933:70:0;-1:-1:-1;;;;;8022:23:0;;8014:71;;;;-1:-1:-1;;;8014:71:0;;17441:2:1;8014:71:0;;;17423:21:1;17480:2;17460:18;;;17453:30;17519:34;17499:18;;;17492:62;-1:-1:-1;;;17570:18:1;;;17563:33;17613:19;;8014:71:0;17239:399:1;8014:71:0;-1:-1:-1;;;;;8182:17:0;;8158:21;8182:17;;;;;;;;;;;8218:23;;;;8210:74;;;;-1:-1:-1;;;8210:74:0;;17845:2:1;8210:74:0;;;17827:21:1;17884:2;17864:18;;;17857:30;17923:34;17903:18;;;17896:62;-1:-1:-1;;;17974:18:1;;;17967:36;18020:19;;8210:74:0;17643:402:1;8210:74:0;8315:22;8331:6;8315:13;:22;:::i;:::-;-1:-1:-1;;;;;8295:17:0;;;:9;:17;;;;;;;;;;;:42;;;;8348:20;;;;;;;;:30;;8372:6;;8295:9;8348:30;;8372:6;;8348:30;:::i;:::-;;;;;;;;8413:9;-1:-1:-1;;;;;8396:35:0;8405:6;-1:-1:-1;;;;;8396:35:0;;8424:6;8396:35;;;;3330:25:1;;3318:2;3303:18;;3184:177;8396:35:0;;;;;;;;7922:517;7801:638;;;:::o;20770:526::-;20912:16;;;20926:1;20912:16;;;;;;;;20888:21;;20912:16;;;;;;;;;;-1:-1:-1;20912:16:0;20888:40;;20957:4;20939;20944:1;20939:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20939:23:0;;;:7;;;;;;;;;;:23;;;;20983:6;;:13;;;-1:-1:-1;;;20983:13:0;;;;:6;;;;;:11;;:13;;;;;20939:7;;20983:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20973:4;20978:1;20973:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20973:23:0;;;:7;;;;;;;;;:23;21041:6;;21009:53;;21026:4;;21041:6;21050:11;21009:8;:53::i;:::-;21101:6;;:187;;-1:-1:-1;;;21101:187:0;;-1:-1:-1;;;;;21101:6:0;;;;:57;;:187;;21173:11;;21101:6;;21215:4;;21242;;21262:15;;21101:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20825:471;20770:526;:::o;21304:497::-;21484:6;;21452:53;;21469:4;;-1:-1:-1;;;;;21484:6:0;21493:11;21452:8;:53::i;:::-;21548:6;;-1:-1:-1;;;;;21548:6:0;:22;21579:9;21613:4;21633:11;21548:6;;21745:7;11200:6;;-1:-1:-1;;;;;11200:6:0;;11127:87;21745:7;21548:245;;;;;;-1:-1:-1;;;;;;21548:245:0;;;-1:-1:-1;;;;;19650:15:1;;;21548:245:0;;;19632:34:1;19682:18;;;19675:34;;;;19725:18;;;19718:34;;;;19768:18;;;19761:34;19832:15;;;19811:19;;;19804:44;21767:15:0;19864:19:1;;;19857:35;19566:19;;21548:245:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21304:497;;:::o;10570:319::-;10685:6;10660:21;:31;;10652:73;;;;-1:-1:-1;;;10652:73:0;;20416:2:1;10652:73:0;;;20398:21:1;20455:2;20435:18;;;20428:30;20494:31;20474:18;;;20467:59;20543:18;;10652:73:0;20214:353:1;10652:73:0;10739:12;10757:9;-1:-1:-1;;;;;10757:14:0;10780:6;10757:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10738:54;;;10811:7;10803:78;;;;-1:-1:-1;;;10803:78:0;;20984:2:1;10803:78:0;;;20966:21:1;21023:2;21003:18;;;20996:30;21062:34;21042:18;;;21035:62;21133:28;21113:18;;;21106:56;21179:19;;10803:78:0;20782:422:1;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:134;771:20;;800:31;771:20;800:31;:::i;:::-;703:134;;;:::o;842:315::-;910:6;918;971:2;959:9;950:7;946:23;942:32;939:52;;;987:1;984;977:12;939:52;1026:9;1013:23;1045:31;1070:5;1045:31;:::i;:::-;1095:5;1147:2;1132:18;;;;1119:32;;-1:-1:-1;;;842:315:1:o;1354:127::-;1415:10;1410:3;1406:20;1403:1;1396:31;1446:4;1443:1;1436:15;1470:4;1467:1;1460:15;1486:118;1572:5;1565:13;1558:21;1551:5;1548:32;1538:60;;1594:1;1591;1584:12;1609:128;1674:20;;1703:28;1674:20;1703:28;:::i;1742:1191::-;1832:6;1840;1893:2;1881:9;1872:7;1868:23;1864:32;1861:52;;;1909:1;1906;1899:12;1861:52;1949:9;1936:23;1978:18;2019:2;2011:6;2008:14;2005:34;;;2035:1;2032;2025:12;2005:34;2073:6;2062:9;2058:22;2048:32;;2118:7;2111:4;2107:2;2103:13;2099:27;2089:55;;2140:1;2137;2130:12;2089:55;2176:2;2163:16;2198:4;2221:2;2217;2214:10;2211:36;;;2227:18;;:::i;:::-;2273:2;2270:1;2266:10;2305:2;2299:9;2368:2;2364:7;2359:2;2355;2351:11;2347:25;2339:6;2335:38;2423:6;2411:10;2408:22;2403:2;2391:10;2388:18;2385:46;2382:72;;;2434:18;;:::i;:::-;2470:2;2463:22;2520:18;;;2554:15;;;;-1:-1:-1;2596:11:1;;;2592:20;;;2624:19;;;2621:39;;;2656:1;2653;2646:12;2621:39;2680:11;;;;2700:148;2716:6;2711:3;2708:15;2700:148;;;2782:23;2801:3;2782:23;:::i;:::-;2770:36;;2733:12;;;;2826;;;;2700:148;;;2867:6;-1:-1:-1;2892:35:1;;-1:-1:-1;2908:18:1;;;2892:35;:::i;:::-;2882:45;;;;;;1742:1191;;;;;:::o;2938:241::-;2994:6;3047:2;3035:9;3026:7;3022:23;3018:32;3015:52;;;3063:1;3060;3053:12;3015:52;3102:9;3089:23;3121:28;3143:5;3121:28;:::i;:::-;3168:5;2938:241;-1:-1:-1;;;2938:241:1:o;3366:456::-;3443:6;3451;3459;3512:2;3500:9;3491:7;3487:23;3483:32;3480:52;;;3528:1;3525;3518:12;3480:52;3567:9;3554:23;3586:31;3611:5;3586:31;:::i;:::-;3636:5;-1:-1:-1;3693:2:1;3678:18;;3665:32;3706:33;3665:32;3706:33;:::i;:::-;3366:456;;3758:7;;-1:-1:-1;;;3812:2:1;3797:18;;;;3784:32;;3366:456::o;4016:382::-;4081:6;4089;4142:2;4130:9;4121:7;4117:23;4113:32;4110:52;;;4158:1;4155;4148:12;4110:52;4197:9;4184:23;4216:31;4241:5;4216:31;:::i;:::-;4266:5;-1:-1:-1;4323:2:1;4308:18;;4295:32;4336:30;4295:32;4336:30;:::i;:::-;4385:7;4375:17;;;4016:382;;;;;:::o;4403:388::-;4471:6;4479;4532:2;4520:9;4511:7;4507:23;4503:32;4500:52;;;4548:1;4545;4538:12;4500:52;4587:9;4574:23;4606:31;4631:5;4606:31;:::i;:::-;4656:5;-1:-1:-1;4713:2:1;4698:18;;4685:32;4726:33;4685:32;4726:33;:::i;4796:180::-;4855:6;4908:2;4896:9;4887:7;4883:23;4879:32;4876:52;;;4924:1;4921;4914:12;4876:52;-1:-1:-1;4947:23:1;;4796:180;-1:-1:-1;4796:180:1:o;4981:247::-;5040:6;5093:2;5081:9;5072:7;5068:23;5064:32;5061:52;;;5109:1;5106;5099:12;5061:52;5148:9;5135:23;5167:31;5192:5;5167:31;:::i;5694:316::-;5771:6;5779;5787;5840:2;5828:9;5819:7;5815:23;5811:32;5808:52;;;5856:1;5853;5846:12;5808:52;-1:-1:-1;;5879:23:1;;;5949:2;5934:18;;5921:32;;-1:-1:-1;6000:2:1;5985:18;;;5972:32;;5694:316;-1:-1:-1;5694:316:1:o;6015:309::-;6080:6;6088;6141:2;6129:9;6120:7;6116:23;6112:32;6109:52;;;6157:1;6154;6147:12;6109:52;6196:9;6183:23;6215:28;6237:5;6215:28;:::i;6552:380::-;6631:1;6627:12;;;;6674;;;6695:61;;6749:4;6741:6;6737:17;6727:27;;6695:61;6802:2;6794:6;6791:14;6771:18;6768:38;6765:161;;6848:10;6843:3;6839:20;6836:1;6829:31;6883:4;6880:1;6873:15;6911:4;6908:1;6901:15;6765:161;;6552:380;;;:::o;6937:356::-;7139:2;7121:21;;;7158:18;;;7151:30;7217:34;7212:2;7197:18;;7190:62;7284:2;7269:18;;6937:356::o;7298:127::-;7359:10;7354:3;7350:20;7347:1;7340:31;7390:4;7387:1;7380:15;7414:4;7411:1;7404:15;7430:127;7491:10;7486:3;7482:20;7479:1;7472:31;7522:4;7519:1;7512:15;7546:4;7543:1;7536:15;7562:135;7601:3;7622:17;;;7619:43;;7642:18;;:::i;:::-;-1:-1:-1;7689:1:1;7678:13;;7562:135::o;8111:128::-;8178:9;;;8199:11;;;8196:37;;;8213:18;;:::i;8244:125::-;8309:9;;;8330:10;;;8327:36;;;8343:18;;:::i;8374:422::-;8463:1;8506:5;8463:1;8520:270;8541:7;8531:8;8528:21;8520:270;;;8600:4;8596:1;8592:6;8588:17;8582:4;8579:27;8576:53;;;8609:18;;:::i;:::-;8659:7;8649:8;8645:22;8642:55;;;8679:16;;;;8642:55;8758:22;;;;8718:15;;;;8520:270;;;8524:3;8374:422;;;;;:::o;8801:806::-;8850:5;8880:8;8870:80;;-1:-1:-1;8921:1:1;8935:5;;8870:80;8969:4;8959:76;;-1:-1:-1;9006:1:1;9020:5;;8959:76;9051:4;9069:1;9064:59;;;;9137:1;9132:130;;;;9044:218;;9064:59;9094:1;9085:10;;9108:5;;;9132:130;9169:3;9159:8;9156:17;9153:43;;;9176:18;;:::i;:::-;-1:-1:-1;;9232:1:1;9218:16;;9247:5;;9044:218;;9346:2;9336:8;9333:16;9327:3;9321:4;9318:13;9314:36;9308:2;9298:8;9295:16;9290:2;9284:4;9281:12;9277:35;9274:77;9271:159;;;-1:-1:-1;9383:19:1;;;9415:5;;9271:159;9462:34;9487:8;9481:4;9462:34;:::i;:::-;9532:6;9528:1;9524:6;9520:19;9511:7;9508:32;9505:58;;;9543:18;;:::i;:::-;9581:20;;8801:806;-1:-1:-1;;;8801:806:1:o;9612:140::-;9670:5;9699:47;9740:4;9730:8;9726:19;9720:4;9699:47;:::i;9757:168::-;9830:9;;;9861;;9878:15;;;9872:22;;9858:37;9848:71;;9899:18;;:::i;10970:245::-;11037:6;11090:2;11078:9;11069:7;11065:23;11061:32;11058:52;;;11106:1;11103;11096:12;11058:52;11138:9;11132:16;11157:28;11179:5;11157:28;:::i;16611:217::-;16651:1;16677;16667:132;;16721:10;16716:3;16712:20;16709:1;16702:31;16756:4;16753:1;16746:15;16784:4;16781:1;16774:15;16667:132;-1:-1:-1;16813:9:1;;16611:217::o;18050:251::-;18120:6;18173:2;18161:9;18152:7;18148:23;18144:32;18141:52;;;18189:1;18186;18179:12;18141:52;18221:9;18215:16;18240:31;18265:5;18240:31;:::i;18306:980::-;18568:4;18616:3;18605:9;18601:19;18647:6;18636:9;18629:25;18673:2;18711:6;18706:2;18695:9;18691:18;18684:34;18754:3;18749:2;18738:9;18734:18;18727:31;18778:6;18813;18807:13;18844:6;18836;18829:22;18882:3;18871:9;18867:19;18860:26;;18921:2;18913:6;18909:15;18895:29;;18942:1;18952:195;18966:6;18963:1;18960:13;18952:195;;;19031:13;;-1:-1:-1;;;;;19027:39:1;19015:52;;19122:15;;;;19087:12;;;;19063:1;18981:9;18952:195;;;-1:-1:-1;;;;;;;19203:32:1;;;;19198:2;19183:18;;19176:60;-1:-1:-1;;;19267:3:1;19252:19;19245:35;19164:3;18306:980;-1:-1:-1;;;18306:980:1:o;19903:306::-;19991:6;19999;20007;20060:2;20048:9;20039:7;20035:23;20031:32;20028:52;;;20076:1;20073;20066:12;20028:52;20105:9;20099:16;20089:26;;20155:2;20144:9;20140:18;20134:25;20124:35;;20199:2;20188:9;20184:18;20178:25;20168:35;;19903:306;;;;;:::o

Swarm Source

ipfs://5de80298e3fbbda1402fd130bbe51623f22c0804667a5e4ccbb775419d68c260
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.