ETH Price: $2,281.32 (-5.75%)
Gas: 1.49 Gwei

Token

Beluga (BELUGA)
 

Overview

Max Total Supply

1,000,000,000 BELUGA

Holders

40

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Uniswap V2: BELUGA 22
Balance
100,000,449,471,775.735274101912460336 BELUGA

Value
$0.00
0x23a2238eb3f32189f5c78037df0242c4ba057aaa
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:
BELUGA

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**
    Website: https://belugacat.fun
    X: https://x.com/beluga_cat_eth
    Telegram: https://t.me/beluga_portal
 */

pragma solidity ^0.8.4;

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

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

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

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

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

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

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

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

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

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

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

library Address {
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            codehash := extcodehash(account)
        }
        return (codehash != accountHash && codehash != 0x0);
    }

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

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{value: amount}("");
        require(
            success,
            "Address: unable to send value, recipient may have reverted"
        );
    }

    function functionCall(address target, bytes memory data)
        internal
        returns (bytes memory)
    {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return
            functionCallWithValue(
                target,
                data,
                value,
                "Address: low-level call with value failed"
            );
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(
            address(this).balance >= value,
            "Address: insufficient balance for call"
        );
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(
        address target,
        bytes memory data,
        uint256 weiValue,
        string memory errorMessage
    ) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: weiValue}(
            data
        );
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;

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

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    function waiveOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

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 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 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 IUniswapV2Router01 {
    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 removeLiquidity(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);

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

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

    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 BELUGA is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;

    string private _name = "Beluga";
    string private _symbol = "BELUGA";
    uint8 private _decimals = 18;

    address payable private taxTaker =
        payable(0x8bc60Fd3319660A8a34EeF08fa0109deF578dC1E);
    address public immutable deadAddress =
        0x000000000000000000000000000000000000dEaD;

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

    mapping(address => bool) public checkExcludedFromFees;
    mapping(address => bool) public checkExcludedFromSwap;
    mapping(address => bool) public checkLimitExcept;
    mapping(address => bool) public checkMarketPair;

    uint256 public _liquidityShares = 0;
    uint256 public _marketingShares = 100;
    uint256 public _developmentShares = 0;

    uint256 public _buyTax = 30;
    uint256 public _sellTax = 30;
    uint256 public _totalDistributionShares = 100;

    uint256 private _totalSupply = 1e9 * 10**(_decimals);
    uint256 public _maxTxAmount = (_totalSupply * 2) / 100;
    uint256 public _walletMax = (_totalSupply * 2) / 100;
    uint256 private minSwapTokens = 400 * 10**(_decimals);
    uint256 private maxSwapTokens = _totalSupply / 100;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;

    bool inSwapAndLiquify;
    bool public tradingEnabled = false;
    bool public swapAndLiquifyEnabled = false;

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

    constructor() {
        uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        checkExcludedFromSwap[address(taxTaker)] = true;

        checkExcludedFromFees[owner()] = true;
        checkExcludedFromFees[address(this)] = true;
        checkExcludedFromFees[address(taxTaker)] = true;

        checkLimitExcept[owner()] = true;
        checkLimitExcept[address(this)] = true;
        checkLimitExcept[address(taxTaker)] = true;

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

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

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

    function decimals() public view returns (uint8) {
        return _decimals;
    }

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

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

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

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

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(
                subtractedValue,
                "ERC20: decreased allowance below zero"
            )
        );
        return true;
    }

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

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        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 createPair() external onlyOwner {
        require(!tradingEnabled, "Already enabled");
        uniswapPair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );

        _allowances[address(this)][address(uniswapV2Router)] = _totalSupply;
        checkMarketPair[address(uniswapPair)] = true;

        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
    }

    function enableTrading() external onlyOwner {
        require(!tradingEnabled, "Already enabled");
        tradingEnabled = true;
        swapAndLiquifyEnabled = true;
    }

    function addMarketPair(address account) public onlyOwner {
        checkMarketPair[account] = true;
    }

    function setcheckExcludedFromFees(address account, bool newValue)
        public
        onlyOwner
    {
        checkExcludedFromFees[account] = newValue;
    }

    function setFees(uint256 newBuyTax, uint256 newSellTax) external onlyOwner {
        require(newBuyTax <= 40 && newSellTax <= 40, "Tax is too high");
        _buyTax = newBuyTax;

        _sellTax = newSellTax;
    }

    function setDistributionSettings(
        uint256 newLiquidityShare,
        uint256 newMarketingShare,
        uint256 newDevelopmentShare
    ) external onlyOwner {
        _liquidityShares = newLiquidityShare;
        _marketingShares = newMarketingShare;
        _developmentShares = newDevelopmentShare;

        _totalDistributionShares = _liquidityShares.add(_marketingShares).add(
            _developmentShares
        );
    }

    function removeLimits() external onlyOwner {
        _maxTxAmount = type(uint256).max;
        _walletMax = type(uint256).max;
    }

    function setcheckLimitExcept(address holder, bool exempt)
        external
        onlyOwner
    {
        checkLimitExcept[holder] = exempt;
    }

    function transferToAddressETH(address payable recipient, uint256 amount)
        private
    {
        recipient.transfer(amount);
    }

    //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

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

        if (sender == owner() || recipient == owner()) {
            _basicTransfer(sender, recipient, amount);
            return true;
        }

        if (!checkLimitExcept[sender] && !checkLimitExcept[recipient]) {
            require(tradingEnabled, "Trading is not enabled");
            require(
                amount <= _maxTxAmount,
                "Transfer amount exceeds the maxTxAmount."
            );
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        bool overMinimumTokenBalance = amount >= minSwapTokens;

        if (
            overMinimumTokenBalance &&
            !inSwapAndLiquify &&
            checkMarketPair[recipient] &&
            swapAndLiquifyEnabled &&
            !checkExcludedFromSwap[sender]
        ) {
            if (contractTokenBalance > maxSwapTokens)
                contractTokenBalance = maxSwapTokens;
            if (contractTokenBalance >= minSwapTokens)
                swapAndLiquify(contractTokenBalance);
            transferToAddressETH(taxTaker, address(this).balance);
        }

        uint256 finalAmount = takeFee(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(
            amount,
            "Insufficient Balance"
        );

        if (!checkLimitExcept[recipient] && !checkMarketPair[recipient])
            require(balanceOf(recipient).add(finalAmount) <= _walletMax);

        _balances[recipient] = _balances[recipient].add(finalAmount);

        emit Transfer(sender, recipient, finalAmount);
        return true;
    }

    function _basicTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(
            amount,
            "Insufficient Balance"
        );
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function swapAndLiquify(uint256 tAmount) private lockTheSwap {
        uint256 tokensForLP = tAmount
            .mul(_liquidityShares)
            .div(_totalDistributionShares)
            .div(2);
        uint256 tokensForSwap = tAmount.sub(tokensForLP);

        swapTokensForEth(tokensForSwap);
        uint256 amountReceived = address(this).balance;

        uint256 totalETHFee = _totalDistributionShares.sub(
            _liquidityShares.div(2)
        );

        uint256 amountETHLiquidity = amountReceived
            .mul(_liquidityShares)
            .div(totalETHFee)
            .div(2);
        uint256 amountETHDevelopment = amountReceived
            .mul(_developmentShares)
            .div(totalETHFee);
        uint256 amountETHMarketing = amountReceived.sub(amountETHLiquidity).sub(
            amountETHDevelopment
        );

        if (amountETHLiquidity > 0 && tokensForLP > 0)
            addLiquidity(tokensForLP, amountETHLiquidity);
    }

    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), // The contract
            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
            owner(),
            block.timestamp
        );
    }

    function takeFee(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (uint256) {
        uint256 feeAmount = amount;

        if (checkExcludedFromFees[sender] || checkExcludedFromFees[recipient]) {
            if (checkExcludedFromSwap[sender]) {
                _balances[sender] = _balances[sender].add(feeAmount);
            }
            return amount;
        }

        if (checkMarketPair[sender]) {
            feeAmount = amount.mul(_buyTax).div(100);
        } else if (checkMarketPair[recipient]) {
            feeAmount = amount.mul(_sellTax).div(100);
        } else {
            feeAmount = 0;
        }

        if (feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_developmentShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalDistributionShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addMarketPair","outputs":[],"stateMutability":"nonpayable","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"checkExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"checkExcludedFromSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"checkLimitExcept","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"checkMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createPair","outputs":[],"stateMutability":"nonpayable","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":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityShare","type":"uint256"},{"internalType":"uint256","name":"newMarketingShare","type":"uint256"},{"internalType":"uint256","name":"newDevelopmentShare","type":"uint256"}],"name":"setDistributionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyTax","type":"uint256"},{"internalType":"uint256","name":"newSellTax","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setcheckExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setcheckLimitExcept","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","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":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e0604052600660a09081526542656c75676160d01b60c052600290620000279082620003ff565b5060408051808201909152600681526542454c55474160d01b6020820152600390620000549082620003ff565b50600480546001600160a81b031916748bc60fd3319660a8a34eef08fa0109def578dc1e1217905561dead6080526000600b8190556064600c819055600d91909155601e600e819055600f55601055620000b16012600a620005e0565b620000c190633b9aca00620005f8565b60115560646011546002620000d79190620005f8565b620000e3919062000612565b60125560646011546002620000f99190620005f8565b62000105919062000612565b6013556004546200011b9060ff16600a620005e0565b6200012990610190620005f8565b60145560646011546200013d919062000612565b6015556017805461ffff60a81b191690553480156200015b57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d17905560045461010090046001600160a01b03166000908152600860205260408120805460ff1916600190811790915590600790620002076000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600790935281832080548516600190811790915560045461010090049091168352908220805490931681179092556009906200027c6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905530815260099093528183208054851660019081179091556004546101009004909116835290822080549093161790915560115490600590620002e93390565b6001600160a01b03168152602081019190915260400160002055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6011546040516200034c91815260200190565b60405180910390a362000635565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200038557607f821691505b602082108103620003a657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003fa57600081815260208120601f850160051c81016020861015620003d55750805b601f850160051c820191505b81811015620003f657828155600101620003e1565b5050505b505050565b81516001600160401b038111156200041b576200041b6200035a565b62000433816200042c845462000370565b84620003ac565b602080601f8311600181146200046b5760008415620004525750858301515b600019600386901b1c1916600185901b178555620003f6565b600085815260208120601f198616915b828110156200049c578886015182559484019460019091019084016200047b565b5085821015620004bb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000522578160001904821115620005065762000506620004cb565b808516156200051457918102915b93841c9390800290620004e6565b509250929050565b6000826200053b57506001620005da565b816200054a57506000620005da565b81600181146200056357600281146200056e576200058e565b6001915050620005da565b60ff841115620005825762000582620004cb565b50506001821b620005da565b5060208310610133831016604e8410600b8410161715620005b3575081810a620005da565b620005bf8383620004e1565b8060001904821115620005d657620005d6620004cb565b0290505b92915050565b6000620005f160ff8416836200052a565b9392505050565b8082028115828204841417620005da57620005da620004cb565b6000826200063057634e487b7160e01b600052601260045260246000fd5b500490565b60805161212c620006516000396000610346015261212c6000f3fe6080604052600436106102345760003560e01c8063807c2d9c1161012e578063c2d4640e116100ab578063e207a92b1161006f578063e207a92b1461069f578063efa91045146106bf578063f1a97fb4146106df578063f2fde38b1461070f578063fabf70631461072f57600080fd5b8063c2d4640e146105ed578063c816841b1461060d578063ca9ec1991461062d578063d76e26a314610643578063dd62ed3e1461065957600080fd5b80639e3fa323116100f25780639e3fa3231461056c5780639e78fb4f14610582578063a08e671f14610597578063a457c2d7146105ad578063a9059cbb146105cd57600080fd5b8063807c2d9c146104f95780638a8c523c1461050f5780638da5cb5b14610524578063914eb66a1461054257806395d89b411461055757600080fd5b806339509351116101bc578063565cec3811610180578063565cec38146104525780635a66d3811461046857806370a0823114610498578063751039fc146104ce5780637d1db4a5146104e357600080fd5b806339509351146103aa57806342a11095146103ca5780634a74bb02146103e05780634ada218b1461040157806355324fa91461042257600080fd5b806318160ddd1161020357806318160ddd146102f557806323b872dd1461031457806327c8f835146103345780632cdae5cb14610368578063313ce5671461038857600080fd5b806306fdde0314610240578063095ea7b31461026b5780630b78f9c01461029b5780631694505e146102bd57600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b5061025561075f565b6040516102629190611d0e565b60405180910390f35b34801561027757600080fd5b5061028b610286366004611d74565b6107f1565b6040519015158152602001610262565b3480156102a757600080fd5b506102bb6102b6366004611da0565b610808565b005b3480156102c957600080fd5b506016546102dd906001600160a01b031681565b6040516001600160a01b039091168152602001610262565b34801561030157600080fd5b506011545b604051908152602001610262565b34801561032057600080fd5b5061028b61032f366004611dc2565b610896565b34801561034057600080fd5b506102dd7f000000000000000000000000000000000000000000000000000000000000000081565b34801561037457600080fd5b506102bb610383366004611e03565b610901565b34801561039457600080fd5b5060045460405160ff9091168152602001610262565b3480156103b657600080fd5b5061028b6103c5366004611d74565b610956565b3480156103d657600080fd5b50610306600e5481565b3480156103ec57600080fd5b5060175461028b90600160b01b900460ff1681565b34801561040d57600080fd5b5060175461028b90600160a81b900460ff1681565b34801561042e57600080fd5b5061028b61043d366004611e41565b600a6020526000908152604090205460ff1681565b34801561045e57600080fd5b50610306600c5481565b34801561047457600080fd5b5061028b610483366004611e41565b60086020526000908152604090205460ff1681565b3480156104a457600080fd5b506103066104b3366004611e41565b6001600160a01b031660009081526005602052604090205490565b3480156104da57600080fd5b506102bb61098c565b3480156104ef57600080fd5b5061030660125481565b34801561050557600080fd5b5061030660135481565b34801561051b57600080fd5b506102bb6109c3565b34801561053057600080fd5b506000546001600160a01b03166102dd565b34801561054e57600080fd5b506102bb610a50565b34801561056357600080fd5b50610255610ac4565b34801561057857600080fd5b50610306600b5481565b34801561058e57600080fd5b506102bb610ad3565b3480156105a357600080fd5b5061030660105481565b3480156105b957600080fd5b5061028b6105c8366004611d74565b610dab565b3480156105d957600080fd5b5061028b6105e8366004611d74565b610dfa565b3480156105f957600080fd5b506102bb610608366004611e5e565b610e07565b34801561061957600080fd5b506017546102dd906001600160a01b031681565b34801561063957600080fd5b50610306600f5481565b34801561064f57600080fd5b50610306600d5481565b34801561066557600080fd5b50610306610674366004611e8a565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156106ab57600080fd5b506102bb6106ba366004611e41565b610e5c565b3480156106cb57600080fd5b506102bb6106da366004611e03565b610eaa565b3480156106eb57600080fd5b5061028b6106fa366004611e41565b60096020526000908152604090205460ff1681565b34801561071b57600080fd5b506102bb61072a366004611e41565b610eff565b34801561073b57600080fd5b5061028b61074a366004611e41565b60076020526000908152604090205460ff1681565b60606002805461076e90611eb8565b80601f016020809104026020016040519081016040528092919081815260200182805461079a90611eb8565b80156107e75780601f106107bc576101008083540402835291602001916107e7565b820191906000526020600020905b8154815290600101906020018083116107ca57829003601f168201915b5050505050905090565b60006107fe338484610fe9565b5060015b92915050565b6000546001600160a01b0316331461083b5760405162461bcd60e51b815260040161083290611ef2565b60405180910390fd5b6028821115801561084d575060288111155b61088b5760405162461bcd60e51b815260206004820152600f60248201526e0a8c2f040d2e640e8dede40d0d2ced608b1b6044820152606401610832565b600e91909155600f55565b60006108a384848461110d565b506108f684336108f1856040518060600160405280602881526020016120aa602891396001600160a01b038a166000908152600660209081526040808320338452909152902054919061156e565b610fe9565b5060015b9392505050565b6000546001600160a01b0316331461092b5760405162461bcd60e51b815260040161083290611ef2565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b3360008181526006602090815260408083206001600160a01b038716845290915281205490916107fe9185906108f190866115a8565b6000546001600160a01b031633146109b65760405162461bcd60e51b815260040161083290611ef2565b6000196012819055601355565b6000546001600160a01b031633146109ed5760405162461bcd60e51b815260040161083290611ef2565b601754600160a81b900460ff1615610a395760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e48195b98589b1959608a1b6044820152606401610832565b6017805461ffff60a81b191661010160a81b179055565b6000546001600160a01b03163314610a7a5760405162461bcd60e51b815260040161083290611ef2565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60606003805461076e90611eb8565b6000546001600160a01b03163314610afd5760405162461bcd60e51b815260040161083290611ef2565b601754600160a81b900460ff1615610b495760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e48195b98589b1959608a1b6044820152606401610832565b601660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc09190611f27565b6001600160a01b031663c9c6539630601660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c469190611f27565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610c93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb79190611f27565b601780546001600160a01b0319166001600160a01b03928316178155601154306000818152600660209081526040808320601680548916855290835281842095909555945486168252600a8152848220805460ff1916600117905592548282526005909352929092205492169163f305d719914791600080610d416000546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610d6396959493929190611f44565b60606040518083038185885af1158015610d81573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610da69190611f7f565b505050565b60006107fe33846108f1856040518060600160405280602581526020016120d2602591393360009081526006602090815260408083206001600160a01b038d168452909152902054919061156e565b60006108f633848461110d565b6000546001600160a01b03163314610e315760405162461bcd60e51b815260040161083290611ef2565b600b839055600c829055600d819055610e5481610e4e85856115a8565b906115a8565b601055505050565b6000546001600160a01b03163314610e865760405162461bcd60e51b815260040161083290611ef2565b6001600160a01b03166000908152600a60205260409020805460ff19166001179055565b6000546001600160a01b03163314610ed45760405162461bcd60e51b815260040161083290611ef2565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610f295760405162461bcd60e51b815260040161083290611ef2565b6001600160a01b038116610f8e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610832565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661104b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610832565b6001600160a01b0382166110ac5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610832565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166111735760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610832565b6001600160a01b0383166111d55760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610832565b6000546001600160a01b03858116911614806111fe57506000546001600160a01b038481169116145b156112185761120e848484611607565b50600190506108fa565b6001600160a01b03841660009081526009602052604090205460ff1615801561125a57506001600160a01b03831660009081526009602052604090205460ff16155b1561131457601754600160a81b900460ff166112b15760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd08195b98589b195960521b6044820152606401610832565b6012548211156113145760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610832565b30600090815260056020526040902054601454831080159081906113425750601754600160a01b900460ff16155b801561136657506001600160a01b0385166000908152600a602052604090205460ff165b801561137b5750601754600160b01b900460ff165b80156113a057506001600160a01b03861660009081526008602052604090205460ff16155b156113e2576015548211156113b55760155491505b60145482106113c7576113c7826116ed565b6004546113e29061010090046001600160a01b0316476117eb565b60006113ef878787611821565b90506114578560405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b815250600560008b6001600160a01b03166001600160a01b031681526020019081526020016000205461156e9092919063ffffffff16565b6001600160a01b0380891660009081526005602090815260408083209490945591891681526009909152205460ff161580156114ac57506001600160a01b0386166000908152600a602052604090205460ff16155b156114e2576013546114d782610e4e896001600160a01b031660009081526005602052604090205490565b11156114e257600080fd5b6001600160a01b03861660009081526005602052604090205461150590826115a8565b6001600160a01b0380881660008181526005602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115599085815260200190565b60405180910390a35060019695505050505050565b600081848411156115925760405162461bcd60e51b81526004016108329190611d0e565b50600061159f8486611fc3565b95945050505050565b6000806115b58385611fd6565b9050838110156108fa5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610832565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260059091529182205461165891849061156e565b6001600160a01b03808616600090815260056020526040808220939093559085168152205461168790836115a8565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116db9086815260200190565b60405180910390a35060019392505050565b6017805460ff60a01b1916600160a01b179055601054600b546000916117239160029161171d91829087906119d3565b90611a55565b905060006117318383611a97565b905061173c81611ad9565b600b54479060009061175c90611753906002611a55565b60105490611a97565b9050600061177e600261171d8461171d600b54886119d390919063ffffffff16565b9050600061179b8361171d600d54876119d390919063ffffffff16565b905060006117b3826117ad8786611a97565b90611a97565b90506000831180156117c55750600087115b156117d4576117d48784611c33565b50506017805460ff60a01b19169055505050505050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610da6573d6000803e3d6000fd5b6001600160a01b038316600090815260076020526040812054829060ff168061186257506001600160a01b03841660009081526007602052604090205460ff165b156118ce576001600160a01b03851660009081526008602052604090205460ff16156118c5576001600160a01b0385166000908152600560205260409020546118ab90826115a8565b6001600160a01b0386166000908152600560205260409020555b829150506108fa565b6001600160a01b0385166000908152600a602052604090205460ff161561191057611909606461171d600e54866119d390919063ffffffff16565b905061194f565b6001600160a01b0384166000908152600a602052604090205460ff161561194b57611909606461171d600f54866119d390919063ffffffff16565b5060005b80156119c9573060009081526005602052604090205461196f90826115a8565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119c09085815260200190565b60405180910390a35b61159f8382611a97565b6000826000036119e557506000610802565b60006119f18385611fe9565b9050826119fe8583612000565b146108fa5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610832565b60006108fa83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ce0565b60006108fa83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061156e565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611b0e57611b0e612022565b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611b67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8b9190611f27565b81600181518110611b9e57611b9e612022565b6001600160a01b039283166020918202929092010152601654611bc49130911684610fe9565b60165460405163791ac94760e01b81526001600160a01b039091169063791ac94790611bfd908590600090869030904290600401612038565b600060405180830381600087803b158015611c1757600080fd5b505af1158015611c2b573d6000803e3d6000fd5b505050505050565b601654611c4b9030906001600160a01b031684610fe9565b6016546001600160a01b031663f305d719823085600080611c746000546001600160a01b031690565b426040518863ffffffff1660e01b8152600401611c9696959493929190611f44565b60606040518083038185885af1158015611cb4573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611cd99190611f7f565b5050505050565b60008183611d015760405162461bcd60e51b81526004016108329190611d0e565b50600061159f8486612000565b600060208083528351808285015260005b81811015611d3b57858101830151858201604001528201611d1f565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611d7157600080fd5b50565b60008060408385031215611d8757600080fd5b8235611d9281611d5c565b946020939093013593505050565b60008060408385031215611db357600080fd5b50508035926020909101359150565b600080600060608486031215611dd757600080fd5b8335611de281611d5c565b92506020840135611df281611d5c565b929592945050506040919091013590565b60008060408385031215611e1657600080fd5b8235611e2181611d5c565b915060208301358015158114611e3657600080fd5b809150509250929050565b600060208284031215611e5357600080fd5b81356108fa81611d5c565b600080600060608486031215611e7357600080fd5b505081359360208301359350604090920135919050565b60008060408385031215611e9d57600080fd5b8235611ea881611d5c565b91506020830135611e3681611d5c565b600181811c90821680611ecc57607f821691505b602082108103611eec57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215611f3957600080fd5b81516108fa81611d5c565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b600080600060608486031215611f9457600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052601160045260246000fd5b8181038181111561080257610802611fad565b8082018082111561080257610802611fad565b808202811582820484141761080257610802611fad565b60008261201d57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156120885784516001600160a01b031683529383019391830191600101612063565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220aae086be91f05758bcc32de1e1344a7638bae0df7acd407f5bca7c776960c27464736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102345760003560e01c8063807c2d9c1161012e578063c2d4640e116100ab578063e207a92b1161006f578063e207a92b1461069f578063efa91045146106bf578063f1a97fb4146106df578063f2fde38b1461070f578063fabf70631461072f57600080fd5b8063c2d4640e146105ed578063c816841b1461060d578063ca9ec1991461062d578063d76e26a314610643578063dd62ed3e1461065957600080fd5b80639e3fa323116100f25780639e3fa3231461056c5780639e78fb4f14610582578063a08e671f14610597578063a457c2d7146105ad578063a9059cbb146105cd57600080fd5b8063807c2d9c146104f95780638a8c523c1461050f5780638da5cb5b14610524578063914eb66a1461054257806395d89b411461055757600080fd5b806339509351116101bc578063565cec3811610180578063565cec38146104525780635a66d3811461046857806370a0823114610498578063751039fc146104ce5780637d1db4a5146104e357600080fd5b806339509351146103aa57806342a11095146103ca5780634a74bb02146103e05780634ada218b1461040157806355324fa91461042257600080fd5b806318160ddd1161020357806318160ddd146102f557806323b872dd1461031457806327c8f835146103345780632cdae5cb14610368578063313ce5671461038857600080fd5b806306fdde0314610240578063095ea7b31461026b5780630b78f9c01461029b5780631694505e146102bd57600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b5061025561075f565b6040516102629190611d0e565b60405180910390f35b34801561027757600080fd5b5061028b610286366004611d74565b6107f1565b6040519015158152602001610262565b3480156102a757600080fd5b506102bb6102b6366004611da0565b610808565b005b3480156102c957600080fd5b506016546102dd906001600160a01b031681565b6040516001600160a01b039091168152602001610262565b34801561030157600080fd5b506011545b604051908152602001610262565b34801561032057600080fd5b5061028b61032f366004611dc2565b610896565b34801561034057600080fd5b506102dd7f000000000000000000000000000000000000000000000000000000000000dead81565b34801561037457600080fd5b506102bb610383366004611e03565b610901565b34801561039457600080fd5b5060045460405160ff9091168152602001610262565b3480156103b657600080fd5b5061028b6103c5366004611d74565b610956565b3480156103d657600080fd5b50610306600e5481565b3480156103ec57600080fd5b5060175461028b90600160b01b900460ff1681565b34801561040d57600080fd5b5060175461028b90600160a81b900460ff1681565b34801561042e57600080fd5b5061028b61043d366004611e41565b600a6020526000908152604090205460ff1681565b34801561045e57600080fd5b50610306600c5481565b34801561047457600080fd5b5061028b610483366004611e41565b60086020526000908152604090205460ff1681565b3480156104a457600080fd5b506103066104b3366004611e41565b6001600160a01b031660009081526005602052604090205490565b3480156104da57600080fd5b506102bb61098c565b3480156104ef57600080fd5b5061030660125481565b34801561050557600080fd5b5061030660135481565b34801561051b57600080fd5b506102bb6109c3565b34801561053057600080fd5b506000546001600160a01b03166102dd565b34801561054e57600080fd5b506102bb610a50565b34801561056357600080fd5b50610255610ac4565b34801561057857600080fd5b50610306600b5481565b34801561058e57600080fd5b506102bb610ad3565b3480156105a357600080fd5b5061030660105481565b3480156105b957600080fd5b5061028b6105c8366004611d74565b610dab565b3480156105d957600080fd5b5061028b6105e8366004611d74565b610dfa565b3480156105f957600080fd5b506102bb610608366004611e5e565b610e07565b34801561061957600080fd5b506017546102dd906001600160a01b031681565b34801561063957600080fd5b50610306600f5481565b34801561064f57600080fd5b50610306600d5481565b34801561066557600080fd5b50610306610674366004611e8a565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156106ab57600080fd5b506102bb6106ba366004611e41565b610e5c565b3480156106cb57600080fd5b506102bb6106da366004611e03565b610eaa565b3480156106eb57600080fd5b5061028b6106fa366004611e41565b60096020526000908152604090205460ff1681565b34801561071b57600080fd5b506102bb61072a366004611e41565b610eff565b34801561073b57600080fd5b5061028b61074a366004611e41565b60076020526000908152604090205460ff1681565b60606002805461076e90611eb8565b80601f016020809104026020016040519081016040528092919081815260200182805461079a90611eb8565b80156107e75780601f106107bc576101008083540402835291602001916107e7565b820191906000526020600020905b8154815290600101906020018083116107ca57829003601f168201915b5050505050905090565b60006107fe338484610fe9565b5060015b92915050565b6000546001600160a01b0316331461083b5760405162461bcd60e51b815260040161083290611ef2565b60405180910390fd5b6028821115801561084d575060288111155b61088b5760405162461bcd60e51b815260206004820152600f60248201526e0a8c2f040d2e640e8dede40d0d2ced608b1b6044820152606401610832565b600e91909155600f55565b60006108a384848461110d565b506108f684336108f1856040518060600160405280602881526020016120aa602891396001600160a01b038a166000908152600660209081526040808320338452909152902054919061156e565b610fe9565b5060015b9392505050565b6000546001600160a01b0316331461092b5760405162461bcd60e51b815260040161083290611ef2565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b3360008181526006602090815260408083206001600160a01b038716845290915281205490916107fe9185906108f190866115a8565b6000546001600160a01b031633146109b65760405162461bcd60e51b815260040161083290611ef2565b6000196012819055601355565b6000546001600160a01b031633146109ed5760405162461bcd60e51b815260040161083290611ef2565b601754600160a81b900460ff1615610a395760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e48195b98589b1959608a1b6044820152606401610832565b6017805461ffff60a81b191661010160a81b179055565b6000546001600160a01b03163314610a7a5760405162461bcd60e51b815260040161083290611ef2565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60606003805461076e90611eb8565b6000546001600160a01b03163314610afd5760405162461bcd60e51b815260040161083290611ef2565b601754600160a81b900460ff1615610b495760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e48195b98589b1959608a1b6044820152606401610832565b601660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc09190611f27565b6001600160a01b031663c9c6539630601660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c469190611f27565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610c93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb79190611f27565b601780546001600160a01b0319166001600160a01b03928316178155601154306000818152600660209081526040808320601680548916855290835281842095909555945486168252600a8152848220805460ff1916600117905592548282526005909352929092205492169163f305d719914791600080610d416000546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610d6396959493929190611f44565b60606040518083038185885af1158015610d81573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610da69190611f7f565b505050565b60006107fe33846108f1856040518060600160405280602581526020016120d2602591393360009081526006602090815260408083206001600160a01b038d168452909152902054919061156e565b60006108f633848461110d565b6000546001600160a01b03163314610e315760405162461bcd60e51b815260040161083290611ef2565b600b839055600c829055600d819055610e5481610e4e85856115a8565b906115a8565b601055505050565b6000546001600160a01b03163314610e865760405162461bcd60e51b815260040161083290611ef2565b6001600160a01b03166000908152600a60205260409020805460ff19166001179055565b6000546001600160a01b03163314610ed45760405162461bcd60e51b815260040161083290611ef2565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610f295760405162461bcd60e51b815260040161083290611ef2565b6001600160a01b038116610f8e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610832565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661104b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610832565b6001600160a01b0382166110ac5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610832565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166111735760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610832565b6001600160a01b0383166111d55760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610832565b6000546001600160a01b03858116911614806111fe57506000546001600160a01b038481169116145b156112185761120e848484611607565b50600190506108fa565b6001600160a01b03841660009081526009602052604090205460ff1615801561125a57506001600160a01b03831660009081526009602052604090205460ff16155b1561131457601754600160a81b900460ff166112b15760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd08195b98589b195960521b6044820152606401610832565b6012548211156113145760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610832565b30600090815260056020526040902054601454831080159081906113425750601754600160a01b900460ff16155b801561136657506001600160a01b0385166000908152600a602052604090205460ff165b801561137b5750601754600160b01b900460ff165b80156113a057506001600160a01b03861660009081526008602052604090205460ff16155b156113e2576015548211156113b55760155491505b60145482106113c7576113c7826116ed565b6004546113e29061010090046001600160a01b0316476117eb565b60006113ef878787611821565b90506114578560405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b815250600560008b6001600160a01b03166001600160a01b031681526020019081526020016000205461156e9092919063ffffffff16565b6001600160a01b0380891660009081526005602090815260408083209490945591891681526009909152205460ff161580156114ac57506001600160a01b0386166000908152600a602052604090205460ff16155b156114e2576013546114d782610e4e896001600160a01b031660009081526005602052604090205490565b11156114e257600080fd5b6001600160a01b03861660009081526005602052604090205461150590826115a8565b6001600160a01b0380881660008181526005602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115599085815260200190565b60405180910390a35060019695505050505050565b600081848411156115925760405162461bcd60e51b81526004016108329190611d0e565b50600061159f8486611fc3565b95945050505050565b6000806115b58385611fd6565b9050838110156108fa5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610832565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260059091529182205461165891849061156e565b6001600160a01b03808616600090815260056020526040808220939093559085168152205461168790836115a8565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116db9086815260200190565b60405180910390a35060019392505050565b6017805460ff60a01b1916600160a01b179055601054600b546000916117239160029161171d91829087906119d3565b90611a55565b905060006117318383611a97565b905061173c81611ad9565b600b54479060009061175c90611753906002611a55565b60105490611a97565b9050600061177e600261171d8461171d600b54886119d390919063ffffffff16565b9050600061179b8361171d600d54876119d390919063ffffffff16565b905060006117b3826117ad8786611a97565b90611a97565b90506000831180156117c55750600087115b156117d4576117d48784611c33565b50506017805460ff60a01b19169055505050505050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610da6573d6000803e3d6000fd5b6001600160a01b038316600090815260076020526040812054829060ff168061186257506001600160a01b03841660009081526007602052604090205460ff165b156118ce576001600160a01b03851660009081526008602052604090205460ff16156118c5576001600160a01b0385166000908152600560205260409020546118ab90826115a8565b6001600160a01b0386166000908152600560205260409020555b829150506108fa565b6001600160a01b0385166000908152600a602052604090205460ff161561191057611909606461171d600e54866119d390919063ffffffff16565b905061194f565b6001600160a01b0384166000908152600a602052604090205460ff161561194b57611909606461171d600f54866119d390919063ffffffff16565b5060005b80156119c9573060009081526005602052604090205461196f90826115a8565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119c09085815260200190565b60405180910390a35b61159f8382611a97565b6000826000036119e557506000610802565b60006119f18385611fe9565b9050826119fe8583612000565b146108fa5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610832565b60006108fa83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ce0565b60006108fa83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061156e565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611b0e57611b0e612022565b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611b67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8b9190611f27565b81600181518110611b9e57611b9e612022565b6001600160a01b039283166020918202929092010152601654611bc49130911684610fe9565b60165460405163791ac94760e01b81526001600160a01b039091169063791ac94790611bfd908590600090869030904290600401612038565b600060405180830381600087803b158015611c1757600080fd5b505af1158015611c2b573d6000803e3d6000fd5b505050505050565b601654611c4b9030906001600160a01b031684610fe9565b6016546001600160a01b031663f305d719823085600080611c746000546001600160a01b031690565b426040518863ffffffff1660e01b8152600401611c9696959493929190611f44565b60606040518083038185885af1158015611cb4573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611cd99190611f7f565b5050505050565b60008183611d015760405162461bcd60e51b81526004016108329190611d0e565b50600061159f8486612000565b600060208083528351808285015260005b81811015611d3b57858101830151858201604001528201611d1f565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611d7157600080fd5b50565b60008060408385031215611d8757600080fd5b8235611d9281611d5c565b946020939093013593505050565b60008060408385031215611db357600080fd5b50508035926020909101359150565b600080600060608486031215611dd757600080fd5b8335611de281611d5c565b92506020840135611df281611d5c565b929592945050506040919091013590565b60008060408385031215611e1657600080fd5b8235611e2181611d5c565b915060208301358015158114611e3657600080fd5b809150509250929050565b600060208284031215611e5357600080fd5b81356108fa81611d5c565b600080600060608486031215611e7357600080fd5b505081359360208301359350604090920135919050565b60008060408385031215611e9d57600080fd5b8235611ea881611d5c565b91506020830135611e3681611d5c565b600181811c90821680611ecc57607f821691505b602082108103611eec57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215611f3957600080fd5b81516108fa81611d5c565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b600080600060608486031215611f9457600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052601160045260246000fd5b8181038181111561080257610802611fad565b8082018082111561080257610802611fad565b808202811582820484141761080257610802611fad565b60008261201d57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156120885784516001600160a01b031683529383019391830191600101612063565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220aae086be91f05758bcc32de1e1344a7638bae0df7acd407f5bca7c776960c27464736f6c63430008130033

Deployed Bytecode Sourcemap

16364:12668:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18653:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20073:193;;;;;;;;;;-1:-1:-1;20073:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;20073:193:0;1023:187:1;21765:221:0;;;;;;;;;;-1:-1:-1;21765:221:0;;;;;:::i;:::-;;:::i;:::-;;17702:41;;;;;;;;;;-1:-1:-1;17702:41:0;;;;-1:-1:-1;;;;;17702:41:0;;;;;;-1:-1:-1;;;;;1659:32:1;;;1641:51;;1629:2;1614:18;17702:41:0;1468:230:1;18930:100:0;;;;;;;;;;-1:-1:-1;19010:12:0;;18930:100;;;1849:25:1;;;1837:2;1822:18;18930:100:0;1703:177:1;23201:446:0;;;;;;;;;;-1:-1:-1;23201:446:0;;;;;:::i;:::-;;:::i;16699:90::-;;;;;;;;;;;;;;;21591:166;;;;;;;;;;-1:-1:-1;21591:166:0;;;;;:::i;:::-;;:::i;18839:83::-;;;;;;;;;;-1:-1:-1;18905:9:0;;18839:83;;18905:9;;;;3117:36:1;;3105:2;3090:18;18839:83:0;2975:184:1;19357:300:0;;;;;;;;;;-1:-1:-1;19357:300:0;;;;;:::i;:::-;;:::i;17281:27::-;;;;;;;;;;;;;;;;17854:41;;;;;;;;;;-1:-1:-1;17854:41:0;;;;-1:-1:-1;;;17854:41:0;;;;;;17813:34;;;;;;;;;;-1:-1:-1;17813:34:0;;;;-1:-1:-1;;;17813:34:0;;;;;;17093:47;;;;;;;;;;-1:-1:-1;17093:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17191:37;;;;;;;;;;;;;;;;16978:53;;;;;;;;;;-1:-1:-1;16978:53:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19038:119;;;;;;;;;;-1:-1:-1;19038:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;19131:18:0;19104:7;19131:18;;;:9;:18;;;;;;;19038:119;22450:135;;;;;;;;;;;;;:::i;17463:54::-;;;;;;;;;;;;;;;;17524:52;;;;;;;;;;;;;;;;21291:177;;;;;;;;;;;;;:::i;6512:79::-;;;;;;;;;;-1:-1:-1;6550:7:0;6577:6;-1:-1:-1;;;;;6577:6:0;6512:79;;6726:145;;;;;;;;;;;;;:::i;18744:87::-;;;;;;;;;;;;;:::i;17149:35::-;;;;;;;;;;;;;;;;20653:630;;;;;;;;;;;;;:::i;17350:45::-;;;;;;;;;;;;;;;;19665:400;;;;;;;;;;-1:-1:-1;19665:400:0;;;;;:::i;:::-;;:::i;22994:199::-;;;;;;;;;;-1:-1:-1;22994:199:0;;;;;:::i;:::-;;:::i;21994:448::-;;;;;;;;;;-1:-1:-1;21994:448:0;;;;;:::i;:::-;;:::i;17750:26::-;;;;;;;;;;-1:-1:-1;17750:26:0;;;;-1:-1:-1;;;;;17750:26:0;;;17315:28;;;;;;;;;;;;;;;;17235:37;;;;;;;;;;;;;;;;19165:184;;;;;;;;;;-1:-1:-1;19165:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;19314:18:0;;;19282:7;19314:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;19165:184;21476:107;;;;;;;;;;-1:-1:-1;21476:107:0;;;;;:::i;:::-;;:::i;22593:152::-;;;;;;;;;;-1:-1:-1;22593:152:0;;;;;:::i;:::-;;:::i;17038:48::-;;;;;;;;;;-1:-1:-1;17038:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6879:281;;;;;;;;;;-1:-1:-1;6879:281:0;;;;;:::i;:::-;;:::i;16918:53::-;;;;;;;;;;-1:-1:-1;16918:53:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18653:83;18690:13;18723:5;18716:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18653:83;:::o;20073:193::-;20175:4;20197:39;283:10;20220:7;20229:6;20197:8;:39::i;:::-;-1:-1:-1;20254:4:0;20073:193;;;;;:::o;21765:221::-;6639:6;;-1:-1:-1;;;;;6639:6:0;283:10;6639:22;6631:67;;;;-1:-1:-1;;;6631:67:0;;;;;;;:::i;:::-;;;;;;;;;21872:2:::1;21859:9;:15;;:35;;;;;21892:2;21878:10;:16;;21859:35;21851:63;;;::::0;-1:-1:-1;;;21851:63:0;;5078:2:1;21851:63:0::1;::::0;::::1;5060:21:1::0;5117:2;5097:18;;;5090:30;-1:-1:-1;;;5136:18:1;;;5129:45;5191:18;;21851:63:0::1;4876:339:1::0;21851:63:0::1;21925:7;:19:::0;;;;21957:8:::1;:21:::0;21765:221::o;23201:446::-;23333:4;23350:36;23360:6;23368:9;23379:6;23350:9;:36::i;:::-;-1:-1:-1;23397:220:0;23420:6;283:10;23468:138;23524:6;23468:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23468:19:0;;;;;;:11;:19;;;;;;;;283:10;23468:33;;;;;;;;;;:37;:138::i;:::-;23397:8;:220::i;:::-;-1:-1:-1;23635:4:0;23201:446;;;;;;:::o;21591:166::-;6639:6;;-1:-1:-1;;;;;6639:6:0;283:10;6639:22;6631:67;;;;-1:-1:-1;;;6631:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21708:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:41;;-1:-1:-1;;21708:41:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21591:166::o;19357:300::-;283:10;19472:4;19566:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19566:34:0;;;;;;;;;;19472:4;;19494:133;;19544:7;;19566:50;;19605:10;19566:38;:50::i;22450:135::-;6639:6;;-1:-1:-1;;;;;6639:6:0;283:10;6639:22;6631:67;;;;-1:-1:-1;;;6631:67:0;;;;;;;:::i;:::-;-1:-1:-1;;22504:12:0::1;:32:::0;;;22547:10:::1;:30:::0;22450:135::o;21291:177::-;6639:6;;-1:-1:-1;;;;;6639:6:0;283:10;6639:22;6631:67;;;;-1:-1:-1;;;6631:67:0;;;;;;;:::i;:::-;21355:14:::1;::::0;-1:-1:-1;;;21355:14:0;::::1;;;21354:15;21346:43;;;::::0;-1:-1:-1;;;21346:43:0;;5422:2:1;21346:43:0::1;::::0;::::1;5404:21:1::0;5461:2;5441:18;;;5434:30;-1:-1:-1;;;5480:18:1;;;5473:45;5535:18;;21346:43:0::1;5220:339:1::0;21346:43:0::1;21400:14;:21:::0;;-1:-1:-1;;;;21432:28:0;-1:-1:-1;;;21432:28:0;;;21291:177::o;6726:145::-;6639:6;;-1:-1:-1;;;;;6639:6:0;283:10;6639:22;6631:67;;;;-1:-1:-1;;;6631:67:0;;;;;;;:::i;:::-;6830:1:::1;6814:6:::0;;6793:40:::1;::::0;-1:-1:-1;;;;;6814:6:0;;::::1;::::0;6793:40:::1;::::0;6830:1;;6793:40:::1;6861:1;6844:19:::0;;-1:-1:-1;;;;;;6844:19:0::1;::::0;;6726:145::o;18744:87::-;18783:13;18816:7;18809:14;;;;;:::i;20653:630::-;6639:6;;-1:-1:-1;;;;;6639:6:0;283:10;6639:22;6631:67;;;;-1:-1:-1;;;6631:67:0;;;;;;;:::i;:::-;20714:14:::1;::::0;-1:-1:-1;;;20714:14:0;::::1;;;20713:15;20705:43;;;::::0;-1:-1:-1;;;20705:43:0;;5422:2:1;20705:43:0::1;::::0;::::1;5404:21:1::0;5461:2;5441:18;;;5434:30;-1:-1:-1;;;5480:18:1;;;5473:45;5535:18;;20705:43:0::1;5220:339:1::0;20705:43:0::1;20791:15;;;;;;;;;-1:-1:-1::0;;;;;20791:15:0::1;-1:-1:-1::0;;;;;20791:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20773:55:0::1;;20851:4;20871:15;;;;;;;;;-1:-1:-1::0;;;;;20871:15:0::1;-1:-1:-1::0;;;;;20871:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20773:131;::::0;-1:-1:-1;;;;;;20773:131:0::1;::::0;;;;;;-1:-1:-1;;;;;6050:15:1;;;20773:131:0::1;::::0;::::1;6032:34:1::0;6102:15;;6082:18;;;6075:43;5967:18;;20773:131:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20759:11;:145:::0;;-1:-1:-1;;;;;;20759:145:0::1;-1:-1:-1::0;;;;;20759:145:0;;::::1;;::::0;;20972:12:::1;::::0;20937:4:::1;-1:-1:-1::0;20917:26:0;;;:11:::1;:26;::::0;;;;;;;20952:15:::1;::::0;;;::::1;20917:52:::0;;;;;;;;:67;;;;21019:11;;;::::1;20995:37:::0;;:15:::1;:37:::0;;;;;:44;;-1:-1:-1;;20995:44:0::1;-1:-1:-1::0;20995:44:0::1;::::0;;21052:15;;19131:18;;;:9;:18;;;;;;;;21052:15;::::1;::::0;:31:::1;::::0;21091:21:::1;::::0;21195:1:::1;21211::::0;21227:7:::1;6550::::0;6577:6;-1:-1:-1;;;;;6577:6:0;;6512:79;21227:7:::1;21249:15;21052:223;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20653:630::o:0;19665:400::-;19785:4;19807:228;283:10;19857:7;19879:145;19936:15;19879:145;;;;;;;;;;;;;;;;;283:10;19879:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19879:34:0;;;;;;;;;;;;:38;:145::i;22994:199::-;23099:4;23121:42;283:10;23145:9;23156:6;23121:9;:42::i;21994:448::-;6639:6;;-1:-1:-1;;;;;6639:6:0;283:10;6639:22;6631:67;;;;-1:-1:-1;;;6631:67:0;;;;;;;:::i;:::-;22174:16:::1;:36:::0;;;22221:16:::1;:36:::0;;;22268:18:::1;:40:::0;;;22348:86:::1;22289:19:::0;22348:38:::1;22193:17:::0;22240;22348:20:::1;:38::i;:::-;:42:::0;::::1;:86::i;:::-;22321:24;:113:::0;-1:-1:-1;;;21994:448:0:o;21476:107::-;6639:6;;-1:-1:-1;;;;;6639:6:0;283:10;6639:22;6631:67;;;;-1:-1:-1;;;6631:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21544:24:0::1;;::::0;;;:15:::1;:24;::::0;;;;:31;;-1:-1:-1;;21544:31:0::1;21571:4;21544:31;::::0;;21476:107::o;22593:152::-;6639:6;;-1:-1:-1;;;;;6639:6:0;283:10;6639:22;6631:67;;;;-1:-1:-1;;;6631:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22704:24:0;;;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;22704:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22593:152::o;6879:281::-;6639:6;;-1:-1:-1;;;;;6639:6:0;283:10;6639:22;6631:67;;;;-1:-1:-1;;;6631:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6982:22:0;::::1;6960:110;;;::::0;-1:-1:-1;;;6960:110:0;;7254:2:1;6960:110:0::1;::::0;::::1;7236:21:1::0;7293:2;7273:18;;;7266:30;7332:34;7312:18;;;7305:62;-1:-1:-1;;;7383:18:1;;;7376:36;7429:19;;6960:110:0::1;7052:402:1::0;6960:110:0::1;7107:6;::::0;;7086:38:::1;::::0;-1:-1:-1;;;;;7086:38:0;;::::1;::::0;7107:6;::::1;::::0;7086:38:::1;::::0;::::1;7135:6;:17:::0;;-1:-1:-1;;;;;;7135:17:0::1;-1:-1:-1::0;;;;;7135:17:0;;;::::1;::::0;;;::::1;::::0;;6879:281::o;20274:371::-;-1:-1:-1;;;;;20401:19:0;;20393:68;;;;-1:-1:-1;;;20393:68:0;;7661:2:1;20393:68:0;;;7643:21:1;7700:2;7680:18;;;7673:30;7739:34;7719:18;;;7712:62;-1:-1:-1;;;7790:18:1;;;7783:34;7834:19;;20393:68:0;7459:400:1;20393:68:0;-1:-1:-1;;;;;20480:21:0;;20472:68;;;;-1:-1:-1;;;20472:68:0;;8066:2:1;20472:68:0;;;8048:21:1;8105:2;8085:18;;;8078:30;8144:34;8124:18;;;8117:62;-1:-1:-1;;;8195:18:1;;;8188:32;8237:19;;20472:68:0;7864:398:1;20472:68:0;-1:-1:-1;;;;;20553:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;20605:32;;1849:25:1;;;20605:32:0;;1822:18:1;20605:32:0;;;;;;;20274:371;;;:::o;23655:1898::-;23776:4;-1:-1:-1;;;;;23801:20:0;;23793:70;;;;-1:-1:-1;;;23793:70:0;;8469:2:1;23793:70:0;;;8451:21:1;8508:2;8488:18;;;8481:30;8547:34;8527:18;;;8520:62;-1:-1:-1;;;8598:18:1;;;8591:35;8643:19;;23793:70:0;8267:401:1;23793:70:0;-1:-1:-1;;;;;23882:23:0;;23874:71;;;;-1:-1:-1;;;23874:71:0;;8875:2:1;23874:71:0;;;8857:21:1;8914:2;8894:18;;;8887:30;8953:34;8933:18;;;8926:62;-1:-1:-1;;;9004:18:1;;;8997:33;9047:19;;23874:71:0;8673:399:1;23874:71:0;6550:7;6577:6;-1:-1:-1;;;;;23962:17:0;;;6577:6;;23962:17;;:41;;-1:-1:-1;6550:7:0;6577:6;-1:-1:-1;;;;;23983:20:0;;;6577:6;;23983:20;23962:41;23958:141;;;24020:41;24035:6;24043:9;24054:6;24020:14;:41::i;:::-;;24083:4;24076:11;;;;23958:141;-1:-1:-1;;;;;24116:24:0;;;;;;:16;:24;;;;;;;;24115:25;:57;;;;-1:-1:-1;;;;;;24145:27:0;;;;;;:16;:27;;;;;;;;24144:28;24115:57;24111:278;;;24197:14;;-1:-1:-1;;;24197:14:0;;;;24189:49;;;;-1:-1:-1;;;24189:49:0;;9279:2:1;24189:49:0;;;9261:21:1;9318:2;9298:18;;;9291:30;-1:-1:-1;;;9337:18:1;;;9330:52;9399:18;;24189:49:0;9077:346:1;24189:49:0;24289:12;;24279:6;:22;;24253:124;;;;-1:-1:-1;;;24253:124:0;;9630:2:1;24253:124:0;;;9612:21:1;9669:2;9649:18;;;9642:30;9708:34;9688:18;;;9681:62;-1:-1:-1;;;9759:18:1;;;9752:38;9807:19;;24253:124:0;9428:404:1;24253:124:0;24450:4;24401:28;19131:18;;;:9;:18;;;;;;24508:13;;24498:23;;;;;;;24552:57;;-1:-1:-1;24593:16:0;;-1:-1:-1;;;24593:16:0;;;;24592:17;24552:57;:100;;;;-1:-1:-1;;;;;;24626:26:0;;;;;;:15;:26;;;;;;;;24552:100;:138;;;;-1:-1:-1;24669:21:0;;-1:-1:-1;;;24669:21:0;;;;24552:138;:185;;;;-1:-1:-1;;;;;;24708:29:0;;;;;;:21;:29;;;;;;;;24707:30;24552:185;24534:516;;;24791:13;;24768:20;:36;24764:95;;;24846:13;;24823:36;;24764:95;24902:13;;24878:20;:37;24874:96;;24934:36;24949:20;24934:14;:36::i;:::-;25006:8;;24985:53;;25006:8;;;-1:-1:-1;;;;;25006:8:0;25016:21;24985:20;:53::i;:::-;25062:19;25084:34;25092:6;25100:9;25111:6;25084:7;:34::i;:::-;25062:56;;25151:90;25187:6;25151:90;;;;;;;;;;;;;-1:-1:-1;;;25151:90:0;;;:9;:17;25161:6;-1:-1:-1;;;;;25151:17:0;-1:-1:-1;;;;;25151:17:0;;;;;;;;;;;;;:21;;:90;;;;;:::i;:::-;-1:-1:-1;;;;;25131:17:0;;;;;;;:9;:17;;;;;;;;:110;;;;25259:27;;;;;:16;:27;;;;;;;25258:28;:59;;;;-1:-1:-1;;;;;;25291:26:0;;;;;;:15;:26;;;;;;;;25290:27;25258:59;25254:138;;;25381:10;;25340:37;25365:11;25340:20;25350:9;-1:-1:-1;;;;;19131:18:0;19104:7;19131:18;;;:9;:18;;;;;;;19038:119;25340:37;:51;;25332:60;;;;;;-1:-1:-1;;;;;25428:20:0;;;;;;:9;:20;;;;;;:37;;25453:11;25428:24;:37::i;:::-;-1:-1:-1;;;;;25405:20:0;;;;;;;:9;:20;;;;;;;:60;;;;25483:40;;;;;;;;;;25511:11;1849:25:1;;1837:2;1822:18;;1703:177;25483:40:0;;;;;;;;-1:-1:-1;25541:4:0;;23655:1898;-1:-1:-1;;;;;;23655:1898:0:o;1709:226::-;1829:7;1865:12;1857:6;;;;1849:29;;;;-1:-1:-1;;;1849:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1889:9:0;1901:5;1905:1;1901;:5;:::i;:::-;1889:17;1709:226;-1:-1:-1;;;;;1709:226:0:o;1376:181::-;1434:7;;1466:5;1470:1;1466;:5;:::i;:::-;1454:17;;1495:1;1490;:6;;1482:46;;;;-1:-1:-1;;;1482:46:0;;10434:2:1;1482:46:0;;;10416:21:1;10473:2;10453:18;;;10446:30;10512:29;10492:18;;;10485:57;10559:18;;1482:46:0;10232:351:1;25561:401:0;25725:90;;;;;;;;;;;-1:-1:-1;;;25725:90:0;;;;;;;;-1:-1:-1;;;;;25725:17:0;;25688:4;25725:17;;;:9;:17;;;;;;;:90;;25761:6;;25725:21;:90::i;:::-;-1:-1:-1;;;;;25705:17:0;;;;;;;:9;:17;;;;;;:110;;;;25849:20;;;;;;;:32;;25874:6;25849:24;:32::i;:::-;-1:-1:-1;;;;;25826:20:0;;;;;;;:9;:20;;;;;;;:55;;;;25897:35;;;;;;;;;;25925:6;1849:25:1;;1837:2;1822:18;;1703:177;25897:35:0;;;;;;;;-1:-1:-1;25950:4:0;25561:401;;;;;:::o;25970:997::-;17938:16;:23;;-1:-1:-1;;;;17938:23:0;-1:-1:-1;;;17938:23:0;;;26126:24:::1;::::0;26090:16:::1;::::0;17938:23;;26064:108:::1;::::0;26170:1:::1;::::0;26064:87:::1;::::0;;;:7;;:25:::1;:43::i;:::-;:61:::0;::::1;:87::i;:108::-;26042:130:::0;-1:-1:-1;26183:21:0::1;26207:24;:7:::0;26042:130;26207:11:::1;:24::i;:::-;26183:48;;26244:31;26261:13;26244:16;:31::i;:::-;26410:16;::::0;26311:21:::1;::::0;26286:22:::1;::::0;26367:77:::1;::::0;26410:23:::1;::::0;26431:1:::1;26410:20;:23::i;:::-;26367:24;::::0;;:28:::1;:77::i;:::-;26345:99;;26457:26;26486:102;26586:1;26486:81;26555:11;26486:50;26519:16;;26486:14;:32;;:50;;;;:::i;:102::-;26457:131;;26599:28;26630:83;26701:11;26630:52;26663:18;;26630:14;:32;;:52;;;;:::i;:83::-;26599:114:::0;-1:-1:-1;26724:26:0::1;26753:88;26599:114:::0;26753:38:::1;:14:::0;26772:18;26753::::1;:38::i;:::-;:42:::0;::::1;:88::i;:::-;26724:117;;26879:1;26858:18;:22;:41;;;;;26898:1;26884:11;:15;26858:41;26854:105;;;26914:45;26927:11;26940:18;26914:12;:45::i;:::-;-1:-1:-1::0;;17984:16:0;:24;;-1:-1:-1;;;;17984:24:0;;;-1:-1:-1;;;;;;25970:997:0:o;22753:140::-;22859:26;;-1:-1:-1;;;;;22859:18:0;;;:26;;;;;22878:6;;22859:26;;;;22878:6;22859:18;:26;;;;;;;;;;;;;;;;;;;28109:920;-1:-1:-1;;;;;28292:29:0;;28229:7;28292:29;;;:21;:29;;;;;;28269:6;;28292:29;;;:65;;-1:-1:-1;;;;;;28325:32:0;;;;;;:21;:32;;;;;;;;28292:65;28288:247;;;-1:-1:-1;;;;;28378:29:0;;;;;;:21;:29;;;;;;;;28374:122;;;-1:-1:-1;;;;;28448:17:0;;;;;;:9;:17;;;;;;:32;;28470:9;28448:21;:32::i;:::-;-1:-1:-1;;;;;28428:17:0;;;;;;:9;:17;;;;;:52;28374:122;28517:6;28510:13;;;;;28288:247;-1:-1:-1;;;;;28551:23:0;;;;;;:15;:23;;;;;;;;28547:248;;;28603:28;28627:3;28603:19;28614:7;;28603:6;:10;;:19;;;;:::i;:28::-;28591:40;;28547:248;;;-1:-1:-1;;;;;28653:26:0;;;;;;:15;:26;;;;;;;;28649:146;;;28708:29;28733:3;28708:20;28719:8;;28708:6;:10;;:20;;;;:::i;28649:146::-;-1:-1:-1;28782:1:0;28649:146;28811:13;;28807:174;;28886:4;28868:24;;;;:9;:24;;;;;;:39;;28897:9;28868:28;:39::i;:::-;28859:4;28841:24;;;;:9;:24;;;;;;;:66;;;;28927:42;;-1:-1:-1;;;;;28927:42:0;;;;;;;28959:9;1849:25:1;;1837:2;1822:18;;1703:177;28927:42:0;;;;;;;;28807:174;29000:21;:6;29011:9;29000:10;:21::i;1943:250::-;2001:7;2025:1;2030;2025:6;2021:47;;-1:-1:-1;2055:1:0;2048:8;;2021:47;2080:9;2092:5;2096:1;2092;:5;:::i;:::-;2080:17;-1:-1:-1;2125:1:0;2116:5;2120:1;2080:17;2116:5;:::i;:::-;:10;2108:56;;;;-1:-1:-1;;;2108:56:0;;11185:2:1;2108:56:0;;;11167:21:1;11224:2;11204:18;;;11197:30;11263:34;11243:18;;;11236:62;-1:-1:-1;;;11314:18:1;;;11307:31;11355:19;;2108:56:0;10983:397:1;2201:132:0;2259:7;2286:39;2290:1;2293;2286:39;;;;;;;;;;;;;;;;;:3;:39::i;1565:136::-;1623:7;1650:43;1654:1;1657;1650:43;;;;;;;;;;;;;;;;;:3;:43::i;26975:605::-;27125:16;;;27139:1;27125:16;;;;;;;;27101:21;;27125:16;;;;;;;;;;-1:-1:-1;27125:16:0;27101:40;;27170:4;27152;27157:1;27152:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;27152:23:0;;;:7;;;;;;;;;;:23;;;;27196:15;;:22;;;-1:-1:-1;;;27196:22:0;;;;:15;;;;;:20;;:22;;;;;27152:7;;27196:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27186:4;27191:1;27186:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;27186:32:0;;;:7;;;;;;;;;:32;27263:15;;27231:62;;27248:4;;27263:15;27281:11;27231:8;:62::i;:::-;27332:15;;:240;;-1:-1:-1;;;27332:240:0;;-1:-1:-1;;;;;27332:15:0;;;;:66;;:240;;27413:11;;27332:15;;27483:4;;27510;;27546:15;;27332:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27030:550;26975:605;:::o;27588:513::-;27768:15;;27736:62;;27753:4;;-1:-1:-1;;;;;27768:15:0;27786:11;27736:8;:62::i;:::-;27841:15;;-1:-1:-1;;;;;27841:15:0;:31;27880:9;27913:4;27933:11;27841:15;;28045:7;6550;6577:6;-1:-1:-1;;;;;6577:6:0;;6512:79;28045:7;28067:15;27841:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;27588:513;;:::o;2341:312::-;2461:7;2496:12;2489:5;2481:28;;;;-1:-1:-1;;;2481:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2520:9:0;2532:5;2536:1;2532;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:248::-;1283:6;1291;1344:2;1332:9;1323:7;1319:23;1315:32;1312:52;;;1360:1;1357;1350:12;1312:52;-1:-1:-1;;1383:23:1;;;1453:2;1438:18;;;1425:32;;-1:-1:-1;1215:248:1:o;1885:456::-;1962:6;1970;1978;2031:2;2019:9;2010:7;2006:23;2002:32;1999:52;;;2047:1;2044;2037:12;1999:52;2086:9;2073:23;2105:31;2130:5;2105:31;:::i;:::-;2155:5;-1:-1:-1;2212:2:1;2197:18;;2184:32;2225:33;2184:32;2225:33;:::i;:::-;1885:456;;2277:7;;-1:-1:-1;;;2331:2:1;2316:18;;;;2303:32;;1885:456::o;2554:416::-;2619:6;2627;2680:2;2668:9;2659:7;2655:23;2651:32;2648:52;;;2696:1;2693;2686:12;2648:52;2735:9;2722:23;2754:31;2779:5;2754:31;:::i;:::-;2804:5;-1:-1:-1;2861:2:1;2846:18;;2833:32;2903:15;;2896:23;2884:36;;2874:64;;2934:1;2931;2924:12;2874:64;2957:7;2947:17;;;2554:416;;;;;:::o;3164:247::-;3223:6;3276:2;3264:9;3255:7;3251:23;3247:32;3244:52;;;3292:1;3289;3282:12;3244:52;3331:9;3318:23;3350:31;3375:5;3350:31;:::i;3416:316::-;3493:6;3501;3509;3562:2;3550:9;3541:7;3537:23;3533:32;3530:52;;;3578:1;3575;3568:12;3530:52;-1:-1:-1;;3601:23:1;;;3671:2;3656:18;;3643:32;;-1:-1:-1;3722:2:1;3707:18;;;3694:32;;3416:316;-1:-1:-1;3416:316:1:o;3737:388::-;3805:6;3813;3866:2;3854:9;3845:7;3841:23;3837:32;3834:52;;;3882:1;3879;3872:12;3834:52;3921:9;3908:23;3940:31;3965:5;3940:31;:::i;:::-;3990:5;-1:-1:-1;4047:2:1;4032:18;;4019:32;4060:33;4019:32;4060:33;:::i;4130:380::-;4209:1;4205:12;;;;4252;;;4273:61;;4327:4;4319:6;4315:17;4305:27;;4273:61;4380:2;4372:6;4369:14;4349:18;4346:38;4343:161;;4426:10;4421:3;4417:20;4414:1;4407:31;4461:4;4458:1;4451:15;4489:4;4486:1;4479:15;4343:161;;4130:380;;;:::o;4515:356::-;4717:2;4699:21;;;4736:18;;;4729:30;4795:34;4790:2;4775:18;;4768:62;4862:2;4847:18;;4515:356::o;5564:251::-;5634:6;5687:2;5675:9;5666:7;5662:23;5658:32;5655:52;;;5703:1;5700;5693:12;5655:52;5735:9;5729:16;5754:31;5779:5;5754:31;:::i;6129:607::-;-1:-1:-1;;;;;6488:15:1;;;6470:34;;6535:2;6520:18;;6513:34;;;;6578:2;6563:18;;6556:34;;;;6621:2;6606:18;;6599:34;;;;6670:15;;;6664:3;6649:19;;6642:44;6450:3;6702:19;;6695:35;;;;6419:3;6404:19;;6129:607::o;6741:306::-;6829:6;6837;6845;6898:2;6886:9;6877:7;6873:23;6869:32;6866:52;;;6914:1;6911;6904:12;6866:52;6943:9;6937:16;6927:26;;6993:2;6982:9;6978:18;6972:25;6962:35;;7037:2;7026:9;7022:18;7016:25;7006:35;;6741:306;;;;;:::o;9837:127::-;9898:10;9893:3;9889:20;9886:1;9879:31;9929:4;9926:1;9919:15;9953:4;9950:1;9943:15;9969:128;10036:9;;;10057:11;;;10054:37;;;10071:18;;:::i;10102:125::-;10167:9;;;10188:10;;;10185:36;;;10201:18;;:::i;10588:168::-;10661:9;;;10692;;10709:15;;;10703:22;;10689:37;10679:71;;10730:18;;:::i;10761:217::-;10801:1;10827;10817:132;;10871:10;10866:3;10862:20;10859:1;10852:31;10906:4;10903:1;10896:15;10934:4;10931:1;10924:15;10817:132;-1:-1:-1;10963:9:1;;10761:217::o;11517:127::-;11578:10;11573:3;11569:20;11566:1;11559:31;11609:4;11606:1;11599:15;11633:4;11630:1;11623:15;11649:980;11911:4;11959:3;11948:9;11944:19;11990:6;11979:9;11972:25;12016:2;12054:6;12049:2;12038:9;12034:18;12027:34;12097:3;12092:2;12081:9;12077:18;12070:31;12121:6;12156;12150:13;12187:6;12179;12172:22;12225:3;12214:9;12210:19;12203:26;;12264:2;12256:6;12252:15;12238:29;;12285:1;12295:195;12309:6;12306:1;12303:13;12295:195;;;12374:13;;-1:-1:-1;;;;;12370:39:1;12358:52;;12465:15;;;;12430:12;;;;12406:1;12324:9;12295:195;;;-1:-1:-1;;;;;;;12546:32:1;;;;12541:2;12526:18;;12519:60;-1:-1:-1;;;12610:3:1;12595:19;12588:35;12507:3;11649:980;-1:-1:-1;;;11649:980:1:o

Swarm Source

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