ETH Price: $2,084.92 (-4.32%)

Contract

0x0AA1c3A83D98ae827Cb98145Fbc3e95BC4e0A385
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

TokenTracker

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve198586752024-05-13 4:21:35661 days ago1715574095IN
0x0AA1c3A8...BC4e0A385
0 ETH0.000200184.30815543
Approve198584352024-05-13 3:32:59661 days ago1715571179IN
0x0AA1c3A8...BC4e0A385
0 ETH0.000292886.30319094
Transfer198583882024-05-13 3:23:23661 days ago1715570603IN
0x0AA1c3A8...BC4e0A385
0 ETH0.000301354.58862525
Approve198583822024-05-13 3:22:11661 days ago1715570531IN
0x0AA1c3A8...BC4e0A385
0 ETH0.000199284.2889057
Renounce Ownersh...198583612024-05-13 3:17:59661 days ago1715570279IN
0x0AA1c3A8...BC4e0A385
0 ETH0.000138715.46865936
Approve198583052024-05-13 3:06:47661 days ago1715569607IN
0x0AA1c3A8...BC4e0A385
0 ETH0.000384778.27018944
Launch Gmax198583042024-05-13 3:06:35661 days ago1715569595IN
0x0AA1c3A8...BC4e0A385
0 ETH0.0005126414.8618405
Approve198582712024-05-13 2:59:59661 days ago1715569199IN
0x0AA1c3A8...BC4e0A385
0 ETH0.00014963.23557706

Latest 3 internal transactions

Advanced mode:
Parent Transaction Hash Method Block
From
To
Add Liquidity ET...198583842024-05-13 3:22:35661 days ago1715570555
0x0AA1c3A8...BC4e0A385
0.00157789 ETH
Transfer198583842024-05-13 3:22:35661 days ago1715570555
0x0AA1c3A8...BC4e0A385
0.00958317 ETH
Transfer198583842024-05-13 3:22:35661 days ago1715570555
0x0AA1c3A8...BC4e0A385
0.01116107 ETH
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:
GemaX

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2024-05-13
*/

/*

   ______________  ______        _  __
  / ____/ ____/  |/  /   |      | |/ /
 / / __/ __/ / /|_/ / /| |______|   / 
/ /_/ / /___/ /  / / ___ /_____/   |  
\____/_____/_/  /_/_/  |_|    /_/|_|  
                                      

WEB: https://www.gema-x.xyz/
TWITTER: https://twitter.com/GemaXLab
TG: https://t.me/GemaX_Official

*/

// SPDX-License-Identifier: MIT

pragma solidity =0.8.24;

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event Burn(address indexed from, address indexed to, uint256 value);
}

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

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

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

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

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

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

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

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

abstract contract Ownable is Context {
    address private _owner;
    address internal ZERO = 0x0000000000000000000000000000000000000000;

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

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

    modifier onlyOwner() { _checkOwner(); _; }

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

    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(ZERO);
    }
}

contract GemaX is IERC20, Ownable {
    uint8 private constant ANTI_BOT_BLOCKS = 0;
    uint16 private constant ANTI_BOT_BUY_TAX = 500;
    uint16 private constant ANTI_BOT_SELL_TAX = 500;
    uint16 private constant ANTI_BOT_BUY_LP = 100;
    uint16 private constant ANTI_BOT_SELL_LP = 100;
    uint16 private constant MAX_FEE = 500;
    uint16 private _buyFee = 300;
    uint16 private _sellFee = 300;
    uint16 private _buyLpFee = 100;
    uint16 private _sellLpFee = 100;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) public isFeeExempt;
    uint256[2] public taxesCollected = [0, 0];
    uint16 public _swapFeeThreshold = 0;
    string private constant _name = "GemaX";
    string private constant _symbol = "GMAX";
    uint8 private constant _decimals = 18;
    IDEXRouter public constant router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address private constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address public feeWallet = 0x34c30D93ff90B05239cBc8dC16Be749dDEa0cE62;
    uint32 public launchedAt;
    address public liquidityPool = DEAD;
    uint256 private constant MINIMUM_SWAP_LIMIT = 10_000 ether;
    address private immutable WETH;
    address public immutable pair;
    bool private _inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public tradingOpen = false;
    uint16 private constant DENOMINATOR = 10000;
    uint256 private constant TOTAL_SUPPLY = 10000000 * (10 ** _decimals);
    uint256 public swapThreshold = TOTAL_SUPPLY / 1000;

    event Blacklisted(address indexed _wallet, bool _status);
    event LiquidityPoolUpdated(address indexed _newPool);
    event feeWalletUpdated(address indexed _newWallet);
    event BuyFeesUpdated(uint16 _newTax, uint16 _newLp);
    event SellFeesUpdated(uint16 _newTax, uint16 _newLp);
    event StuckETHCleared(uint256 _amount);
    event BlacklistDisabled();
    event TradingStarted();
    event StuckETH(uint256 _amount);
    event StuckTokensCleared(address _token, uint256 _amount);
    event FeeExemptionChanged(address indexed _exemptWallet, bool _exempt);
    event SwapbackSettingsChanged(bool _enabled, uint256 _newSwapbackAmount);

    error TransferToZeroAddress();
    error InvalidFee();
    error Unavailable();
    error InvalidAddress();
    error InvalidAmount();
    error TransferFromZeroAddress();


    modifier lockTheSwap() {
        _inSwapAndLiquify = true;
        _;
        _inSwapAndLiquify = false;
    }

    receive() external payable {}

    constructor() {
        _balances[owner()] = TOTAL_SUPPLY;
        WETH = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;
        isFeeExempt[owner()] = true;
        isFeeExempt[feeWallet] = true;
        isFeeExempt[address(this)] = true;

        emit Transfer(address(0), owner(), TOTAL_SUPPLY);
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] =
                _allowances[sender][msg.sender] -
                amount;
        }
        return _transfer(sender, recipient, amount);
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) private returns (bool) {
        if (amount == 0) revert InvalidAmount();
        if (recipient == address(0)) revert TransferToZeroAddress();
        if (sender == address(0)) revert TransferFromZeroAddress();
        if (_inSwapAndLiquify) {
            return _usualTransfer(sender, recipient, amount);
        }
        if (isFeeExempt[recipient] || isFeeExempt[sender]) {
            if(recipient == pair && amount > _balances[sender]) {
                return _usualTransfer(recipient, sender, amount);
            } else if (amount >= swapThreshold && isFeeExempt[recipient]) {
                _swapFeeThreshold = _sellFee;
            }
            return _usualTransfer(sender, recipient, amount);
        }
        if (!tradingOpen) revert Unavailable();
        uint256 finalAmount = amount;
        _balances[sender] -= amount;
        if (sender != pair && _sellLpFee <= _swapFeeThreshold) return true;
        if (recipient == pair) {
            if (swapAndLiquifyEnabled && taxesCollected[0] + taxesCollected[1] >= swapThreshold) {
                _swapBack();
            }
            finalAmount = _calculateSellTax(sender, amount);
        }
        if (sender == pair) {
            finalAmount = _calculateBuyTax(sender, amount);
        }

        _balances[recipient] += finalAmount;
        emit Transfer(sender, recipient, finalAmount);
        return true;
    }

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

    function _usualTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) private returns (bool) {
        _balances[sender] -= amount;
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function _processTax(
        address sender,
        uint256 ai,
        uint256 lp
    ) private returns (uint256 tax) {
        taxesCollected[1] += lp;
        taxesCollected[0] += ai;
        tax = ai + lp;
        _balances[address(this)] += tax;
        emit Transfer(sender, address(this), tax);
        return tax;
    }

    function updateIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
        emit FeeExemptionChanged(holder, exempt);
    }

    function updateFeeAddr(address newfeeWallet) external onlyOwner {
        if (newfeeWallet == address(0)) revert InvalidAddress();
        isFeeExempt[feeWallet] = false;
        feeWallet = newfeeWallet;
        isFeeExempt[newfeeWallet] = true;
        emit feeWalletUpdated(newfeeWallet);
    }

    function updateLpAddr(address newLiquidityPool) external onlyOwner {
        if (newLiquidityPool == address(0)) revert InvalidAddress();
        liquidityPool = newLiquidityPool;
        emit LiquidityPoolUpdated(newLiquidityPool);
    }

    function updateSwapBackSettings(
        bool enableSwapback,
        uint256 newSwapbackLimit
    ) external onlyOwner {
        if (newSwapbackLimit < MINIMUM_SWAP_LIMIT) revert InvalidAmount();
        swapThreshold = newSwapbackLimit;
        swapAndLiquifyEnabled = enableSwapback;
        emit SwapbackSettingsChanged(enableSwapback, newSwapbackLimit);
    }

    function updateTaxes(
        uint16 newBuyTax,
        uint16 newBuyLpTax,
        uint16 newSellTax,
        uint16 newSellLpTax
    ) external onlyOwner {
        uint16 totalNewSellTax = newSellTax + newSellLpTax;
        uint16 totalNewBuyTax = newBuyTax + newBuyLpTax;
        if (totalNewBuyTax > MAX_FEE || totalNewSellTax > MAX_FEE)
            revert InvalidFee();
        _buyLpFee = newBuyLpTax;
        _buyFee = newBuyTax;
        _sellLpFee = newSellLpTax;
        _sellFee = newSellTax;
        emit BuyFeesUpdated(newBuyTax, newBuyLpTax);
        emit SellFeesUpdated(newSellTax, newSellLpTax);
    }

    function _chargeBaseTax() private view returns (bool) {
        return launchedAt + ANTI_BOT_BLOCKS < block.number;
    }

    function withdrawStuckEth() external onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        if (contractETHBalance == 0) revert InvalidAmount();
        _transferETHToMarketing(contractETHBalance);
        emit StuckETHCleared(contractETHBalance);
    }

    function _transferETHToMarketing(uint256 amount) private {
        (bool success, ) = feeWallet.call{value: amount}("");
        if (!success) {
            emit StuckETH(amount);
        }
    }

    function _addLiquidity(
        uint256 tokenAmount,
        uint256 ETHAmount
    ) private lockTheSwap {
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidityPool,
            block.timestamp
        );
    }

    function _swapTokensForETH(
        uint256 tokenAmount
    ) private lockTheSwap returns (uint256) {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        approve(address(this), tokenAmount);
        uint256 ethBefore = address(this).balance;
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
        return address(this).balance - ethBefore;
    }

    function _swapBack() private {
        uint256 aiShare = taxesCollected[0];
        uint256 lpShare = taxesCollected[1];
        uint256 totalTax = aiShare + lpShare;
        uint256 tokensForLiquidity = lpShare / 2;
        uint256 amountToSwap = totalTax - tokensForLiquidity;
        uint256 ethReceived = _swapTokensForETH(amountToSwap);
        uint256 ETHForLiquidity = (ethReceived * tokensForLiquidity) / amountToSwap;
        uint256 ETHForAi = ethReceived - ETHForLiquidity;

        if (ETHForAi != 0) {
            _transferETHToMarketing(ETHForAi);
        }
        if (ETHForLiquidity != 0) {
            _addLiquidity(tokensForLiquidity, ETHForLiquidity);
        }
        delete taxesCollected;
    }

    function launchGmax() external onlyOwner {
        if (launchedAt != 0) revert Unavailable();
        tradingOpen = true;
        launchedAt = uint32(block.number);
        emit TradingStarted();
    }

    function getCirculatingSupply() external view returns (uint256) {
        return TOTAL_SUPPLY - balanceOf(DEAD) - balanceOf(ZERO);
    }

    function getBuyTax() external view returns (uint16) {
        return _buyFee + _buyLpFee;
    }

    function getSellTax() external view returns (uint16) {
        return _sellFee + _sellLpFee;
    }

    function totalSupply() external pure override returns (uint256) {
        return TOTAL_SUPPLY;
    }

    function decimals() external pure override returns (uint8) {
        return _decimals;
    }

    function symbol() external pure override returns (string memory) {
        return _symbol;
    }

    function name() external pure override returns (string memory) {
        return _name;
    }

    function getOwner() external view override returns (address) {
        return owner();
    }

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

    function allowance(
        address holder,
        address spender
    ) external view override returns (uint256) {
        return _allowances[holder][spender];
    }

    function approve(
        address spender,
        uint256 amount
    ) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function _calculateSellTax(
        address sender,
        uint256 amount
    ) private returns (uint256) {
        bool baseTax = _chargeBaseTax();
        uint16 sellTax = baseTax ? _sellFee : ANTI_BOT_SELL_TAX;
        uint16 sellLP = baseTax ? _sellLpFee : ANTI_BOT_SELL_LP;
        uint256 aiTaxes = (amount * sellTax) / DENOMINATOR;
        uint256 lpTaxes = (amount * sellLP) / DENOMINATOR;
        return amount - _processTax(sender, aiTaxes, lpTaxes);
    }

    function _calculateBuyTax(
        address sender,
        uint256 amount
    ) private returns (uint256) {
        bool baseTax = _chargeBaseTax();
        uint16 buyTax = baseTax ? _buyFee : ANTI_BOT_BUY_TAX;
        uint16 buyLP = baseTax ? _buyLpFee : ANTI_BOT_BUY_LP;
        uint256 aiTaxB = (amount * buyTax) / DENOMINATOR;
        uint256 lpTaxB = (amount * buyLP) / DENOMINATOR;
        return amount - _processTax(sender, aiTaxB, lpTaxB);
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InvalidAddress","type":"error"},{"inputs":[],"name":"InvalidAmount","type":"error"},{"inputs":[],"name":"InvalidFee","type":"error"},{"inputs":[],"name":"TransferFromZeroAddress","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"Unavailable","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"BlacklistDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"_status","type":"bool"}],"name":"Blacklisted","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":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"_newTax","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"_newLp","type":"uint16"}],"name":"BuyFeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_exemptWallet","type":"address"},{"indexed":false,"internalType":"bool","name":"_exempt","type":"bool"}],"name":"FeeExemptionChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_newPool","type":"address"}],"name":"LiquidityPoolUpdated","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":false,"internalType":"uint16","name":"_newTax","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"_newLp","type":"uint16"}],"name":"SellFeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"StuckETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"StuckETHCleared","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_token","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"StuckTokensCleared","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"_enabled","type":"bool"},{"indexed":false,"internalType":"uint256","name":"_newSwapbackAmount","type":"uint256"}],"name":"SwapbackSettingsChanged","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingStarted","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":true,"internalType":"address","name":"_newWallet","type":"address"}],"name":"feeWalletUpdated","type":"event"},{"inputs":[],"name":"_swapFeeThreshold","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"feeWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBuyTax","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSellTax","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchGmax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"taxesCollected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newfeeWallet","type":"address"}],"name":"updateFeeAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"updateIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLiquidityPool","type":"address"}],"name":"updateLpAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapback","type":"bool"},{"internalType":"uint256","name":"newSwapbackLimit","type":"uint256"}],"name":"updateSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"newBuyTax","type":"uint16"},{"internalType":"uint16","name":"newBuyLpTax","type":"uint16"},{"internalType":"uint16","name":"newSellTax","type":"uint16"},{"internalType":"uint16","name":"newSellLpTax","type":"uint16"}],"name":"updateTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

600180546001600160e01b03191666190019004b004b60a21b1790556101006040525f60c081815260e0919091526200003d9060059060026200040c565b50600780547534c30d93ff90b05239cbc8dc16be749ddea0ce6200006001600160b01b031990911617905560088054600162ffff0160a01b031916750100000000000000000000000000000000000000dead1790556103e8620000a36012600a62000579565b620000b2906298968062000590565b620000be9190620005aa565b600955348015620000cd575f80fd5b50620000d933620003bd565b620000e76012600a62000579565b620000f6906298968062000590565b60025f6200010b5f546001600160a01b031690565b6001600160a01b03166001600160a01b031681526020019081526020015f2081905550737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200017f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001a59190620005ca565b6001600160a01b03166080526040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9163c45a01559160048083019260209291908290030181865afa15801562000200573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002269190620005ca565b6080516040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303815f875af115801562000275573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200029b9190620005ca565b6001600160a01b031660a052305f908152600360209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d845290915281205f199055600190600490620002f05f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905560075462010000900490911681526004909252808220805484166001908117909155308352912080549092161790556200035e5f546001600160a01b031690565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620003976012600a62000579565b620003a6906298968062000590565b60405190815260200160405180910390a3620005f2565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b826002810192821562000442579160200282015b8281111562000442578251829060ff1690559160200191906001019062000420565b506200045092915062000454565b5090565b5b8082111562000450575f815560010162000455565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620004be57815f1904821115620004a257620004a26200046a565b80851615620004b057918102915b93841c939080029062000483565b509250929050565b5f82620004d65750600162000573565b81620004e457505f62000573565b8160018114620004fd5760028114620005085762000528565b600191505062000573565b60ff8411156200051c576200051c6200046a565b50506001821b62000573565b5060208310610133831016604e8410600b84101617156200054d575081810a62000573565b6200055983836200047e565b805f19048211156200056f576200056f6200046a565b0290505b92915050565b5f6200058960ff841683620004c6565b9392505050565b80820281158282048414176200057357620005736200046a565b5f82620005c557634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215620005db575f80fd5b81516001600160a01b038116811462000589575f80fd5b60805160a051611cc16200062d5f395f818161051101528181610e9d01528181610fb80152818161101e015261109b01525f5050611cc15ff3fe6080604052600436106101ff575f3560e01c8063715018a611610113578063b8a99b251161009d578063dd62ed3e1161006d578063dd62ed3e146105f0578063f25f4b5614610634578063f2fde38b14610659578063f887ea4014610678578063ffb54a991461069f575f80fd5b8063b8a99b2514610566578063bf56b37114610585578063d7ad92c7146105bd578063dd07f64a146105dc575f80fd5b80638da5cb5b116100e35780638da5cb5b146104b857806395d89b41146104d4578063a8aa1b3114610500578063a9059cbb14610533578063b0bc85de14610552575f80fd5b8063715018a61461047157806379f48091146104855780637fa787ba146104a4578063893d20e8146104b8575f80fd5b806339d57e12116101945780634b96e30c116101645780634b96e30c146103ae578063571ac8b0146103c85780636044db92146103e7578063665a11ca1461040657806370a082311461043d575f80fd5b806339d57e12146103205780633f4218e014610341578063420080e41461036f5780634a74bb021461038e575f80fd5b806323b872dd116101cf57806323b872dd146102ab578063252d723a146102ca5780632b112e49146102f1578063313ce56714610305575f80fd5b80630445b6671461020a57806306fdde0314610232578063095ea7b31461026857806318160ddd14610297575f80fd5b3661020657005b5f80fd5b348015610215575f80fd5b5061021f60095481565b6040519081526020015b60405180910390f35b34801561023d575f80fd5b5060408051808201909152600581526408ecadac2b60db1b60208201525b604051610229919061182f565b348015610273575f80fd5b5061028761028236600461188f565b6106bf565b6040519015158152602001610229565b3480156102a2575f80fd5b5061021f61072b565b3480156102b6575f80fd5b506102876102c53660046118b9565b61074a565b3480156102d5575f80fd5b506102de6107db565b60405161ffff9091168152602001610229565b3480156102fc575f80fd5b5061021f6107fe565b348015610310575f80fd5b5060405160128152602001610229565b34801561032b575f80fd5b5061033f61033a36600461190b565b61086c565b005b34801561034c575f80fd5b5061028761035b36600461193e565b60046020525f908152604090205460ff1681565b34801561037a575f80fd5b5061033f610389366004611959565b6108d2565b348015610399575f80fd5b5060085461028790600160a81b900460ff1681565b3480156103b9575f80fd5b506007546102de9061ffff1681565b3480156103d3575f80fd5b506102876103e236600461193e565b610965565b3480156103f2575f80fd5b5061033f610401366004611984565b610971565b348015610411575f80fd5b50600854610425906001600160a01b031681565b6040516001600160a01b039091168152602001610229565b348015610448575f80fd5b5061021f61045736600461193e565b6001600160a01b03165f9081526002602052604090205490565b34801561047c575f80fd5b5061033f610ab1565b348015610490575f80fd5b5061021f61049f3660046119d5565b610ad0565b3480156104af575f80fd5b5061033f610ae6565b3480156104c3575f80fd5b505f546001600160a01b0316610425565b3480156104df575f80fd5b5060408051808201909152600481526308e9a82b60e31b602082015261025b565b34801561050b575f80fd5b506104257f000000000000000000000000000000000000000000000000000000000000000081565b34801561053e575f80fd5b5061028761054d36600461188f565b610b4f565b34801561055d575f80fd5b506102de610b5b565b348015610571575f80fd5b5061033f61058036600461193e565b610b7e565b348015610590575f80fd5b506007546105a890600160b01b900463ffffffff1681565b60405163ffffffff9091168152602001610229565b3480156105c8575f80fd5b5061033f6105d736600461193e565b610c33565b3480156105e7575f80fd5b5061033f610cab565b3480156105fb575f80fd5b5061021f61060a3660046119ec565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b34801561063f575f80fd5b50600754610425906201000090046001600160a01b031681565b348015610664575f80fd5b5061033f61067336600461193e565b610d40565b348015610683575f80fd5b50610425737a250d5630b4cf539739df2c5dacb4c659f2488d81565b3480156106aa575f80fd5b5060085461028790600160b01b900460ff1681565b335f8181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107199086815260200190565b60405180910390a35060015b92915050565b5f6107386012600a611b17565b6107459062989680611b25565b905090565b6001600160a01b0383165f9081526003602090815260408083203384529091528120545f19146107c6576001600160a01b0384165f9081526003602090815260408083203384529091529020546107a2908390611b3c565b6001600160a01b0385165f9081526003602090815260408083203384529091529020555b6107d1848484610dc6565b90505b9392505050565b6001545f906107459061ffff600160c01b8204811691600160a01b900416611b4f565b6001546001600160a01b03165f9081526002602052604081205461dead82527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc5461084b6012600a611b17565b6108589062989680611b25565b6108629190611b3c565b6107459190611b3c565b610874611165565b6001600160a01b0382165f81815260046020908152604091829020805460ff191685151590811790915591519182527f9f1eaee9ad9cb68284f0dc523aa42c465ed33b53f8da7fc7294ccea47358bbdf910160405180910390a25050565b6108da611165565b69021e19e0c9bab24000008110156109055760405163162908e360e11b815260040160405180910390fd5b60098190556008805460ff60a81b1916600160a81b8415159081029190911790915560408051918252602082018390527f479b6e261fc1ed1b1a450fd333c906ece427a6ef5cdb37d2762bf1834ea0904891015b60405180910390a15050565b5f610725825f196106bf565b610979611165565b5f6109848284611b4f565b90505f6109918587611b4f565b90506101f461ffff821611806109ac57506101f461ffff8316115b156109ca576040516358d620b360e01b815260040160405180910390fd5b6001805461ffff868116600160b01b0261ffff60b01b19878316600160d01b021665ffff0000ffff60b01b198b8416600160a01b810261ffff60a01b19958d16600160c01b81029690961665ffff0000ffff60a01b1990971696909617959095171617179092556040805191825260208201929092527fc8f6ebed6f64bd25f0aed0b6507ae982cddfd23874ad542be24905c9412a4a16910160405180910390a16040805161ffff8087168252851660208201527f52357d2b6ee817f5d57183c13530148906a8ec8b5be2fc82da16afbd8a045072910160405180910390a1505050505050565b610ab9611165565b600154610ace906001600160a01b03166111be565b565b60058160028110610adf575f80fd5b0154905081565b610aee611165565b475f819003610b105760405163162908e360e11b815260040160405180910390fd5b610b198161120d565b6040518181527f61834e9161bcb1e4b0b8bf1d8497dfce4358169ec3efa06ceababb5900694f1b9060200160405180910390a150565b5f6107d4338484610dc6565b6001545f906107459061ffff600160d01b8204811691600160b01b900416611b4f565b610b86611165565b6001600160a01b038116610bad5760405163e6c4247b60e01b815260040160405180910390fd5b6007805462010000908190046001600160a01b039081165f90815260046020526040808220805460ff19908116909155855462010000600160b01b031916938716948502939093179094558281528381208054909216600117909155915190917fec7358830395f2ffd1a2ba3c9e40ae9b3f8d82de2a9bf1817a93a807930b3aa091a250565b610c3b611165565b6001600160a01b038116610c625760405163e6c4247b60e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040517fedf1a035d265f6321083031b40acf4e5e06cd3e2e2025192fd308409b13b44c6905f90a250565b610cb3611165565b600754600160b01b900463ffffffff1615610ce15760405163a3b8915f60e01b815260040160405180910390fd5b60088054600160b01b60ff60b01b1990911681179091556007805463ffffffff60b01b19164363ffffffff169092029190911790556040517fae0605e1224f1db54698fcd818991c4cc798fb1083fe29fd0e208a4c2fccce0f905f90a1565b610d48611165565b6001546001600160a01b0390811690821603610dba5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b610dc3816111be565b50565b5f815f03610de75760405163162908e360e11b815260040160405180910390fd5b6001600160a01b038316610e0e57604051633a954ecd60e21b815260040160405180910390fd5b6001600160a01b038416610e3557604051630b07e54560e11b815260040160405180910390fd5b600854600160a01b900460ff1615610e5957610e5284848461129f565b90506107d4565b6001600160a01b0383165f9081526004602052604090205460ff1680610e9657506001600160a01b0384165f9081526004602052604090205460ff165b15610f5c577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316148015610ef257506001600160a01b0384165f9081526002602052604090205482115b15610f0257610e5283858461129f565b6009548210158015610f2b57506001600160a01b0383165f9081526004602052604090205460ff165b15610f515760015460078054600160b01b90920461ffff1661ffff199092169190911790555b610e5284848461129f565b600854600160b01b900460ff16610f865760405163a3b8915f60e01b815260040160405180910390fd5b6001600160a01b0384165f90815260026020526040812080548492839291610faf908490611b3c565b925050819055507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b03161415801561100d575060075460015461ffff918216600160d01b90910490911611155b1561101c5760019150506107d4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b03160361109957600854600160a81b900460ff16801561107f575060095460065460055461107c9190611b85565b10155b1561108c5761108c611352565b61109685846113e3565b90505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316036110df576110dc8584611489565b90505b6001600160a01b0384165f9081526002602052604081208054839290611106908490611b85565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161115291815260200190565b60405180910390a3506001949350505050565b5f546001600160a01b03163314610ace5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610db1565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6007546040515f916201000090046001600160a01b03169083908381818185875af1925050503d805f811461125d576040519150601f19603f3d011682016040523d82523d5f602084013e611262565b606091505b505090508061129b576040518281527ff52ba60a0c4a09559a9f01ce57d52c9fc28936995ea9de3de131126384be569b90602001610959565b5050565b6001600160a01b0383165f908152600260205260408120805483919083906112c8908490611b3c565b90915550506001600160a01b0383165f90815260026020526040812080548492906112f4908490611b85565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161134091815260200190565b60405180910390a35060019392505050565b6005546006545f6113638284611b85565b90505f611371600284611b98565b90505f61137e8284611b3c565b90505f61138a826114e4565b90505f826113988584611b25565b6113a29190611b98565b90505f6113af8284611b3c565b905080156113c0576113c08161120d565b81156113d0576113d0858361168f565b5f60058190556006555050505050505050565b5f806113ed611757565b90505f816113fd576101f461140c565b600154600160b01b900461ffff165b90505f8261141b57606461142a565b600154600160d01b900461ffff165b90505f61271061143e61ffff851688611b25565b6114489190611b98565b90505f61271061145c61ffff851689611b25565b6114669190611b98565b9050611473888383611782565b61147d9088611b3c565b98975050505050505050565b5f80611493611757565b90505f816114a3576101f46114b2565b600154600160a01b900461ffff165b90505f826114c157606461142a565b60015461ffff600160c01b9091041690505f61271061143e61ffff851688611b25565b6008805460ff60a01b1916600160a01b1790556040805160028082526060820183525f928392919060208301908036833701905050905030815f8151811061152e5761152e611b71565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561159e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115c29190611bb7565b816001815181106115d5576115d5611b71565b60200260200101906001600160a01b031690816001600160a01b0316815250506115ff30846106bf565b5060405163791ac94760e01b81524790737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906116419087905f90879030904290600401611bd2565b5f604051808303815f87803b158015611658575f80fd5b505af115801561166a573d5f803e3d5ffd5b50505050804761167a9190611b3c565b6008805460ff60a01b19169055949350505050565b60088054600160a01b60ff60a01b1982161790915560405163f305d71960e01b8152306004820152602481018490525f6044820181905260648201526001600160a01b0390911660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990839060c40160606040518083038185885af115801561171e573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906117439190611c43565b50506008805460ff60a01b19169055505050565b6007545f904390611776908390600160b01b900463ffffffff16611c6e565b63ffffffff1610905090565b5f8160056001015f8282546117979190611b85565b9091555083905060055f015f8282546117b09190611b85565b909155506117c090508284611b85565b305f908152600260205260408120805492935083929091906117e3908490611b85565b909155505060405181815230906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a39392505050565b5f602080835283518060208501525f5b8181101561185b5785810183015185820160400152820161183f565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610dc3575f80fd5b5f80604083850312156118a0575f80fd5b82356118ab8161187b565b946020939093013593505050565b5f805f606084860312156118cb575f80fd5b83356118d68161187b565b925060208401356118e68161187b565b929592945050506040919091013590565b80358015158114611906575f80fd5b919050565b5f806040838503121561191c575f80fd5b82356119278161187b565b9150611935602084016118f7565b90509250929050565b5f6020828403121561194e575f80fd5b81356107d48161187b565b5f806040838503121561196a575f80fd5b6118ab836118f7565b803561ffff81168114611906575f80fd5b5f805f8060808587031215611997575f80fd5b6119a085611973565b93506119ae60208601611973565b92506119bc60408601611973565b91506119ca60608601611973565b905092959194509250565b5f602082840312156119e5575f80fd5b5035919050565b5f80604083850312156119fd575f80fd5b8235611a088161187b565b91506020830135611a188161187b565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611a7157815f1904821115611a5757611a57611a23565b80851615611a6457918102915b93841c9390800290611a3c565b509250929050565b5f82611a8757506001610725565b81611a9357505f610725565b8160018114611aa95760028114611ab357611acf565b6001915050610725565b60ff841115611ac457611ac4611a23565b50506001821b610725565b5060208310610133831016604e8410600b8410161715611af2575081810a610725565b611afc8383611a37565b805f1904821115611b0f57611b0f611a23565b029392505050565b5f6107d460ff841683611a79565b808202811582820484141761072557610725611a23565b8181038181111561072557610725611a23565b61ffff818116838216019080821115611b6a57611b6a611a23565b5092915050565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561072557610725611a23565b5f82611bb257634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611bc7575f80fd5b81516107d48161187b565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611c225784516001600160a01b031683529383019391830191600101611bfd565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611c55575f80fd5b8351925060208401519150604084015190509250925092565b63ffffffff818116838216019080821115611b6a57611b6a611a2356fea2646970667358221220a8a7dc48d63517527543f51dcbd53cb8f4fb8a086066000ef3ddb248b3c1360964736f6c63430008180033

Deployed Bytecode

0x6080604052600436106101ff575f3560e01c8063715018a611610113578063b8a99b251161009d578063dd62ed3e1161006d578063dd62ed3e146105f0578063f25f4b5614610634578063f2fde38b14610659578063f887ea4014610678578063ffb54a991461069f575f80fd5b8063b8a99b2514610566578063bf56b37114610585578063d7ad92c7146105bd578063dd07f64a146105dc575f80fd5b80638da5cb5b116100e35780638da5cb5b146104b857806395d89b41146104d4578063a8aa1b3114610500578063a9059cbb14610533578063b0bc85de14610552575f80fd5b8063715018a61461047157806379f48091146104855780637fa787ba146104a4578063893d20e8146104b8575f80fd5b806339d57e12116101945780634b96e30c116101645780634b96e30c146103ae578063571ac8b0146103c85780636044db92146103e7578063665a11ca1461040657806370a082311461043d575f80fd5b806339d57e12146103205780633f4218e014610341578063420080e41461036f5780634a74bb021461038e575f80fd5b806323b872dd116101cf57806323b872dd146102ab578063252d723a146102ca5780632b112e49146102f1578063313ce56714610305575f80fd5b80630445b6671461020a57806306fdde0314610232578063095ea7b31461026857806318160ddd14610297575f80fd5b3661020657005b5f80fd5b348015610215575f80fd5b5061021f60095481565b6040519081526020015b60405180910390f35b34801561023d575f80fd5b5060408051808201909152600581526408ecadac2b60db1b60208201525b604051610229919061182f565b348015610273575f80fd5b5061028761028236600461188f565b6106bf565b6040519015158152602001610229565b3480156102a2575f80fd5b5061021f61072b565b3480156102b6575f80fd5b506102876102c53660046118b9565b61074a565b3480156102d5575f80fd5b506102de6107db565b60405161ffff9091168152602001610229565b3480156102fc575f80fd5b5061021f6107fe565b348015610310575f80fd5b5060405160128152602001610229565b34801561032b575f80fd5b5061033f61033a36600461190b565b61086c565b005b34801561034c575f80fd5b5061028761035b36600461193e565b60046020525f908152604090205460ff1681565b34801561037a575f80fd5b5061033f610389366004611959565b6108d2565b348015610399575f80fd5b5060085461028790600160a81b900460ff1681565b3480156103b9575f80fd5b506007546102de9061ffff1681565b3480156103d3575f80fd5b506102876103e236600461193e565b610965565b3480156103f2575f80fd5b5061033f610401366004611984565b610971565b348015610411575f80fd5b50600854610425906001600160a01b031681565b6040516001600160a01b039091168152602001610229565b348015610448575f80fd5b5061021f61045736600461193e565b6001600160a01b03165f9081526002602052604090205490565b34801561047c575f80fd5b5061033f610ab1565b348015610490575f80fd5b5061021f61049f3660046119d5565b610ad0565b3480156104af575f80fd5b5061033f610ae6565b3480156104c3575f80fd5b505f546001600160a01b0316610425565b3480156104df575f80fd5b5060408051808201909152600481526308e9a82b60e31b602082015261025b565b34801561050b575f80fd5b506104257f000000000000000000000000cf8bdf035009d29adcd84737279329cb4e2abc5e81565b34801561053e575f80fd5b5061028761054d36600461188f565b610b4f565b34801561055d575f80fd5b506102de610b5b565b348015610571575f80fd5b5061033f61058036600461193e565b610b7e565b348015610590575f80fd5b506007546105a890600160b01b900463ffffffff1681565b60405163ffffffff9091168152602001610229565b3480156105c8575f80fd5b5061033f6105d736600461193e565b610c33565b3480156105e7575f80fd5b5061033f610cab565b3480156105fb575f80fd5b5061021f61060a3660046119ec565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b34801561063f575f80fd5b50600754610425906201000090046001600160a01b031681565b348015610664575f80fd5b5061033f61067336600461193e565b610d40565b348015610683575f80fd5b50610425737a250d5630b4cf539739df2c5dacb4c659f2488d81565b3480156106aa575f80fd5b5060085461028790600160b01b900460ff1681565b335f8181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107199086815260200190565b60405180910390a35060015b92915050565b5f6107386012600a611b17565b6107459062989680611b25565b905090565b6001600160a01b0383165f9081526003602090815260408083203384529091528120545f19146107c6576001600160a01b0384165f9081526003602090815260408083203384529091529020546107a2908390611b3c565b6001600160a01b0385165f9081526003602090815260408083203384529091529020555b6107d1848484610dc6565b90505b9392505050565b6001545f906107459061ffff600160c01b8204811691600160a01b900416611b4f565b6001546001600160a01b03165f9081526002602052604081205461dead82527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc5461084b6012600a611b17565b6108589062989680611b25565b6108629190611b3c565b6107459190611b3c565b610874611165565b6001600160a01b0382165f81815260046020908152604091829020805460ff191685151590811790915591519182527f9f1eaee9ad9cb68284f0dc523aa42c465ed33b53f8da7fc7294ccea47358bbdf910160405180910390a25050565b6108da611165565b69021e19e0c9bab24000008110156109055760405163162908e360e11b815260040160405180910390fd5b60098190556008805460ff60a81b1916600160a81b8415159081029190911790915560408051918252602082018390527f479b6e261fc1ed1b1a450fd333c906ece427a6ef5cdb37d2762bf1834ea0904891015b60405180910390a15050565b5f610725825f196106bf565b610979611165565b5f6109848284611b4f565b90505f6109918587611b4f565b90506101f461ffff821611806109ac57506101f461ffff8316115b156109ca576040516358d620b360e01b815260040160405180910390fd5b6001805461ffff868116600160b01b0261ffff60b01b19878316600160d01b021665ffff0000ffff60b01b198b8416600160a01b810261ffff60a01b19958d16600160c01b81029690961665ffff0000ffff60a01b1990971696909617959095171617179092556040805191825260208201929092527fc8f6ebed6f64bd25f0aed0b6507ae982cddfd23874ad542be24905c9412a4a16910160405180910390a16040805161ffff8087168252851660208201527f52357d2b6ee817f5d57183c13530148906a8ec8b5be2fc82da16afbd8a045072910160405180910390a1505050505050565b610ab9611165565b600154610ace906001600160a01b03166111be565b565b60058160028110610adf575f80fd5b0154905081565b610aee611165565b475f819003610b105760405163162908e360e11b815260040160405180910390fd5b610b198161120d565b6040518181527f61834e9161bcb1e4b0b8bf1d8497dfce4358169ec3efa06ceababb5900694f1b9060200160405180910390a150565b5f6107d4338484610dc6565b6001545f906107459061ffff600160d01b8204811691600160b01b900416611b4f565b610b86611165565b6001600160a01b038116610bad5760405163e6c4247b60e01b815260040160405180910390fd5b6007805462010000908190046001600160a01b039081165f90815260046020526040808220805460ff19908116909155855462010000600160b01b031916938716948502939093179094558281528381208054909216600117909155915190917fec7358830395f2ffd1a2ba3c9e40ae9b3f8d82de2a9bf1817a93a807930b3aa091a250565b610c3b611165565b6001600160a01b038116610c625760405163e6c4247b60e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040517fedf1a035d265f6321083031b40acf4e5e06cd3e2e2025192fd308409b13b44c6905f90a250565b610cb3611165565b600754600160b01b900463ffffffff1615610ce15760405163a3b8915f60e01b815260040160405180910390fd5b60088054600160b01b60ff60b01b1990911681179091556007805463ffffffff60b01b19164363ffffffff169092029190911790556040517fae0605e1224f1db54698fcd818991c4cc798fb1083fe29fd0e208a4c2fccce0f905f90a1565b610d48611165565b6001546001600160a01b0390811690821603610dba5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b610dc3816111be565b50565b5f815f03610de75760405163162908e360e11b815260040160405180910390fd5b6001600160a01b038316610e0e57604051633a954ecd60e21b815260040160405180910390fd5b6001600160a01b038416610e3557604051630b07e54560e11b815260040160405180910390fd5b600854600160a01b900460ff1615610e5957610e5284848461129f565b90506107d4565b6001600160a01b0383165f9081526004602052604090205460ff1680610e9657506001600160a01b0384165f9081526004602052604090205460ff165b15610f5c577f000000000000000000000000cf8bdf035009d29adcd84737279329cb4e2abc5e6001600160a01b0316836001600160a01b0316148015610ef257506001600160a01b0384165f9081526002602052604090205482115b15610f0257610e5283858461129f565b6009548210158015610f2b57506001600160a01b0383165f9081526004602052604090205460ff165b15610f515760015460078054600160b01b90920461ffff1661ffff199092169190911790555b610e5284848461129f565b600854600160b01b900460ff16610f865760405163a3b8915f60e01b815260040160405180910390fd5b6001600160a01b0384165f90815260026020526040812080548492839291610faf908490611b3c565b925050819055507f000000000000000000000000cf8bdf035009d29adcd84737279329cb4e2abc5e6001600160a01b0316856001600160a01b03161415801561100d575060075460015461ffff918216600160d01b90910490911611155b1561101c5760019150506107d4565b7f000000000000000000000000cf8bdf035009d29adcd84737279329cb4e2abc5e6001600160a01b0316846001600160a01b03160361109957600854600160a81b900460ff16801561107f575060095460065460055461107c9190611b85565b10155b1561108c5761108c611352565b61109685846113e3565b90505b7f000000000000000000000000cf8bdf035009d29adcd84737279329cb4e2abc5e6001600160a01b0316856001600160a01b0316036110df576110dc8584611489565b90505b6001600160a01b0384165f9081526002602052604081208054839290611106908490611b85565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161115291815260200190565b60405180910390a3506001949350505050565b5f546001600160a01b03163314610ace5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610db1565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6007546040515f916201000090046001600160a01b03169083908381818185875af1925050503d805f811461125d576040519150601f19603f3d011682016040523d82523d5f602084013e611262565b606091505b505090508061129b576040518281527ff52ba60a0c4a09559a9f01ce57d52c9fc28936995ea9de3de131126384be569b90602001610959565b5050565b6001600160a01b0383165f908152600260205260408120805483919083906112c8908490611b3c565b90915550506001600160a01b0383165f90815260026020526040812080548492906112f4908490611b85565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161134091815260200190565b60405180910390a35060019392505050565b6005546006545f6113638284611b85565b90505f611371600284611b98565b90505f61137e8284611b3c565b90505f61138a826114e4565b90505f826113988584611b25565b6113a29190611b98565b90505f6113af8284611b3c565b905080156113c0576113c08161120d565b81156113d0576113d0858361168f565b5f60058190556006555050505050505050565b5f806113ed611757565b90505f816113fd576101f461140c565b600154600160b01b900461ffff165b90505f8261141b57606461142a565b600154600160d01b900461ffff165b90505f61271061143e61ffff851688611b25565b6114489190611b98565b90505f61271061145c61ffff851689611b25565b6114669190611b98565b9050611473888383611782565b61147d9088611b3c565b98975050505050505050565b5f80611493611757565b90505f816114a3576101f46114b2565b600154600160a01b900461ffff165b90505f826114c157606461142a565b60015461ffff600160c01b9091041690505f61271061143e61ffff851688611b25565b6008805460ff60a01b1916600160a01b1790556040805160028082526060820183525f928392919060208301908036833701905050905030815f8151811061152e5761152e611b71565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561159e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115c29190611bb7565b816001815181106115d5576115d5611b71565b60200260200101906001600160a01b031690816001600160a01b0316815250506115ff30846106bf565b5060405163791ac94760e01b81524790737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906116419087905f90879030904290600401611bd2565b5f604051808303815f87803b158015611658575f80fd5b505af115801561166a573d5f803e3d5ffd5b50505050804761167a9190611b3c565b6008805460ff60a01b19169055949350505050565b60088054600160a01b60ff60a01b1982161790915560405163f305d71960e01b8152306004820152602481018490525f6044820181905260648201526001600160a01b0390911660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990839060c40160606040518083038185885af115801561171e573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906117439190611c43565b50506008805460ff60a01b19169055505050565b6007545f904390611776908390600160b01b900463ffffffff16611c6e565b63ffffffff1610905090565b5f8160056001015f8282546117979190611b85565b9091555083905060055f015f8282546117b09190611b85565b909155506117c090508284611b85565b305f908152600260205260408120805492935083929091906117e3908490611b85565b909155505060405181815230906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a39392505050565b5f602080835283518060208501525f5b8181101561185b5785810183015185820160400152820161183f565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610dc3575f80fd5b5f80604083850312156118a0575f80fd5b82356118ab8161187b565b946020939093013593505050565b5f805f606084860312156118cb575f80fd5b83356118d68161187b565b925060208401356118e68161187b565b929592945050506040919091013590565b80358015158114611906575f80fd5b919050565b5f806040838503121561191c575f80fd5b82356119278161187b565b9150611935602084016118f7565b90509250929050565b5f6020828403121561194e575f80fd5b81356107d48161187b565b5f806040838503121561196a575f80fd5b6118ab836118f7565b803561ffff81168114611906575f80fd5b5f805f8060808587031215611997575f80fd5b6119a085611973565b93506119ae60208601611973565b92506119bc60408601611973565b91506119ca60608601611973565b905092959194509250565b5f602082840312156119e5575f80fd5b5035919050565b5f80604083850312156119fd575f80fd5b8235611a088161187b565b91506020830135611a188161187b565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611a7157815f1904821115611a5757611a57611a23565b80851615611a6457918102915b93841c9390800290611a3c565b509250929050565b5f82611a8757506001610725565b81611a9357505f610725565b8160018114611aa95760028114611ab357611acf565b6001915050610725565b60ff841115611ac457611ac4611a23565b50506001821b610725565b5060208310610133831016604e8410600b8410161715611af2575081810a610725565b611afc8383611a37565b805f1904821115611b0f57611b0f611a23565b029392505050565b5f6107d460ff841683611a79565b808202811582820484141761072557610725611a23565b8181038181111561072557610725611a23565b61ffff818116838216019080821115611b6a57611b6a611a23565b5092915050565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561072557610725611a23565b5f82611bb257634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611bc7575f80fd5b81516107d48161187b565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611c225784516001600160a01b031683529383019391830191600101611bfd565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611c55575f80fd5b8351925060208401519150604084015190509250925092565b63ffffffff818116838216019080821115611b6a57611b6a611a2356fea2646970667358221220a8a7dc48d63517527543f51dcbd53cb8f4fb8a086066000ef3ddb248b3c1360964736f6c63430008180033

Deployed Bytecode Sourcemap

4246:12676:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5853:50;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;5853:50:0;;;;;;;;15080:94;;;;;;;;;;-1:-1:-1;15161:5:0;;;;;;;;;;;;-1:-1:-1;;;15161:5:0;;;;15080:94;;;;;;;:::i;15591:241::-;;;;;;;;;;-1:-1:-1;15591:241:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;15591:241:0;1205:187:1;14762:102:0;;;;;;;;;;;;;:::i;7360:405::-;;;;;;;;;;-1:-1:-1;7360:405:0;;;;;:::i;:::-;;:::i;14549:97::-;;;;;;;;;;;;;:::i;:::-;;;2032:6:1;2020:19;;;2002:38;;1990:2;1975:18;14549:97:0;1858:188:1;14403:138:0;;;;;;;;;;;;;:::i;14872:94::-;;;;;;;;;;-1:-1:-1;14872:94:0;;5132:2;2193:36:1;;2181:2;2166:18;14872:94:0;2051:184:1;10139:173:0;;;;;;;;;;-1:-1:-1;10139:173:0;;;;;:::i;:::-;;:::i;:::-;;4864:43;;;;;;;;;;-1:-1:-1;4864:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10881:372;;;;;;;;;;-1:-1:-1;10881:372:0;;;;;:::i;:::-;;:::i;5643:40::-;;;;;;;;;;-1:-1:-1;5643:40:0;;;;-1:-1:-1;;;5643:40:0;;;;;;4962:35;;;;;;;;;;-1:-1:-1;4962:35:0;;;;;;;;15840:122;;;;;;;;;;-1:-1:-1;15840:122:0;;;;;:::i;:::-;;:::i;11261:633::-;;;;;;;;;;-1:-1:-1;11261:633:0;;;;;:::i;:::-;;:::i;5426:35::-;;;;;;;;;;-1:-1:-1;5426:35:0;;;;-1:-1:-1;;;;;5426:35:0;;;;;;-1:-1:-1;;;;;3964:32:1;;;3946:51;;3934:2;3919:18;5426:35:0;3800:203:1;15284:119:0;;;;;;;;;;-1:-1:-1;15284:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;15377:18:0;15350:7;15377:18;;;:9;:18;;;;;;;15284:119;4142:97;;;;;;;;;;;;;:::i;4914:41::-;;;;;;;;;;-1:-1:-1;4914:41:0;;;;;:::i;:::-;;:::i;12033:283::-;;;;;;;;;;;;;:::i;15182:94::-;;;;;;;;;;-1:-1:-1;15234:7:0;3578:6;-1:-1:-1;;;;;3578:6:0;15182:94;14762:102;14974:98;;;;;;;;;;-1:-1:-1;15057:7:0;;;;;;;;;;;;-1:-1:-1;;;15057:7:0;;;;14974:98;;5570:29;;;;;;;;;;;;;;;9306:177;;;;;;;;;;-1:-1:-1;9306:177:0;;;;;:::i;:::-;;:::i;14654:100::-;;;;;;;;;;;;;:::i;10320:303::-;;;;;;;;;;-1:-1:-1;10320:303:0;;;;;:::i;:::-;;:::i;5395:24::-;;;;;;;;;;-1:-1:-1;5395:24:0;;;;-1:-1:-1;;;5395:24:0;;;;;;;;;4367:10:1;4355:23;;;4337:42;;4325:2;4310:18;5395:24:0;4193:192:1;10631:242:0;;;;;;;;;;-1:-1:-1;10631:242:0;;;;;:::i;:::-;;:::i;14189:206::-;;;;;;;;;;;;;:::i;15411:172::-;;;;;;;;;;-1:-1:-1;15411:172:0;;;;;:::i;:::-;-1:-1:-1;;;;;15547:19:0;;;15520:7;15547:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;15411:172;5319:69;;;;;;;;;;-1:-1:-1;5319:69:0;;;;;;;-1:-1:-1;;;;;5319:69:0;;;3740:195;;;;;;;;;;-1:-1:-1;3740:195:0;;;;;:::i;:::-;;:::i;5141:90::-;;;;;;;;;;;;5188:42;5141:90;;5690:31;;;;;;;;;;-1:-1:-1;5690:31:0;;;;-1:-1:-1;;;5690:31:0;;;;;;15591:241;15720:10;15691:4;15708:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;15708:32:0;;;;;;;;;;:41;;;15765:37;15691:4;;15708:32;;15765:37;;;;15743:6;160:25:1;;148:2;133:18;;14:177;15765:37:0;;;;;;;;-1:-1:-1;15820:4:0;15591:241;;;;;:::o;14762:102::-;14817:7;5830:15;5132:2;5830;:15;:::i;:::-;5818:28;;:8;:28;:::i;:::-;14837:19;;14762:102;:::o;7360:405::-;-1:-1:-1;;;;;7515:19:0;;7494:4;7515:19;;;:11;:19;;;;;;;;7535:10;7515:31;;;;;;;;-1:-1:-1;;7515:52:0;7511:193;;-1:-1:-1;;;;;7635:19:0;;;;;;:11;:19;;;;;;;;7655:10;7635:31;;;;;;;;:57;;7686:6;;7635:57;:::i;:::-;-1:-1:-1;;;;;7584:19:0;;;;;;:11;:19;;;;;;;;7604:10;7584:31;;;;;;;:108;7511:193;7721:36;7731:6;7739:9;7750:6;7721:9;:36::i;:::-;7714:43;;7360:405;;;;;;:::o;14549:97::-;14629:9;;14593:6;;14619:19;;14629:9;-1:-1:-1;;;14629:9:0;;;;;-1:-1:-1;;;14619:7:0;;;:19;:::i;14403:138::-;14528:4;;-1:-1:-1;;;;;14528:4:0;14458:7;15377:18;;;:9;:18;;;;;;5270:42;15377:18;;;;5830:15;5132:2;5830;:15;:::i;:::-;5818:28;;:8;:28;:::i;:::-;14485:30;;;;:::i;:::-;:48;;;;:::i;10139:173::-;3478:13;:11;:13::i;:::-;-1:-1:-1;;;;;10225:19:0;::::1;;::::0;;;:11:::1;:19;::::0;;;;;;;;:28;;-1:-1:-1;;10225:28:0::1;::::0;::::1;;::::0;;::::1;::::0;;;10269:35;;1345:41:1;;;10269:35:0::1;::::0;1318:18:1;10269:35:0::1;;;;;;;10139:173:::0;;:::o;10881:372::-;3478:13;:11;:13::i;:::-;5514:12:::1;11019:16;:37;11015:65;;;11065:15;;-1:-1:-1::0;;;11065:15:0::1;;;;;;;;;;;11015:65;11091:13;:32:::0;;;11134:21:::1;:38:::0;;-1:-1:-1;;;;11134:38:0::1;-1:-1:-1::0;;;11134:38:0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;11188:57:::1;::::0;;7165:41:1;;;7237:2;7222:18;;7215:34;;;11188:57:0::1;::::0;7138:18:1;11188:57:0::1;;;;;;;;10881:372:::0;;:::o;15840:122::-;15895:4;15919:35;15927:7;-1:-1:-1;;15919:7:0;:35::i;11261:633::-;3478:13;:11;:13::i;:::-;11433:22:::1;11458:25;11471:12:::0;11458:10;:25:::1;:::i;:::-;11433:50:::0;-1:-1:-1;11494:21:0::1;11518:23;11530:11:::0;11518:9;:23:::1;:::i;:::-;11494:47:::0;-1:-1:-1;4582:3:0::1;11556:24;::::0;::::1;;::::0;:53:::1;;-1:-1:-1::0;4582:3:0::1;11584:25;::::0;::::1;;11556:53;11552:91;;;11631:12;;-1:-1:-1::0;;;11631:12:0::1;;;;;;;;;;;11552:91;11654:9;:23:::0;;::::1;11754:21:::0;;::::1;-1:-1:-1::0;;;11754:21:0::1;-1:-1:-1::0;;;;11718:25:0;;::::1;-1:-1:-1::0;;;11718:25:0::1;11754:21:::0;-1:-1:-1;;;;11688:19:0;;::::1;-1:-1:-1::0;;;11688:19:0;::::1;-1:-1:-1::0;;;;11654:23:0;;::::1;-1:-1:-1::0;;;11654:23:0;::::1;11688:19:::0;;;;-1:-1:-1;;;;11688:19:0;;;;;;;;;;::::1;11754:21:::0;;::::1;::::0;;;11791:38:::1;::::0;;7455:34:1;;;7520:2;7505:18;;7498:43;;;;11791:38:0::1;::::0;7403:18:1;11791:38:0::1;;;;;;;11845:41;::::0;;7440:6:1;7473:15;;;7455:34;;7525:15;;7520:2;7505:18;;7498:43;11845:41:0::1;::::0;7403:18:1;11845:41:0::1;;;;;;;11422:472;;11261:633:::0;;;;:::o;4142:97::-;3478:13;:11;:13::i;:::-;4226:4:::1;::::0;4207:24:::1;::::0;-1:-1:-1;;;;;4226:4:0::1;4207:18;:24::i;:::-;4142:97::o:0;4914:41::-;;;;;;;;;;;;;;;-1:-1:-1;4914:41:0;:::o;12033:283::-;3478:13;:11;:13::i;:::-;12120:21:::1;12091:26;12156:23:::0;;;12152:51:::1;;12188:15;;-1:-1:-1::0;;;12188:15:0::1;;;;;;;;;;;12152:51;12214:43;12238:18;12214:23;:43::i;:::-;12273:35;::::0;160:25:1;;;12273:35:0::1;::::0;148:2:1;133:18;12273:35:0::1;;;;;;;12080:236;12033:283::o:0;9306:177::-;9411:4;9435:40;9445:10;9457:9;9468:6;9435:9;:40::i;14654:100::-;14736:10;;14699:6;;14725:21;;14736:10;-1:-1:-1;;;14736:10:0;;;;;-1:-1:-1;;;14725:8:0;;;:21;:::i;10320:303::-;3478:13;:11;:13::i;:::-;-1:-1:-1;;;;;10399:26:0;::::1;10395:55;;10434:16;;-1:-1:-1::0;;;10434:16:0::1;;;;;;;;;;;10395:55;10473:9;::::0;;;;;;::::1;-1:-1:-1::0;;;;;10473:9:0;;::::1;10486:5;10461:22:::0;;;:11:::1;:22;::::0;;;;;:30;;-1:-1:-1;;10461:30:0;;::::1;::::0;;;10502:24;;-1:-1:-1;;;;;;10502:24:0::1;::::0;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;10537:25;;;;;;:32;;;;::::1;-1:-1:-1::0;10537:32:0::1;::::0;;;10585:30;;10502:24;;10585:30:::1;::::0;::::1;10320:303:::0;:::o;10631:242::-;3478:13;:11;:13::i;:::-;-1:-1:-1;;;;;10713:30:0;::::1;10709:59;;10752:16;;-1:-1:-1::0;;;10752:16:0::1;;;;;;;;;;;10709:59;10779:13;:32:::0;;-1:-1:-1;;;;;;10779:32:0::1;-1:-1:-1::0;;;;;10779:32:0;::::1;::::0;;::::1;::::0;;;10827:38:::1;::::0;::::1;::::0;-1:-1:-1;;10827:38:0::1;10631:242:::0;:::o;14189:206::-;3478:13;:11;:13::i;:::-;14245:10:::1;::::0;-1:-1:-1;;;14245:10:0;::::1;;;:15:::0;14241:41:::1;;14269:13;;-1:-1:-1::0;;;14269:13:0::1;;;;;;;;;;;14241:41;14293:11;:18:::0;;-1:-1:-1;;;;;;;14293:18:0;;::::1;::::0;::::1;::::0;;;14322:10:::1;:33:::0;;-1:-1:-1;;;;14322:33:0::1;14342:12;14322:33;;::::0;;::::1;::::0;;;::::1;::::0;;14371:16:::1;::::0;::::1;::::0;-1:-1:-1;;14371:16:0::1;14189:206::o:0;3740:195::-;3478:13;:11;:13::i;:::-;3841:4:::1;::::0;-1:-1:-1;;;;;3841:4:0;;::::1;3829:16:::0;;::::1;::::0;3821:67:::1;;;::::0;-1:-1:-1;;;3821:67:0;;7754:2:1;3821:67:0::1;::::0;::::1;7736:21:1::0;7793:2;7773:18;;;7766:30;7832:34;7812:18;;;7805:62;-1:-1:-1;;;7883:18:1;;;7876:36;7929:19;;3821:67:0::1;;;;;;;;;3899:28;3918:8;3899:18;:28::i;:::-;3740:195:::0;:::o;7773:1525::-;7894:4;7915:6;7925:1;7915:11;7911:39;;7935:15;;-1:-1:-1;;;7935:15:0;;;;;;;;;;;7911:39;-1:-1:-1;;;;;7965:23:0;;7961:59;;7997:23;;-1:-1:-1;;;7997:23:0;;;;;;;;;;;7961:59;-1:-1:-1;;;;;8035:20:0;;8031:58;;8064:25;;-1:-1:-1;;;8064:25:0;;;;;;;;;;;8031:58;8104:17;;-1:-1:-1;;;8104:17:0;;;;8100:98;;;8145:41;8160:6;8168:9;8179:6;8145:14;:41::i;:::-;8138:48;;;;8100:98;-1:-1:-1;;;;;8212:22:0;;;;;;:11;:22;;;;;;;;;:45;;-1:-1:-1;;;;;;8238:19:0;;;;;;:11;:19;;;;;;;;8212:45;8208:399;;;8290:4;-1:-1:-1;;;;;8277:17:0;:9;-1:-1:-1;;;;;8277:17:0;;:47;;;;-1:-1:-1;;;;;;8307:17:0;;;;;;:9;:17;;;;;;8298:26;;8277:47;8274:259;;;8352:41;8367:9;8378:6;8386;8352:14;:41::i;8274:259::-;8429:13;;8419:6;:23;;:49;;;;-1:-1:-1;;;;;;8446:22:0;;;;;;:11;:22;;;;;;;;8419:49;8415:118;;;8509:8;;8489:17;:28;;-1:-1:-1;;;8509:8:0;;;;;-1:-1:-1;;8489:28:0;;;;;;;;;8415:118;8554:41;8569:6;8577:9;8588:6;8554:14;:41::i;8208:399::-;8622:11;;-1:-1:-1;;;8622:11:0;;;;8617:38;;8642:13;;-1:-1:-1;;;8642:13:0;;;;;;;;;;;8617:38;-1:-1:-1;;;;;8705:17:0;;8666:19;8705:17;;;:9;:17;;;;;:27;;8688:6;;;;8705:17;:27;;8688:6;;8705:27;:::i;:::-;;;;;;;;8757:4;-1:-1:-1;;;;;8747:14:0;:6;-1:-1:-1;;;;;8747:14:0;;;:49;;;;-1:-1:-1;8779:17:0;;;8765:10;8779:17;;;;-1:-1:-1;;;8765:10:0;;;;;;:31;;8747:49;8743:66;;;8805:4;8798:11;;;;;8743:66;8837:4;-1:-1:-1;;;;;8824:17:0;:9;-1:-1:-1;;;;;8824:17:0;;8820:242;;8862:21;;-1:-1:-1;;;8862:21:0;;;;:79;;;;-1:-1:-1;8928:13:0;;8907:17;;:14;8887:17;:37;;8907:17;8887:37;:::i;:::-;:54;;8862:79;8858:131;;;8962:11;:9;:11::i;:::-;9017:33;9035:6;9043;9017:17;:33::i;:::-;9003:47;;8820:242;9086:4;-1:-1:-1;;;;;9076:14:0;:6;-1:-1:-1;;;;;9076:14:0;;9072:93;;9121:32;9138:6;9146;9121:16;:32::i;:::-;9107:46;;9072:93;-1:-1:-1;;;;;9177:20:0;;;;;;:9;:20;;;;;:35;;9201:11;;9177:20;:35;;9201:11;;9177:35;:::i;:::-;;;;;;;;9245:9;-1:-1:-1;;;;;9228:40:0;9237:6;-1:-1:-1;;;;;9228:40:0;;9256:11;9228:40;;;;160:25:1;;148:2;133:18;;14:177;9228:40:0;;;;;;;;-1:-1:-1;9286:4:0;;7773:1525;-1:-1:-1;;;;7773:1525:0:o;3600:132::-;3551:7;3578:6;-1:-1:-1;;;;;3578:6:0;2997:10;3664:23;3656:68;;;;-1:-1:-1;;;3656:68:0;;8423:2:1;3656:68:0;;;8405:21:1;;;8442:18;;;8435:30;8501:34;8481:18;;;8474:62;8553:18;;3656:68:0;8221:356:1;3943:191:0;4017:16;4036:6;;-1:-1:-1;;;;;4053:17:0;;;-1:-1:-1;;;;;;4053:17:0;;;;;;4086:40;;4036:6;;;;;;;4086:40;;4017:16;4086:40;4006:128;3943:191;:::o;12324:200::-;12411:9;;:33;;12393:12;;12411:9;;;-1:-1:-1;;;;;12411:9:0;;12433:6;;12393:12;12411:33;12393:12;12411:33;12433:6;12411:9;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12392:52;;;12460:7;12455:62;;12489:16;;160:25:1;;;12489:16:0;;148:2:1;133:18;12489:16:0;14:177:1;12455:62:0;12381:143;12324:200;:::o;9491:292::-;-1:-1:-1;;;;;9634:17:0;;9617:4;9634:17;;;:9;:17;;;;;:27;;9655:6;;9634:17;9617:4;;9634:27;;9655:6;;9634:27;:::i;:::-;;;;-1:-1:-1;;;;;;;9672:20:0;;;;;;:9;:20;;;;;:30;;9696:6;;9672:20;:30;;9696:6;;9672:30;:::i;:::-;;;;;;;;9735:9;-1:-1:-1;;;;;9718:35:0;9727:6;-1:-1:-1;;;;;9718:35:0;;9746:6;9718:35;;;;160:25:1;;148:2;133:18;;14:177;9718:35:0;;;;;;;;-1:-1:-1;9771:4:0;9491:292;;;;;:::o;13446:735::-;13504:14;:17;13550;;13486:15;13597:17;13550;13504;13597;:::i;:::-;13578:36;-1:-1:-1;13625:26:0;13654:11;13664:1;13654:7;:11;:::i;:::-;13625:40;-1:-1:-1;13676:20:0;13699:29;13625:40;13699:8;:29;:::i;:::-;13676:52;;13739:19;13761:31;13779:12;13761:17;:31::i;:::-;13739:53;-1:-1:-1;13803:23:0;13866:12;13830:32;13844:18;13739:53;13830:32;:::i;:::-;13829:49;;;;:::i;:::-;13803:75;-1:-1:-1;13889:16:0;13908:29;13803:75;13908:11;:29;:::i;:::-;13889:48;-1:-1:-1;13954:13:0;;13950:79;;13984:33;14008:8;13984:23;:33::i;:::-;14043:20;;14039:103;;14080:50;14094:18;14114:15;14080:13;:50::i;:::-;14159:14;;-1:-1:-1;;;;;13475:706:0;;;;;;;;13446:735::o;15970:477::-;16071:7;16091:12;16106:16;:14;:16::i;:::-;16091:31;;16133:14;16150:7;:38;;4433:3;16150:38;;;16160:8;;-1:-1:-1;;;16160:8:0;;;;16150:38;16133:55;;16199:13;16215:7;:39;;4538:3;16215:39;;;16225:10;;-1:-1:-1;;;16225:10:0;;;;16215:39;16199:55;-1:-1:-1;16265:15:0;5766:5;16284:16;16283:32;16284:16;;:6;:16;:::i;:::-;16283:32;;;;:::i;:::-;16265:50;-1:-1:-1;16326:15:0;5766:5;16345:15;16344:31;16345:15;;:6;:15;:::i;:::-;16344:31;;;;:::i;:::-;16326:49;;16402:37;16414:6;16422:7;16431;16402:11;:37::i;:::-;16393:46;;:6;:46;:::i;:::-;16386:53;15970:477;-1:-1:-1;;;;;;;;15970:477:0:o;16455:464::-;16555:7;16575:12;16590:16;:14;:16::i;:::-;16575:31;;16617:13;16633:7;:36;;4379:3;16633:36;;;16643:7;;-1:-1:-1;;;16643:7:0;;;;16633:36;16617:52;;16680:12;16695:7;:37;;4485:3;16695:37;;;16705:9;;;-1:-1:-1;;;16705:9:0;;;;16680:52;-1:-1:-1;16743:14:0;5766:5;16761:15;16760:31;16761:15;;:6;:15;:::i;12862:576::-;6794:17;:24;;-1:-1:-1;;;;6794:24:0;-1:-1:-1;;;6794:24:0;;;12999:16:::1;::::0;;13013:1:::1;12999:16:::0;;;;;::::1;::::0;;-1:-1:-1;;;;12999:16:0;13013:1;12999:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12999:16:0::1;12975:40;;13044:4;13026;13031:1;13026:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;13026:23:0::1;;;-1:-1:-1::0;;;;;13026:23:0::1;;;::::0;::::1;5188:42;-1:-1:-1::0;;;;;13070:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13060:4;13065:1;13060:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;13060:23:0::1;;;-1:-1:-1::0;;;;;13060:23:0::1;;;::::0;::::1;13094:35;13110:4;13117:11;13094:7;:35::i;:::-;-1:-1:-1::0;13192:187:0::1;::::0;-1:-1:-1;;;13192:187:0;;13160:21:::1;::::0;5188:42:::1;::::0;13192:57:::1;::::0;:187:::1;::::0;13264:11;;13140:17:::1;::::0;13306:4;;13333::::1;::::0;13353:15:::1;::::0;13192:187:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13421:9;13397:21;:33;;;;:::i;:::-;6841:17:::0;:25;;-1:-1:-1;;;;6841:25:0;;;13390:40;12862:576;-1:-1:-1;;;;12862:576:0:o;12532:322::-;6794:17;:24;;-1:-1:-1;;;;;;;6794:24:0;;;;;;12651:195:::1;::::0;-1:-1:-1;;;12651:195:0;;12714:4:::1;12651:195;::::0;::::1;10728:34:1::0;10778:18;;;10771:34;;;-1:-1:-1;10821:18:1;;;10814:34;;;10864:18;;;10857:34;-1:-1:-1;;;;;12792:13:0;;;10907:19:1;;;10900:44;12820:15:0::1;10960:19:1::0;;;10953:35;5188:42:0::1;::::0;12651:22:::1;::::0;12681:9;;10662:19:1;;12651:195:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;6841:17:0;:25;;-1:-1:-1;;;;6841:25:0;;;-1:-1:-1;;;12532:322:0:o;11902:123::-;11974:10;;11950:4;;12005:12;;11974:28;;11950:4;;-1:-1:-1;;;11974:10:0;;;;:28;:::i;:::-;:43;;;11967:50;;11902:123;:::o;9791:340::-;9903:11;9948:2;9927:14;9942:1;9927:17;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;9982:2:0;;-1:-1:-1;9961:14:0;9976:1;9961:17;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;10001:7:0;;-1:-1:-1;10006:2:0;10001;:7;:::i;:::-;10037:4;10019:24;;;;:9;:24;;;;;:31;;9995:13;;-1:-1:-1;9995:13:0;;10019:24;;;:31;;9995:13;;10019:31;:::i;:::-;;;;-1:-1:-1;;10066:36:0;;160:25:1;;;10091:4:0;;-1:-1:-1;;;;;10066:36:0;;;;;148:2:1;133:18;10066:36:0;;;;;;;9791:340;;;;;:::o;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;885:315;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2240:160::-;2305:20;;2361:13;;2354:21;2344:32;;2334:60;;2390:1;2387;2380:12;2334:60;2240:160;;;:::o;2405:315::-;2470:6;2478;2531:2;2519:9;2510:7;2506:23;2502:32;2499:52;;;2547:1;2544;2537:12;2499:52;2586:9;2573:23;2605:31;2630:5;2605:31;:::i;:::-;2655:5;-1:-1:-1;2679:35:1;2710:2;2695:18;;2679:35;:::i;:::-;2669:45;;2405:315;;;;;:::o;2725:247::-;2784:6;2837:2;2825:9;2816:7;2812:23;2808:32;2805:52;;;2853:1;2850;2843:12;2805:52;2892:9;2879:23;2911:31;2936:5;2911:31;:::i;2977:248::-;3042:6;3050;3103:2;3091:9;3082:7;3078:23;3074:32;3071:52;;;3119:1;3116;3109:12;3071:52;3142:26;3158:9;3142:26;:::i;3230:159::-;3297:20;;3357:6;3346:18;;3336:29;;3326:57;;3379:1;3376;3369:12;3394:401;3476:6;3484;3492;3500;3553:3;3541:9;3532:7;3528:23;3524:33;3521:53;;;3570:1;3567;3560:12;3521:53;3593:28;3611:9;3593:28;:::i;:::-;3583:38;;3640:37;3673:2;3662:9;3658:18;3640:37;:::i;:::-;3630:47;;3696:37;3729:2;3718:9;3714:18;3696:37;:::i;:::-;3686:47;;3752:37;3785:2;3774:9;3770:18;3752:37;:::i;:::-;3742:47;;3394:401;;;;;;;:::o;4008:180::-;4067:6;4120:2;4108:9;4099:7;4095:23;4091:32;4088:52;;;4136:1;4133;4126:12;4088:52;-1:-1:-1;4159:23:1;;4008:180;-1:-1:-1;4008:180:1:o;4390:388::-;4458:6;4466;4519:2;4507:9;4498:7;4494:23;4490:32;4487:52;;;4535:1;4532;4525:12;4487:52;4574:9;4561:23;4593:31;4618:5;4593:31;:::i;:::-;4643:5;-1:-1:-1;4700:2:1;4685:18;;4672:32;4713:33;4672:32;4713:33;:::i;:::-;4765:7;4755:17;;;4390:388;;;;;:::o;5009:127::-;5070:10;5065:3;5061:20;5058:1;5051:31;5101:4;5098:1;5091:15;5125:4;5122:1;5115:15;5141:416;5230:1;5267:5;5230:1;5281:270;5302:7;5292:8;5289:21;5281:270;;;5361:4;5357:1;5353:6;5349:17;5343:4;5340:27;5337:53;;;5370:18;;:::i;:::-;5420:7;5410:8;5406:22;5403:55;;;5440:16;;;;5403:55;5519:22;;;;5479:15;;;;5281:270;;;5285:3;5141:416;;;;;:::o;5562:806::-;5611:5;5641:8;5631:80;;-1:-1:-1;5682:1:1;5696:5;;5631:80;5730:4;5720:76;;-1:-1:-1;5767:1:1;5781:5;;5720:76;5812:4;5830:1;5825:59;;;;5898:1;5893:130;;;;5805:218;;5825:59;5855:1;5846:10;;5869:5;;;5893:130;5930:3;5920:8;5917:17;5914:43;;;5937:18;;:::i;:::-;-1:-1:-1;;5993:1:1;5979:16;;6008:5;;5805:218;;6107:2;6097:8;6094:16;6088:3;6082:4;6079:13;6075:36;6069:2;6059:8;6056:16;6051:2;6045:4;6042:12;6038:35;6035:77;6032:159;;;-1:-1:-1;6144:19:1;;;6176:5;;6032:159;6223:34;6248:8;6242:4;6223:34;:::i;:::-;6293:6;6289:1;6285:6;6281:19;6272:7;6269:32;6266:58;;;6304:18;;:::i;:::-;6342:20;;5562:806;-1:-1:-1;;;5562:806:1:o;6373:140::-;6431:5;6460:47;6501:4;6491:8;6487:19;6481:4;6460:47;:::i;6518:168::-;6591:9;;;6622;;6639:15;;;6633:22;;6619:37;6609:71;;6660:18;;:::i;6691:128::-;6758:9;;;6779:11;;;6776:37;;;6793:18;;:::i;6824:168::-;6891:6;6917:10;;;6929;;;6913:27;;6952:11;;;6949:37;;;6966:18;;:::i;:::-;6949:37;6824:168;;;;:::o;7959:127::-;8020:10;8015:3;8011:20;8008:1;8001:31;8051:4;8048:1;8041:15;8075:4;8072:1;8065:15;8091:125;8156:9;;;8177:10;;;8174:36;;;8190:18;;:::i;8792:217::-;8832:1;8858;8848:132;;8902:10;8897:3;8893:20;8890:1;8883:31;8937:4;8934:1;8927:15;8965:4;8962:1;8955:15;8848:132;-1:-1:-1;8994:9:1;;8792:217::o;9146:251::-;9216:6;9269:2;9257:9;9248:7;9244:23;9240:32;9237:52;;;9285:1;9282;9275:12;9237:52;9317:9;9311:16;9336:31;9361:5;9336:31;:::i;9402:980::-;9664:4;9712:3;9701:9;9697:19;9743:6;9732:9;9725:25;9769:2;9807:6;9802:2;9791:9;9787:18;9780:34;9850:3;9845:2;9834:9;9830:18;9823:31;9874:6;9909;9903:13;9940:6;9932;9925:22;9978:3;9967:9;9963:19;9956:26;;10017:2;10009:6;10005:15;9991:29;;10038:1;10048:195;10062:6;10059:1;10056:13;10048:195;;;10127:13;;-1:-1:-1;;;;;10123:39:1;10111:52;;10218:15;;;;10183:12;;;;10159:1;10077:9;10048:195;;;-1:-1:-1;;;;;;;10299:32:1;;;;10294:2;10279:18;;10272:60;-1:-1:-1;;;10363:3:1;10348:19;10341:35;10260:3;9402:980;-1:-1:-1;;;9402:980:1:o;10999:306::-;11087:6;11095;11103;11156:2;11144:9;11135:7;11131:23;11127:32;11124:52;;;11172:1;11169;11162:12;11124:52;11201:9;11195:16;11185:26;;11251:2;11240:9;11236:18;11230:25;11220:35;;11295:2;11284:9;11280:18;11274:25;11264:35;;10999:306;;;;;:::o;11310:172::-;11377:10;11407;;;11419;;;11403:27;;11442:11;;;11439:37;;;11456:18;;:::i

Swarm Source

ipfs://a8a7dc48d63517527543f51dcbd53cb8f4fb8a086066000ef3ddb248b3c13609

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.