ETH Price: $3,335.88 (-0.39%)
 

Overview

Max Total Supply

1,000,000 CRCLE

Holders

52

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
2,301.57271294993575398 CRCLE

Value
$0.00
0x386f2f729bb540bc20e5a61303cf5b01346180f0
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
CRCLE

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-17
*/

// SPDX-License-Identifier: MIT

/*

Website:  https://crclemrkt.xyz/
Telegram: https://t.me/crcleportal
Twitter:  https://twitter.com/crclemrket?s=21&t=PcQgbW4yDDEVTQMiGVozsw
*/
pragma solidity ^0.8.4;

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

interface IERC20 {

    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

interface IERC20Metadata is IERC20 {

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

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

    function decimals() external view returns (uint8);
}

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

library SafeMath {

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

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

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

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

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

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

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

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

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

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

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

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

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

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

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

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

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

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

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

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

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

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public uniswapV2Pair;
    address public constant deadAddress = address(0xdead);

    bool private swapping;

    address public marketingWallet;
    address public developmentWallet;
    address public liquidityWallet;

    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;

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

    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = false;

    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevelopmentFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevelopmentFee;

    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDevelopment;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;

    mapping(address => bool) public automatedMarketMakerPairs;

    event UpdateUniswapV2Router(
        address indexed newAddress,
        address indexed oldAddress
    );

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event marketingWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    event developmentWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    event liquidityWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    constructor(address _helper) ERC20("CRCLE", "CRCLE") {
        require(_helper != address(0), "NA");

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 _buyMarketingFee = 4;
        uint256 _buyLiquidityFee = 0;
        uint256 _buyDevelopmentFee = 1;

        uint256 _sellMarketingFee = 40;
        uint256 _sellLiquidityFee = 0;
        uint256 _sellDevelopmentFee = 0;

        uint256 totalSupply = 1_000_000 * 1e18;

        maxTransactionAmount = 20_000 * 1e18; // 2% from total supply maxTransactionAmountTxn
        maxWallet = 20_000 * 1e18; // 2% from total supply maxWallet
        swapTokensAtAmount = (totalSupply * 5) / 10000; // 0.05% swap wallet

        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyDevelopmentFee = _buyDevelopmentFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevelopmentFee;

        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellDevelopmentFee = _sellDevelopmentFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevelopmentFee;

        marketingWallet = address(0x61a9C32E10f4A03a86EaBa32cB0C0E53B1beB127);
        developmentWallet = address(0x0E76dC3aF315f4Cc1051EA559362ee994b54C74E);
        liquidityWallet = address(0x0E76dC3aF315f4Cc1051EA559362ee994b54C74E);

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);

        _mint(msg.sender, totalSupply);

        transferOwnership(_helper);
    }

    receive() external payable {}

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

    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }

    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner returns (bool) {
        transferDelayEnabled = false;
        return true;
    }

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

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

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

    function excludeFromMaxTransaction(address updAds, bool isEx)
        public
        onlyOwner
    {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

    function updateBuyFees(
        uint256 _marketingFee,
        uint256 _liquidityFee,
        uint256 _developmentFee
    ) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyDevelopmentFee = _developmentFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevelopmentFee;
        require(buyTotalFees <= 99);
    }

    function updateSellFees(
        uint256 _marketingFee,
        uint256 _liquidityFee,
        uint256 _developmentFee
    ) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellDevelopmentFee = _developmentFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevelopmentFee;
        require(sellTotalFees <= 99);
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function setAutomatedMarketMakerPair(address pair, bool value)
        public
        onlyOwner
    {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateMarketingWallet(address newMarketingWallet) external onlyOwner {
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }

    function updatedevelopmentWallet(address newWallet) external onlyOwner {
        emit developmentWalletUpdated(newWallet, developmentWallet);
        developmentWallet = newWallet;
    }

    function updateliquidityWallet(address newliquidityWallet) external onlyOwner {
        emit liquidityWalletUpdated(newliquidityWallet, liquidityWallet);
        liquidityWallet = newliquidityWallet;
    }

    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

    event BoughtEarly(address indexed sniper);

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

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

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

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.
                if (transferDelayEnabled) {
                    if (
                        to != owner() &&
                        to != address(uniswapV2Router) &&
                        to != address(uniswapV2Pair)
                    ) {
                        require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed.");
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }

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

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        bool takeFee = !swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForDevelopment += (fees * sellDevelopmentFee) / sellTotalFees;
                tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForDevelopment += (fees * buyDevelopmentFee) / buyTotalFees;
                tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
            }

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

            amount -= fees;
        }

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

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

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

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

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

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

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity +
            tokensForMarketing +
            tokensForDevelopment;
        bool success;

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

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

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = (contractBalance * tokensForLiquidity) /
            totalTokensToSwap /
            2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);

        uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(
            totalTokensToSwap
        );
        uint256 ethForDev = ethBalance.mul(tokensForDevelopment).div(totalTokensToSwap);

        uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDevelopment = 0;

        (success, ) = address(developmentWallet).call{value: ethForDev}("");

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(
                amountToSwapForETH,
                ethForLiquidity,
                tokensForLiquidity
            );
        }

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_helper","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","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":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"developmentWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"liquidityWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevelopmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","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":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevelopmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDevelopment","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_developmentFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_developmentFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updatedevelopmentWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newliquidityWallet","type":"address"}],"name":"updateliquidityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a0604052600d805462ffffff19166001179055600f805460ff191690553480156200002a57600080fd5b50604051620032ff380380620032ff8339810160408190526200004d91620008a4565b6040805180820182526005808252644352434c4560d81b6020808401828152855180870190965292855284015281519192916200008d91600391620007fe565b508051620000a3906004906020840190620007fe565b505050620000c0620000ba6200048f60201b60201c565b62000493565b6001600160a01b038116620001015760405162461bcd60e51b81526020600482015260026024820152614e4160f01b60448201526064015b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d62000123816001620004e5565b806001600160a01b03166080816001600160a01b031660601b81525050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200017a57600080fd5b505afa1580156200018f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b59190620008a4565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620001fe57600080fd5b505afa15801562000213573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002399190620008a4565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200028257600080fd5b505af115801562000297573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002bd9190620008a4565b600680546001600160a01b0319166001600160a01b03929092169182179055620002e9906001620004e5565b60065462000302906001600160a01b031660016200055b565b69043c33c1937564800000600a819055600c556004600060016028828069d3c21bcecceda10000006127106200033a82600562000910565b620003469190620008ef565b600b5560118790556012869055601385905584620003658789620008d4565b620003719190620008d4565b60105560158490556016839055601782905581620003908486620008d4565b6200039c9190620008d4565b601455600780546001600160a01b03199081167361a9c32e10f4a03a86eaba32cb0c0e53b1beb12717909155600880548216730e76dc3af315f4cc1051ea559362ee994b54c74e90811790915560098054909216179055620004126200040a6005546001600160a01b031690565b6001620005af565b6200041f306001620005af565b6200042e61dead6001620005af565b6200044d620004456005546001600160a01b031690565b6001620004e5565b6200045a306001620004e5565b6200046961dead6001620004e5565b62000475338262000659565b62000480896200073e565b50505050505050505062000985565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6005546001600160a01b03163314620005305760405162461bcd60e51b81526020600482018190526024820152600080516020620032df8339815191526044820152606401620000f8565b6001600160a01b03919091166000908152601c60205260409020805460ff1916911515919091179055565b6001600160a01b0382166000818152601d6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620005fa5760405162461bcd60e51b81526020600482018190526024820152600080516020620032df8339815191526044820152606401620000f8565b6001600160a01b0382166000818152601b6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620006b15760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620000f8565b8060026000828254620006c59190620008d4565b90915550506001600160a01b03821660009081526020819052604081208054839290620006f4908490620008d4565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b03163314620007895760405162461bcd60e51b81526020600482018190526024820152600080516020620032df8339815191526044820152606401620000f8565b6001600160a01b038116620007f05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620000f8565b620007fb8162000493565b50565b8280546200080c9062000932565b90600052602060002090601f0160209004810192826200083057600085556200087b565b82601f106200084b57805160ff19168380011785556200087b565b828001600101855582156200087b579182015b828111156200087b5782518255916020019190600101906200085e565b50620008899291506200088d565b5090565b5b808211156200088957600081556001016200088e565b600060208284031215620008b6578081fd5b81516001600160a01b0381168114620008cd578182fd5b9392505050565b60008219821115620008ea57620008ea6200096f565b500190565b6000826200090b57634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156200092d576200092d6200096f565b500290565b600181811c908216806200094757607f821691505b602082108114156200096957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60805160601c612911620009ce6000396000818161041801528181611706015281816122630152818161233901528181612375015281816123ef015261245701526129116000f3fe60806040526004361061036f5760003560e01c8063924de9b7116101c6578063c79c04fd116100f7578063e2f4560511610095578063f11a24d31161006f578063f11a24d3146109f6578063f2fde38b14610a0c578063f637434214610a2c578063f8b45b0514610a4257600080fd5b8063e2f45605146109b5578063e884f260146109cb578063ef8700e5146109e057600080fd5b8063d257b34f116100d1578063d257b34f14610919578063d469801614610939578063d85ba06314610959578063dd62ed3e1461096f57600080fd5b8063c79c04fd146108c9578063c876d0b9146108e9578063c8c8ebe41461090357600080fd5b8063b204141111610164578063c02466681161013e578063c024666814610849578063c04a541414610869578063c17b5b8c14610889578063c18bc195146108a957600080fd5b8063b2041411146107e4578063b62496f5146107fa578063bbc0c7421461082a57600080fd5b80639a7a23d6116101a05780639a7a23d614610764578063a457c2d714610784578063a9059cbb146107a4578063aacebbe3146107c457600080fd5b8063924de9b71461070f57806392aa37731461072f57806395d89b411461074f57600080fd5b80634a62bb65116102a05780637571336a1161023e5780638095d564116102185780638095d564146106a65780638a8c523c146106c65780638da5cb5b146106db57806392136913146106f957600080fd5b80637571336a1461065057806375f0a874146106705780637bce5a041461069057600080fd5b80636ddd17131161027a5780636ddd1713146105d057806370a08231146105f0578063715018a614610626578063751039fc1461063b57600080fd5b80634a62bb65146105675780634fbee193146105815780636a486a8e146105ba57600080fd5b80631f3fed8f1161030d57806327c8f835116102e757806327c8f835146104f5578063313ce5671461050b578063395093511461052757806349bd5a5e1461054757600080fd5b80631f3fed8f1461049d578063203e727e146104b357806323b872dd146104d557600080fd5b80631694505e116103495780631694505e1461040657806318160ddd1461045257806318a94cf1146104715780631a8145bb1461048757600080fd5b806306fdde031461037b578063095ea7b3146103a657806310d5de53146103d657600080fd5b3661037657005b600080fd5b34801561038757600080fd5b50610390610a58565b60405161039d9190612687565b60405180910390f35b3480156103b257600080fd5b506103c66103c13660046125d2565b610aea565b604051901515815260200161039d565b3480156103e257600080fd5b506103c66103f13660046124ee565b601c6020526000908152604090205460ff1681565b34801561041257600080fd5b5061043a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161039d565b34801561045e57600080fd5b506002545b60405190815260200161039d565b34801561047d57600080fd5b5061046360175481565b34801561049357600080fd5b5061046360195481565b3480156104a957600080fd5b5061046360185481565b3480156104bf57600080fd5b506104d36104ce366004612617565b610b00565b005b3480156104e157600080fd5b506103c66104f036600461255e565b610be6565b34801561050157600080fd5b5061043a61dead81565b34801561051757600080fd5b506040516012815260200161039d565b34801561053357600080fd5b506103c66105423660046125d2565b610c90565b34801561055357600080fd5b5060065461043a906001600160a01b031681565b34801561057357600080fd5b50600d546103c69060ff1681565b34801561058d57600080fd5b506103c661059c3660046124ee565b6001600160a01b03166000908152601b602052604090205460ff1690565b3480156105c657600080fd5b5061046360145481565b3480156105dc57600080fd5b50600d546103c69062010000900460ff1681565b3480156105fc57600080fd5b5061046361060b3660046124ee565b6001600160a01b031660009081526020819052604090205490565b34801561063257600080fd5b506104d3610ccc565b34801561064757600080fd5b506103c6610d02565b34801561065c57600080fd5b506104d361066b36600461259e565b610d3f565b34801561067c57600080fd5b5060075461043a906001600160a01b031681565b34801561069c57600080fd5b5061046360115481565b3480156106b257600080fd5b506104d36106c136600461262f565b610d94565b3480156106d257600080fd5b506104d3610df9565b3480156106e757600080fd5b506005546001600160a01b031661043a565b34801561070557600080fd5b5061046360155481565b34801561071b57600080fd5b506104d361072a3660046125fd565b610e36565b34801561073b57600080fd5b506104d361074a3660046124ee565b610e7c565b34801561075b57600080fd5b50610390610f03565b34801561077057600080fd5b506104d361077f36600461259e565b610f12565b34801561079057600080fd5b506103c661079f3660046125d2565b610fce565b3480156107b057600080fd5b506103c66107bf3660046125d2565b611067565b3480156107d057600080fd5b506104d36107df3660046124ee565b611074565b3480156107f057600080fd5b5061046360135481565b34801561080657600080fd5b506103c66108153660046124ee565b601d6020526000908152604090205460ff1681565b34801561083657600080fd5b50600d546103c690610100900460ff1681565b34801561085557600080fd5b506104d361086436600461259e565b6110fb565b34801561087557600080fd5b5060085461043a906001600160a01b031681565b34801561089557600080fd5b506104d36108a436600461262f565b611184565b3480156108b557600080fd5b506104d36108c4366004612617565b6111e4565b3480156108d557600080fd5b506104d36108e43660046124ee565b6112b5565b3480156108f557600080fd5b50600f546103c69060ff1681565b34801561090f57600080fd5b50610463600a5481565b34801561092557600080fd5b506103c6610934366004612617565b61133c565b34801561094557600080fd5b5060095461043a906001600160a01b031681565b34801561096557600080fd5b5061046360105481565b34801561097b57600080fd5b5061046361098a366004612526565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156109c157600080fd5b50610463600b5481565b3480156109d757600080fd5b506103c6611377565b3480156109ec57600080fd5b50610463601a5481565b348015610a0257600080fd5b5061046360125481565b348015610a1857600080fd5b506104d3610a273660046124ee565b6113b4565b348015610a3857600080fd5b5061046360165481565b348015610a4e57600080fd5b50610463600c5481565b606060038054610a6790612875565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9390612875565b8015610ae05780601f10610ab557610100808354040283529160200191610ae0565b820191906000526020600020905b815481529060010190602001808311610ac357829003601f168201915b5050505050905090565b6000610af733848461144f565b50600192915050565b6005546001600160a01b03163314610b335760405162461bcd60e51b8152600401610b2a9061271d565b60405180910390fd5b670de0b6b3a76400006103e8610b4860025490565b610b5390600161283f565b610b5d919061281f565b610b67919061281f565b811015610bce5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b6064820152608401610b2a565b610be081670de0b6b3a764000061283f565b600a5550565b6000610bf3848484611573565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610c785760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610b2a565b610c85853385840361144f565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610af7918590610cc7908690612807565b61144f565b6005546001600160a01b03163314610cf65760405162461bcd60e51b8152600401610b2a9061271d565b610d006000611d9e565b565b6005546000906001600160a01b03163314610d2f5760405162461bcd60e51b8152600401610b2a9061271d565b50600d805460ff19169055600190565b6005546001600160a01b03163314610d695760405162461bcd60e51b8152600401610b2a9061271d565b6001600160a01b03919091166000908152601c60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610dbe5760405162461bcd60e51b8152600401610b2a9061271d565b60118390556012829055601381905580610dd88385612807565b610de29190612807565b601081905560631015610df457600080fd5b505050565b6005546001600160a01b03163314610e235760405162461bcd60e51b8152600401610b2a9061271d565b600d805462ffff00191662010100179055565b6005546001600160a01b03163314610e605760405162461bcd60e51b8152600401610b2a9061271d565b600d8054911515620100000262ff000019909216919091179055565b6005546001600160a01b03163314610ea65760405162461bcd60e51b8152600401610b2a9061271d565b6009546040516001600160a01b03918216918316907f3e0ea4f8339b6050ff814971a9814aa39176c149fcf185975c219f33db2342db90600090a3600980546001600160a01b0319166001600160a01b0392909216919091179055565b606060048054610a6790612875565b6005546001600160a01b03163314610f3c5760405162461bcd60e51b8152600401610b2a9061271d565b6006546001600160a01b0383811691161415610fc05760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610b2a565b610fca8282611df0565b5050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156110505760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b2a565b61105d338585840361144f565b5060019392505050565b6000610af7338484611573565b6005546001600160a01b0316331461109e5760405162461bcd60e51b8152600401610b2a9061271d565b6007546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567490600090a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146111255760405162461bcd60e51b8152600401610b2a9061271d565b6001600160a01b0382166000818152601b6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146111ae5760405162461bcd60e51b8152600401610b2a9061271d565b601583905560168290556017819055806111c88385612807565b6111d29190612807565b601481905560631015610df457600080fd5b6005546001600160a01b0316331461120e5760405162461bcd60e51b8152600401610b2a9061271d565b670de0b6b3a76400006103e861122360025490565b61122e90600561283f565b611238919061281f565b611242919061281f565b81101561129d5760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610b2a565b6112af81670de0b6b3a764000061283f565b600c5550565b6005546001600160a01b031633146112df5760405162461bcd60e51b8152600401610b2a9061271d565b6008546040516001600160a01b03918216918316907ffaf1b77ed79f6e898c44dd8ab36b330c7b2fd39bcaab05ed6362480df870396590600090a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546000906001600160a01b031633146113695760405162461bcd60e51b8152600401610b2a9061271d565b50600b81905560015b919050565b6005546000906001600160a01b031633146113a45760405162461bcd60e51b8152600401610b2a9061271d565b50600f805460ff19169055600190565b6005546001600160a01b031633146113de5760405162461bcd60e51b8152600401610b2a9061271d565b6001600160a01b0381166114435760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b2a565b61144c81611d9e565b50565b6001600160a01b0383166114b15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b2a565b6001600160a01b0382166115125760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b2a565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166115995760405162461bcd60e51b8152600401610b2a90612752565b6001600160a01b0382166115bf5760405162461bcd60e51b8152600401610b2a906126da565b806115d057610df483836000611e44565b600d5460ff1615611a69576005546001600160a01b0384811691161480159061160757506005546001600160a01b03838116911614155b801561161b57506001600160a01b03821615155b801561163257506001600160a01b03821661dead14155b80156116485750600654600160a01b900460ff16155b15611a6957600d54610100900460ff166116e0576001600160a01b0383166000908152601b602052604090205460ff168061169b57506001600160a01b0382166000908152601b602052604090205460ff165b6116e05760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610b2a565b600f5460ff1615611803576005546001600160a01b0383811691161480159061173b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b801561175557506006546001600160a01b03838116911614155b1561180357326000908152600e602052604090205443116117f05760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610b2a565b326000908152600e602052604090204390555b6001600160a01b0383166000908152601d602052604090205460ff16801561184457506001600160a01b0382166000908152601c602052604090205460ff16155b1561192857600a548111156118b95760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610b2a565b600c546001600160a01b0383166000908152602081905260409020546118df9083612807565b11156119235760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610b2a565b611a69565b6001600160a01b0382166000908152601d602052604090205460ff16801561196957506001600160a01b0383166000908152601c602052604090205460ff16155b156119df57600a548111156119235760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610b2a565b6001600160a01b0382166000908152601c602052604090205460ff16611a6957600c546001600160a01b038316600090815260208190526040902054611a259083612807565b1115611a695760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610b2a565b30600090815260208190526040902054600b5481108015908190611a955750600d5462010000900460ff165b8015611aab5750600654600160a01b900460ff16155b8015611ad057506001600160a01b0385166000908152601d602052604090205460ff16155b8015611af557506001600160a01b0385166000908152601b602052604090205460ff16155b8015611b1a57506001600160a01b0384166000908152601b602052604090205460ff16155b15611b48576006805460ff60a01b1916600160a01b179055611b3a611f99565b6006805460ff60a01b191690555b6006546001600160a01b0386166000908152601b602052604090205460ff600160a01b909204821615911680611b9657506001600160a01b0385166000908152601b602052604090205460ff165b15611b9f575060005b60008115611d8a576001600160a01b0386166000908152601d602052604090205460ff168015611bd157506000601454115b15611c8f57611bf66064611bf0601454886121d390919063ffffffff16565b906121e6565b905060145460165482611c09919061283f565b611c13919061281f565b60196000828254611c249190612807565b9091555050601454601754611c39908361283f565b611c43919061281f565b601a6000828254611c549190612807565b9091555050601454601554611c69908361283f565b611c73919061281f565b60186000828254611c849190612807565b90915550611d6c9050565b6001600160a01b0387166000908152601d602052604090205460ff168015611cb957506000601054115b15611d6c57611cd86064611bf0601054886121d390919063ffffffff16565b905060105460125482611ceb919061283f565b611cf5919061281f565b60196000828254611d069190612807565b9091555050601054601354611d1b908361283f565b611d25919061281f565b601a6000828254611d369190612807565b9091555050601054601154611d4b908361283f565b611d55919061281f565b60186000828254611d669190612807565b90915550505b8015611d7d57611d7d873083611e44565b611d87818661285e565b94505b611d95878787611e44565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000818152601d6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611e6a5760405162461bcd60e51b8152600401610b2a90612752565b6001600160a01b038216611e905760405162461bcd60e51b8152600401610b2a906126da565b6001600160a01b03831660009081526020819052604090205481811015611f085760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610b2a565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611f3f908490612807565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f8b91815260200190565b60405180910390a350505050565b3060009081526020819052604081205490506000601a54601854601954611fc09190612807565b611fca9190612807565b90506000821580611fd9575081155b15611fe357505050565b600b54611ff190601461283f565b83111561200957600b5461200690601461283f565b92505b60006002836019548661201c919061283f565b612026919061281f565b612030919061281f565b9050600061203e85836121f2565b90504761204a826121fe565b600061205647836121f2565b9050600061207387611bf0601854856121d390919063ffffffff16565b9050600061209088611bf0601a54866121d390919063ffffffff16565b905060008161209f848661285e565b6120a9919061285e565b600060198190556018819055601a8190556008546040519293506001600160a01b031691849181818185875af1925050503d8060008114612106576040519150601f19603f3d011682016040523d82523d6000602084013e61210b565b606091505b5090985050861580159061211f5750600081115b156121725761212e87826123e9565b601954604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6007546040516001600160a01b03909116904790600081818185875af1925050503d80600081146121bf576040519150601f19603f3d011682016040523d82523d6000602084013e6121c4565b606091505b50505050505050505050505050565b60006121df828461283f565b9392505050565b60006121df828461281f565b60006121df828461285e565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061224157634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156122ba57600080fd5b505afa1580156122ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f2919061250a565b8160018151811061231357634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b03168152505061235e307f00000000000000000000000000000000000000000000000000000000000000008461144f565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906123b3908590600090869030904290600401612797565b600060405180830381600087803b1580156123cd57600080fd5b505af11580156123e1573d6000803e3d6000fd5b505050505050565b612414307f00000000000000000000000000000000000000000000000000000000000000008461144f565b60095460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b0391821660848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000009091169063f305d71990839060c4016060604051808303818588803b15801561249e57600080fd5b505af11580156124b2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124d7919061265a565b5050505050565b8035801515811461137257600080fd5b6000602082840312156124ff578081fd5b81356121df816128c6565b60006020828403121561251b578081fd5b81516121df816128c6565b60008060408385031215612538578081fd5b8235612543816128c6565b91506020830135612553816128c6565b809150509250929050565b600080600060608486031215612572578081fd5b833561257d816128c6565b9250602084013561258d816128c6565b929592945050506040919091013590565b600080604083850312156125b0578182fd5b82356125bb816128c6565b91506125c9602084016124de565b90509250929050565b600080604083850312156125e4578182fd5b82356125ef816128c6565b946020939093013593505050565b60006020828403121561260e578081fd5b6121df826124de565b600060208284031215612628578081fd5b5035919050565b600080600060608486031215612643578283fd5b505081359360208301359350604090920135919050565b60008060006060848603121561266e578283fd5b8351925060208401519150604084015190509250925092565b6000602080835283518082850152825b818110156126b357858101830151858201604001528201612697565b818111156126c45783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156127e65784516001600160a01b0316835293830193918301916001016127c1565b50506001600160a01b03969096166060850152505050608001529392505050565b6000821982111561281a5761281a6128b0565b500190565b60008261283a57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615612859576128596128b0565b500290565b600082821015612870576128706128b0565b500390565b600181811c9082168061288957607f821691505b602082108114156128aa57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461144c57600080fdfea26469706673582212206b76bbc2814e49d5ed87339a1ef20d9e88ba61fcc884550851fe6a2dd5e4a84d64736f6c634300080400334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572000000000000000000000000610827f95716713653394957c5e4bd90c67c76e7

Deployed Bytecode

0x60806040526004361061036f5760003560e01c8063924de9b7116101c6578063c79c04fd116100f7578063e2f4560511610095578063f11a24d31161006f578063f11a24d3146109f6578063f2fde38b14610a0c578063f637434214610a2c578063f8b45b0514610a4257600080fd5b8063e2f45605146109b5578063e884f260146109cb578063ef8700e5146109e057600080fd5b8063d257b34f116100d1578063d257b34f14610919578063d469801614610939578063d85ba06314610959578063dd62ed3e1461096f57600080fd5b8063c79c04fd146108c9578063c876d0b9146108e9578063c8c8ebe41461090357600080fd5b8063b204141111610164578063c02466681161013e578063c024666814610849578063c04a541414610869578063c17b5b8c14610889578063c18bc195146108a957600080fd5b8063b2041411146107e4578063b62496f5146107fa578063bbc0c7421461082a57600080fd5b80639a7a23d6116101a05780639a7a23d614610764578063a457c2d714610784578063a9059cbb146107a4578063aacebbe3146107c457600080fd5b8063924de9b71461070f57806392aa37731461072f57806395d89b411461074f57600080fd5b80634a62bb65116102a05780637571336a1161023e5780638095d564116102185780638095d564146106a65780638a8c523c146106c65780638da5cb5b146106db57806392136913146106f957600080fd5b80637571336a1461065057806375f0a874146106705780637bce5a041461069057600080fd5b80636ddd17131161027a5780636ddd1713146105d057806370a08231146105f0578063715018a614610626578063751039fc1461063b57600080fd5b80634a62bb65146105675780634fbee193146105815780636a486a8e146105ba57600080fd5b80631f3fed8f1161030d57806327c8f835116102e757806327c8f835146104f5578063313ce5671461050b578063395093511461052757806349bd5a5e1461054757600080fd5b80631f3fed8f1461049d578063203e727e146104b357806323b872dd146104d557600080fd5b80631694505e116103495780631694505e1461040657806318160ddd1461045257806318a94cf1146104715780631a8145bb1461048757600080fd5b806306fdde031461037b578063095ea7b3146103a657806310d5de53146103d657600080fd5b3661037657005b600080fd5b34801561038757600080fd5b50610390610a58565b60405161039d9190612687565b60405180910390f35b3480156103b257600080fd5b506103c66103c13660046125d2565b610aea565b604051901515815260200161039d565b3480156103e257600080fd5b506103c66103f13660046124ee565b601c6020526000908152604090205460ff1681565b34801561041257600080fd5b5061043a7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b03909116815260200161039d565b34801561045e57600080fd5b506002545b60405190815260200161039d565b34801561047d57600080fd5b5061046360175481565b34801561049357600080fd5b5061046360195481565b3480156104a957600080fd5b5061046360185481565b3480156104bf57600080fd5b506104d36104ce366004612617565b610b00565b005b3480156104e157600080fd5b506103c66104f036600461255e565b610be6565b34801561050157600080fd5b5061043a61dead81565b34801561051757600080fd5b506040516012815260200161039d565b34801561053357600080fd5b506103c66105423660046125d2565b610c90565b34801561055357600080fd5b5060065461043a906001600160a01b031681565b34801561057357600080fd5b50600d546103c69060ff1681565b34801561058d57600080fd5b506103c661059c3660046124ee565b6001600160a01b03166000908152601b602052604090205460ff1690565b3480156105c657600080fd5b5061046360145481565b3480156105dc57600080fd5b50600d546103c69062010000900460ff1681565b3480156105fc57600080fd5b5061046361060b3660046124ee565b6001600160a01b031660009081526020819052604090205490565b34801561063257600080fd5b506104d3610ccc565b34801561064757600080fd5b506103c6610d02565b34801561065c57600080fd5b506104d361066b36600461259e565b610d3f565b34801561067c57600080fd5b5060075461043a906001600160a01b031681565b34801561069c57600080fd5b5061046360115481565b3480156106b257600080fd5b506104d36106c136600461262f565b610d94565b3480156106d257600080fd5b506104d3610df9565b3480156106e757600080fd5b506005546001600160a01b031661043a565b34801561070557600080fd5b5061046360155481565b34801561071b57600080fd5b506104d361072a3660046125fd565b610e36565b34801561073b57600080fd5b506104d361074a3660046124ee565b610e7c565b34801561075b57600080fd5b50610390610f03565b34801561077057600080fd5b506104d361077f36600461259e565b610f12565b34801561079057600080fd5b506103c661079f3660046125d2565b610fce565b3480156107b057600080fd5b506103c66107bf3660046125d2565b611067565b3480156107d057600080fd5b506104d36107df3660046124ee565b611074565b3480156107f057600080fd5b5061046360135481565b34801561080657600080fd5b506103c66108153660046124ee565b601d6020526000908152604090205460ff1681565b34801561083657600080fd5b50600d546103c690610100900460ff1681565b34801561085557600080fd5b506104d361086436600461259e565b6110fb565b34801561087557600080fd5b5060085461043a906001600160a01b031681565b34801561089557600080fd5b506104d36108a436600461262f565b611184565b3480156108b557600080fd5b506104d36108c4366004612617565b6111e4565b3480156108d557600080fd5b506104d36108e43660046124ee565b6112b5565b3480156108f557600080fd5b50600f546103c69060ff1681565b34801561090f57600080fd5b50610463600a5481565b34801561092557600080fd5b506103c6610934366004612617565b61133c565b34801561094557600080fd5b5060095461043a906001600160a01b031681565b34801561096557600080fd5b5061046360105481565b34801561097b57600080fd5b5061046361098a366004612526565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156109c157600080fd5b50610463600b5481565b3480156109d757600080fd5b506103c6611377565b3480156109ec57600080fd5b50610463601a5481565b348015610a0257600080fd5b5061046360125481565b348015610a1857600080fd5b506104d3610a273660046124ee565b6113b4565b348015610a3857600080fd5b5061046360165481565b348015610a4e57600080fd5b50610463600c5481565b606060038054610a6790612875565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9390612875565b8015610ae05780601f10610ab557610100808354040283529160200191610ae0565b820191906000526020600020905b815481529060010190602001808311610ac357829003601f168201915b5050505050905090565b6000610af733848461144f565b50600192915050565b6005546001600160a01b03163314610b335760405162461bcd60e51b8152600401610b2a9061271d565b60405180910390fd5b670de0b6b3a76400006103e8610b4860025490565b610b5390600161283f565b610b5d919061281f565b610b67919061281f565b811015610bce5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b6064820152608401610b2a565b610be081670de0b6b3a764000061283f565b600a5550565b6000610bf3848484611573565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610c785760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610b2a565b610c85853385840361144f565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610af7918590610cc7908690612807565b61144f565b6005546001600160a01b03163314610cf65760405162461bcd60e51b8152600401610b2a9061271d565b610d006000611d9e565b565b6005546000906001600160a01b03163314610d2f5760405162461bcd60e51b8152600401610b2a9061271d565b50600d805460ff19169055600190565b6005546001600160a01b03163314610d695760405162461bcd60e51b8152600401610b2a9061271d565b6001600160a01b03919091166000908152601c60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610dbe5760405162461bcd60e51b8152600401610b2a9061271d565b60118390556012829055601381905580610dd88385612807565b610de29190612807565b601081905560631015610df457600080fd5b505050565b6005546001600160a01b03163314610e235760405162461bcd60e51b8152600401610b2a9061271d565b600d805462ffff00191662010100179055565b6005546001600160a01b03163314610e605760405162461bcd60e51b8152600401610b2a9061271d565b600d8054911515620100000262ff000019909216919091179055565b6005546001600160a01b03163314610ea65760405162461bcd60e51b8152600401610b2a9061271d565b6009546040516001600160a01b03918216918316907f3e0ea4f8339b6050ff814971a9814aa39176c149fcf185975c219f33db2342db90600090a3600980546001600160a01b0319166001600160a01b0392909216919091179055565b606060048054610a6790612875565b6005546001600160a01b03163314610f3c5760405162461bcd60e51b8152600401610b2a9061271d565b6006546001600160a01b0383811691161415610fc05760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610b2a565b610fca8282611df0565b5050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156110505760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b2a565b61105d338585840361144f565b5060019392505050565b6000610af7338484611573565b6005546001600160a01b0316331461109e5760405162461bcd60e51b8152600401610b2a9061271d565b6007546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567490600090a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146111255760405162461bcd60e51b8152600401610b2a9061271d565b6001600160a01b0382166000818152601b6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146111ae5760405162461bcd60e51b8152600401610b2a9061271d565b601583905560168290556017819055806111c88385612807565b6111d29190612807565b601481905560631015610df457600080fd5b6005546001600160a01b0316331461120e5760405162461bcd60e51b8152600401610b2a9061271d565b670de0b6b3a76400006103e861122360025490565b61122e90600561283f565b611238919061281f565b611242919061281f565b81101561129d5760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610b2a565b6112af81670de0b6b3a764000061283f565b600c5550565b6005546001600160a01b031633146112df5760405162461bcd60e51b8152600401610b2a9061271d565b6008546040516001600160a01b03918216918316907ffaf1b77ed79f6e898c44dd8ab36b330c7b2fd39bcaab05ed6362480df870396590600090a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546000906001600160a01b031633146113695760405162461bcd60e51b8152600401610b2a9061271d565b50600b81905560015b919050565b6005546000906001600160a01b031633146113a45760405162461bcd60e51b8152600401610b2a9061271d565b50600f805460ff19169055600190565b6005546001600160a01b031633146113de5760405162461bcd60e51b8152600401610b2a9061271d565b6001600160a01b0381166114435760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b2a565b61144c81611d9e565b50565b6001600160a01b0383166114b15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b2a565b6001600160a01b0382166115125760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b2a565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166115995760405162461bcd60e51b8152600401610b2a90612752565b6001600160a01b0382166115bf5760405162461bcd60e51b8152600401610b2a906126da565b806115d057610df483836000611e44565b600d5460ff1615611a69576005546001600160a01b0384811691161480159061160757506005546001600160a01b03838116911614155b801561161b57506001600160a01b03821615155b801561163257506001600160a01b03821661dead14155b80156116485750600654600160a01b900460ff16155b15611a6957600d54610100900460ff166116e0576001600160a01b0383166000908152601b602052604090205460ff168061169b57506001600160a01b0382166000908152601b602052604090205460ff165b6116e05760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610b2a565b600f5460ff1615611803576005546001600160a01b0383811691161480159061173b57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b031614155b801561175557506006546001600160a01b03838116911614155b1561180357326000908152600e602052604090205443116117f05760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610b2a565b326000908152600e602052604090204390555b6001600160a01b0383166000908152601d602052604090205460ff16801561184457506001600160a01b0382166000908152601c602052604090205460ff16155b1561192857600a548111156118b95760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610b2a565b600c546001600160a01b0383166000908152602081905260409020546118df9083612807565b11156119235760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610b2a565b611a69565b6001600160a01b0382166000908152601d602052604090205460ff16801561196957506001600160a01b0383166000908152601c602052604090205460ff16155b156119df57600a548111156119235760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610b2a565b6001600160a01b0382166000908152601c602052604090205460ff16611a6957600c546001600160a01b038316600090815260208190526040902054611a259083612807565b1115611a695760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610b2a565b30600090815260208190526040902054600b5481108015908190611a955750600d5462010000900460ff165b8015611aab5750600654600160a01b900460ff16155b8015611ad057506001600160a01b0385166000908152601d602052604090205460ff16155b8015611af557506001600160a01b0385166000908152601b602052604090205460ff16155b8015611b1a57506001600160a01b0384166000908152601b602052604090205460ff16155b15611b48576006805460ff60a01b1916600160a01b179055611b3a611f99565b6006805460ff60a01b191690555b6006546001600160a01b0386166000908152601b602052604090205460ff600160a01b909204821615911680611b9657506001600160a01b0385166000908152601b602052604090205460ff165b15611b9f575060005b60008115611d8a576001600160a01b0386166000908152601d602052604090205460ff168015611bd157506000601454115b15611c8f57611bf66064611bf0601454886121d390919063ffffffff16565b906121e6565b905060145460165482611c09919061283f565b611c13919061281f565b60196000828254611c249190612807565b9091555050601454601754611c39908361283f565b611c43919061281f565b601a6000828254611c549190612807565b9091555050601454601554611c69908361283f565b611c73919061281f565b60186000828254611c849190612807565b90915550611d6c9050565b6001600160a01b0387166000908152601d602052604090205460ff168015611cb957506000601054115b15611d6c57611cd86064611bf0601054886121d390919063ffffffff16565b905060105460125482611ceb919061283f565b611cf5919061281f565b60196000828254611d069190612807565b9091555050601054601354611d1b908361283f565b611d25919061281f565b601a6000828254611d369190612807565b9091555050601054601154611d4b908361283f565b611d55919061281f565b60186000828254611d669190612807565b90915550505b8015611d7d57611d7d873083611e44565b611d87818661285e565b94505b611d95878787611e44565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000818152601d6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611e6a5760405162461bcd60e51b8152600401610b2a90612752565b6001600160a01b038216611e905760405162461bcd60e51b8152600401610b2a906126da565b6001600160a01b03831660009081526020819052604090205481811015611f085760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610b2a565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611f3f908490612807565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f8b91815260200190565b60405180910390a350505050565b3060009081526020819052604081205490506000601a54601854601954611fc09190612807565b611fca9190612807565b90506000821580611fd9575081155b15611fe357505050565b600b54611ff190601461283f565b83111561200957600b5461200690601461283f565b92505b60006002836019548661201c919061283f565b612026919061281f565b612030919061281f565b9050600061203e85836121f2565b90504761204a826121fe565b600061205647836121f2565b9050600061207387611bf0601854856121d390919063ffffffff16565b9050600061209088611bf0601a54866121d390919063ffffffff16565b905060008161209f848661285e565b6120a9919061285e565b600060198190556018819055601a8190556008546040519293506001600160a01b031691849181818185875af1925050503d8060008114612106576040519150601f19603f3d011682016040523d82523d6000602084013e61210b565b606091505b5090985050861580159061211f5750600081115b156121725761212e87826123e9565b601954604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6007546040516001600160a01b03909116904790600081818185875af1925050503d80600081146121bf576040519150601f19603f3d011682016040523d82523d6000602084013e6121c4565b606091505b50505050505050505050505050565b60006121df828461283f565b9392505050565b60006121df828461281f565b60006121df828461285e565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061224157634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156122ba57600080fd5b505afa1580156122ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f2919061250a565b8160018151811061231357634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b03168152505061235e307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461144f565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906123b3908590600090869030904290600401612797565b600060405180830381600087803b1580156123cd57600080fd5b505af11580156123e1573d6000803e3d6000fd5b505050505050565b612414307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461144f565b60095460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b0391821660848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9091169063f305d71990839060c4016060604051808303818588803b15801561249e57600080fd5b505af11580156124b2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124d7919061265a565b5050505050565b8035801515811461137257600080fd5b6000602082840312156124ff578081fd5b81356121df816128c6565b60006020828403121561251b578081fd5b81516121df816128c6565b60008060408385031215612538578081fd5b8235612543816128c6565b91506020830135612553816128c6565b809150509250929050565b600080600060608486031215612572578081fd5b833561257d816128c6565b9250602084013561258d816128c6565b929592945050506040919091013590565b600080604083850312156125b0578182fd5b82356125bb816128c6565b91506125c9602084016124de565b90509250929050565b600080604083850312156125e4578182fd5b82356125ef816128c6565b946020939093013593505050565b60006020828403121561260e578081fd5b6121df826124de565b600060208284031215612628578081fd5b5035919050565b600080600060608486031215612643578283fd5b505081359360208301359350604090920135919050565b60008060006060848603121561266e578283fd5b8351925060208401519150604084015190509250925092565b6000602080835283518082850152825b818110156126b357858101830151858201604001528201612697565b818111156126c45783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156127e65784516001600160a01b0316835293830193918301916001016127c1565b50506001600160a01b03969096166060850152505050608001529392505050565b6000821982111561281a5761281a6128b0565b500190565b60008261283a57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615612859576128596128b0565b500290565b600082821015612870576128706128b0565b500390565b600181811c9082168061288957607f821691505b602082108114156128aa57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461144c57600080fdfea26469706673582212206b76bbc2814e49d5ed87339a1ef20d9e88ba61fcc884550851fe6a2dd5e4a84d64736f6c63430008040033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000610827f95716713653394957c5e4bd90c67c76e7

-----Decoded View---------------
Arg [0] : _helper (address): 0x610827F95716713653394957c5e4bD90C67C76e7

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000610827f95716713653394957c5e4bd90c67c76e7


Deployed Bytecode Sourcemap

15105:15864:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2802:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3716:169;;;;;;;;;;-1:-1:-1;3716:169:0;;;;;:::i;:::-;;:::i;:::-;;;4478:14:1;;4471:22;4453:41;;4441:2;4426:18;3716:169:0;4408:92:1;16375:63:0;;;;;;;;;;-1:-1:-1;16375:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15180:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3657:32:1;;;3639:51;;3627:2;3612:18;15180:51:0;3594:102:1;3123:108:0;;;;;;;;;;-1:-1:-1;3211:12:0;;3123:108;;;12375:25:1;;;12363:2;12348:18;3123:108:0;12330:76:1;16150:33:0;;;;;;;;;;;;;;;;16232;;;;;;;;;;;;;;;;16192;;;;;;;;;;;;;;;;20634:238;;;;;;;;;;-1:-1:-1;20634:238:0;;;;;:::i;:::-;;:::i;:::-;;3893:492;;;;;;;;;;-1:-1:-1;3893:492:0;;;;;:::i;:::-;;:::i;15273:53::-;;;;;;;;;;;;15319:6;15273:53;;3022:93;;;;;;;;;;-1:-1:-1;3022:93:0;;3105:2;13865:36:1;;13853:2;13838:18;3022:93:0;13820:87:1;4393:215:0;;;;;;;;;;-1:-1:-1;4393:215:0;;;;;:::i;:::-;;:::i;15238:28::-;;;;;;;;;;-1:-1:-1;15238:28:0;;;;-1:-1:-1;;;;;15238:28:0;;;15595:33;;;;;;;;;;-1:-1:-1;15595:33:0;;;;;;;;23595:126;;;;;;;;;;-1:-1:-1;23595:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;23685:28:0;23661:4;23685:28;;;:19;:28;;;;;;;;;23595:126;16039:28;;;;;;;;;;;;;;;;15675:31;;;;;;;;;;-1:-1:-1;15675:31:0;;;;;;;;;;;3239:127;;;;;;;;;;-1:-1:-1;3239:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3340:18:0;3313:7;3340:18;;;;;;;;;;;;3239:127;924:103;;;;;;;;;;;;;:::i;19812:121::-;;;;;;;;;;;;;:::i;21107:167::-;;;;;;;;;;-1:-1:-1;21107:167:0;;;;;:::i;:::-;;:::i;15365:30::-;;;;;;;;;;-1:-1:-1;15365:30:0;;;;-1:-1:-1;;;;;15365:30:0;;;15924;;;;;;;;;;;;;;;;21478:402;;;;;;;;;;-1:-1:-1;21478:402:0;;;;;:::i;:::-;;:::i;19648:112::-;;;;;;;;;;;;;:::i;701:87::-;;;;;;;;;;-1:-1:-1;774:6:0;;-1:-1:-1;;;;;774:6:0;701:87;;16074:31;;;;;;;;;;;;;;;;21370:100;;;;;;;;;;-1:-1:-1;21370:100:0;;;;;:::i;:::-;;:::i;23379:208::-;;;;;;;;;;-1:-1:-1;23379:208:0;;;;;:::i;:::-;;:::i;2910:104::-;;;;;;;;;;;;;:::i;22497:265::-;;;;;;;;;;-1:-1:-1;22497:265:0;;;;;:::i;:::-;;:::i;4616:413::-;;;;;;;;;;-1:-1:-1;4616:413:0;;;;;:::i;:::-;;:::i;3374:175::-;;;;;;;;;;-1:-1:-1;3374:175:0;;;;;:::i;:::-;;:::i;22966:208::-;;;;;;;;;;-1:-1:-1;22966:208:0;;;;;:::i;:::-;;:::i;15998:32::-;;;;;;;;;;;;;;;;16447:57;;;;;;;;;;-1:-1:-1;16447:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15635:33;;;;;;;;;;-1:-1:-1;15635:33:0;;;;;;;;;;;22307:182;;;;;;;;;;-1:-1:-1;22307:182:0;;;;;:::i;:::-;;:::i;15402:32::-;;;;;;;;;;-1:-1:-1;15402:32:0;;;;-1:-1:-1;;;;;15402:32:0;;;21888:411;;;;;;;;;;-1:-1:-1;21888:411:0;;;;;:::i;:::-;;:::i;20880:219::-;;;;;;;;;;-1:-1:-1;20880:219:0;;;;;:::i;:::-;;:::i;23182:189::-;;;;;;;;;;-1:-1:-1;23182:189:0;;;;;:::i;:::-;;:::i;15841:40::-;;;;;;;;;;-1:-1:-1;15841:40:0;;;;;;;;15480:35;;;;;;;;;;;;;;;;20199:427;;;;;;;;;;-1:-1:-1;20199:427:0;;;;;:::i;:::-;;:::i;15441:30::-;;;;;;;;;;-1:-1:-1;15441:30:0;;;;-1:-1:-1;;;;;15441:30:0;;;15890:27;;;;;;;;;;;;;;;;3557:151;;;;;;;;;;-1:-1:-1;3557:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;3673:18:0;;;3646:7;3673:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3557:151;15522:33;;;;;;;;;;;;;;;;19994:135;;;;;;;;;;;;;:::i;16272:35::-;;;;;;;;;;;;;;;;15961:30;;;;;;;;;;;;;;;;1035:201;;;;;;;;;;-1:-1:-1;1035:201:0;;;;;:::i;:::-;;:::i;16112:31::-;;;;;;;;;;;;;;;;15562:24;;;;;;;;;;;;;;;;2802:100;2856:13;2889:5;2882:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2802:100;:::o;3716:169::-;3799:4;3816:39;327:10;3839:7;3848:6;3816:8;:39::i;:::-;-1:-1:-1;3873:4:0;3716:169;;;;:::o;20634:238::-;774:6;;-1:-1:-1;;;;;774:6:0;327:10;836:23;828:68;;;;-1:-1:-1;;;828:68:0;;;;;;;:::i;:::-;;;;;;;;;20757:4:::1;20749;20728:13;3211:12:::0;;;3123:108;20728:13:::1;:17;::::0;20744:1:::1;20728:17;:::i;:::-;20727:26;;;;:::i;:::-;20726:35;;;;:::i;:::-;20716:6;:45;;20708:105;;;::::0;-1:-1:-1;;;20708:105:0;;12015:2:1;20708:105:0::1;::::0;::::1;11997:21:1::0;12054:2;12034:18;;;12027:30;12093:34;12073:18;;;12066:62;-1:-1:-1;;;12144:18:1;;;12137:45;12199:19;;20708:105:0::1;11987:237:1::0;20708:105:0::1;20847:17;:6:::0;20857::::1;20847:17;:::i;:::-;20824:20;:40:::0;-1:-1:-1;20634:238:0:o;3893:492::-;4033:4;4050:36;4060:6;4068:9;4079:6;4050:9;:36::i;:::-;-1:-1:-1;;;;;4126:19:0;;4099:24;4126:19;;;:11;:19;;;;;;;;327:10;4126:33;;;;;;;;4178:26;;;;4170:79;;;;-1:-1:-1;;;4170:79:0;;9680:2:1;4170:79:0;;;9662:21:1;9719:2;9699:18;;;9692:30;9758:34;9738:18;;;9731:62;-1:-1:-1;;;9809:18:1;;;9802:38;9857:19;;4170:79:0;9652:230:1;4170:79:0;4285:57;4294:6;327:10;4335:6;4316:16;:25;4285:8;:57::i;:::-;-1:-1:-1;4373:4:0;;3893:492;-1:-1:-1;;;;3893:492:0:o;4393:215::-;327:10;4481:4;4530:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4530:34:0;;;;;;;;;;4481:4;;4498:80;;4521:7;;4530:47;;4567:10;;4530:47;:::i;:::-;4498:8;:80::i;924:103::-;774:6;;-1:-1:-1;;;;;774:6:0;327:10;836:23;828:68;;;;-1:-1:-1;;;828:68:0;;;;;;;:::i;:::-;989:30:::1;1016:1;989:18;:30::i;:::-;924:103::o:0;19812:121::-;774:6;;19864:4;;-1:-1:-1;;;;;774:6:0;327:10;836:23;828:68;;;;-1:-1:-1;;;828:68:0;;;;;;;:::i;:::-;-1:-1:-1;19881:14:0::1;:22:::0;;-1:-1:-1;;19881:22:0::1;::::0;;;19812:121;:::o;21107:167::-;774:6;;-1:-1:-1;;;;;774:6:0;327:10;836:23;828:68;;;;-1:-1:-1;;;828:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21220:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;21220:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21107:167::o;21478:402::-;774:6;;-1:-1:-1;;;;;774:6:0;327:10;836:23;828:68;;;;-1:-1:-1;;;828:68:0;;;;;;;:::i;:::-;21636:15:::1;:31:::0;;;21678:15:::1;:31:::0;;;21720:17:::1;:35:::0;;;21740:15;21781:33:::1;21696:13:::0;21654;21781:33:::1;:::i;:::-;:53;;;;:::i;:::-;21766:12;:68:::0;;;21869:2:::1;-1:-1:-1::0;21853:18:0::1;21845:27;;;::::0;::::1;;21478:402:::0;;;:::o;19648:112::-;774:6;;-1:-1:-1;;;;;774:6:0;327:10;836:23;828:68;;;;-1:-1:-1;;;828:68:0;;;;;;;:::i;:::-;19703:13:::1;:20:::0;;-1:-1:-1;;19734:18:0;;;;;19648:112::o;21370:100::-;774:6;;-1:-1:-1;;;;;774:6:0;327:10;836:23;828:68;;;;-1:-1:-1;;;828:68:0;;;;;;;:::i;:::-;21441:11:::1;:21:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;21441:21:0;;::::1;::::0;;;::::1;::::0;;21370:100::o;23379:208::-;774:6;;-1:-1:-1;;;;;774:6:0;327:10;836:23;828:68;;;;-1:-1:-1;;;828:68:0;;;;;;;:::i;:::-;23516:15:::1;::::0;23473:59:::1;::::0;-1:-1:-1;;;;;23516:15:0;;::::1;::::0;23473:59;::::1;::::0;::::1;::::0;23516:15:::1;::::0;23473:59:::1;23543:15;:36:::0;;-1:-1:-1;;;;;;23543:36:0::1;-1:-1:-1::0;;;;;23543:36:0;;;::::1;::::0;;;::::1;::::0;;23379:208::o;2910:104::-;2966:13;2999:7;2992:14;;;;;:::i;22497:265::-;774:6;;-1:-1:-1;;;;;774:6:0;327:10;836:23;828:68;;;;-1:-1:-1;;;828:68:0;;;;;;;:::i;:::-;22627:13:::1;::::0;-1:-1:-1;;;;;22619:21:0;;::::1;22627:13:::0;::::1;22619:21;;22611:91;;;::::0;-1:-1:-1;;;22611:91:0;;7520:2:1;22611:91:0::1;::::0;::::1;7502:21:1::0;7559:2;7539:18;;;7532:30;7598:34;7578:18;;;7571:62;7669:27;7649:18;;;7642:55;7714:19;;22611:91:0::1;7492:247:1::0;22611:91:0::1;22713:41;22742:4;22748:5;22713:28;:41::i;:::-;22497:265:::0;;:::o;4616:413::-;327:10;4709:4;4753:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4753:34:0;;;;;;;;;;4806:35;;;;4798:85;;;;-1:-1:-1;;;4798:85:0;;11609:2:1;4798:85:0;;;11591:21:1;11648:2;11628:18;;;11621:30;11687:34;11667:18;;;11660:62;-1:-1:-1;;;11738:18:1;;;11731:35;11783:19;;4798:85:0;11581:227:1;4798:85:0;4919:67;327:10;4942:7;4970:15;4951:16;:34;4919:8;:67::i;:::-;-1:-1:-1;5017:4:0;;4616:413;-1:-1:-1;;;4616:413:0:o;3374:175::-;3460:4;3477:42;327:10;3501:9;3512:6;3477:9;:42::i;22966:208::-;774:6;;-1:-1:-1;;;;;774:6:0;327:10;836:23;828:68;;;;-1:-1:-1;;;828:68:0;;;;;;;:::i;:::-;23103:15:::1;::::0;23060:59:::1;::::0;-1:-1:-1;;;;;23103:15:0;;::::1;::::0;23060:59;::::1;::::0;::::1;::::0;23103:15:::1;::::0;23060:59:::1;23130:15;:36:::0;;-1:-1:-1;;;;;;23130:36:0::1;-1:-1:-1::0;;;;;23130:36:0;;;::::1;::::0;;;::::1;::::0;;22966:208::o;22307:182::-;774:6;;-1:-1:-1;;;;;774:6:0;327:10;836:23;828:68;;;;-1:-1:-1;;;828:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22392:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;22392:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;22447:34;;4453:41:1;;;22447:34:0::1;::::0;4426:18:1;22447:34:0::1;;;;;;;22307:182:::0;;:::o;21888:411::-;774:6;;-1:-1:-1;;;;;774:6:0;327:10;836:23;828:68;;;;-1:-1:-1;;;828:68:0;;;;;;;:::i;:::-;22047:16:::1;:32:::0;;;22090:16:::1;:32:::0;;;22133:18:::1;:36:::0;;;22154:15;22196:35:::1;22109:13:::0;22066;22196:35:::1;:::i;:::-;:56;;;;:::i;:::-;22180:13;:72:::0;;;22288:2:::1;-1:-1:-1::0;22271:19:0::1;22263:28;;;::::0;::::1;20880:219:::0;774:6;;-1:-1:-1;;;;;774:6:0;327:10;836:23;828:68;;;;-1:-1:-1;;;828:68:0;;;;;;;:::i;:::-;21006:4:::1;20998;20977:13;3211:12:::0;;;3123:108;20977:13:::1;:17;::::0;20993:1:::1;20977:17;:::i;:::-;20976:26;;;;:::i;:::-;20975:35;;;;:::i;:::-;20965:6;:45;;20957:94;;;::::0;-1:-1:-1;;;20957:94:0;;7115:2:1;20957:94:0::1;::::0;::::1;7097:21:1::0;7154:2;7134:18;;;7127:30;7193:34;7173:18;;;7166:62;-1:-1:-1;;;7244:18:1;;;7237:34;7288:19;;20957:94:0::1;7087:226:1::0;20957:94:0::1;21074:17;:6:::0;21084::::1;21074:17;:::i;:::-;21062:9;:29:::0;-1:-1:-1;20880:219:0:o;23182:189::-;774:6;;-1:-1:-1;;;;;774:6:0;327:10;836:23;828:68;;;;-1:-1:-1;;;828:68:0;;;;;;;:::i;:::-;23305:17:::1;::::0;23269:54:::1;::::0;-1:-1:-1;;;;;23305:17:0;;::::1;::::0;23269:54;::::1;::::0;::::1;::::0;23305:17:::1;::::0;23269:54:::1;23334:17;:29:::0;;-1:-1:-1;;;;;;23334:29:0::1;-1:-1:-1::0;;;;;23334:29:0;;;::::1;::::0;;;::::1;::::0;;23182:189::o;20199:427::-;774:6;;20307:4;;-1:-1:-1;;;;;774:6:0;327:10;836:23;828:68;;;;-1:-1:-1;;;828:68:0;;;;;;;:::i;:::-;-1:-1:-1;20566:18:0::1;:30:::0;;;20614:4:::1;907:1;20199:427:::0;;;:::o;19994:135::-;774:6;;20054:4;;-1:-1:-1;;;;;774:6:0;327:10;836:23;828:68;;;;-1:-1:-1;;;828:68:0;;;;;;;:::i;:::-;-1:-1:-1;20071:20:0::1;:28:::0;;-1:-1:-1;;20071:28:0::1;::::0;;;19994:135;:::o;1035:201::-;774:6;;-1:-1:-1;;;;;774:6:0;327:10;836:23;828:68;;;;-1:-1:-1;;;828:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1124:22:0;::::1;1116:73;;;::::0;-1:-1:-1;;;1116:73:0;;6305:2:1;1116:73:0::1;::::0;::::1;6287:21:1::0;6344:2;6324:18;;;6317:30;6383:34;6363:18;;;6356:62;-1:-1:-1;;;6434:18:1;;;6427:36;6480:19;;1116:73:0::1;6277:228:1::0;1116:73:0::1;1200:28;1219:8;1200:18;:28::i;:::-;1035:201:::0;:::o;6784:380::-;-1:-1:-1;;;;;6920:19:0;;6912:68;;;;-1:-1:-1;;;6912:68:0;;10856:2:1;6912:68:0;;;10838:21:1;10895:2;10875:18;;;10868:30;10934:34;10914:18;;;10907:62;-1:-1:-1;;;10985:18:1;;;10978:34;11029:19;;6912:68:0;10828:226:1;6912:68:0;-1:-1:-1;;;;;6999:21:0;;6991:68;;;;-1:-1:-1;;;6991:68:0;;6712:2:1;6991:68:0;;;6694:21:1;6751:2;6731:18;;;6724:30;6790:34;6770:18;;;6763:62;-1:-1:-1;;;6841:18:1;;;6834:32;6883:19;;6991:68:0;6684:224:1;6991:68:0;-1:-1:-1;;;;;7072:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7124:32;;12375:25:1;;;7124:32:0;;12348:18:1;7124:32:0;;;;;;;6784:380;;;:::o;23779:4265::-;-1:-1:-1;;;;;23911:18:0;;23903:68;;;;-1:-1:-1;;;23903:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23990:16:0;;23982:64;;;;-1:-1:-1;;;23982:64:0;;;;;;;:::i;:::-;24063:11;24059:93;;24091:28;24107:4;24113:2;24117:1;24091:15;:28::i;24059:93::-;24168:14;;;;24164:2003;;;774:6;;-1:-1:-1;;;;;24221:15:0;;;774:6;;24221:15;;;;:49;;-1:-1:-1;774:6:0;;-1:-1:-1;;;;;24257:13:0;;;774:6;;24257:13;;24221:49;:86;;;;-1:-1:-1;;;;;;24291:16:0;;;;24221:86;:128;;;;-1:-1:-1;;;;;;24328:21:0;;24342:6;24328:21;;24221:128;:158;;;;-1:-1:-1;24371:8:0;;-1:-1:-1;;;24371:8:0;;;;24370:9;24221:158;24199:1957;;;24419:13;;;;;;;24414:150;;-1:-1:-1;;;;;24465:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;24494:23:0;;;;;;:19;:23;;;;;;;;24465:52;24457:87;;;;-1:-1:-1;;;24457:87:0;;5954:2:1;24457:87:0;;;5936:21:1;5993:2;5973:18;;;5966:30;-1:-1:-1;;;6012:18:1;;;6005:52;6074:18;;24457:87:0;5926:172:1;24457:87:0;24720:20;;;;24716:523;;;774:6;;-1:-1:-1;;;;;24795:13:0;;;774:6;;24795:13;;;;:72;;;24851:15;-1:-1:-1;;;;;24837:30:0;:2;-1:-1:-1;;;;;24837:30:0;;;24795:72;:129;;;;-1:-1:-1;24910:13:0;;-1:-1:-1;;;;;24896:28:0;;;24910:13;;24896:28;;24795:129;24765:455;;;25012:9;24983:39;;;;:28;:39;;;;;;25025:12;-1:-1:-1;24975:140:0;;;;-1:-1:-1;;;24975:140:0;;9198:2:1;24975:140:0;;;9180:21:1;9237:2;9217:18;;;9210:30;9276:34;9256:18;;;9249:62;9347:34;9327:18;;;9320:62;-1:-1:-1;;;9398:19:1;;;9391:40;9448:19;;24975:140:0;9170:303:1;24975:140:0;25171:9;25142:39;;;;:28;:39;;;;;25184:12;25142:54;;24765:455;-1:-1:-1;;;;;25313:31:0;;;;;;:25;:31;;;;;;;;:92;;;;-1:-1:-1;;;;;;25370:35:0;;;;;;:31;:35;;;;;;;;25369:36;25313:92;25287:854;;;25466:20;;25456:6;:30;;25448:95;;;;-1:-1:-1;;;25448:95:0;;8776:2:1;25448:95:0;;;8758:21:1;8815:2;8795:18;;;8788:30;8854:34;8834:18;;;8827:62;-1:-1:-1;;;8905:18:1;;;8898:51;8966:19;;25448:95:0;8748:243:1;25448:95:0;25600:9;;-1:-1:-1;;;;;3340:18:0;;3313:7;3340:18;;;;;;;;;;;25574:22;;:6;:22;:::i;:::-;:35;;25566:67;;;;-1:-1:-1;;;25566:67:0;;11261:2:1;25566:67:0;;;11243:21:1;11300:2;11280:18;;;11273:30;-1:-1:-1;;;11319:18:1;;;11312:49;11378:18;;25566:67:0;11233:169:1;25566:67:0;25287:854;;;-1:-1:-1;;;;;25731:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;25786:37:0;;;;;;:31;:37;;;;;;;;25785:38;25731:92;25705:436;;;25884:20;;25874:6;:30;;25866:97;;;;-1:-1:-1;;;25866:97:0;;8353:2:1;25866:97:0;;;8335:21:1;8392:2;8372:18;;;8365:30;8431:34;8411:18;;;8404:62;-1:-1:-1;;;8482:18:1;;;8475:52;8544:19;;25866:97:0;8325:244:1;25705:436:0;-1:-1:-1;;;;;25994:35:0;;;;;;:31;:35;;;;;;;;25989:152;;26088:9;;-1:-1:-1;;;;;3340:18:0;;3313:7;3340:18;;;;;;;;;;;26062:22;;:6;:22;:::i;:::-;:35;;26054:67;;;;-1:-1:-1;;;26054:67:0;;11261:2:1;26054:67:0;;;11243:21:1;11300:2;11280:18;;;11273:30;-1:-1:-1;;;11319:18:1;;;11312:49;11378:18;;26054:67:0;11233:169:1;26054:67:0;26228:4;26179:28;3340:18;;;;;;;;;;;26286;;26262:42;;;;;;;26335:35;;-1:-1:-1;26359:11:0;;;;;;;26335:35;:61;;;;-1:-1:-1;26388:8:0;;-1:-1:-1;;;26388:8:0;;;;26387:9;26335:61;:110;;;;-1:-1:-1;;;;;;26414:31:0;;;;;;:25;:31;;;;;;;;26413:32;26335:110;:153;;;;-1:-1:-1;;;;;;26463:25:0;;;;;;:19;:25;;;;;;;;26462:26;26335:153;:194;;;;-1:-1:-1;;;;;;26506:23:0;;;;;;:19;:23;;;;;;;;26505:24;26335:194;26317:326;;;26556:8;:15;;-1:-1:-1;;;;26556:15:0;-1:-1:-1;;;26556:15:0;;;26588:10;:8;:10::i;:::-;26615:8;:16;;-1:-1:-1;;;;26615:16:0;;;26317:326;26671:8;;-1:-1:-1;;;;;26781:25:0;;26655:12;26781:25;;;:19;:25;;;;;;26671:8;-1:-1:-1;;;26671:8:0;;;;;26670:9;;26781:25;;:52;;-1:-1:-1;;;;;;26810:23:0;;;;;;:19;:23;;;;;;;;26781:52;26777:100;;;-1:-1:-1;26860:5:0;26777:100;26889:12;26994:7;26990:1001;;;-1:-1:-1;;;;;27046:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;27095:1;27079:13;;:17;27046:50;27042:800;;;27124:34;27154:3;27124:25;27135:13;;27124:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;27117:41;;27227:13;;27207:16;;27200:4;:23;;;;:::i;:::-;27199:41;;;;:::i;:::-;27177:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;27313:13:0;;27291:18;;27284:25;;:4;:25;:::i;:::-;27283:43;;;;:::i;:::-;27259:20;;:67;;;;;;;:::i;:::-;;;;-1:-1:-1;;27395:13:0;;27375:16;;27368:23;;:4;:23;:::i;:::-;27367:41;;;;:::i;:::-;27345:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;27042:800:0;;-1:-1:-1;27042:800:0;;-1:-1:-1;;;;;27470:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;27520:1;27505:12;;:16;27470:51;27466:376;;;27549:33;27578:3;27549:24;27560:12;;27549:6;:10;;:24;;;;:::i;:33::-;27542:40;;27650:12;;27631:15;;27624:4;:22;;;;:::i;:::-;27623:39;;;;:::i;:::-;27601:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;27734:12:0;;27713:17;;27706:24;;:4;:24;:::i;:::-;27705:41;;;;:::i;:::-;27681:20;;:65;;;;;;;:::i;:::-;;;;-1:-1:-1;;27814:12:0;;27795:15;;27788:22;;:4;:22;:::i;:::-;27787:39;;;;:::i;:::-;27765:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;27466:376:0;27862:8;;27858:91;;27891:42;27907:4;27921;27928;27891:15;:42::i;:::-;27965:14;27975:4;27965:14;;:::i;:::-;;;26990:1001;28003:33;28019:4;28025:2;28029:6;28003:15;:33::i;:::-;23779:4265;;;;;;;:::o;1244:191::-;1337:6;;;-1:-1:-1;;;;;1354:17:0;;;-1:-1:-1;;;;;;1354:17:0;;;;;;;1387:40;;1337:6;;;1354:17;1337:6;;1387:40;;1318:16;;1387:40;1244:191;;:::o;22770:188::-;-1:-1:-1;;;;;22853:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;22853:39:0;;;;;;;;;;22910:40;;22853:39;;:31;22910:40;;;22770:188;;:::o;5037:733::-;-1:-1:-1;;;;;5177:20:0;;5169:70;;;;-1:-1:-1;;;5169:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5258:23:0;;5250:71;;;;-1:-1:-1;;;5250:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5418:17:0;;5394:21;5418:17;;;;;;;;;;;5454:23;;;;5446:74;;;;-1:-1:-1;;;5446:74:0;;7946:2:1;5446:74:0;;;7928:21:1;7985:2;7965:18;;;7958:30;8024:34;8004:18;;;7997:62;-1:-1:-1;;;8075:18:1;;;8068:36;8121:19;;5446:74:0;7918:228:1;5446:74:0;-1:-1:-1;;;;;5556:17:0;;;:9;:17;;;;;;;;;;;5576:22;;;5556:42;;5620:20;;;;;;;;:30;;5592:6;;5556:9;5620:30;;5592:6;;5620:30;:::i;:::-;;;;;;;;5685:9;-1:-1:-1;;;;;5668:35:0;5677:6;-1:-1:-1;;;;;5668:35:0;;5696:6;5668:35;;;;12375:25:1;;12363:2;12348:18;;12330:76;5668:35:0;;;;;;;;5037:733;;;;:::o;29178:1788::-;29261:4;29217:23;3340:18;;;;;;;;;;;29217:50;;29278:25;29374:20;;29340:18;;29306;;:52;;;;:::i;:::-;:88;;;;:::i;:::-;29278:116;-1:-1:-1;29405:12:0;29434:20;;;:46;;-1:-1:-1;29458:22:0;;29434:46;29430:85;;;29497:7;;;29178:1788::o;29430:85::-;29549:18;;:23;;29570:2;29549:23;:::i;:::-;29531:15;:41;29527:115;;;29607:18;;:23;;29628:2;29607:23;:::i;:::-;29589:41;;29527:115;29703:23;29816:1;29783:17;29748:18;;29730:15;:36;;;;:::i;:::-;29729:71;;;;:::i;:::-;:88;;;;:::i;:::-;29703:114;-1:-1:-1;29828:26:0;29857:36;:15;29703:114;29857:19;:36::i;:::-;29828:65;-1:-1:-1;29934:21:0;29968:36;29828:65;29968:16;:36::i;:::-;30017:18;30038:44;:21;30064:17;30038:25;:44::i;:::-;30017:65;;30095:23;30121:81;30174:17;30121:34;30136:18;;30121:10;:14;;:34;;;;:::i;:81::-;30095:107;;30213:17;30233:59;30274:17;30233:36;30248:20;;30233:10;:14;;:36;;;;:::i;:59::-;30213:79;-1:-1:-1;30305:23:0;30213:79;30331:28;30344:15;30331:10;:28;:::i;:::-;:40;;;;:::i;:::-;30405:1;30384:18;:22;;;30417:18;:22;;;30450:20;:24;;;30509:17;;30501:53;;30305:66;;-1:-1:-1;;;;;;30509:17:0;;30540:9;;30501:53;30405:1;30501:53;30540:9;30509:17;30501:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30487:67:0;;-1:-1:-1;;30571:19:0;;;;;:42;;;30612:1;30594:15;:19;30571:42;30567:278;;;30630:46;30643:15;30660;30630:12;:46::i;:::-;30800:18;;30696:137;;;13601:25:1;;;13657:2;13642:18;;13635:34;;;13685:18;;;13678:34;;;;30696:137:0;;;;;;13589:2:1;30696:137:0;;;30567:278;30879:15;;30871:87;;-1:-1:-1;;;;;30879:15:0;;;;30922:21;;30871:87;;;;30922:21;30879:15;30871:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;29178:1788:0:o;8790:98::-;8848:7;8875:5;8879:1;8875;:5;:::i;:::-;8868:12;8790:98;-1:-1:-1;;;8790:98:0:o;8896:::-;8954:7;8981:5;8985:1;8981;:5;:::i;8684:98::-;8742:7;8769:5;8773:1;8769;:5;:::i;28052:589::-;28202:16;;;28216:1;28202:16;;;;;;;;28178:21;;28202:16;;;;;;;;;;-1:-1:-1;28202:16:0;28178:40;;28247:4;28229;28234:1;28229:7;;;;;;-1:-1:-1;;;28229:7:0;;;;;;;;;;;;;;:23;-1:-1:-1;;;;;28229:23:0;;;-1:-1:-1;;;;;28229:23:0;;;;;28273:15;-1:-1:-1;;;;;28273:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28263:4;28268:1;28263:7;;;;;;-1:-1:-1;;;28263:7:0;;;;;;;;;;;;;;:32;-1:-1:-1;;;;;28263:32:0;;;-1:-1:-1;;;;;28263:32:0;;;;;28308:62;28325:4;28340:15;28358:11;28308:8;:62::i;:::-;28409:224;;-1:-1:-1;;;28409:224:0;;-1:-1:-1;;;;;28409:15:0;:66;;;;:224;;28490:11;;28516:1;;28560:4;;28587;;28607:15;;28409:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28052:589;;:::o;28649:521::-;28797:62;28814:4;28829:15;28847:11;28797:8;:62::i;:::-;29106:15;;28902:260;;-1:-1:-1;;;28902:260:0;;28974:4;28902:260;;;4042:34:1;4092:18;;;4085:34;;;29020:1:0;4135:18:1;;;4128:34;;;4178:18;;;4171:34;-1:-1:-1;;;;;29106:15:0;;;4221:19:1;;;4214:44;29136:15:0;4274:19:1;;;4267:35;28902:15:0;:31;;;;;;28941:9;;3976:19:1;;28902:260:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28649:521;;:::o;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:2;;164:1;161;154:12;179:257;238:6;291:2;279:9;270:7;266:23;262:32;259:2;;;312:6;304;297:22;259:2;356:9;343:23;375:31;400:5;375:31;:::i;441:261::-;511:6;564:2;552:9;543:7;539:23;535:32;532:2;;;585:6;577;570:22;532:2;622:9;616:16;641:31;666:5;641:31;:::i;707:398::-;775:6;783;836:2;824:9;815:7;811:23;807:32;804:2;;;857:6;849;842:22;804:2;901:9;888:23;920:31;945:5;920:31;:::i;:::-;970:5;-1:-1:-1;1027:2:1;1012:18;;999:32;1040:33;999:32;1040:33;:::i;:::-;1092:7;1082:17;;;794:311;;;;;:::o;1110:466::-;1187:6;1195;1203;1256:2;1244:9;1235:7;1231:23;1227:32;1224:2;;;1277:6;1269;1262:22;1224:2;1321:9;1308:23;1340:31;1365:5;1340:31;:::i;:::-;1390:5;-1:-1:-1;1447:2:1;1432:18;;1419:32;1460:33;1419:32;1460:33;:::i;:::-;1214:362;;1512:7;;-1:-1:-1;;;1566:2:1;1551:18;;;;1538:32;;1214:362::o;1581:325::-;1646:6;1654;1707:2;1695:9;1686:7;1682:23;1678:32;1675:2;;;1728:6;1720;1713:22;1675:2;1772:9;1759:23;1791:31;1816:5;1791:31;:::i;:::-;1841:5;-1:-1:-1;1865:35:1;1896:2;1881:18;;1865:35;:::i;:::-;1855:45;;1665:241;;;;;:::o;1911:325::-;1979:6;1987;2040:2;2028:9;2019:7;2015:23;2011:32;2008:2;;;2061:6;2053;2046:22;2008:2;2105:9;2092:23;2124:31;2149:5;2124:31;:::i;:::-;2174:5;2226:2;2211:18;;;;2198:32;;-1:-1:-1;;;1998:238:1:o;2241:190::-;2297:6;2350:2;2338:9;2329:7;2325:23;2321:32;2318:2;;;2371:6;2363;2356:22;2318:2;2399:26;2415:9;2399:26;:::i;2436:190::-;2495:6;2548:2;2536:9;2527:7;2523:23;2519:32;2516:2;;;2569:6;2561;2554:22;2516:2;-1:-1:-1;2597:23:1;;2506:120;-1:-1:-1;2506:120:1:o;2631:326::-;2708:6;2716;2724;2777:2;2765:9;2756:7;2752:23;2748:32;2745:2;;;2798:6;2790;2783:22;2745:2;-1:-1:-1;;2826:23:1;;;2896:2;2881:18;;2868:32;;-1:-1:-1;2947:2:1;2932:18;;;2919:32;;2735:222;-1:-1:-1;2735:222:1:o;2962:316::-;3050:6;3058;3066;3119:2;3107:9;3098:7;3094:23;3090:32;3087:2;;;3140:6;3132;3125:22;3087:2;3174:9;3168:16;3158:26;;3224:2;3213:9;3209:18;3203:25;3193:35;;3268:2;3257:9;3253:18;3247:25;3237:35;;3077:201;;;;;:::o;4740:603::-;4852:4;4881:2;4910;4899:9;4892:21;4942:6;4936:13;4985:6;4980:2;4969:9;4965:18;4958:34;5010:4;5023:140;5037:6;5034:1;5031:13;5023:140;;;5132:14;;;5128:23;;5122:30;5098:17;;;5117:2;5094:26;5087:66;5052:10;;5023:140;;;5181:6;5178:1;5175:13;5172:2;;;5251:4;5246:2;5237:6;5226:9;5222:22;5218:31;5211:45;5172:2;-1:-1:-1;5327:2:1;5306:15;-1:-1:-1;;5302:29:1;5287:45;;;;5334:2;5283:54;;4861:482;-1:-1:-1;;;4861:482:1:o;5348:399::-;5550:2;5532:21;;;5589:2;5569:18;;;5562:30;5628:34;5623:2;5608:18;;5601:62;-1:-1:-1;;;5694:2:1;5679:18;;5672:33;5737:3;5722:19;;5522:225::o;9887:356::-;10089:2;10071:21;;;10108:18;;;10101:30;10167:34;10162:2;10147:18;;10140:62;10234:2;10219:18;;10061:182::o;10248:401::-;10450:2;10432:21;;;10489:2;10469:18;;;10462:30;10528:34;10523:2;10508:18;;10501:62;-1:-1:-1;;;10594:2:1;10579:18;;10572:35;10639:3;10624:19;;10422:227::o;12411:983::-;12673:4;12721:3;12710:9;12706:19;12752:6;12741:9;12734:25;12778:2;12816:6;12811:2;12800:9;12796:18;12789:34;12859:3;12854:2;12843:9;12839:18;12832:31;12883:6;12918;12912:13;12949:6;12941;12934:22;12987:3;12976:9;12972:19;12965:26;;13026:2;13018:6;13014:15;13000:29;;13047:4;13060:195;13074:6;13071:1;13068:13;13060:195;;;13139:13;;-1:-1:-1;;;;;13135:39:1;13123:52;;13230:15;;;;13195:12;;;;13171:1;13089:9;13060:195;;;-1:-1:-1;;;;;;;13311:32:1;;;;13306:2;13291:18;;13284:60;-1:-1:-1;;;13375:3:1;13360:19;13353:35;13272:3;12682:712;-1:-1:-1;;;12682:712:1:o;13912:128::-;13952:3;13983:1;13979:6;13976:1;13973:13;13970:2;;;13989:18;;:::i;:::-;-1:-1:-1;14025:9:1;;13960:80::o;14045:217::-;14085:1;14111;14101:2;;-1:-1:-1;;;14136:31:1;;14190:4;14187:1;14180:15;14218:4;14143:1;14208:15;14101:2;-1:-1:-1;14247:9:1;;14091:171::o;14267:168::-;14307:7;14373:1;14369;14365:6;14361:14;14358:1;14355:21;14350:1;14343:9;14336:17;14332:45;14329:2;;;14380:18;;:::i;:::-;-1:-1:-1;14420:9:1;;14319:116::o;14440:125::-;14480:4;14508:1;14505;14502:8;14499:2;;;14513:18;;:::i;:::-;-1:-1:-1;14550:9:1;;14489:76::o;14570:380::-;14649:1;14645:12;;;;14692;;;14713:2;;14767:4;14759:6;14755:17;14745:27;;14713:2;14820;14812:6;14809:14;14789:18;14786:38;14783:2;;;14866:10;14861:3;14857:20;14854:1;14847:31;14901:4;14898:1;14891:15;14929:4;14926:1;14919:15;14783:2;;14625:325;;;:::o;14955:127::-;15016:10;15011:3;15007:20;15004:1;14997:31;15047:4;15044:1;15037:15;15071:4;15068:1;15061:15;15087:131;-1:-1:-1;;;;;15162:31:1;;15152:42;;15142:2;;15208:1;15205;15198:12

Swarm Source

ipfs://6b76bbc2814e49d5ed87339a1ef20d9e88ba61fcc884550851fe6a2dd5e4a84d
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.