ETH Price: $2,138.96 (+4.08%)

Contract

0x559BaBc46A6Ab52FD11b2790bCe01F0A434a8B4e
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve236635192025-10-26 18:47:47129 days ago1761504467IN
0x559BaBc4...A434a8B4e
0 ETH0.000017430.71598344
Transfer231773862025-08-19 20:03:47197 days ago1755633827IN
0x559BaBc4...A434a8B4e
0 ETH0.000158472.56512957
Approve221808362025-04-02 11:09:11337 days ago1743592151IN
0x559BaBc4...A434a8B4e
0 ETH0.000047271.02076266
Approve219204012025-02-25 2:36:35373 days ago1740450995IN
0x559BaBc4...A434a8B4e
0 ETH0.000075091.61031214
Approve217872062025-02-06 11:36:47392 days ago1738841807IN
0x559BaBc4...A434a8B4e
0 ETH0.000055961.2
Transfer217854462025-02-06 5:43:23392 days ago1738820603IN
0x559BaBc4...A434a8B4e
0 ETH0.00008021.298454
Approve217312712025-01-29 16:06:35399 days ago1738166795IN
0x559BaBc4...A434a8B4e
0 ETH0.000249255.38378941
Approve211527452024-11-09 21:20:23480 days ago1731187223IN
0x559BaBc4...A434a8B4e
0 ETH0.00074215.93176057
Approve211460622024-11-08 22:58:47481 days ago1731106727IN
0x559BaBc4...A434a8B4e
0 ETH0.0005858812.57966374
Approve209399982024-10-11 4:29:11510 days ago1728620951IN
0x559BaBc4...A434a8B4e
0 ETH0.0005652412.13034872
Approve209024242024-10-05 22:47:59515 days ago1728168479IN
0x559BaBc4...A434a8B4e
0 ETH0.000262635.66398625
Approve208642262024-09-30 15:00:23520 days ago1727708423IN
0x559BaBc4...A434a8B4e
0 ETH0.0010198721.89791962
Approve208481492024-09-28 9:10:47523 days ago1727514647IN
0x559BaBc4...A434a8B4e
0 ETH0.0007081415.29145998
Approve208478042024-09-28 8:01:35523 days ago1727510495IN
0x559BaBc4...A434a8B4e
0 ETH0.000388848.3966696
Approve208477952024-09-28 7:59:47523 days ago1727510387IN
0x559BaBc4...A434a8B4e
0 ETH0.000210577.97322824
Approve208477932024-09-28 7:59:23523 days ago1727510363IN
0x559BaBc4...A434a8B4e
0 ETH0.000361517.80634977
Approve207842542024-09-19 11:10:35532 days ago1726744235IN
0x559BaBc4...A434a8B4e
0 ETH0.0008841219.08646064
Approve207695882024-09-17 9:59:35534 days ago1726567175IN
0x559BaBc4...A434a8B4e
0 ETH0.000136062.93804259
Approve207695792024-09-17 9:57:47534 days ago1726567067IN
0x559BaBc4...A434a8B4e
0 ETH0.00014243.07509174
Approve207649832024-09-16 18:32:23534 days ago1726511543IN
0x559BaBc4...A434a8B4e
0 ETH0.000234245.05817358
Approve207649162024-09-16 18:18:59534 days ago1726510739IN
0x559BaBc4...A434a8B4e
0 ETH0.00024755.34460606
Approve207649042024-09-16 18:16:35534 days ago1726510595IN
0x559BaBc4...A434a8B4e
0 ETH0.0009326820
Approve207648562024-09-16 18:06:59534 days ago1726510019IN
0x559BaBc4...A434a8B4e
0 ETH0.000340197.34421748
Approve207648462024-09-16 18:04:59534 days ago1726509899IN
0x559BaBc4...A434a8B4e
0 ETH0.0009326820
Approve207648222024-09-16 18:00:11534 days ago1726509611IN
0x559BaBc4...A434a8B4e
0 ETH0.000398348.55300183
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer221812002025-04-02 12:22:23336 days ago1743596543
0x559BaBc4...A434a8B4e
0.00013792 ETH
Transfer221812002025-04-02 12:22:23336 days ago1743596543
0x559BaBc4...A434a8B4e
0.00013792 ETH
Transfer221812002025-04-02 12:22:23336 days ago1743596543
0x559BaBc4...A434a8B4e
0.00027584 ETH
Transfer218776562025-02-19 3:13:11379 days ago1739934791
0x559BaBc4...A434a8B4e
0.00018898 ETH
Transfer218776562025-02-19 3:13:11379 days ago1739934791
0x559BaBc4...A434a8B4e
0.00018898 ETH
Transfer218776562025-02-19 3:13:11379 days ago1739934791
0x559BaBc4...A434a8B4e
0.00037797 ETH
Transfer217329082025-01-29 21:35:23399 days ago1738186523
0x559BaBc4...A434a8B4e
0.00008976 ETH
Transfer217329082025-01-29 21:35:23399 days ago1738186523
0x559BaBc4...A434a8B4e
0.00008976 ETH
Transfer217329082025-01-29 21:35:23399 days ago1738186523
0x559BaBc4...A434a8B4e
0.00017952 ETH
Transfer217312852025-01-29 16:09:23399 days ago1738166963
0x559BaBc4...A434a8B4e
0.00011606 ETH
Transfer217312852025-01-29 16:09:23399 days ago1738166963
0x559BaBc4...A434a8B4e
0.00011606 ETH
Transfer217312852025-01-29 16:09:23399 days ago1738166963
0x559BaBc4...A434a8B4e
0.00023213 ETH
Transfer209400012024-10-11 4:29:47510 days ago1728620987
0x559BaBc4...A434a8B4e
0.00113877 ETH
Transfer209400012024-10-11 4:29:47510 days ago1728620987
0x559BaBc4...A434a8B4e
0.00113877 ETH
Transfer209400012024-10-11 4:29:47510 days ago1728620987
0x559BaBc4...A434a8B4e
0.00227754 ETH
Transfer209024262024-10-05 22:48:23515 days ago1728168503
0x559BaBc4...A434a8B4e
0.00061916 ETH
Transfer209024262024-10-05 22:48:23515 days ago1728168503
0x559BaBc4...A434a8B4e
0.00061916 ETH
Transfer209024262024-10-05 22:48:23515 days ago1728168503
0x559BaBc4...A434a8B4e
0.00123832 ETH
Transfer208642282024-09-30 15:00:47520 days ago1727708447
0x559BaBc4...A434a8B4e
0.00347945 ETH
Transfer208642282024-09-30 15:00:47520 days ago1727708447
0x559BaBc4...A434a8B4e
0.00347945 ETH
Transfer208642282024-09-30 15:00:47520 days ago1727708447
0x559BaBc4...A434a8B4e
0.0069589 ETH
Transfer208482072024-09-28 9:22:35523 days ago1727515355
0x559BaBc4...A434a8B4e
0.00005428 ETH
Transfer208482072024-09-28 9:22:35523 days ago1727515355
0x559BaBc4...A434a8B4e
0.00005428 ETH
Transfer208482072024-09-28 9:22:35523 days ago1727515355
0x559BaBc4...A434a8B4e
0.00010856 ETH
Transfer208480912024-09-28 8:59:11523 days ago1727513951
0x559BaBc4...A434a8B4e
0.00011587 ETH
View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TrendGuru

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 350 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2024-02-16
*/

// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;


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

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

// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

pragma solidity ^0.8.0;


abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }


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


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


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

// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

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

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

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

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


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


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


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

// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;


/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
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);
}


// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.sol)

pragma solidity ^0.8.0;



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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default 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;
    }


    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];
    }


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

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


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


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

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


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

        return true;
    }


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

        _beforeTokenTransfer(from, to, amount);

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

            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }


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

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

        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

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


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

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

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

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


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

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


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

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

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

//SPDX-License-Identifier: MIT




pragma solidity 0.8.19;

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

interface DexRouter {
    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 TrendGuru is ERC20, Ownable {
    struct Tax {
        uint256 marketingTax;
    }

    uint256 private constant _totalSupply = 1_000_000_000 * 1e18;

    //Router
    DexRouter public immutable uniswapRouter;
    address public immutable pairAddress;

    //Taxes
    Tax public buyTaxes = Tax(15);
    Tax public sellTaxes = Tax(15);


    //Whitelisting from taxes/maxwallet/txlimit/etc
    mapping(address => bool) private whitelisted;

    //Swapping
    uint256 public swapTokensAtAmount = _totalSupply / 100000; //after 0.001% of total supply, swap them
    bool public swapAndLiquifyEnabled = true;
    bool public isSwapping = false;
    bool public tradingEnabled = false;
    uint256 public startTradingBlock;

    //Wallets
    address public marketingWallet = 0x0ac2b75E5D1f50BBD1b25cFe1E132e0a546B3490 ;
    address public developmentWallet = 0xDb6F46184223Aa32F241b80e2108C138c3416b30 ;
    uint256 public maxWalletPercentage = 2;

    //Events

    event BuyFeesUpdated(uint256 indexed _trFee);
    event SellFeesUpdated(uint256 indexed _trFee);
    event marketingWalletChanged(address indexed _trWallet);
    event developmentWalletChanged(address indexed _trWallet);
    event SwapThresholdUpdated(uint256 indexed _newThreshold);
    event Whitelist(address indexed _target, bool indexed _status);
    event TransferFailed(address recipient, uint256 amount);
    event MaxWChanged(uint256 percentage);



    constructor() ERC20("TrendGuru", "TrendGuru") {

        uniswapRouter = DexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // mainet
        pairAddress = DexFactory(uniswapRouter.factory()).createPair(
            address(this),
            uniswapRouter.WETH()
        );
        whitelisted[msg.sender] = true;
        whitelisted[address(uniswapRouter)] = true;
        whitelisted[address(this)] = true;       
        _mint(msg.sender, _totalSupply);

    }

    function isContract(address account) internal view returns (bool) {
    return account.code.length > 0;
    }

    function setmarketingWallet(address _newmarketing) external onlyOwner {
        require(
            _newmarketing != address(0),
            "can not set marketing to dead wallet"
        );
        require(!isContract(_newmarketing), "Address can not be a contract address");
        marketingWallet = _newmarketing;
        emit marketingWalletChanged(_newmarketing);
    }

    function setdevelopmentWallet(address _newdevelopment) external onlyOwner {
        require(
            _newdevelopment != address(0),
            "can not set marketing to dead wallet"
        );

        require(!isContract(_newdevelopment), "Address can not be a contract address");
        developmentWallet = _newdevelopment;
        emit developmentWalletChanged(_newdevelopment);
    }    
    function enableTrading() external onlyOwner {
        require(!tradingEnabled, "Trading is already enabled");
        tradingEnabled = true;
        startTradingBlock = block.number;
    }
    function setBuyTaxes(uint256 _marketingTax) external onlyOwner {
        buyTaxes.marketingTax = _marketingTax;
        require(_marketingTax <= 20, "Can not set buy fees higher than 30%");
        emit BuyFeesUpdated(_marketingTax);
    }

    function setSellTaxes(uint256 _marketingTax) external onlyOwner {
        sellTaxes.marketingTax = _marketingTax;
        require(_marketingTax <= 20, "Can not set buy fees higher than 30%");
        emit SellFeesUpdated(_marketingTax);
    }
    function setSwapTokensAtAmount(uint256 _newAmount) external onlyOwner {
        require(
            _newAmount > 0 && _newAmount <= (_totalSupply * 5) / 1000,
            "Minimum swap amount must be greater than 0 and less than 0.5% of total supply!"
        );
        swapTokensAtAmount = _newAmount;
        emit SwapThresholdUpdated(swapTokensAtAmount);
    }

    function toggleSwapping() external onlyOwner {
        swapAndLiquifyEnabled = (swapAndLiquifyEnabled) ? false : true;
    }

    function setWhitelistStatus(
        address _wallet,
        bool _status
    ) external onlyOwner {
        whitelisted[_wallet] = _status;
        emit Whitelist(_wallet, _status);
    }

    function checkWhitelist(address _wallet) external view returns (bool) {
        return whitelisted[_wallet];
    }

    // this function is reponsible for managing tax, if _from or _to is whitelisted, we simply return _amount and skip all the limitations
    function _takeTax(
        address _from,
        address _to,
        uint256 _amount
    ) internal returns (uint256) {
        if (whitelisted[_from] || whitelisted[_to]) {
            return _amount;
        }
        uint256 totalTax = 0;

        if (_to == pairAddress) {
            totalTax = sellTaxes.marketingTax;
        } else if (_from == pairAddress) {
            totalTax = buyTaxes.marketingTax;
        }

        uint256 tax = 0;
        if (totalTax > 0) {
            tax = (_amount * totalTax) / 100;
            super._transfer(_from, address(this), tax);
        }
        return (_amount - tax);
    }

    function _transfer(
        address _from,
        address _to,
        uint256 _amount
    ) internal virtual override {
        require(_from != address(0), "transfer from address zero");
        require(_to != address(0), "transfer to address zero");
        require(_amount > 0, "Transfer amount must be greater than zero");


            // Calculate the maximum wallet amount based on the total supply and the maximum wallet percentage
    uint256 maxWalletAmount = _totalSupply * maxWalletPercentage / 100;

    // Check if the transaction is within the maximum wallet limit
    if (!whitelisted[_from] && !whitelisted[_to] && _to != address(0) && _to != address(this) && _to != pairAddress) {
        require(balanceOf(_to) + _amount <= maxWalletAmount, "Exceeds maximum wallet amount");
    }

        uint256 toTransfer = _takeTax(_from, _to, _amount);

        bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount;
        if (

            !whitelisted[_from] &&
            !whitelisted[_to] 
 
        ) {
        require(tradingEnabled, "Trading no active");
            if (pairAddress == _to &&
                swapAndLiquifyEnabled &&
                canSwap&&
                !isSwapping  ) 
            {
        internalSwap();
            }
        }
        super._transfer(_from, _to, toTransfer);
    }

function internalSwap() internal {
    isSwapping = true;
    uint256 taxAmount = balanceOf(address(this)); 
    if (taxAmount == 0) {
        return;
    }
    swapToETH(balanceOf(address(this)));
    (bool success, ) = marketingWallet.call{value: address(this).balance*1/2}("");
    (bool success2, ) = developmentWallet.call{value: address(this).balance}("");

    if (!success) {
        // Log the failure rather than reverting the transaction
        emit TransferFailed(marketingWallet, address(this).balance);
    } else {
        // Only set isSwapping to false if the transfer succeeded
        isSwapping = false;
    }
    if (!success2) {
        // Log the failure rather than reverting the transaction
        emit TransferFailed(developmentWallet, address(this).balance);
    } else {
        // Only set isSwapping to false if the transfer succeeded
        isSwapping = false;
    }
}

    function swapToETH(uint256 _amount) internal {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapRouter.WETH();
        _approve(address(this), address(uniswapRouter), _amount);
        uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            _amount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function withdrawStuckETH() external onlyOwner {
        (bool success, ) = address(msg.sender).call{
            value: address(this).balance
        }("");
        require(success, "transferring ETH failed");
    }

    function withdrawStuckTokens(address BEP20_token) external onlyOwner {
        bool success = IERC20(BEP20_token).transfer(
            msg.sender,
            IERC20(BEP20_token).balanceOf(address(this))
        );
        require(success, "transferring tokens failed!");
        require(BEP20_token != address(this), "Owner cannot claim native tokens"); 
           }


    function setMaxWalletPercentage(uint256 _percentage) external onlyOwner {
    require(_percentage > 1, "Percentage must be greater than 1%");
    require(_percentage <= 100, "Percentage must be less than or equal to 100");
    maxWalletPercentage = _percentage;
    emit MaxWChanged(_percentage);
}
    receive() external payable {}
}

Contract Security Audit

Contract ABI

API
[{"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":"uint256","name":"_trFee","type":"uint256"}],"name":"BuyFeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"MaxWChanged","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":"uint256","name":"_trFee","type":"uint256"}],"name":"SellFeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_newThreshold","type":"uint256"}],"name":"SwapThresholdUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_target","type":"address"},{"indexed":true,"internalType":"bool","name":"_status","type":"bool"}],"name":"Whitelist","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_trWallet","type":"address"}],"name":"developmentWalletChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_trWallet","type":"address"}],"name":"marketingWalletChanged","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTaxes","outputs":[{"internalType":"uint256","name":"marketingTax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"checkWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isSwapping","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletPercentage","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":"pairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketingTax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingTax","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percentage","type":"uint256"}],"name":"setMaxWalletPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingTax","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setWhitelistStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newdevelopment","type":"address"}],"name":"setdevelopmentWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newmarketing","type":"address"}],"name":"setmarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTradingBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toggleSwapping","outputs":[],"stateMutability":"nonpayable","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":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"contract DexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"BEP20_token","type":"address"}],"name":"withdrawStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

600f60c0819052600681905561010060405260e081905260075562000034620186a06b033b2e3c9fd0803ce800000062000401565b600955600a805462ffffff19166001179055600c80546001600160a01b0319908116730ac2b75e5d1f50bbd1b25cfe1e132e0a546b349017909155600d805490911673db6f46184223aa32f241b80e2108c138c3416b301790556002600e55348015620000a057600080fd5b506040805180820182526009808252685472656e644775727560b81b6020808401829052845180860190955291845290830152906003620000e28382620004c8565b506004620000f18282620004c8565b5050506200010e62000108620002e060201b60201c565b620002e4565b737a250d5630b4cf539739df2c5dacb4c659f2488d60808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000164573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200018a919062000594565b6001600160a01b031663c9c65396306080516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000200919062000594565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200024e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000274919062000594565b6001600160a01b0390811660a052336000818152600860205260408082208054600160ff199182168117909255608051909516835281832080548616821790553083529120805490931617909155620002da906b033b2e3c9fd0803ce800000062000336565b620005ee565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620003915760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620003a59190620005c6565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b6000826200041f57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200044f57607f821691505b6020821081036200047057634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003fc57600081815260208120601f850160051c810160208610156200049f5750805b601f850160051c820191505b81811015620004c057828155600101620004ab565b505050505050565b81516001600160401b03811115620004e457620004e462000424565b620004fc81620004f584546200043a565b8462000476565b602080601f8311600181146200053457600084156200051b5750858301515b600019600386901b1c1916600185901b178555620004c0565b600085815260208120601f198616915b82811015620005655788860151825594840194600190910190840162000544565b5085821015620005845787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620005a757600080fd5b81516001600160a01b0381168114620005bf57600080fd5b9392505050565b80820180821115620005e857634e487b7160e01b600052601160045260246000fd5b92915050565b60805160a05161219d62000645600039600081816105b4015281816115fd015281816117720152818161188701526118c901526000818161047301528181611d0201528181611dbb0152611df7015261219d6000f3fe6080604052600436106102295760003560e01c80637a845ece11610123578063afa4f3b2116100ab578063e2f456051161006f578063e2f45605146106bb578063ef586f71146106d1578063f2fde38b146106e6578063f5648a4f14610706578063f66895a31461071b57600080fd5b8063afa4f3b2146105f6578063b886311514610616578063c04a541414610635578063cb96372814610655578063dd62ed3e1461067557600080fd5b806395d89b41116100f257806395d89b411461054d578063a3ca847d14610562578063a457c2d714610582578063a8b08982146105a2578063a9059cbb146105d657600080fd5b80637a845ece146104e3578063864701a5146105035780638a8c523c1461051a5780638da5cb5b1461052f57600080fd5b806339509351116101b157806370a082311161017557806370a0823114610416578063715018a61461044c578063735de9f71461046157806375f0a874146104ad57806376be96f3146104cd57600080fd5b806339509351146103865780634830aa17146103a65780634a74bb02146103c65780634ada218b146103e0578063599ca3971461040057600080fd5b806318160ddd116101f857806318160ddd146102d25780631950c218146102f1578063224611731461032a57806323b872dd1461034a578063313ce5671461036a57600080fd5b806306fdde03146102355780630940bbc714610260578063095ea7b3146102825780630c424284146102b257600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5061024a610732565b6040516102579190611e63565b60405180910390f35b34801561026c57600080fd5b5061028061027b366004611eb1565b6107c4565b005b34801561028e57600080fd5b506102a261029d366004611edf565b610861565b6040519015158152602001610257565b3480156102be57600080fd5b506102806102cd366004611f19565b61087b565b3480156102de57600080fd5b506002545b604051908152602001610257565b3480156102fd57600080fd5b506102a261030c366004611f52565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561033657600080fd5b50610280610345366004611f52565b6108d7565b34801561035657600080fd5b506102a2610365366004611f6f565b6109f1565b34801561037657600080fd5b5060405160128152602001610257565b34801561039257600080fd5b506102a26103a1366004611edf565b610a17565b3480156103b257600080fd5b506102806103c1366004611f52565b610a56565b3480156103d257600080fd5b50600a546102a29060ff1681565b3480156103ec57600080fd5b50600a546102a29062010000900460ff1681565b34801561040c57600080fd5b506102e3600e5481565b34801561042257600080fd5b506102e3610431366004611f52565b6001600160a01b031660009081526020819052604090205490565b34801561045857600080fd5b50610280610b70565b34801561046d57600080fd5b506104957f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610257565b3480156104b957600080fd5b50600c54610495906001600160a01b031681565b3480156104d957600080fd5b506102e3600b5481565b3480156104ef57600080fd5b506102806104fe366004611eb1565b610b84565b34801561050f57600080fd5b506006546102e39081565b34801561052657600080fd5b50610280610c88565b34801561053b57600080fd5b506005546001600160a01b0316610495565b34801561055957600080fd5b5061024a610d00565b34801561056e57600080fd5b5061028061057d366004611eb1565b610d0f565b34801561058e57600080fd5b506102a261059d366004611edf565b610da7565b3480156105ae57600080fd5b506104957f000000000000000000000000000000000000000000000000000000000000000081565b3480156105e257600080fd5b506102a26105f1366004611edf565b610e44565b34801561060257600080fd5b50610280610611366004611eb1565b610e52565b34801561062257600080fd5b50600a546102a290610100900460ff1681565b34801561064157600080fd5b50600d54610495906001600160a01b031681565b34801561066157600080fd5b50610280610670366004611f52565b610f49565b34801561068157600080fd5b506102e3610690366004611fb0565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156106c757600080fd5b506102e360095481565b3480156106dd57600080fd5b506102806110f8565b3480156106f257600080fd5b50610280610701366004611f52565b611127565b34801561071257600080fd5b506102806111a0565b34801561072757600080fd5b506007546102e39081565b60606003805461074190611fde565b80601f016020809104026020016040519081016040528092919081815260200182805461076d90611fde565b80156107ba5780601f1061078f576101008083540402835291602001916107ba565b820191906000526020600020905b81548152906001019060200180831161079d57829003601f168201915b5050505050905090565b6107cc611240565b600781905560148111156108335760405162461bcd60e51b8152602060048201526024808201527f43616e206e6f742073657420627579206665657320686967686572207468616e6044820152632033302560e01b60648201526084015b60405180910390fd5b60405181907f16df2c25b3392f376a685a3826b941b25140108d95899d6b1bd983feafbc1c5590600090a250565b60003361086f81858561129a565b60019150505b92915050565b610883611240565b6001600160a01b038216600081815260086020526040808220805460ff191685151590811790915590519092917f5a25e09a5dba33161281055e015f1279b6b10204d8f90dd56a8ce2b82322d43d91a35050565b6108df611240565b6001600160a01b0381166109415760405162461bcd60e51b8152602060048201526024808201527f63616e206e6f7420736574206d61726b6574696e6720746f20646561642077616044820152631b1b195d60e21b606482015260840161082a565b6001600160a01b0381163b156109a75760405162461bcd60e51b815260206004820152602560248201527f416464726573732063616e206e6f74206265206120636f6e7472616374206164604482015264647265737360d81b606482015260840161082a565b600c80546001600160a01b0319166001600160a01b0383169081179091556040517fd1a6f806ccf6e5a2241d358891af2601bbf89feaad0fb4a891c9fbde2933761990600090a250565b6000336109ff8582856113be565b610a0a858585611450565b60019150505b9392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061086f9082908690610a5190879061202e565b61129a565b610a5e611240565b6001600160a01b038116610ac05760405162461bcd60e51b8152602060048201526024808201527f63616e206e6f7420736574206d61726b6574696e6720746f20646561642077616044820152631b1b195d60e21b606482015260840161082a565b6001600160a01b0381163b15610b265760405162461bcd60e51b815260206004820152602560248201527f416464726573732063616e206e6f74206265206120636f6e7472616374206164604482015264647265737360d81b606482015260840161082a565b600d80546001600160a01b0319166001600160a01b0383169081179091556040517fbeaabd0126ed018f14bda12cf4f7e23b1919648d9c80283d4f9c9743736b197190600090a250565b610b78611240565b610b8260006117e6565b565b610b8c611240565b60018111610be75760405162461bcd60e51b815260206004820152602260248201527f50657263656e74616765206d7573742062652067726561746572207468616e20604482015261312560f01b606482015260840161082a565b6064811115610c4d5760405162461bcd60e51b815260206004820152602c60248201527f50657263656e74616765206d757374206265206c657373207468616e206f722060448201526b0657175616c20746f203130360a41b606482015260840161082a565b600e8190556040518181527f35d0d65816d2618c40bb72544c0686674a06ef8d669a0819ecba314be8292df09060200160405180910390a150565b610c90611240565b600a5462010000900460ff1615610ce95760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c6564000000000000604482015260640161082a565b600a805462ff000019166201000017905543600b55565b60606004805461074190611fde565b610d17611240565b60068190556014811115610d795760405162461bcd60e51b8152602060048201526024808201527f43616e206e6f742073657420627579206665657320686967686572207468616e6044820152632033302560e01b606482015260840161082a565b60405181907f491005465ab6f82fd10f4b13a1b1e5ca452bc4856b019f63775e33a6b1ad2feb90600090a250565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919083811015610e2c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161082a565b610e39828686840361129a565b506001949350505050565b60003361086f818585611450565b610e5a611240565b600081118015610e8d57506103e8610e7f6b033b2e3c9fd0803ce80000006005612041565b610e899190612058565b8111155b610f165760405162461bcd60e51b815260206004820152604e60248201527f4d696e696d756d207377617020616d6f756e74206d757374206265206772656160448201527f746572207468616e203020616e64206c657373207468616e20302e3525206f6660648201526d20746f74616c20737570706c792160901b608482015260a40161082a565b600981905560405181907f18ff2fc8464635e4f668567019152095047e34d7a2ab4b97661ba4dc7fd0647690600090a250565b610f51611240565b6040516370a0823160e01b81523060048201526000906001600160a01b0383169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015610fa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc6919061207a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611029573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104d9190612093565b90508061109c5760405162461bcd60e51b815260206004820152601b60248201527f7472616e7366657272696e6720746f6b656e73206661696c6564210000000000604482015260640161082a565b306001600160a01b038316036110f45760405162461bcd60e51b815260206004820181905260248201527f4f776e65722063616e6e6f7420636c61696d206e617469766520746f6b656e73604482015260640161082a565b5050565b611100611240565b600a5460ff16611111576001611114565b60005b600a805460ff1916911515919091179055565b61112f611240565b6001600160a01b0381166111945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161082a565b61119d816117e6565b50565b6111a8611240565b604051600090339047908381818185875af1925050503d80600081146111ea576040519150601f19603f3d011682016040523d82523d6000602084013e6111ef565b606091505b505090508061119d5760405162461bcd60e51b815260206004820152601760248201527f7472616e7366657272696e6720455448206661696c6564000000000000000000604482015260640161082a565b6005546001600160a01b03163314610b825760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161082a565b6001600160a01b0383166112fc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161082a565b6001600160a01b03821661135d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161082a565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461144a578181101561143d5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161082a565b61144a848484840361129a565b50505050565b6001600160a01b0383166114a65760405162461bcd60e51b815260206004820152601a60248201527f7472616e736665722066726f6d2061646472657373207a65726f000000000000604482015260640161082a565b6001600160a01b0382166114fc5760405162461bcd60e51b815260206004820152601860248201527f7472616e7366657220746f2061646472657373207a65726f0000000000000000604482015260640161082a565b6000811161155e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161082a565b60006064600e546b033b2e3c9fd0803ce800000061157c9190612041565b6115869190612058565b6001600160a01b03851660009081526008602052604090205490915060ff161580156115cb57506001600160a01b03831660009081526008602052604090205460ff16155b80156115df57506001600160a01b03831615155b80156115f457506001600160a01b0383163014155b801561163257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b156116b0578082611658856001600160a01b031660009081526020819052604090205490565b611662919061202e565b11156116b05760405162461bcd60e51b815260206004820152601d60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e74000000604482015260640161082a565b60006116bd858585611838565b60095430600090815260208181526040808320546001600160a01b038b16845260089092529091205492935010159060ff1615801561171557506001600160a01b03851660009081526008602052604090205460ff16155b156117d357600a5462010000900460ff166117665760405162461bcd60e51b815260206004820152601160248201527054726164696e67206e6f2061637469766560781b604482015260640161082a565b846001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480156117a95750600a5460ff165b80156117b25750805b80156117c65750600a54610100900460ff16155b156117d3576117d3611944565b6117de868684611b07565b505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03831660009081526008602052604081205460ff168061187757506001600160a01b03831660009081526008602052604090205460ff165b15611883575080610a10565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316036118c75750600754611905565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b03160361190557506006545b600081156119305760646119198386612041565b6119239190612058565b9050611930863083611b07565b61193a81856120b0565b9695505050505050565b600a805461ff001916610100179055306000908152602081905260408120549050806000036119705750565b3060009081526020819052604090205461198990611cab565b600c546000906001600160a01b031660026119a5476001612041565b6119af9190612058565b604051600081818185875af1925050503d80600081146119eb576040519150601f19603f3d011682016040523d82523d6000602084013e6119f0565b606091505b5050600d546040519192506000916001600160a01b039091169047908381818185875af1925050503d8060008114611a44576040519150601f19603f3d011682016040523d82523d6000602084013e611a49565b606091505b5050905081611a9c57600c54604080516001600160a01b0390921682524760208301527f1c43b9761b3fba5321ca8212bfc231945f668ccc0c446f333999eea9ce8fda81910160405180910390a1611aa8565b600a805461ff00191690555b80611af757600d54604080516001600160a01b0390921682524760208301527f1c43b9761b3fba5321ca8212bfc231945f668ccc0c446f333999eea9ce8fda81910160405180910390a1505050565b600a805461ff0019169055505050565b6001600160a01b038316611b6b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161082a565b6001600160a01b038216611bcd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161082a565b6001600160a01b03831660009081526020819052604090205481811015611c455760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161082a565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361144a565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611ce057611ce06120c3565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8291906120d9565b81600181518110611d9557611d956120c3565b60200260200101906001600160a01b031690816001600160a01b031681525050611de0307f00000000000000000000000000000000000000000000000000000000000000008461129a565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611e359085906000908690309042906004016120f6565b600060405180830381600087803b158015611e4f57600080fd5b505af11580156117de573d6000803e3d6000fd5b600060208083528351808285015260005b81811015611e9057858101830151858201604001528201611e74565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215611ec357600080fd5b5035919050565b6001600160a01b038116811461119d57600080fd5b60008060408385031215611ef257600080fd5b8235611efd81611eca565b946020939093013593505050565b801515811461119d57600080fd5b60008060408385031215611f2c57600080fd5b8235611f3781611eca565b91506020830135611f4781611f0b565b809150509250929050565b600060208284031215611f6457600080fd5b8135610a1081611eca565b600080600060608486031215611f8457600080fd5b8335611f8f81611eca565b92506020840135611f9f81611eca565b929592945050506040919091013590565b60008060408385031215611fc357600080fd5b8235611fce81611eca565b91506020830135611f4781611eca565b600181811c90821680611ff257607f821691505b60208210810361201257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561087557610875612018565b808202811582820484141761087557610875612018565b60008261207557634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561208c57600080fd5b5051919050565b6000602082840312156120a557600080fd5b8151610a1081611f0b565b8181038181111561087557610875612018565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156120eb57600080fd5b8151610a1081611eca565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156121465784516001600160a01b031683529383019391830191600101612121565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220dbccd45422570ae8428eb82c80a4369a1129d7e6f011ac1da54c05887b8caaca64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102295760003560e01c80637a845ece11610123578063afa4f3b2116100ab578063e2f456051161006f578063e2f45605146106bb578063ef586f71146106d1578063f2fde38b146106e6578063f5648a4f14610706578063f66895a31461071b57600080fd5b8063afa4f3b2146105f6578063b886311514610616578063c04a541414610635578063cb96372814610655578063dd62ed3e1461067557600080fd5b806395d89b41116100f257806395d89b411461054d578063a3ca847d14610562578063a457c2d714610582578063a8b08982146105a2578063a9059cbb146105d657600080fd5b80637a845ece146104e3578063864701a5146105035780638a8c523c1461051a5780638da5cb5b1461052f57600080fd5b806339509351116101b157806370a082311161017557806370a0823114610416578063715018a61461044c578063735de9f71461046157806375f0a874146104ad57806376be96f3146104cd57600080fd5b806339509351146103865780634830aa17146103a65780634a74bb02146103c65780634ada218b146103e0578063599ca3971461040057600080fd5b806318160ddd116101f857806318160ddd146102d25780631950c218146102f1578063224611731461032a57806323b872dd1461034a578063313ce5671461036a57600080fd5b806306fdde03146102355780630940bbc714610260578063095ea7b3146102825780630c424284146102b257600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5061024a610732565b6040516102579190611e63565b60405180910390f35b34801561026c57600080fd5b5061028061027b366004611eb1565b6107c4565b005b34801561028e57600080fd5b506102a261029d366004611edf565b610861565b6040519015158152602001610257565b3480156102be57600080fd5b506102806102cd366004611f19565b61087b565b3480156102de57600080fd5b506002545b604051908152602001610257565b3480156102fd57600080fd5b506102a261030c366004611f52565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561033657600080fd5b50610280610345366004611f52565b6108d7565b34801561035657600080fd5b506102a2610365366004611f6f565b6109f1565b34801561037657600080fd5b5060405160128152602001610257565b34801561039257600080fd5b506102a26103a1366004611edf565b610a17565b3480156103b257600080fd5b506102806103c1366004611f52565b610a56565b3480156103d257600080fd5b50600a546102a29060ff1681565b3480156103ec57600080fd5b50600a546102a29062010000900460ff1681565b34801561040c57600080fd5b506102e3600e5481565b34801561042257600080fd5b506102e3610431366004611f52565b6001600160a01b031660009081526020819052604090205490565b34801561045857600080fd5b50610280610b70565b34801561046d57600080fd5b506104957f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610257565b3480156104b957600080fd5b50600c54610495906001600160a01b031681565b3480156104d957600080fd5b506102e3600b5481565b3480156104ef57600080fd5b506102806104fe366004611eb1565b610b84565b34801561050f57600080fd5b506006546102e39081565b34801561052657600080fd5b50610280610c88565b34801561053b57600080fd5b506005546001600160a01b0316610495565b34801561055957600080fd5b5061024a610d00565b34801561056e57600080fd5b5061028061057d366004611eb1565b610d0f565b34801561058e57600080fd5b506102a261059d366004611edf565b610da7565b3480156105ae57600080fd5b506104957f000000000000000000000000816e54627d501ba3cc651d08d2aa9df4ab20418781565b3480156105e257600080fd5b506102a26105f1366004611edf565b610e44565b34801561060257600080fd5b50610280610611366004611eb1565b610e52565b34801561062257600080fd5b50600a546102a290610100900460ff1681565b34801561064157600080fd5b50600d54610495906001600160a01b031681565b34801561066157600080fd5b50610280610670366004611f52565b610f49565b34801561068157600080fd5b506102e3610690366004611fb0565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156106c757600080fd5b506102e360095481565b3480156106dd57600080fd5b506102806110f8565b3480156106f257600080fd5b50610280610701366004611f52565b611127565b34801561071257600080fd5b506102806111a0565b34801561072757600080fd5b506007546102e39081565b60606003805461074190611fde565b80601f016020809104026020016040519081016040528092919081815260200182805461076d90611fde565b80156107ba5780601f1061078f576101008083540402835291602001916107ba565b820191906000526020600020905b81548152906001019060200180831161079d57829003601f168201915b5050505050905090565b6107cc611240565b600781905560148111156108335760405162461bcd60e51b8152602060048201526024808201527f43616e206e6f742073657420627579206665657320686967686572207468616e6044820152632033302560e01b60648201526084015b60405180910390fd5b60405181907f16df2c25b3392f376a685a3826b941b25140108d95899d6b1bd983feafbc1c5590600090a250565b60003361086f81858561129a565b60019150505b92915050565b610883611240565b6001600160a01b038216600081815260086020526040808220805460ff191685151590811790915590519092917f5a25e09a5dba33161281055e015f1279b6b10204d8f90dd56a8ce2b82322d43d91a35050565b6108df611240565b6001600160a01b0381166109415760405162461bcd60e51b8152602060048201526024808201527f63616e206e6f7420736574206d61726b6574696e6720746f20646561642077616044820152631b1b195d60e21b606482015260840161082a565b6001600160a01b0381163b156109a75760405162461bcd60e51b815260206004820152602560248201527f416464726573732063616e206e6f74206265206120636f6e7472616374206164604482015264647265737360d81b606482015260840161082a565b600c80546001600160a01b0319166001600160a01b0383169081179091556040517fd1a6f806ccf6e5a2241d358891af2601bbf89feaad0fb4a891c9fbde2933761990600090a250565b6000336109ff8582856113be565b610a0a858585611450565b60019150505b9392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061086f9082908690610a5190879061202e565b61129a565b610a5e611240565b6001600160a01b038116610ac05760405162461bcd60e51b8152602060048201526024808201527f63616e206e6f7420736574206d61726b6574696e6720746f20646561642077616044820152631b1b195d60e21b606482015260840161082a565b6001600160a01b0381163b15610b265760405162461bcd60e51b815260206004820152602560248201527f416464726573732063616e206e6f74206265206120636f6e7472616374206164604482015264647265737360d81b606482015260840161082a565b600d80546001600160a01b0319166001600160a01b0383169081179091556040517fbeaabd0126ed018f14bda12cf4f7e23b1919648d9c80283d4f9c9743736b197190600090a250565b610b78611240565b610b8260006117e6565b565b610b8c611240565b60018111610be75760405162461bcd60e51b815260206004820152602260248201527f50657263656e74616765206d7573742062652067726561746572207468616e20604482015261312560f01b606482015260840161082a565b6064811115610c4d5760405162461bcd60e51b815260206004820152602c60248201527f50657263656e74616765206d757374206265206c657373207468616e206f722060448201526b0657175616c20746f203130360a41b606482015260840161082a565b600e8190556040518181527f35d0d65816d2618c40bb72544c0686674a06ef8d669a0819ecba314be8292df09060200160405180910390a150565b610c90611240565b600a5462010000900460ff1615610ce95760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c6564000000000000604482015260640161082a565b600a805462ff000019166201000017905543600b55565b60606004805461074190611fde565b610d17611240565b60068190556014811115610d795760405162461bcd60e51b8152602060048201526024808201527f43616e206e6f742073657420627579206665657320686967686572207468616e6044820152632033302560e01b606482015260840161082a565b60405181907f491005465ab6f82fd10f4b13a1b1e5ca452bc4856b019f63775e33a6b1ad2feb90600090a250565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919083811015610e2c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161082a565b610e39828686840361129a565b506001949350505050565b60003361086f818585611450565b610e5a611240565b600081118015610e8d57506103e8610e7f6b033b2e3c9fd0803ce80000006005612041565b610e899190612058565b8111155b610f165760405162461bcd60e51b815260206004820152604e60248201527f4d696e696d756d207377617020616d6f756e74206d757374206265206772656160448201527f746572207468616e203020616e64206c657373207468616e20302e3525206f6660648201526d20746f74616c20737570706c792160901b608482015260a40161082a565b600981905560405181907f18ff2fc8464635e4f668567019152095047e34d7a2ab4b97661ba4dc7fd0647690600090a250565b610f51611240565b6040516370a0823160e01b81523060048201526000906001600160a01b0383169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015610fa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc6919061207a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611029573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104d9190612093565b90508061109c5760405162461bcd60e51b815260206004820152601b60248201527f7472616e7366657272696e6720746f6b656e73206661696c6564210000000000604482015260640161082a565b306001600160a01b038316036110f45760405162461bcd60e51b815260206004820181905260248201527f4f776e65722063616e6e6f7420636c61696d206e617469766520746f6b656e73604482015260640161082a565b5050565b611100611240565b600a5460ff16611111576001611114565b60005b600a805460ff1916911515919091179055565b61112f611240565b6001600160a01b0381166111945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161082a565b61119d816117e6565b50565b6111a8611240565b604051600090339047908381818185875af1925050503d80600081146111ea576040519150601f19603f3d011682016040523d82523d6000602084013e6111ef565b606091505b505090508061119d5760405162461bcd60e51b815260206004820152601760248201527f7472616e7366657272696e6720455448206661696c6564000000000000000000604482015260640161082a565b6005546001600160a01b03163314610b825760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161082a565b6001600160a01b0383166112fc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161082a565b6001600160a01b03821661135d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161082a565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461144a578181101561143d5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161082a565b61144a848484840361129a565b50505050565b6001600160a01b0383166114a65760405162461bcd60e51b815260206004820152601a60248201527f7472616e736665722066726f6d2061646472657373207a65726f000000000000604482015260640161082a565b6001600160a01b0382166114fc5760405162461bcd60e51b815260206004820152601860248201527f7472616e7366657220746f2061646472657373207a65726f0000000000000000604482015260640161082a565b6000811161155e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161082a565b60006064600e546b033b2e3c9fd0803ce800000061157c9190612041565b6115869190612058565b6001600160a01b03851660009081526008602052604090205490915060ff161580156115cb57506001600160a01b03831660009081526008602052604090205460ff16155b80156115df57506001600160a01b03831615155b80156115f457506001600160a01b0383163014155b801561163257507f000000000000000000000000816e54627d501ba3cc651d08d2aa9df4ab2041876001600160a01b0316836001600160a01b031614155b156116b0578082611658856001600160a01b031660009081526020819052604090205490565b611662919061202e565b11156116b05760405162461bcd60e51b815260206004820152601d60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e74000000604482015260640161082a565b60006116bd858585611838565b60095430600090815260208181526040808320546001600160a01b038b16845260089092529091205492935010159060ff1615801561171557506001600160a01b03851660009081526008602052604090205460ff16155b156117d357600a5462010000900460ff166117665760405162461bcd60e51b815260206004820152601160248201527054726164696e67206e6f2061637469766560781b604482015260640161082a565b846001600160a01b03167f000000000000000000000000816e54627d501ba3cc651d08d2aa9df4ab2041876001600160a01b03161480156117a95750600a5460ff165b80156117b25750805b80156117c65750600a54610100900460ff16155b156117d3576117d3611944565b6117de868684611b07565b505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03831660009081526008602052604081205460ff168061187757506001600160a01b03831660009081526008602052604090205460ff165b15611883575080610a10565b60007f000000000000000000000000816e54627d501ba3cc651d08d2aa9df4ab2041876001600160a01b0316846001600160a01b0316036118c75750600754611905565b7f000000000000000000000000816e54627d501ba3cc651d08d2aa9df4ab2041876001600160a01b0316856001600160a01b03160361190557506006545b600081156119305760646119198386612041565b6119239190612058565b9050611930863083611b07565b61193a81856120b0565b9695505050505050565b600a805461ff001916610100179055306000908152602081905260408120549050806000036119705750565b3060009081526020819052604090205461198990611cab565b600c546000906001600160a01b031660026119a5476001612041565b6119af9190612058565b604051600081818185875af1925050503d80600081146119eb576040519150601f19603f3d011682016040523d82523d6000602084013e6119f0565b606091505b5050600d546040519192506000916001600160a01b039091169047908381818185875af1925050503d8060008114611a44576040519150601f19603f3d011682016040523d82523d6000602084013e611a49565b606091505b5050905081611a9c57600c54604080516001600160a01b0390921682524760208301527f1c43b9761b3fba5321ca8212bfc231945f668ccc0c446f333999eea9ce8fda81910160405180910390a1611aa8565b600a805461ff00191690555b80611af757600d54604080516001600160a01b0390921682524760208301527f1c43b9761b3fba5321ca8212bfc231945f668ccc0c446f333999eea9ce8fda81910160405180910390a1505050565b600a805461ff0019169055505050565b6001600160a01b038316611b6b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161082a565b6001600160a01b038216611bcd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161082a565b6001600160a01b03831660009081526020819052604090205481811015611c455760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161082a565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361144a565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611ce057611ce06120c3565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8291906120d9565b81600181518110611d9557611d956120c3565b60200260200101906001600160a01b031690816001600160a01b031681525050611de0307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461129a565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790611e359085906000908690309042906004016120f6565b600060405180830381600087803b158015611e4f57600080fd5b505af11580156117de573d6000803e3d6000fd5b600060208083528351808285015260005b81811015611e9057858101830151858201604001528201611e74565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215611ec357600080fd5b5035919050565b6001600160a01b038116811461119d57600080fd5b60008060408385031215611ef257600080fd5b8235611efd81611eca565b946020939093013593505050565b801515811461119d57600080fd5b60008060408385031215611f2c57600080fd5b8235611f3781611eca565b91506020830135611f4781611f0b565b809150509250929050565b600060208284031215611f6457600080fd5b8135610a1081611eca565b600080600060608486031215611f8457600080fd5b8335611f8f81611eca565b92506020840135611f9f81611eca565b929592945050506040919091013590565b60008060408385031215611fc357600080fd5b8235611fce81611eca565b91506020830135611f4781611eca565b600181811c90821680611ff257607f821691505b60208210810361201257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561087557610875612018565b808202811582820484141761087557610875612018565b60008261207557634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561208c57600080fd5b5051919050565b6000602082840312156120a557600080fd5b8151610a1081611f0b565b8181038181111561087557610875612018565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156120eb57600080fd5b8151610a1081611eca565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156121465784516001600160a01b031683529383019391830191600101612121565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220dbccd45422570ae8428eb82c80a4369a1129d7e6f011ac1da54c05887b8caaca64736f6c63430008130033

Deployed Bytecode Sourcemap

11331:8954:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4961:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14672:246;;;;;;;;;;-1:-1:-1;14672:246:0;;;;;:::i;:::-;;:::i;:::-;;6177:201;;;;;;;;;;-1:-1:-1;6177:201:0;;;;;:::i;:::-;;:::i;:::-;;;1396:14:1;;1389:22;1371:41;;1359:2;1344:18;6177:201:0;1231:187:1;15438:195:0;;;;;;;;;;-1:-1:-1;15438:195:0;;;;;:::i;:::-;;:::i;5452:108::-;;;;;;;;;;-1:-1:-1;5540:12:0;;5452:108;;;2079:25:1;;;2067:2;2052:18;5452:108:0;1933:177:1;15641:116:0;;;;;;;;;;-1:-1:-1;15641:116:0;;;;;:::i;:::-;-1:-1:-1;;;;;15729:20:0;15705:4;15729:20;;;:11;:20;;;;;;;;;15641:116;13419:384;;;;;;;;;;-1:-1:-1;13419:384:0;;;;;:::i;:::-;;:::i;6388:295::-;;;;;;;;;;-1:-1:-1;6388:295:0;;;;;:::i;:::-;;:::i;5294:93::-;;;;;;;;;;-1:-1:-1;5294:93:0;;5377:2;2970:36:1;;2958:2;2943:18;5294:93:0;2828:184:1;6691:238:0;;;;;;;;;;-1:-1:-1;6691:238:0;;;;;:::i;:::-;;:::i;13811:402::-;;;;;;;;;;-1:-1:-1;13811:402:0;;;;;:::i;:::-;;:::i;11926:40::-;;;;;;;;;;-1:-1:-1;11926:40:0;;;;;;;;12010:34;;;;;;;;;;-1:-1:-1;12010:34:0;;;;;;;;;;;12275:38;;;;;;;;;;;;;;;;5623:127;;;;;;;;;;-1:-1:-1;5623:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;5724:18:0;5697:7;5724:18;;;;;;;;;;;;5623:127;1310:103;;;;;;;;;;;;;:::i;11516:40::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3198:55:1;;;3180:74;;3168:2;3153:18;11516:40:0;3017:243:1;12107:75:0;;;;;;;;;;-1:-1:-1;12107:75:0;;;;-1:-1:-1;;;;;12107:75:0;;;12051:32;;;;;;;;;;;;;;;;19944:303;;;;;;;;;;-1:-1:-1;19944:303:0;;;;;:::i;:::-;;:::i;11621:29::-;;;;;;;;;;-1:-1:-1;11621:29:0;;;;;;14223:192;;;;;;;;;;;;;:::i;1003:87::-;;;;;;;;;;-1:-1:-1;1076:6:0;;-1:-1:-1;;;;;1076:6:0;1003:87;;5180:104;;;;;;;;;;;;;:::i;14421:243::-;;;;;;;;;;-1:-1:-1;14421:243:0;;;;;:::i;:::-;;:::i;6939:436::-;;;;;;;;;;-1:-1:-1;6939:436:0;;;;;:::i;:::-;;:::i;11563:36::-;;;;;;;;;;;;;;;5760:193;;;;;;;;;;-1:-1:-1;5760:193:0;;;;;:::i;:::-;;:::i;14924:372::-;;;;;;;;;;-1:-1:-1;14924:372:0;;;;;:::i;:::-;;:::i;11973:30::-;;;;;;;;;;-1:-1:-1;11973:30:0;;;;;;;;;;;12190:77;;;;;;;;;;-1:-1:-1;12190:77:0;;;;-1:-1:-1;;;;;12190:77:0;;;19558:376;;;;;;;;;;-1:-1:-1;19558:376:0;;;;;:::i;:::-;;:::i;6016:151::-;;;;;;;;;;-1:-1:-1;6016:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;6132:18:0;;;6105:7;6132:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6016:151;11820:57;;;;;;;;;;;;;;;;15304:126;;;;;;;;;;;;;:::i;1423:201::-;;;;;;;;;;-1:-1:-1;1423:201:0;;;;;:::i;:::-;;:::i;19329:221::-;;;;;;;;;;;;;:::i;11657:30::-;;;;;;;;;;-1:-1:-1;11657:30:0;;;;;;4961:100;5015:13;5048:5;5041:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4961:100;:::o;14672:246::-;889:13;:11;:13::i;:::-;14747:9:::1;:38:::0;;;14821:2:::1;14804:19:::0;::::1;;14796:68;;;::::0;-1:-1:-1;;;14796:68:0;;4476:2:1;14796:68:0::1;::::0;::::1;4458:21:1::0;4515:2;4495:18;;;4488:30;4554:34;4534:18;;;4527:62;-1:-1:-1;;;4605:18:1;;;4598:34;4649:19;;14796:68:0::1;;;;;;;;;14880:30;::::0;14896:13;;14880:30:::1;::::0;;;::::1;14672:246:::0;:::o;6177:201::-;6260:4;198:10;6316:32;198:10;6332:7;6341:6;6316:8;:32::i;:::-;6366:4;6359:11;;;6177:201;;;;;:::o;15438:195::-;889:13;:11;:13::i;:::-;-1:-1:-1;;;;;15552:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;:30;;-1:-1:-1;;15552:30:0::1;::::0;::::1;;::::0;;::::1;::::0;;;15598:27;;15552:30;;:20;15598:27:::1;::::0;::::1;15438:195:::0;;:::o;13419:384::-;889:13;:11;:13::i;:::-;-1:-1:-1;;;;;13522:27:0;::::1;13500:113;;;::::0;-1:-1:-1;;;13500:113:0;;4881:2:1;13500:113:0::1;::::0;::::1;4863:21:1::0;4920:2;4900:18;;;4893:30;4959:34;4939:18;;;4932:62;-1:-1:-1;;;5010:18:1;;;5003:34;5054:19;;13500:113:0::1;4679:400:1::0;13500:113:0::1;-1:-1:-1::0;;;;;13380:19:0;;;:23;13624:76:::1;;;::::0;-1:-1:-1;;;13624:76:0;;5286:2:1;13624:76:0::1;::::0;::::1;5268:21:1::0;5325:2;5305:18;;;5298:30;5364:34;5344:18;;;5337:62;-1:-1:-1;;;5415:18:1;;;5408:35;5460:19;;13624:76:0::1;5084:401:1::0;13624:76:0::1;13711:15;:31:::0;;-1:-1:-1;;;;;;13711:31:0::1;-1:-1:-1::0;;;;;13711:31:0;::::1;::::0;;::::1;::::0;;;13758:37:::1;::::0;::::1;::::0;-1:-1:-1;;13758:37:0::1;13419:384:::0;:::o;6388:295::-;6519:4;198:10;6577:38;6593:4;198:10;6608:6;6577:15;:38::i;:::-;6626:27;6636:4;6642:2;6646:6;6626:9;:27::i;:::-;6671:4;6664:11;;;6388:295;;;;;;:::o;6691:238::-;198:10;6779:4;6132:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;6132:27:0;;;;;;;;;;6779:4;;198:10;6835:64;;198:10;;6132:27;;6860:38;;6888:10;;6860:38;:::i;:::-;6835:8;:64::i;13811:402::-;889:13;:11;:13::i;:::-;-1:-1:-1;;;;;13918:29:0;::::1;13896:115;;;::::0;-1:-1:-1;;;13896:115:0;;4881:2:1;13896:115:0::1;::::0;::::1;4863:21:1::0;4920:2;4900:18;;;4893:30;4959:34;4939:18;;;4932:62;-1:-1:-1;;;5010:18:1;;;5003:34;5054:19;;13896:115:0::1;4679:400:1::0;13896:115:0::1;-1:-1:-1::0;;;;;13380:19:0;;;:23;14024:78:::1;;;::::0;-1:-1:-1;;;14024:78:0;;5286:2:1;14024:78:0::1;::::0;::::1;5268:21:1::0;5325:2;5305:18;;;5298:30;5364:34;5344:18;;;5337:62;-1:-1:-1;;;5415:18:1;;;5408:35;5460:19;;14024:78:0::1;5084:401:1::0;14024:78:0::1;14113:17;:35:::0;;-1:-1:-1;;;;;;14113:35:0::1;-1:-1:-1::0;;;;;14113:35:0;::::1;::::0;;::::1;::::0;;;14164:41:::1;::::0;::::1;::::0;-1:-1:-1;;14164:41:0::1;13811:402:::0;:::o;1310:103::-;889:13;:11;:13::i;:::-;1375:30:::1;1402:1;1375:18;:30::i;:::-;1310:103::o:0;19944:303::-;889:13;:11;:13::i;:::-;20045:1:::1;20031:11;:15;20023:62;;;::::0;-1:-1:-1;;;20023:62:0;;5954:2:1;20023:62:0::1;::::0;::::1;5936:21:1::0;5993:2;5973:18;;;5966:30;6032:34;6012:18;;;6005:62;-1:-1:-1;;;6083:18:1;;;6076:32;6125:19;;20023:62:0::1;5752:398:1::0;20023:62:0::1;20115:3;20100:11;:18;;20092:75;;;::::0;-1:-1:-1;;;20092:75:0;;6357:2:1;20092:75:0::1;::::0;::::1;6339:21:1::0;6396:2;6376:18;;;6369:30;6435:34;6415:18;;;6408:62;-1:-1:-1;;;6486:18:1;;;6479:42;6538:19;;20092:75:0::1;6155:408:1::0;20092:75:0::1;20174:19;:33:::0;;;20219:24:::1;::::0;2079:25:1;;;20219:24:0::1;::::0;2067:2:1;2052:18;20219:24:0::1;;;;;;;19944:303:::0;:::o;14223:192::-;889:13;:11;:13::i;:::-;14287:14:::1;::::0;;;::::1;;;14286:15;14278:54;;;::::0;-1:-1:-1;;;14278:54:0;;6770:2:1;14278:54:0::1;::::0;::::1;6752:21:1::0;6809:2;6789:18;;;6782:30;6848:28;6828:18;;;6821:56;6894:18;;14278:54:0::1;6568:350:1::0;14278:54:0::1;14343:14;:21:::0;;-1:-1:-1;;14343:21:0::1;::::0;::::1;::::0;;14395:12:::1;14375:17;:32:::0;14223:192::o;5180:104::-;5236:13;5269:7;5262:14;;;;;:::i;14421:243::-;889:13;:11;:13::i;:::-;14495:8:::1;:37:::0;;;14568:2:::1;14551:19:::0;::::1;;14543:68;;;::::0;-1:-1:-1;;;14543:68:0;;4476:2:1;14543:68:0::1;::::0;::::1;4458:21:1::0;4515:2;4495:18;;;4488:30;4554:34;4534:18;;;4527:62;-1:-1:-1;;;4605:18:1;;;4598:34;4649:19;;14543:68:0::1;4274:400:1::0;14543:68:0::1;14627:29;::::0;14642:13;;14627:29:::1;::::0;;;::::1;14421:243:::0;:::o;6939:436::-;198:10;7032:4;6132:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;6132:27:0;;;;;;;;;;7032:4;;198:10;7179:15;7159:16;:35;;7151:85;;;;-1:-1:-1;;;7151:85:0;;7125:2:1;7151:85:0;;;7107:21:1;7164:2;7144:18;;;7137:30;7203:34;7183:18;;;7176:62;-1:-1:-1;;;7254:18:1;;;7247:35;7299:19;;7151:85:0;6923:401:1;7151:85:0;7272:60;7281:5;7288:7;7316:15;7297:16;:34;7272:8;:60::i;:::-;-1:-1:-1;7363:4:0;;6939:436;-1:-1:-1;;;;6939:436:0:o;5760:193::-;5839:4;198:10;5895:28;198:10;5912:2;5916:6;5895:9;:28::i;14924:372::-;889:13;:11;:13::i;:::-;15040:1:::1;15027:10;:14;:57;;;;-1:-1:-1::0;15080:4:0::1;15060:16;11473:20;15075:1;15060:16;:::i;:::-;15059:25;;;;:::i;:::-;15045:10;:39;;15027:57;15005:185;;;::::0;-1:-1:-1;;;15005:185:0;;7926:2:1;15005:185:0::1;::::0;::::1;7908:21:1::0;7965:2;7945:18;;;7938:30;8004:34;7984:18;;;7977:62;8075:34;8055:18;;;8048:62;-1:-1:-1;;;8126:19:1;;;8119:45;8181:19;;15005:185:0::1;7724:482:1::0;15005:185:0::1;15201:18;:31:::0;;;15248:40:::1;::::0;15222:10;;15248:40:::1;::::0;;;::::1;14924:372:::0;:::o;19558:376::-;889:13;:11;:13::i;:::-;19721:44:::1;::::0;-1:-1:-1;;;19721:44:0;;19759:4:::1;19721:44;::::0;::::1;3180:74:1::0;19638:12:0::1;::::0;-1:-1:-1;;;;;19653:28:0;::::1;::::0;::::1;::::0;19696:10:::1;::::0;19653:28;;19721:29:::1;::::0;3153:18:1;;19721:44:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19653:123;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;8592:55:1;;;19653:123:0::1;::::0;::::1;8574:74:1::0;8664:18;;;8657:34;8547:18;;19653:123:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19638:138;;19795:7;19787:47;;;::::0;-1:-1:-1;;;19787:47:0;;9154:2:1;19787:47:0::1;::::0;::::1;9136:21:1::0;9193:2;9173:18;;;9166:30;9232:29;9212:18;;;9205:57;9279:18;;19787:47:0::1;8952:351:1::0;19787:47:0::1;19876:4;-1:-1:-1::0;;;;;19853:28:0;::::1;::::0;19845:73:::1;;;::::0;-1:-1:-1;;;19845:73:0;;9510:2:1;19845:73:0::1;::::0;::::1;9492:21:1::0;;;9529:18;;;9522:30;9588:34;9568:18;;;9561:62;9640:18;;19845:73:0::1;9308:356:1::0;19845:73:0::1;19627:307;19558:376:::0;:::o;15304:126::-;889:13;:11;:13::i;:::-;15385:21:::1;::::0;::::1;;15384:38;;15418:4;15384:38;;;15410:5;15384:38;15360:21;:62:::0;;-1:-1:-1;;15360:62:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15304:126::o;1423:201::-;889:13;:11;:13::i;:::-;-1:-1:-1;;;;;1512:22:0;::::1;1504:73;;;::::0;-1:-1:-1;;;1504:73:0;;9871:2:1;1504:73:0::1;::::0;::::1;9853:21:1::0;9910:2;9890:18;;;9883:30;9949:34;9929:18;;;9922:62;-1:-1:-1;;;10000:18:1;;;9993:36;10046:19;;1504:73:0::1;9669:402:1::0;1504:73:0::1;1588:28;1607:8;1588:18;:28::i;:::-;1423:201:::0;:::o;19329:221::-;889:13;:11;:13::i;:::-;19406:82:::1;::::0;19388:12:::1;::::0;19414:10:::1;::::0;19452:21:::1;::::0;19388:12;19406:82;19388:12;19406:82;19452:21;19414:10;19406:82:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19387:101;;;19507:7;19499:43;;;::::0;-1:-1:-1;;;19499:43:0;;10488:2:1;19499:43:0::1;::::0;::::1;10470:21:1::0;10527:2;10507:18;;;10500:30;10566:25;10546:18;;;10539:53;10609:18;;19499:43:0::1;10286:347:1::0;1168:132:0;1076:6;;-1:-1:-1;;;;;1076:6:0;198:10;1232:23;1224:68;;;;-1:-1:-1;;;1224:68:0;;10840:2:1;1224:68:0;;;10822:21:1;;;10859:18;;;10852:30;10918:34;10898:18;;;10891:62;10970:18;;1224:68:0;10638:356:1;9315:380:0;-1:-1:-1;;;;;9451:19:0;;9443:68;;;;-1:-1:-1;;;9443:68:0;;11201:2:1;9443:68:0;;;11183:21:1;11240:2;11220:18;;;11213:30;11279:34;11259:18;;;11252:62;-1:-1:-1;;;11330:18:1;;;11323:34;11374:19;;9443:68:0;10999:400:1;9443:68:0;-1:-1:-1;;;;;9530:21:0;;9522:68;;;;-1:-1:-1;;;9522:68:0;;11606:2:1;9522:68:0;;;11588:21:1;11645:2;11625:18;;;11618:30;11684:34;11664:18;;;11657:62;-1:-1:-1;;;11735:18:1;;;11728:32;11777:19;;9522:68:0;11404:398:1;9522:68:0;-1:-1:-1;;;;;9603:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9655:32;;2079:25:1;;;9655:32:0;;2052:18:1;9655:32:0;;;;;;;9315:380;;;:::o;9705:453::-;-1:-1:-1;;;;;6132:18:0;;;9840:24;6132:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;9907:37:0;;9903:248;;9989:6;9969:16;:26;;9961:68;;;;-1:-1:-1;;;9961:68:0;;12009:2:1;9961:68:0;;;11991:21:1;12048:2;12028:18;;;12021:30;12087:31;12067:18;;;12060:59;12136:18;;9961:68:0;11807:353:1;9961:68:0;10073:51;10082:5;10089:7;10117:6;10098:16;:25;10073:8;:51::i;:::-;9829:329;9705:453;;;:::o;16563:1373::-;-1:-1:-1;;;;;16706:19:0;;16698:58;;;;-1:-1:-1;;;16698:58:0;;12367:2:1;16698:58:0;;;12349:21:1;12406:2;12386:18;;;12379:30;12445:28;12425:18;;;12418:56;12491:18;;16698:58:0;12165:350:1;16698:58:0;-1:-1:-1;;;;;16775:17:0;;16767:54;;;;-1:-1:-1;;;16767:54:0;;12722:2:1;16767:54:0;;;12704:21:1;12761:2;12741:18;;;12734:30;12800:26;12780:18;;;12773:54;12844:18;;16767:54:0;12520:348:1;16767:54:0;16850:1;16840:7;:11;16832:65;;;;-1:-1:-1;;;16832:65:0;;13075:2:1;16832:65:0;;;13057:21:1;13114:2;13094:18;;;13087:30;13153:34;13133:18;;;13126:62;-1:-1:-1;;;13204:18:1;;;13197:39;13253:19;;16832:65:0;12873:405:1;16832:65:0;17020:23;17083:3;17061:19;;11473:20;17046:34;;;;:::i;:::-;:40;;;;:::i;:::-;-1:-1:-1;;;;;17168:18:0;;;;;;:11;:18;;;;;;17020:66;;-1:-1:-1;17168:18:0;;17167:19;:40;;;;-1:-1:-1;;;;;;17191:16:0;;;;;;:11;:16;;;;;;;;17190:17;17167:40;:61;;;;-1:-1:-1;;;;;;17211:17:0;;;;17167:61;:85;;;;-1:-1:-1;;;;;;17232:20:0;;17247:4;17232:20;;17167:85;:107;;;;;17263:11;-1:-1:-1;;;;;17256:18:0;:3;-1:-1:-1;;;;;17256:18:0;;;17167:107;17163:217;;;17323:15;17312:7;17295:14;17305:3;-1:-1:-1;;;;;5724:18:0;5697:7;5724:18;;;;;;;;;;;;5623:127;17295:14;:24;;;;:::i;:::-;:43;;17287:85;;;;-1:-1:-1;;;17287:85:0;;13485:2:1;17287:85:0;;;13467:21:1;13524:2;13504:18;;;13497:30;13563:31;13543:18;;;13536:59;13612:18;;17287:85:0;13283:353:1;17287:85:0;17392:18;17413:29;17422:5;17429:3;17434:7;17413:8;:29::i;:::-;17498:18;;17488:4;17455:12;5724:18;;;;;;;;;;;;-1:-1:-1;;;;;17548:18:0;;;;:11;:18;;;;;;;17392:50;;-1:-1:-1;;17470:46:0;;17548:18;;17547:19;:53;;;;-1:-1:-1;;;;;;17584:16:0;;;;;;:11;:16;;;;;;;;17583:17;17547:53;17527:352;;;17635:14;;;;;;;17627:44;;;;-1:-1:-1;;;17627:44:0;;13843:2:1;17627:44:0;;;13825:21:1;13882:2;13862:18;;;13855:30;-1:-1:-1;;;13901:18:1;;;13894:47;13958:18;;17627:44:0;13641:341:1;17627:44:0;17705:3;-1:-1:-1;;;;;17690:18:0;:11;-1:-1:-1;;;;;17690:18:0;;:60;;;;-1:-1:-1;17729:21:0;;;;17690:60;:88;;;;;17771:7;17690:88;:119;;;;-1:-1:-1;17799:10:0;;;;;;;17798:11;17690:119;17686:182;;;17838:14;:12;:14::i;:::-;17889:39;17905:5;17912:3;17917:10;17889:15;:39::i;:::-;16687:1249;;;16563:1373;;;:::o;1634:191::-;1727:6;;;-1:-1:-1;;;;;1744:17:0;;;-1:-1:-1;;;;;;1744:17:0;;;;;;;1777:40;;1727:6;;;1744:17;1727:6;;1777:40;;1708:16;;1777:40;1697:128;1634:191;:::o;15905:650::-;-1:-1:-1;;;;;16044:18:0;;16020:7;16044:18;;;:11;:18;;;;;;;;;:38;;-1:-1:-1;;;;;;16066:16:0;;;;;;:11;:16;;;;;;;;16044:38;16040:85;;;-1:-1:-1;16106:7:0;16099:14;;16040:85;16135:16;16179:11;-1:-1:-1;;;;;16172:18:0;:3;-1:-1:-1;;;;;16172:18:0;;16168:175;;-1:-1:-1;16218:9:0;:22;16168:175;;;16271:11;-1:-1:-1;;;;;16262:20:0;:5;-1:-1:-1;;;;;16262:20:0;;16258:85;;-1:-1:-1;16310:8:0;:21;16258:85;16355:11;16385:12;;16381:134;;16443:3;16421:18;16431:8;16421:7;:18;:::i;:::-;16420:26;;;;:::i;:::-;16414:32;;16461:42;16477:5;16492:4;16499:3;16461:15;:42::i;:::-;16533:13;16543:3;16533:7;:13;:::i;:::-;16525:22;15905:650;-1:-1:-1;;;;;;15905:650:0:o;17940:926::-;17980:10;:17;;-1:-1:-1;;17980:17:0;;;;;18042:4;-1:-1:-1;5724:18:0;;;;;;;;;;;18004:44;;18060:9;18073:1;18060:14;18056:45;;18087:7;17940:926::o;18056:45::-;18135:4;5697:7;5724:18;;;;;;;;;;;18107:35;;:9;:35::i;:::-;18168:15;;18150:12;;-1:-1:-1;;;;;18168:15:0;18220:1;18196:23;:21;18168:15;18196:23;:::i;:::-;:25;;;;:::i;:::-;18168:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18253:17:0;;:56;;18149:77;;-1:-1:-1;18234:13:0;;-1:-1:-1;;;;;18253:17:0;;;;18283:21;;18234:13;18253:56;18234:13;18253:56;18283:21;18253:17;:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18233:76;;;18323:7;18318:268;;18429:15;;18414:54;;;-1:-1:-1;;;;;18429:15:0;;;8574:74:1;;18446:21:0;8679:2:1;8664:18;;8657:34;18414:54:0;;8547:18:1;18414:54:0;;;;;;;18318:268;;;18560:10;:18;;-1:-1:-1;;18560:18:0;;;18318:268;18597:8;18592:271;;18704:17;;18689:56;;;-1:-1:-1;;;;;18704:17:0;;;8574:74:1;;18723:21:0;8679:2:1;8664:18;;8657:34;18689:56:0;;8547:18:1;18689:56:0;;;;;;;17973:893;;;17940:926::o;18592:271::-;18837:10;:18;;-1:-1:-1;;18837:18:0;;;17973:893;;;17940:926::o;7385:677::-;-1:-1:-1;;;;;7516:18:0;;7508:68;;;;-1:-1:-1;;;7508:68:0;;14322:2:1;7508:68:0;;;14304:21:1;14361:2;14341:18;;;14334:30;14400:34;14380:18;;;14373:62;-1:-1:-1;;;14451:18:1;;;14444:35;14496:19;;7508:68:0;14120:401:1;7508:68:0;-1:-1:-1;;;;;7595:16:0;;7587:64;;;;-1:-1:-1;;;7587:64:0;;14728:2:1;7587:64:0;;;14710:21:1;14767:2;14747:18;;;14740:30;14806:34;14786:18;;;14779:62;-1:-1:-1;;;14857:18:1;;;14850:33;14900:19;;7587:64:0;14526:399:1;7587:64:0;-1:-1:-1;;;;;7737:15:0;;7715:19;7737:15;;;;;;;;;;;7771:21;;;;7763:72;;;;-1:-1:-1;;;7763:72:0;;15132:2:1;7763:72:0;;;15114:21:1;15171:2;15151:18;;;15144:30;15210:34;15190:18;;;15183:62;-1:-1:-1;;;15261:18:1;;;15254:36;15307:19;;7763:72:0;14930:402:1;7763:72:0;-1:-1:-1;;;;;7871:15:0;;;:9;:15;;;;;;;;;;;7889:20;;;7871:38;;7926:13;;;;;;;;;;:23;;;;;;7978:26;;2079:25:1;;;7926:13:0;;7978:26;;2052:18:1;7978:26:0;;;;;;;8017:37;17940:926;18874:447;18954:16;;;18968:1;18954:16;;;;;;;;18930:21;;18954:16;;;;;;;;;;-1:-1:-1;18954:16:0;18930:40;;18999:4;18981;18986:1;18981:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;18981:23:0;;;-1:-1:-1;;;;;18981:23:0;;;;;19025:13;-1:-1:-1;;;;;19025:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19015:4;19020:1;19015:7;;;;;;;;:::i;:::-;;;;;;:30;-1:-1:-1;;;;;19015:30:0;;;-1:-1:-1;;;;;19015:30:0;;;;;19056:56;19073:4;19088:13;19104:7;19056:8;:56::i;:::-;19123:190;;-1:-1:-1;;;19123:190:0;;-1:-1:-1;;;;;19123:13:0;:64;;;;:190;;19202:7;;19224:1;;19240:4;;19267;;19287:15;;19123:190;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:548:1;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:180::-;626:6;679:2;667:9;658:7;654:23;650:32;647:52;;;695:1;692;685:12;647:52;-1:-1:-1;718:23:1;;567:180;-1:-1:-1;567:180:1:o;752:154::-;-1:-1:-1;;;;;831:5:1;827:54;820:5;817:65;807:93;;896:1;893;886:12;911:315;979:6;987;1040:2;1028:9;1019:7;1015:23;1011:32;1008:52;;;1056:1;1053;1046:12;1008:52;1095:9;1082:23;1114:31;1139:5;1114:31;:::i;:::-;1164:5;1216:2;1201:18;;;;1188:32;;-1:-1:-1;;;911:315:1:o;1423:118::-;1509:5;1502:13;1495:21;1488:5;1485:32;1475:60;;1531:1;1528;1521:12;1546:382;1611:6;1619;1672:2;1660:9;1651:7;1647:23;1643:32;1640:52;;;1688:1;1685;1678:12;1640:52;1727:9;1714:23;1746:31;1771:5;1746:31;:::i;:::-;1796:5;-1:-1:-1;1853:2:1;1838:18;;1825:32;1866:30;1825:32;1866:30;:::i;:::-;1915:7;1905:17;;;1546:382;;;;;:::o;2115:247::-;2174:6;2227:2;2215:9;2206:7;2202:23;2198:32;2195:52;;;2243:1;2240;2233:12;2195:52;2282:9;2269:23;2301:31;2326:5;2301:31;:::i;2367:456::-;2444:6;2452;2460;2513:2;2501:9;2492:7;2488:23;2484:32;2481:52;;;2529:1;2526;2519:12;2481:52;2568:9;2555:23;2587:31;2612:5;2587:31;:::i;:::-;2637:5;-1:-1:-1;2694:2:1;2679:18;;2666:32;2707:33;2666:32;2707:33;:::i;:::-;2367:456;;2759:7;;-1:-1:-1;;;2813:2:1;2798:18;;;;2785:32;;2367:456::o;3496:388::-;3564:6;3572;3625:2;3613:9;3604:7;3600:23;3596:32;3593:52;;;3641:1;3638;3631:12;3593:52;3680:9;3667:23;3699:31;3724:5;3699:31;:::i;:::-;3749:5;-1:-1:-1;3806:2:1;3791:18;;3778:32;3819:33;3778:32;3819:33;:::i;3889:380::-;3968:1;3964:12;;;;4011;;;4032:61;;4086:4;4078:6;4074:17;4064:27;;4032:61;4139:2;4131:6;4128:14;4108:18;4105:38;4102:161;;4185:10;4180:3;4176:20;4173:1;4166:31;4220:4;4217:1;4210:15;4248:4;4245:1;4238:15;4102:161;;3889:380;;;:::o;5490:127::-;5551:10;5546:3;5542:20;5539:1;5532:31;5582:4;5579:1;5572:15;5606:4;5603:1;5596:15;5622:125;5687:9;;;5708:10;;;5705:36;;;5721:18;;:::i;7329:168::-;7402:9;;;7433;;7450:15;;;7444:22;;7430:37;7420:71;;7471:18;;:::i;7502:217::-;7542:1;7568;7558:132;;7612:10;7607:3;7603:20;7600:1;7593:31;7647:4;7644:1;7637:15;7675:4;7672:1;7665:15;7558:132;-1:-1:-1;7704:9:1;;7502:217::o;8211:184::-;8281:6;8334:2;8322:9;8313:7;8309:23;8305:32;8302:52;;;8350:1;8347;8340:12;8302:52;-1:-1:-1;8373:16:1;;8211:184;-1:-1:-1;8211:184:1:o;8702:245::-;8769:6;8822:2;8810:9;8801:7;8797:23;8793:32;8790:52;;;8838:1;8835;8828:12;8790:52;8870:9;8864:16;8889:28;8911:5;8889:28;:::i;13987:128::-;14054:9;;;14075:11;;;14072:37;;;14089:18;;:::i;15469:127::-;15530:10;15525:3;15521:20;15518:1;15511:31;15561:4;15558:1;15551:15;15585:4;15582:1;15575:15;15601:251;15671:6;15724:2;15712:9;15703:7;15699:23;15695:32;15692:52;;;15740:1;15737;15730:12;15692:52;15772:9;15766:16;15791:31;15816:5;15791:31;:::i;15857:1026::-;16119:4;16167:3;16156:9;16152:19;16198:6;16187:9;16180:25;16224:2;16262:6;16257:2;16246:9;16242:18;16235:34;16305:3;16300:2;16289:9;16285:18;16278:31;16329:6;16364;16358:13;16395:6;16387;16380:22;16433:3;16422:9;16418:19;16411:26;;16472:2;16464:6;16460:15;16446:29;;16493:1;16503:218;16517:6;16514:1;16511:13;16503:218;;;16582:13;;-1:-1:-1;;;;;16578:62:1;16566:75;;16696:15;;;;16661:12;;;;16539:1;16532:9;16503:218;;;-1:-1:-1;;;;;;;16777:55:1;;;;16772:2;16757:18;;16750:83;-1:-1:-1;;;16864:3:1;16849:19;16842:35;16738:3;15857:1026;-1:-1:-1;;;15857:1026:1:o

Swarm Source

ipfs://dbccd45422570ae8428eb82c80a4369a1129d7e6f011ac1da54c05887b8caaca

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.