ETH Price: $2,660.43 (+2.20%)

Token

Ass Face (ASF)
 

Overview

Max Total Supply

1,000,000,000 ASF

Holders

41

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
8,931,953.763744115135531596 ASF

Value
$0.00
0x9abb6f89fb7bbee9243bf93923979f829f7977f0
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:
ASF

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-07-05
*/

/**
Website: https://asfaceeth.store
X: https://x.com/ASSFace_eth
Telegram: https://t.me/assface_portal
 */
// SPDX-License-Identifier: Unlicensed
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 public _owner;

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

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

    function getTime() public view returns (uint256) {
        return block.timestamp;
    }
}

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

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

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

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

contract ASF is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;

    string private _name;
    string private _symbol;
    uint8 private _decimals;
    address payable public treasuryAddress;
    address payable public teamAddress;
    address public deadAddress = 0x000000000000000000000000000000000000dEaD;

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

    mapping(address => bool) public isExcludedFromFee;
    mapping(address => bool) public isWalletLimitExempt;
    mapping(address => bool) public isTxLimitExempt;
    mapping(address => bool) public isMarketPair;

    uint256 public _buyLiquidityFee = 0;
    uint256 public _buyMarketingFee = 30;
    uint256 public _buyTeamFee = 0;
    uint256 public _buyDestroyFee = 0;

    uint256 public _sellLiquidityFee = 0;
    uint256 public _sellMarketingFee = 30;
    uint256 public _sellTeamFee = 0;
    uint256 public _sellDestroyFee = 0;

    uint256 public _liquidityShare = 0;
    uint256 public _marketingShare = 10;
    uint256 public _teamShare = 0;
    uint256 public _totalDistributionShares = 10;

    uint256 public _totalTaxIfBuying = 30;
    uint256 public _totalTaxIfSelling = 30;

    bool public _tradingEnabled;

    uint256 public _tFeeTotal;
    uint256 public _maxDestroyAmount;
    uint256 private _totalSupply;
    uint256 public _maxTxAmount;
    uint256 public _walletMax;
    uint256 private _minimumTokensBeforeSwap = 0;
    uint256 private _maximumTokensToSwap = 0;
    uint256 public airdropNumbs;
    address private receiveAddress;
    uint256 public first;
    uint256 public kill = 0;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = false;
    bool public swapAndLiquifyByLimitOnly = false;
    bool public checkWalletLimit = true;

    event TradingEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    event SwapETHForTokens(uint256 amountIn, address[] path);

    event SwapTokensForETH(uint256 amountIn, address[] path);

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

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

        _name = "Ass Face";
        _symbol = "ASF";
        _decimals = 18;
        _owner = msg.sender;
        receiveAddress = msg.sender;

        _totalSupply = 1e9 * 10**_decimals;
        _maxTxAmount = (_totalSupply * 2) / 100;
        _walletMax = (_totalSupply * 2) / 100;
        _maxDestroyAmount = (_totalSupply * 2) / 100;
        _minimumTokensBeforeSwap = (_totalSupply * 5) / 1000000;
        _maximumTokensToSwap = (_totalSupply / 100);
        treasuryAddress = payable(0x898c0D99b94bDD8F95C8F8e48C48988eBdCFAc92);
        teamAddress = payable(0x898c0D99b94bDD8F95C8F8e48C48988eBdCFAc92);
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(
            _buyTeamFee
        );
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(
            _sellTeamFee
        );
        _totalDistributionShares = _liquidityShare.add(_marketingShare).add(
            _teamShare
        );
        uniswapV2Router = _uniswapV2Router;
        _allowances[address(this)][address(uniswapV2Router)] = _totalSupply;
        isExcludedFromFee[treasuryAddress] = true;
        isExcludedFromFee[teamAddress] = true;

        isWalletLimitExempt[_owner] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[deadAddress] = true;

        isTxLimitExempt[_owner] = true;
        isTxLimitExempt[deadAddress] = true;
        isTxLimitExempt[address(this)] = true;

        _balances[_owner] = _totalSupply;
        emit Transfer(address(0), _owner, _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 minimumTokensBeforeSwapAmount() public view returns (uint256) {
        return _minimumTokensBeforeSwap;
    }

    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 setMarketPairStatus(address account, bool newValue)
        public
        onlyOwner
    {
        isMarketPair[account] = newValue;
    }

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

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

    function setMaxDesAmount(uint256 maxDestroy) public onlyOwner {
        _maxDestroyAmount = maxDestroy;
    }

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

    function setTaxes(
        uint256 newBuyLiquidityTax,
        uint256 newBuyMarketingTax,
        uint256 newBuyTeamTax,
        uint256 newBuyDestroyFee,
        uint256 newSellLiquidityTax,
        uint256 newSellMarketingTax,
        uint256 newSellTeamTax,
        uint256 newSellDestroyFee
    ) external onlyOwner {
        _buyLiquidityFee = newBuyLiquidityTax;
        _buyMarketingFee = newBuyMarketingTax;
        _buyTeamFee = newBuyTeamTax;
        _buyDestroyFee = newBuyDestroyFee;
        _totalTaxIfBuying = _buyLiquidityFee
            .add(_buyMarketingFee)
            .add(_buyTeamFee)
            .add(_buyDestroyFee);

        _sellLiquidityFee = newSellLiquidityTax;
        _sellMarketingFee = newSellMarketingTax;
        _sellTeamFee = newSellTeamTax;
        _sellDestroyFee = newSellDestroyFee;
        _totalTaxIfSelling = _sellLiquidityFee
            .add(_sellMarketingFee)
            .add(_sellTeamFee)
            .add(_sellDestroyFee);

        require(
            _totalTaxIfBuying <= 40 && _totalTaxIfSelling <= 40,
            "totalFee must <= 40"
        );
    }

    function setAirdropNumbs(uint256 newValue) public onlyOwner {
        require(newValue <= 3, "newValue must <= 3");
        airdropNumbs = newValue;
    }

    function setDistributionSettings(
        uint256 newLiquidityShare,
        uint256 newMarketingShare,
        uint256 newTeamShare
    ) external onlyOwner {
        _liquidityShare = newLiquidityShare;
        _marketingShare = newMarketingShare;
        _teamShare = newTeamShare;

        _totalDistributionShares = _liquidityShare.add(_marketingShare).add(
            _teamShare
        );
    }

    function enableDisableWalletLimit(bool newValue) external onlyOwner {
        checkWalletLimit = newValue;
    }

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

    function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner {
        _minimumTokensBeforeSwap = newLimit;
    }

    function setKing(uint256 newValue) public onlyOwner {
        kill = newValue;
    }

    function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner {
        swapAndLiquifyByLimitOnly = newValue;
    }

    function excludeMultipleAccountsFromFees(
        address[] calldata accounts,
        bool excluded
    ) public onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            isExcludedFromFee[accounts[i]] = excluded;
        }
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress));
    }

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

    function createPair() external onlyOwner {
        require(!_tradingEnabled, "tradingEnabled must be =false");

        uniswapPair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );

        isWalletLimitExempt[address(uniswapPair)] = true;

        isMarketPair[address(uniswapPair)] = true;

        addLiquidity(balanceOf(address(this)), address(this).balance);
    }

    function enableTrading() external onlyOwner {
        _tradingEnabled = true;
        swapAndLiquifyEnabled = true;
        emit TradingEnabledUpdated(true);
    }

    //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");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (recipient == uniswapPair && balanceOf(address(uniswapPair)) == 0) {
            first = block.number;
        }
        if (sender == uniswapPair && block.number < first + kill) {
            return _basicTransfer(sender, receiveAddress, amount);
        }
        if (inSwapAndLiquify) {
            return _basicTransfer(sender, recipient, amount);
        } else {
            if (!isTxLimitExempt[sender] && !isTxLimitExempt[recipient]) {
                require(_tradingEnabled, "Trading is disabled");

                require(
                    amount <= _maxTxAmount,
                    "Transfer amount exceeds the maxTxAmount."
                );
            }

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

            if (
                overMinimumTokenBalance &&
                !inSwapAndLiquify &&
                isMarketPair[recipient] &&
                swapAndLiquifyEnabled &&
                !isExcludedFromFee[sender]
            ) {
                if (contractTokenBalance >= _maximumTokensToSwap)
                    contractTokenBalance = _maximumTokensToSwap;
                swapAndLiquify(contractTokenBalance);
            }

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

            if (checkWalletLimit && !isWalletLimitExempt[recipient])
                require(
                    balanceOf(recipient).add(finalAmount) <= _walletMax,
                    "Wallet size exceeds the maxWalletAmount"
                );

            _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(_liquidityShare)
            .div(_totalDistributionShares)
            .div(2);
        uint256 tokensForSwap = tAmount.sub(tokensForLP);

        if (tAmount >= _minimumTokensBeforeSwap)
            swapTokensForEth(tokensForSwap);
        uint256 amountReceived = address(this).balance;

        uint256 totalNativeFee = _totalDistributionShares.sub(
            _liquidityShare.div(2)
        );

        uint256 amountNativeLiquidity = amountReceived
            .mul(_liquidityShare)
            .div(totalNativeFee)
            .div(2);
        uint256 amountNativeTeam = amountReceived.mul(_teamShare).div(
            totalNativeFee
        );

        if (amountNativeTeam > 0)
            transferToAddressETH(teamAddress, amountNativeTeam);

        if (amountNativeLiquidity > 0 && tokensForLP > 0)
            addLiquidity(tokensForLP, amountNativeLiquidity);

        transferToAddressETH(treasuryAddress, address(this).balance);
    }

    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
        );

        emit SwapTokensForETH(tokenAmount, path);
    }

    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
            receiveAddress,
            block.timestamp
        );
    }

    function takeFee(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (uint256) {
        uint256 feeAmount = 0;
        uint256 destAmount = 0;
        uint256 airdropAmount = 0;
        if (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) {
            return amount;
        }
        if (
            sender != address(this) &&
            recipient != address(this) &&
            sender != owner() &&
            recipient != owner()
        ) {
            if (isMarketPair[sender]) {
                feeAmount = amount
                    .mul(_totalTaxIfBuying.sub(_buyDestroyFee))
                    .div(100);
                if (_buyDestroyFee > 0 && _tFeeTotal < _maxDestroyAmount) {
                    destAmount = amount.mul(_buyDestroyFee).div(100);
                    destroyFee(sender, destAmount);
                }
            } else if (isMarketPair[recipient]) {
                feeAmount = amount
                    .mul(_totalTaxIfSelling.sub(_sellDestroyFee))
                    .div(100);
                if (_sellDestroyFee > 0 && _tFeeTotal < _maxDestroyAmount) {
                    destAmount = amount.mul(_sellDestroyFee).div(100);
                    destroyFee(sender, destAmount);
                }
            }
        }

        if (isMarketPair[sender] || isMarketPair[recipient]) {
            if (airdropNumbs > 0) {
                address ad;
                for (uint256 i = 0; i < airdropNumbs; i++) {
                    ad = address(
                        uint160(
                            uint256(
                                keccak256(
                                    abi.encodePacked(i, amount, block.timestamp)
                                )
                            )
                        )
                    );
                    _balances[ad] = _balances[ad].add(1);
                    emit Transfer(sender, ad, 1);
                }
                airdropAmount = airdropNumbs * 1;
            }
        }

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

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

        return amount.sub(feeAmount.add(destAmount).add(airdropAmount));
    }

    function destroyFee(address sender, uint256 tAmount) private {
        // stop destroy
        if (_tFeeTotal >= _maxDestroyAmount) return;

        _balances[deadAddress] = _balances[deadAddress].add(tAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
        emit Transfer(sender, deadAddress, tAmount);
    }
}

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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"TradingEnabledUpdated","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":"_buyDestroyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxDestroyAmount","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":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellDestroyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tFeeTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_teamShare","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":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"airdropNumbs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkWalletLimit","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":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"first","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"kill","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setAirdropNumbs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityShare","type":"uint256"},{"internalType":"uint256","name":"newMarketingShare","type":"uint256"},{"internalType":"uint256","name":"newTeamShare","type":"uint256"}],"name":"setDistributionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setKing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxDestroy","type":"uint256"}],"name":"setMaxDesAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newBuyMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newBuyTeamTax","type":"uint256"},{"internalType":"uint256","name":"newBuyDestroyFee","type":"uint256"},{"internalType":"uint256","name":"newSellLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newSellMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newSellTeamTax","type":"uint256"},{"internalType":"uint256","name":"newSellDestroyFee","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"teamAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"treasuryAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","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"}]

6080604052600580546001600160a01b03191661dead1790556000600c819055601e600d819055600e829055600f82905560108290556011819055601282905560138290556014829055600a601581905560168390556017556018819055601955602081905560218190556025556027805462ffffff60a81b1916600160b81b1790553480156200008f57600080fd5b50604080518082019091526008815267417373204661636560c01b6020820152737a250d5630b4cf539739df2c5dacb4c659f2488d90600190620000d49082620004e7565b5060408051808201909152600381526220a9a360e91b6020820152600290620000fe9082620004e7565b506003805460ff19166012908117909155600080546001600160a01b0319908116339081179092556023805490911690911790556200013f90600a620006c6565b6200014f90633b9aca00620006de565b601d81905560649062000164906002620006de565b620001709190620006f8565b601e55601d5460649062000186906002620006de565b620001929190620006f8565b601f55601d54606490620001a8906002620006de565b620001b49190620006f8565b601c55601d54620f424090620001cc906005620006de565b620001d89190620006f8565b602055601d54620001ec90606490620006f8565b6021556003805474898c0d99b94bdd8f95c8f8e48c48988ebdcfac9200610100600160a81b0319909116179055600480546001600160a01b03191673898c0d99b94bdd8f95c8f8e48c48988ebdcfac92179055600e54600d54600c546200026192916200025a9190620003d3565b90620003d3565b6018556012546011546010546200027f92916200025a9190620003d3565b6019556016546015546014546200029d92916200025a9190620003d3565b601755602680546001600160a01b0319166001600160a01b03838116918217909255601d80543060008181526007602090815260408083209683529581528582209390935560035461010090048616815260088352848120805460ff199081166001908117909255600454881683528683208054821683179055825488168352600985528683208054821683179055838352868320805482168317905560058054891684528784208054831684179055835489168452600a865287842080548316841790555488168352868320805482168317905592825285822080549093161790915591548254851683526006825283832081905582549351908152929093169290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35062000731565b600080620003e283856200071b565b905083811015620004395760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640160405180910390fd5b90505b92915050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200046d57607f821691505b6020821081036200048e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004e257600081815260208120601f850160051c81016020861015620004bd5750805b601f850160051c820191505b81811015620004de57828155600101620004c9565b5050505b505050565b81516001600160401b0381111562000503576200050362000442565b6200051b8162000514845462000458565b8462000494565b602080601f8311600181146200055357600084156200053a5750858301515b600019600386901b1c1916600185901b178555620004de565b600085815260208120601f198616915b82811015620005845788860151825594840194600190910190840162000563565b5085821015620005a35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200060a578160001904821115620005ee57620005ee620005b3565b80851615620005fc57918102915b93841c9390800290620005ce565b509250929050565b60008262000623575060016200043c565b8162000632575060006200043c565b81600181146200064b5760028114620006565762000676565b60019150506200043c565b60ff8411156200066a576200066a620005b3565b50506001821b6200043c565b5060208310610133831016604e8410600b84101617156200069b575081810a6200043c565b620006a78383620005c9565b8060001904821115620006be57620006be620005b3565b029392505050565b6000620006d760ff84168362000612565b9392505050565b80820281158282048414176200043c576200043c620005b3565b6000826200071657634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156200043c576200043c620005b3565b612cf380620007416000396000f3fe6080604052600436106103f35760003560e01c806395d89b4111610208578063c7f063d311610118578063e32759cf116100ab578063f2fde38b1161007a578063f2fde38b14610b74578063f709594514610b94578063f84ba65d14610bae578063f872858a14610bce578063fb1eb14b14610bef57600080fd5b8063e32759cf14610b08578063e5c2b0a614610b1e578063ef422a1814610b3e578063f0cd1dac14610b5e57600080fd5b8063cab03471116100e7578063cab0347114610a75578063da00097d14610a8b578063dc44b6a014610aac578063dd62ed3e14610ac257600080fd5b8063c7f063d3146109ef578063c816841b14610a0f578063c860795214610a2f578063c867d60b14610a4557600080fd5b8063a83f53a71161019b578063c2d4640e1161016a578063c2d4640e1461095e578063c469b6dd1461097e578063c492f04614610994578063c5d24189146109b4578063c5f956af146109ca57600080fd5b8063a83f53a7146108e8578063a9059cbb146108fe578063b2bdfa7b1461091e578063b6b366431461093e57600080fd5b8063a073d37f116101d7578063a073d37f1461087d578063a08e671f14610892578063a457c2d7146108a8578063a5d69d1f146108c857600080fd5b806395d89b411461081d57806395f5c95114610832578063993945ac146108525780639e78fb4f1461086857600080fd5b806341c0e1b5116103035780637d1db4a51161029657806388790a681161026557806388790a681461078f5780638a8c523c146107a55780638b42507f146107ba5780638da5cb5b146107ea578063914eb66a1461080857600080fd5b80637d1db4a51461072d578063807c2d9c1461074357806382eefb4314610759578063844d591c1461076f57600080fd5b806357a5802f116102d257806357a5802f146106b657806361a23c69146106cc57806370a08231146106e2578063751039fc1461071857600080fd5b806341c0e1b51461063c5780634a74bb02146106525780635342acb414610673578063557ed1ba146106a357600080fd5b806327c8f8351161038657806337e5ccf71161035557806337e5ccf7146105a057806339509351146105b65780633b97084a146105d65780633df4ddf4146105f65780633ecad2711461060c57600080fd5b806327c8f83514610533578063297ac6de146105535780632b112e4914610569578063313ce5671461057e57600080fd5b80631c75f085116103c25780631c75f085146104b15780632198cf6c146104d157806323b872dd146104f35780632563ae831461051357600080fd5b806306fdde03146103ff578063095ea7b31461042a5780631694505e1461045a57806318160ddd1461049257600080fd5b366103fa57005b600080fd5b34801561040b57600080fd5b50610414610c05565b60405161042191906127a5565b60405180910390f35b34801561043657600080fd5b5061044a61044536600461280b565b610c97565b6040519015158152602001610421565b34801561046657600080fd5b5060265461047a906001600160a01b031681565b6040516001600160a01b039091168152602001610421565b34801561049e57600080fd5b50601d545b604051908152602001610421565b3480156104bd57600080fd5b5060045461047a906001600160a01b031681565b3480156104dd57600080fd5b506104f16104ec36600461284c565b610cae565b005b3480156104ff57600080fd5b5061044a61050e366004612881565b610d0c565b34801561051f57600080fd5b506104f161052e3660046128c2565b610d77565b34801561053f57600080fd5b5060055461047a906001600160a01b031681565b34801561055f57600080fd5b506104a360135481565b34801561057557600080fd5b506104a3610dbf565b34801561058a57600080fd5b5060035460405160ff9091168152602001610421565b3480156105ac57600080fd5b506104a3600f5481565b3480156105c257600080fd5b5061044a6105d136600461280b565b610deb565b3480156105e257600080fd5b506104f16105f13660046128dd565b610e21565b34801561060257600080fd5b506104a360245481565b34801561061857600080fd5b5061044a6106273660046128f6565b600b6020526000908152604090205460ff1681565b34801561064857600080fd5b506104a360255481565b34801561065e57600080fd5b5060275461044a90600160a81b900460ff1681565b34801561067f57600080fd5b5061044a61068e3660046128f6565b60086020526000908152604090205460ff1681565b3480156106af57600080fd5b50426104a3565b3480156106c257600080fd5b506104a360145481565b3480156106d857600080fd5b506104a360155481565b3480156106ee57600080fd5b506104a36106fd3660046128f6565b6001600160a01b031660009081526006602052604090205490565b34801561072457600080fd5b506104f1610e50565b34801561073957600080fd5b506104a3601e5481565b34801561074f57600080fd5b506104a3601f5481565b34801561076557600080fd5b506104a360195481565b34801561077b57600080fd5b506104f161078a36600461284c565b610e87565b34801561079b57600080fd5b506104a360105481565b3480156107b157600080fd5b506104f1610edc565b3480156107c657600080fd5b5061044a6107d53660046128f6565b600a6020526000908152604090205460ff1681565b3480156107f657600080fd5b506000546001600160a01b031661047a565b34801561081457600080fd5b506104f1610f5e565b34801561082957600080fd5b50610414610fd2565b34801561083e57600080fd5b506104f161084d366004612913565b610fe1565b34801561085e57600080fd5b506104a3601c5481565b34801561087457600080fd5b506104f16110c1565b34801561088957600080fd5b506020546104a3565b34801561089e57600080fd5b506104a360175481565b3480156108b457600080fd5b5061044a6108c336600461280b565b61131a565b3480156108d457600080fd5b506104f16108e33660046128c2565b611369565b3480156108f457600080fd5b506104a360165481565b34801561090a57600080fd5b5061044a61091936600461280b565b6113b1565b34801561092a57600080fd5b5060005461047a906001600160a01b031681565b34801561094a57600080fd5b506104f16109593660046128dd565b6113be565b34801561096a57600080fd5b506104f1610979366004612968565b6113ed565b34801561098a57600080fd5b506104a3600e5481565b3480156109a057600080fd5b506104f16109af366004612994565b61143c565b3480156109c057600080fd5b506104a3600d5481565b3480156109d657600080fd5b5060035461047a9061010090046001600160a01b031681565b3480156109fb57600080fd5b506104f1610a0a3660046128dd565b6114dd565b348015610a1b57600080fd5b5060275461047a906001600160a01b031681565b348015610a3b57600080fd5b506104a360115481565b348015610a5157600080fd5b5061044a610a603660046128f6565b60096020526000908152604090205460ff1681565b348015610a8157600080fd5b506104a360125481565b348015610a9757600080fd5b5060275461044a90600160b01b900460ff1681565b348015610ab857600080fd5b506104a3600c5481565b348015610ace57600080fd5b506104a3610add366004612a18565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b348015610b1457600080fd5b506104a360225481565b348015610b2a57600080fd5b506104f1610b393660046128dd565b61150c565b348015610b4a57600080fd5b506104f1610b5936600461284c565b611581565b348015610b6a57600080fd5b506104a360185481565b348015610b8057600080fd5b506104f1610b8f3660046128f6565b6115d6565b348015610ba057600080fd5b50601a5461044a9060ff1681565b348015610bba57600080fd5b506104f1610bc936600461284c565b6116c0565b348015610bda57600080fd5b5060275461044a90600160b81b900460ff1681565b348015610bfb57600080fd5b506104a3601b5481565b606060018054610c1490612a51565b80601f0160208091040260200160405190810160405280929190818152602001828054610c4090612a51565b8015610c8d5780601f10610c6257610100808354040283529160200191610c8d565b820191906000526020600020905b815481529060010190602001808311610c7057829003601f168201915b5050505050905090565b6000610ca4338484611715565b5060015b92915050565b6000546001600160a01b03163314610ce15760405162461bcd60e51b8152600401610cd890612a8b565b60405180910390fd5b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000610d19848484611839565b50610d6c8433610d6785604051806060016040528060288152602001612c51602891396001600160a01b038a1660009081526007602090815260408083203384529091529020549190611cf0565b611715565b5060015b9392505050565b6000546001600160a01b03163314610da15760405162461bcd60e51b8152600401610cd890612a8b565b60278054911515600160b81b0260ff60b81b19909216919091179055565b6005546001600160a01b0316600090815260066020526040812054601d54610de691611d2a565b905090565b3360008181526007602090815260408083206001600160a01b03871684529091528120549091610ca4918590610d679086611d6c565b6000546001600160a01b03163314610e4b5760405162461bcd60e51b8152600401610cd890612a8b565b602055565b6000546001600160a01b03163314610e7a5760405162461bcd60e51b8152600401610cd890612a8b565b600019601e819055601f55565b6000546001600160a01b03163314610eb15760405162461bcd60e51b8152600401610cd890612a8b565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610f065760405162461bcd60e51b8152600401610cd890612a8b565b601a805460ff191660019081179091556027805460ff60a81b1916600160a81b1790556040519081527fdc4df53cd70f6f18952922b97f80686da932854762f1af348a7a38b9e94b079e9060200160405180910390a1565b6000546001600160a01b03163314610f885760405162461bcd60e51b8152600401610cd890612a8b565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b606060028054610c1490612a51565b6000546001600160a01b0316331461100b5760405162461bcd60e51b8152600401610cd890612a8b565b600c889055600d879055600e869055600f8590556110358561102f88818c8c611d6c565b90611d6c565b601855601084905560118390556012829055601381905561105c8161102f84818888611d6c565b6019556018546028108015906110755750602860195411155b6110b75760405162461bcd60e51b81526020600482015260136024820152720746f74616c466565206d757374203c3d20343606c1b6044820152606401610cd8565b5050505050505050565b6000546001600160a01b031633146110eb5760405162461bcd60e51b8152600401610cd890612a8b565b601a5460ff161561113e5760405162461bcd60e51b815260206004820152601d60248201527f74726164696e67456e61626c6564206d757374206265203d66616c73650000006044820152606401610cd8565b602660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611191573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b59190612ac0565b6001600160a01b031663c9c6539630602660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611217573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123b9190612ac0565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611288573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ac9190612ac0565b602780546001600160a01b0319166001600160a01b0392831690811782556000908152600960209081526040808320805460ff19908116600190811790925594549095168352600b82528083208054909416909417909255308152600690915220546113189047611dcb565b565b6000610ca43384610d6785604051806060016040528060258152602001612c99602591393360009081526007602090815260408083206001600160a01b038d1684529091529020549190611cf0565b6000546001600160a01b031633146113935760405162461bcd60e51b8152600401610cd890612a8b565b60278054911515600160b01b0260ff60b01b19909216919091179055565b6000610d6c338484611839565b6000546001600160a01b031633146113e85760405162461bcd60e51b8152600401610cd890612a8b565b601c55565b6000546001600160a01b031633146114175760405162461bcd60e51b8152600401610cd890612a8b565b6014839055601582905560168190556114348161102f8585611d6c565b601755505050565b6000546001600160a01b031633146114665760405162461bcd60e51b8152600401610cd890612a8b565b60005b828110156114d757816008600086868581811061148857611488612add565b905060200201602081019061149d91906128f6565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806114cf81612b09565b915050611469565b50505050565b6000546001600160a01b031633146115075760405162461bcd60e51b8152600401610cd890612a8b565b602555565b6000546001600160a01b031633146115365760405162461bcd60e51b8152600401610cd890612a8b565b600381111561157c5760405162461bcd60e51b81526020600482015260126024820152716e657756616c7565206d757374203c3d203360701b6044820152606401610cd8565b602255565b6000546001600160a01b031633146115ab5760405162461bcd60e51b8152600401610cd890612a8b565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146116005760405162461bcd60e51b8152600401610cd890612a8b565b6001600160a01b0381166116655760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610cd8565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146116ea5760405162461bcd60e51b8152600401610cd890612a8b565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6001600160a01b0383166117775760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610cd8565b6001600160a01b0382166117d85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610cd8565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b03841661189f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610cd8565b6001600160a01b0383166119015760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610cd8565b600082116119635760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610cd8565b6027546001600160a01b03848116911614801561199857506027546001600160a01b0316600090815260066020526040902054155b156119a257436024555b6027546001600160a01b0385811691161480156119cd57506025546024546119ca9190612b22565b43105b156119f1576023546119ea9085906001600160a01b031684611e7f565b9050610d70565b602754600160a01b900460ff1615611a0e576119ea848484611e7f565b6001600160a01b0384166000908152600a602052604090205460ff16158015611a5057506001600160a01b0383166000908152600a602052604090205460ff16155b15611b0057601a5460ff16611a9d5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81a5cc8191a5cd8589b1959606a1b6044820152606401610cd8565b601e54821115611b005760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610cd8565b3060009081526006602052604081205460205490915083108015908190611b315750602754600160a01b900460ff16155b8015611b5557506001600160a01b0385166000908152600b602052604090205460ff165b8015611b6a5750602754600160a81b900460ff165b8015611b8f57506001600160a01b03861660009081526008602052604090205460ff16155b15611bac576021548210611ba35760215491505b611bac82611f53565b6000611bb9878787612078565b602754909150600160b81b900460ff168015611bee57506001600160a01b03861660009081526009602052604090205460ff16155b15611c7757601f54611c198261102f896001600160a01b031660009081526006602052604090205490565b1115611c775760405162461bcd60e51b815260206004820152602760248201527f57616c6c65742073697a65206578636565647320746865206d617857616c6c656044820152661d105b5bdd5b9d60ca1b6064820152608401610cd8565b6001600160a01b038616600090815260066020526040902054611c9a9082611d6c565b6001600160a01b038088166000818152600660205260409081902093909355915190891690600080516020612c7983398151915290611cdc9085815260200190565b60405180910390a360019350505050610d70565b60008184841115611d145760405162461bcd60e51b8152600401610cd891906127a5565b506000611d218486612b35565b95945050505050565b6000610d7083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611cf0565b600080611d798385612b22565b905083811015610d705760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610cd8565b602654611de39030906001600160a01b031684611715565b60265460235460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611e53573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611e789190612b48565b5050505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600690915291822054611ed0918490611cf0565b6001600160a01b038086166000908152600660205260408082209390935590851681522054611eff9083611d6c565b6001600160a01b038085166000818152600660205260409081902093909355915190861690600080516020612c7983398151915290611f419086815260200190565b60405180910390a35060019392505050565b6027805460ff60a01b1916600160a01b179055601754601454600091611f8991600291611f83918290879061244f565b906124d1565b90506000611f978383611d2a565b90506020548310611fab57611fab81612513565b6014544790600090611fcb90611fc29060026124d1565b60175490611d2a565b90506000611fed6002611f8384611f836014548861244f90919063ffffffff16565b9050600061200a83611f836016548761244f90919063ffffffff16565b9050801561202857600454612028906001600160a01b0316826126a6565b6000821180156120385750600086115b15612047576120478683611dcb565b6003546120629061010090046001600160a01b0316476126a6565b50506027805460ff60a01b191690555050505050565b6001600160a01b03831660009081526008602052604081205481908190819060ff16806120bd57506001600160a01b03861660009081526008602052604090205460ff165b156120cd57849350505050610d70565b6001600160a01b03871630148015906120ef57506001600160a01b0386163014155b801561210957506000546001600160a01b03888116911614155b801561212357506000546001600160a01b03878116911614155b15612238576001600160a01b0387166000908152600b602052604090205460ff16156121b65761216f6064611f83612168600f54601854611d2a90919063ffffffff16565b889061244f565b92506000600f541180156121865750601c54601b54105b156121b1576121a56064611f83600f548861244f90919063ffffffff16565b91506121b187836126e1565b612238565b6001600160a01b0386166000908152600b602052604090205460ff1615612238576121f66064611f83612168601354601954611d2a90919063ffffffff16565b9250600060135411801561220d5750601c54601b54105b156122385761222c6064611f836013548861244f90919063ffffffff16565b915061223887836126e1565b6001600160a01b0387166000908152600b602052604090205460ff168061227757506001600160a01b0386166000908152600b602052604090205460ff165b156123595760225415612359576000805b60225481101561234657604080516020810183905290810188905242606082015260800160408051601f1981840301815291815281516020928301206001600160a01b038116600090815260069093529120549092506122e9906001611d6c565b6001600160a01b0380841660008181526006602052604090819020939093559151908b1690600080516020612c798339815191529061232c906001815260200190565b60405180910390a38061233e81612b09565b915050612288565b50602254612355906001612b76565b9150505b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038a166000908152600690915291909120546123ab918790611cf0565b6001600160a01b038816600090815260066020526040902055821561242c57306000908152600660205260409020546123e49084611d6c565b30600081815260066020526040908190209290925590516001600160a01b03891690600080516020612c79833981519152906124239087815260200190565b60405180910390a35b61244461243d8261102f8686611d6c565b8690611d2a565b979650505050505050565b60008260000361246157506000610ca8565b600061246d8385612b76565b90508261247a8583612b8d565b14610d705760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610cd8565b6000610d7083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612777565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061254857612548612add565b6001600160a01b03928316602091820292909201810191909152602654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156125a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125c59190612ac0565b816001815181106125d8576125d8612add565b6001600160a01b0392831660209182029290920101526026546125fe9130911684611715565b60265460405163791ac94760e01b81526001600160a01b039091169063791ac94790612637908590600090869030904290600401612bf3565b600060405180830381600087803b15801561265157600080fd5b505af1158015612665573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161269a929190612c2f565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156126dc573d6000803e3d6000fd5b505050565b601c54601b54106126f0575050565b6005546001600160a01b03166000908152600660205260409020546127159082611d6c565b6005546001600160a01b0316600090815260066020526040902055601b5461273d9082611d6c565b601b556005546040518281526001600160a01b0391821691841690600080516020612c798339815191529060200160405180910390a35050565b600081836127985760405162461bcd60e51b8152600401610cd891906127a5565b506000611d218486612b8d565b600060208083528351808285015260005b818110156127d2578581018301518582016040015282016127b6565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461280857600080fd5b50565b6000806040838503121561281e57600080fd5b8235612829816127f3565b946020939093013593505050565b8035801515811461284757600080fd5b919050565b6000806040838503121561285f57600080fd5b823561286a816127f3565b915061287860208401612837565b90509250929050565b60008060006060848603121561289657600080fd5b83356128a1816127f3565b925060208401356128b1816127f3565b929592945050506040919091013590565b6000602082840312156128d457600080fd5b610d7082612837565b6000602082840312156128ef57600080fd5b5035919050565b60006020828403121561290857600080fd5b8135610d70816127f3565b600080600080600080600080610100898b03121561293057600080fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b60008060006060848603121561297d57600080fd5b505081359360208301359350604090920135919050565b6000806000604084860312156129a957600080fd5b833567ffffffffffffffff808211156129c157600080fd5b818601915086601f8301126129d557600080fd5b8135818111156129e457600080fd5b8760208260051b85010111156129f957600080fd5b602092830195509350612a0f9186019050612837565b90509250925092565b60008060408385031215612a2b57600080fd5b8235612a36816127f3565b91506020830135612a46816127f3565b809150509250929050565b600181811c90821680612a6557607f821691505b602082108103612a8557634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215612ad257600080fd5b8151610d70816127f3565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612b1b57612b1b612af3565b5060010190565b80820180821115610ca857610ca8612af3565b81810381811115610ca857610ca8612af3565b600080600060608486031215612b5d57600080fd5b8351925060208401519150604084015190509250925092565b8082028115828204841417610ca857610ca8612af3565b600082612baa57634e487b7160e01b600052601260045260246000fd5b500490565b600081518084526020808501945080840160005b83811015612be85781516001600160a01b031687529582019590820190600101612bc3565b509495945050505050565b85815284602082015260a060408201526000612c1260a0830186612baf565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201526000612c486040830184612baf565b94935050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212200a66e5a18c004fdc7fa3df190ef3c27709a907b1e01306a3444463887a4a87b964736f6c63430008130033

Deployed Bytecode

0x6080604052600436106103f35760003560e01c806395d89b4111610208578063c7f063d311610118578063e32759cf116100ab578063f2fde38b1161007a578063f2fde38b14610b74578063f709594514610b94578063f84ba65d14610bae578063f872858a14610bce578063fb1eb14b14610bef57600080fd5b8063e32759cf14610b08578063e5c2b0a614610b1e578063ef422a1814610b3e578063f0cd1dac14610b5e57600080fd5b8063cab03471116100e7578063cab0347114610a75578063da00097d14610a8b578063dc44b6a014610aac578063dd62ed3e14610ac257600080fd5b8063c7f063d3146109ef578063c816841b14610a0f578063c860795214610a2f578063c867d60b14610a4557600080fd5b8063a83f53a71161019b578063c2d4640e1161016a578063c2d4640e1461095e578063c469b6dd1461097e578063c492f04614610994578063c5d24189146109b4578063c5f956af146109ca57600080fd5b8063a83f53a7146108e8578063a9059cbb146108fe578063b2bdfa7b1461091e578063b6b366431461093e57600080fd5b8063a073d37f116101d7578063a073d37f1461087d578063a08e671f14610892578063a457c2d7146108a8578063a5d69d1f146108c857600080fd5b806395d89b411461081d57806395f5c95114610832578063993945ac146108525780639e78fb4f1461086857600080fd5b806341c0e1b5116103035780637d1db4a51161029657806388790a681161026557806388790a681461078f5780638a8c523c146107a55780638b42507f146107ba5780638da5cb5b146107ea578063914eb66a1461080857600080fd5b80637d1db4a51461072d578063807c2d9c1461074357806382eefb4314610759578063844d591c1461076f57600080fd5b806357a5802f116102d257806357a5802f146106b657806361a23c69146106cc57806370a08231146106e2578063751039fc1461071857600080fd5b806341c0e1b51461063c5780634a74bb02146106525780635342acb414610673578063557ed1ba146106a357600080fd5b806327c8f8351161038657806337e5ccf71161035557806337e5ccf7146105a057806339509351146105b65780633b97084a146105d65780633df4ddf4146105f65780633ecad2711461060c57600080fd5b806327c8f83514610533578063297ac6de146105535780632b112e4914610569578063313ce5671461057e57600080fd5b80631c75f085116103c25780631c75f085146104b15780632198cf6c146104d157806323b872dd146104f35780632563ae831461051357600080fd5b806306fdde03146103ff578063095ea7b31461042a5780631694505e1461045a57806318160ddd1461049257600080fd5b366103fa57005b600080fd5b34801561040b57600080fd5b50610414610c05565b60405161042191906127a5565b60405180910390f35b34801561043657600080fd5b5061044a61044536600461280b565b610c97565b6040519015158152602001610421565b34801561046657600080fd5b5060265461047a906001600160a01b031681565b6040516001600160a01b039091168152602001610421565b34801561049e57600080fd5b50601d545b604051908152602001610421565b3480156104bd57600080fd5b5060045461047a906001600160a01b031681565b3480156104dd57600080fd5b506104f16104ec36600461284c565b610cae565b005b3480156104ff57600080fd5b5061044a61050e366004612881565b610d0c565b34801561051f57600080fd5b506104f161052e3660046128c2565b610d77565b34801561053f57600080fd5b5060055461047a906001600160a01b031681565b34801561055f57600080fd5b506104a360135481565b34801561057557600080fd5b506104a3610dbf565b34801561058a57600080fd5b5060035460405160ff9091168152602001610421565b3480156105ac57600080fd5b506104a3600f5481565b3480156105c257600080fd5b5061044a6105d136600461280b565b610deb565b3480156105e257600080fd5b506104f16105f13660046128dd565b610e21565b34801561060257600080fd5b506104a360245481565b34801561061857600080fd5b5061044a6106273660046128f6565b600b6020526000908152604090205460ff1681565b34801561064857600080fd5b506104a360255481565b34801561065e57600080fd5b5060275461044a90600160a81b900460ff1681565b34801561067f57600080fd5b5061044a61068e3660046128f6565b60086020526000908152604090205460ff1681565b3480156106af57600080fd5b50426104a3565b3480156106c257600080fd5b506104a360145481565b3480156106d857600080fd5b506104a360155481565b3480156106ee57600080fd5b506104a36106fd3660046128f6565b6001600160a01b031660009081526006602052604090205490565b34801561072457600080fd5b506104f1610e50565b34801561073957600080fd5b506104a3601e5481565b34801561074f57600080fd5b506104a3601f5481565b34801561076557600080fd5b506104a360195481565b34801561077b57600080fd5b506104f161078a36600461284c565b610e87565b34801561079b57600080fd5b506104a360105481565b3480156107b157600080fd5b506104f1610edc565b3480156107c657600080fd5b5061044a6107d53660046128f6565b600a6020526000908152604090205460ff1681565b3480156107f657600080fd5b506000546001600160a01b031661047a565b34801561081457600080fd5b506104f1610f5e565b34801561082957600080fd5b50610414610fd2565b34801561083e57600080fd5b506104f161084d366004612913565b610fe1565b34801561085e57600080fd5b506104a3601c5481565b34801561087457600080fd5b506104f16110c1565b34801561088957600080fd5b506020546104a3565b34801561089e57600080fd5b506104a360175481565b3480156108b457600080fd5b5061044a6108c336600461280b565b61131a565b3480156108d457600080fd5b506104f16108e33660046128c2565b611369565b3480156108f457600080fd5b506104a360165481565b34801561090a57600080fd5b5061044a61091936600461280b565b6113b1565b34801561092a57600080fd5b5060005461047a906001600160a01b031681565b34801561094a57600080fd5b506104f16109593660046128dd565b6113be565b34801561096a57600080fd5b506104f1610979366004612968565b6113ed565b34801561098a57600080fd5b506104a3600e5481565b3480156109a057600080fd5b506104f16109af366004612994565b61143c565b3480156109c057600080fd5b506104a3600d5481565b3480156109d657600080fd5b5060035461047a9061010090046001600160a01b031681565b3480156109fb57600080fd5b506104f1610a0a3660046128dd565b6114dd565b348015610a1b57600080fd5b5060275461047a906001600160a01b031681565b348015610a3b57600080fd5b506104a360115481565b348015610a5157600080fd5b5061044a610a603660046128f6565b60096020526000908152604090205460ff1681565b348015610a8157600080fd5b506104a360125481565b348015610a9757600080fd5b5060275461044a90600160b01b900460ff1681565b348015610ab857600080fd5b506104a3600c5481565b348015610ace57600080fd5b506104a3610add366004612a18565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b348015610b1457600080fd5b506104a360225481565b348015610b2a57600080fd5b506104f1610b393660046128dd565b61150c565b348015610b4a57600080fd5b506104f1610b5936600461284c565b611581565b348015610b6a57600080fd5b506104a360185481565b348015610b8057600080fd5b506104f1610b8f3660046128f6565b6115d6565b348015610ba057600080fd5b50601a5461044a9060ff1681565b348015610bba57600080fd5b506104f1610bc936600461284c565b6116c0565b348015610bda57600080fd5b5060275461044a90600160b81b900460ff1681565b348015610bfb57600080fd5b506104a3601b5481565b606060018054610c1490612a51565b80601f0160208091040260200160405190810160405280929190818152602001828054610c4090612a51565b8015610c8d5780601f10610c6257610100808354040283529160200191610c8d565b820191906000526020600020905b815481529060010190602001808311610c7057829003601f168201915b5050505050905090565b6000610ca4338484611715565b5060015b92915050565b6000546001600160a01b03163314610ce15760405162461bcd60e51b8152600401610cd890612a8b565b60405180910390fd5b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000610d19848484611839565b50610d6c8433610d6785604051806060016040528060288152602001612c51602891396001600160a01b038a1660009081526007602090815260408083203384529091529020549190611cf0565b611715565b5060015b9392505050565b6000546001600160a01b03163314610da15760405162461bcd60e51b8152600401610cd890612a8b565b60278054911515600160b81b0260ff60b81b19909216919091179055565b6005546001600160a01b0316600090815260066020526040812054601d54610de691611d2a565b905090565b3360008181526007602090815260408083206001600160a01b03871684529091528120549091610ca4918590610d679086611d6c565b6000546001600160a01b03163314610e4b5760405162461bcd60e51b8152600401610cd890612a8b565b602055565b6000546001600160a01b03163314610e7a5760405162461bcd60e51b8152600401610cd890612a8b565b600019601e819055601f55565b6000546001600160a01b03163314610eb15760405162461bcd60e51b8152600401610cd890612a8b565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610f065760405162461bcd60e51b8152600401610cd890612a8b565b601a805460ff191660019081179091556027805460ff60a81b1916600160a81b1790556040519081527fdc4df53cd70f6f18952922b97f80686da932854762f1af348a7a38b9e94b079e9060200160405180910390a1565b6000546001600160a01b03163314610f885760405162461bcd60e51b8152600401610cd890612a8b565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b606060028054610c1490612a51565b6000546001600160a01b0316331461100b5760405162461bcd60e51b8152600401610cd890612a8b565b600c889055600d879055600e869055600f8590556110358561102f88818c8c611d6c565b90611d6c565b601855601084905560118390556012829055601381905561105c8161102f84818888611d6c565b6019556018546028108015906110755750602860195411155b6110b75760405162461bcd60e51b81526020600482015260136024820152720746f74616c466565206d757374203c3d20343606c1b6044820152606401610cd8565b5050505050505050565b6000546001600160a01b031633146110eb5760405162461bcd60e51b8152600401610cd890612a8b565b601a5460ff161561113e5760405162461bcd60e51b815260206004820152601d60248201527f74726164696e67456e61626c6564206d757374206265203d66616c73650000006044820152606401610cd8565b602660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611191573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b59190612ac0565b6001600160a01b031663c9c6539630602660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611217573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123b9190612ac0565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611288573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ac9190612ac0565b602780546001600160a01b0319166001600160a01b0392831690811782556000908152600960209081526040808320805460ff19908116600190811790925594549095168352600b82528083208054909416909417909255308152600690915220546113189047611dcb565b565b6000610ca43384610d6785604051806060016040528060258152602001612c99602591393360009081526007602090815260408083206001600160a01b038d1684529091529020549190611cf0565b6000546001600160a01b031633146113935760405162461bcd60e51b8152600401610cd890612a8b565b60278054911515600160b01b0260ff60b01b19909216919091179055565b6000610d6c338484611839565b6000546001600160a01b031633146113e85760405162461bcd60e51b8152600401610cd890612a8b565b601c55565b6000546001600160a01b031633146114175760405162461bcd60e51b8152600401610cd890612a8b565b6014839055601582905560168190556114348161102f8585611d6c565b601755505050565b6000546001600160a01b031633146114665760405162461bcd60e51b8152600401610cd890612a8b565b60005b828110156114d757816008600086868581811061148857611488612add565b905060200201602081019061149d91906128f6565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806114cf81612b09565b915050611469565b50505050565b6000546001600160a01b031633146115075760405162461bcd60e51b8152600401610cd890612a8b565b602555565b6000546001600160a01b031633146115365760405162461bcd60e51b8152600401610cd890612a8b565b600381111561157c5760405162461bcd60e51b81526020600482015260126024820152716e657756616c7565206d757374203c3d203360701b6044820152606401610cd8565b602255565b6000546001600160a01b031633146115ab5760405162461bcd60e51b8152600401610cd890612a8b565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146116005760405162461bcd60e51b8152600401610cd890612a8b565b6001600160a01b0381166116655760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610cd8565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146116ea5760405162461bcd60e51b8152600401610cd890612a8b565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6001600160a01b0383166117775760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610cd8565b6001600160a01b0382166117d85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610cd8565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b03841661189f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610cd8565b6001600160a01b0383166119015760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610cd8565b600082116119635760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610cd8565b6027546001600160a01b03848116911614801561199857506027546001600160a01b0316600090815260066020526040902054155b156119a257436024555b6027546001600160a01b0385811691161480156119cd57506025546024546119ca9190612b22565b43105b156119f1576023546119ea9085906001600160a01b031684611e7f565b9050610d70565b602754600160a01b900460ff1615611a0e576119ea848484611e7f565b6001600160a01b0384166000908152600a602052604090205460ff16158015611a5057506001600160a01b0383166000908152600a602052604090205460ff16155b15611b0057601a5460ff16611a9d5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81a5cc8191a5cd8589b1959606a1b6044820152606401610cd8565b601e54821115611b005760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610cd8565b3060009081526006602052604081205460205490915083108015908190611b315750602754600160a01b900460ff16155b8015611b5557506001600160a01b0385166000908152600b602052604090205460ff165b8015611b6a5750602754600160a81b900460ff165b8015611b8f57506001600160a01b03861660009081526008602052604090205460ff16155b15611bac576021548210611ba35760215491505b611bac82611f53565b6000611bb9878787612078565b602754909150600160b81b900460ff168015611bee57506001600160a01b03861660009081526009602052604090205460ff16155b15611c7757601f54611c198261102f896001600160a01b031660009081526006602052604090205490565b1115611c775760405162461bcd60e51b815260206004820152602760248201527f57616c6c65742073697a65206578636565647320746865206d617857616c6c656044820152661d105b5bdd5b9d60ca1b6064820152608401610cd8565b6001600160a01b038616600090815260066020526040902054611c9a9082611d6c565b6001600160a01b038088166000818152600660205260409081902093909355915190891690600080516020612c7983398151915290611cdc9085815260200190565b60405180910390a360019350505050610d70565b60008184841115611d145760405162461bcd60e51b8152600401610cd891906127a5565b506000611d218486612b35565b95945050505050565b6000610d7083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611cf0565b600080611d798385612b22565b905083811015610d705760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610cd8565b602654611de39030906001600160a01b031684611715565b60265460235460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611e53573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611e789190612b48565b5050505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600690915291822054611ed0918490611cf0565b6001600160a01b038086166000908152600660205260408082209390935590851681522054611eff9083611d6c565b6001600160a01b038085166000818152600660205260409081902093909355915190861690600080516020612c7983398151915290611f419086815260200190565b60405180910390a35060019392505050565b6027805460ff60a01b1916600160a01b179055601754601454600091611f8991600291611f83918290879061244f565b906124d1565b90506000611f978383611d2a565b90506020548310611fab57611fab81612513565b6014544790600090611fcb90611fc29060026124d1565b60175490611d2a565b90506000611fed6002611f8384611f836014548861244f90919063ffffffff16565b9050600061200a83611f836016548761244f90919063ffffffff16565b9050801561202857600454612028906001600160a01b0316826126a6565b6000821180156120385750600086115b15612047576120478683611dcb565b6003546120629061010090046001600160a01b0316476126a6565b50506027805460ff60a01b191690555050505050565b6001600160a01b03831660009081526008602052604081205481908190819060ff16806120bd57506001600160a01b03861660009081526008602052604090205460ff165b156120cd57849350505050610d70565b6001600160a01b03871630148015906120ef57506001600160a01b0386163014155b801561210957506000546001600160a01b03888116911614155b801561212357506000546001600160a01b03878116911614155b15612238576001600160a01b0387166000908152600b602052604090205460ff16156121b65761216f6064611f83612168600f54601854611d2a90919063ffffffff16565b889061244f565b92506000600f541180156121865750601c54601b54105b156121b1576121a56064611f83600f548861244f90919063ffffffff16565b91506121b187836126e1565b612238565b6001600160a01b0386166000908152600b602052604090205460ff1615612238576121f66064611f83612168601354601954611d2a90919063ffffffff16565b9250600060135411801561220d5750601c54601b54105b156122385761222c6064611f836013548861244f90919063ffffffff16565b915061223887836126e1565b6001600160a01b0387166000908152600b602052604090205460ff168061227757506001600160a01b0386166000908152600b602052604090205460ff165b156123595760225415612359576000805b60225481101561234657604080516020810183905290810188905242606082015260800160408051601f1981840301815291815281516020928301206001600160a01b038116600090815260069093529120549092506122e9906001611d6c565b6001600160a01b0380841660008181526006602052604090819020939093559151908b1690600080516020612c798339815191529061232c906001815260200190565b60405180910390a38061233e81612b09565b915050612288565b50602254612355906001612b76565b9150505b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038a166000908152600690915291909120546123ab918790611cf0565b6001600160a01b038816600090815260066020526040902055821561242c57306000908152600660205260409020546123e49084611d6c565b30600081815260066020526040908190209290925590516001600160a01b03891690600080516020612c79833981519152906124239087815260200190565b60405180910390a35b61244461243d8261102f8686611d6c565b8690611d2a565b979650505050505050565b60008260000361246157506000610ca8565b600061246d8385612b76565b90508261247a8583612b8d565b14610d705760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610cd8565b6000610d7083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612777565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061254857612548612add565b6001600160a01b03928316602091820292909201810191909152602654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156125a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125c59190612ac0565b816001815181106125d8576125d8612add565b6001600160a01b0392831660209182029290920101526026546125fe9130911684611715565b60265460405163791ac94760e01b81526001600160a01b039091169063791ac94790612637908590600090869030904290600401612bf3565b600060405180830381600087803b15801561265157600080fd5b505af1158015612665573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161269a929190612c2f565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156126dc573d6000803e3d6000fd5b505050565b601c54601b54106126f0575050565b6005546001600160a01b03166000908152600660205260409020546127159082611d6c565b6005546001600160a01b0316600090815260066020526040902055601b5461273d9082611d6c565b601b556005546040518281526001600160a01b0391821691841690600080516020612c798339815191529060200160405180910390a35050565b600081836127985760405162461bcd60e51b8152600401610cd891906127a5565b506000611d218486612b8d565b600060208083528351808285015260005b818110156127d2578581018301518582016040015282016127b6565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461280857600080fd5b50565b6000806040838503121561281e57600080fd5b8235612829816127f3565b946020939093013593505050565b8035801515811461284757600080fd5b919050565b6000806040838503121561285f57600080fd5b823561286a816127f3565b915061287860208401612837565b90509250929050565b60008060006060848603121561289657600080fd5b83356128a1816127f3565b925060208401356128b1816127f3565b929592945050506040919091013590565b6000602082840312156128d457600080fd5b610d7082612837565b6000602082840312156128ef57600080fd5b5035919050565b60006020828403121561290857600080fd5b8135610d70816127f3565b600080600080600080600080610100898b03121561293057600080fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b60008060006060848603121561297d57600080fd5b505081359360208301359350604090920135919050565b6000806000604084860312156129a957600080fd5b833567ffffffffffffffff808211156129c157600080fd5b818601915086601f8301126129d557600080fd5b8135818111156129e457600080fd5b8760208260051b85010111156129f957600080fd5b602092830195509350612a0f9186019050612837565b90509250925092565b60008060408385031215612a2b57600080fd5b8235612a36816127f3565b91506020830135612a46816127f3565b809150509250929050565b600181811c90821680612a6557607f821691505b602082108103612a8557634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215612ad257600080fd5b8151610d70816127f3565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612b1b57612b1b612af3565b5060010190565b80820180821115610ca857610ca8612af3565b81810381811115610ca857610ca8612af3565b600080600060608486031215612b5d57600080fd5b8351925060208401519150604084015190509250925092565b8082028115828204841417610ca857610ca8612af3565b600082612baa57634e487b7160e01b600052601260045260246000fd5b500490565b600081518084526020808501945080840160005b83811015612be85781516001600160a01b031687529582019590820190600101612bc3565b509495945050505050565b85815284602082015260a060408201526000612c1260a0830186612baf565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201526000612c486040830184612baf565b94935050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212200a66e5a18c004fdc7fa3df190ef3c27709a907b1e01306a3444463887a4a87b964736f6c63430008130033

Deployed Bytecode Sourcemap

9111:19103:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13279:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14828:193;;;;;;;;;;-1:-1:-1;14828:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;14828:193:0;1023:187:1;10850:41:0;;;;;;;;;;-1:-1:-1;10850:41:0;;;;-1:-1:-1;;;;;10850:41:0;;;;;;-1:-1:-1;;;;;1405:32:1;;;1387:51;;1375:2;1360:18;10850:41:0;1215:229:1;13556:100:0;;;;;;;;;;-1:-1:-1;13636:12:0;;13556:100;;;1595:25:1;;;1583:2;1568:18;13556:100:0;1449:177:1;9357:34:0;;;;;;;;;;-1:-1:-1;9357:34:0;;;;-1:-1:-1;;;;;9357:34:0;;;18009:158;;;;;;;;;;-1:-1:-1;18009:158:0;;;;;:::i;:::-;;:::i;:::-;;20032:446;;;;;;;;;;-1:-1:-1;20032:446:0;;;;;:::i;:::-;;:::i;17887:114::-;;;;;;;;;;-1:-1:-1;17887:114:0;;;;;:::i;:::-;;:::i;9398:71::-;;;;;;;;;;-1:-1:-1;9398:71:0;;;;-1:-1:-1;;;;;9398:71:0;;;10108:34;;;;;;;;;;;;;;;;18800:128;;;;;;;;;;;;;:::i;13465:83::-;;;;;;;;;;-1:-1:-1;13531:9:0;;13465:83;;13531:9;;;;3336:36:1;;3324:2;3309:18;13465:83:0;3194:184:1;9941:33:0;;;;;;;;;;;;;;;;13983:300;;;;;;;;;;-1:-1:-1;13983:300:0;;;;;:::i;:::-;;:::i;18175:123::-;;;;;;;;;;-1:-1:-1;18175:123:0;;;;;:::i;:::-;;:::i;10791:20::-;;;;;;;;;;;;;;;;9766:44;;;;;;;;;;-1:-1:-1;9766:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10818:23;;;;;;;;;;;;;;;;10961:41;;;;;;;;;;-1:-1:-1;10961:41:0;;;;-1:-1:-1;;;10961:41:0;;;;;;9598:49;;;;;;;;;;-1:-1:-1;9598:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7004:90;;;;;;;;;;-1:-1:-1;7071:15:0;7004:90;;10151:34;;;;;;;;;;;;;;;;10192:35;;;;;;;;;;;;;;;;13664:119;;;;;;;;;;-1:-1:-1;13664:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;13757:18:0;13730:7;13757:18;;;:9;:18;;;;;;;13664:119;16011:135;;;;;;;;;;;;;:::i;10556:27::-;;;;;;;;;;;;;;;;10590:25;;;;;;;;;;;;;;;;10367:38;;;;;;;;;;;;;;;;15408:152;;;;;;;;;;-1:-1:-1;15408:152:0;;;;;:::i;:::-;;:::i;9983:36::-;;;;;;;;;;;;;;;;19557:167;;;;;;;;;;;;;:::i;9712:47::-;;;;;;;;;;-1:-1:-1;9712:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6348:79;;;;;;;;;;-1:-1:-1;6386:7:0;6413:6;-1:-1:-1;;;;;6413:6:0;6348:79;;6562:145;;;;;;;;;;;;;:::i;13370:87::-;;;;;;;;;;;;;:::i;16154:1138::-;;;;;;;;;;-1:-1:-1;16154:1138:0;;;;;:::i;:::-;;:::i;10482:32::-;;;;;;;;;;;;;;;;19084:465;;;;;;;;;;;;;:::i;14699:121::-;;;;;;;;;;-1:-1:-1;14788:24:0;;14699:121;;10270:44;;;;;;;;;;;;;;;;14291:400;;;;;;;;;;-1:-1:-1;14291:400:0;;;;;:::i;:::-;;:::i;18400:125::-;;;;;;;;;;-1:-1:-1;18400:125:0;;;;;:::i;:::-;;:::i;10234:29::-;;;;;;;;;;;;;;;;19825:199;;;;;;;;;;-1:-1:-1;19825:199:0;;;;;:::i;:::-;;:::i;6201:21::-;;;;;;;;;;-1:-1:-1;6201:21:0;;;;-1:-1:-1;;;;;6201:21:0;;;15892:111;;;;;;;;;;-1:-1:-1;15892:111:0;;;;;:::i;:::-;;:::i;17465:414::-;;;;;;;;;;-1:-1:-1;17465:414:0;;;;;:::i;:::-;;:::i;9904:30::-;;;;;;;;;;;;;;;;18533:259;;;;;;;;;;-1:-1:-1;18533:259:0;;;;;:::i;:::-;;:::i;9861:36::-;;;;;;;;;;;;;;;;9312:38;;;;;;;;;;-1:-1:-1;9312:38:0;;;;;;;-1:-1:-1;;;;;9312:38:0;;;18306:86;;;;;;;;;;-1:-1:-1;18306:86:0;;;;;:::i;:::-;;:::i;10898:26::-;;;;;;;;;;-1:-1:-1;10898:26:0;;;;-1:-1:-1;;;;;10898:26:0;;;10026:37;;;;;;;;;;;;;;;;9654:51;;;;;;;;;;-1:-1:-1;9654:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10070:31;;;;;;;;;;;;;;;;11009:45;;;;;;;;;;-1:-1:-1;11009:45:0;;;;-1:-1:-1;;;11009:45:0;;;;;;9819:35;;;;;;;;;;;;;;;;13791:184;;;;;;;;;;-1:-1:-1;13791:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;13940:18:0;;;13908:7;13940:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;13791:184;10720:27;;;;;;;;;;;;;;;;17300:157;;;;;;;;;;-1:-1:-1;17300:157:0;;;;;:::i;:::-;;:::i;15726:158::-;;;;;;;;;;-1:-1:-1;15726:158:0;;;;;:::i;:::-;;:::i;10323:37::-;;;;;;;;;;;;;;;;6715:281;;;;;;;;;;-1:-1:-1;6715:281:0;;;;;:::i;:::-;;:::i;10414:27::-;;;;;;;;;;-1:-1:-1;10414:27:0;;;;;;;;15568:150;;;;;;;;;;-1:-1:-1;15568:150:0;;;;;:::i;:::-;;:::i;11061:35::-;;;;;;;;;;-1:-1:-1;11061:35:0;;;;-1:-1:-1;;;11061:35:0;;;;;;10450:25;;;;;;;;;;;;;;;;13279:83;13316:13;13349:5;13342:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13279:83;:::o;14828:193::-;14930:4;14952:39;309:10;14975:7;14984:6;14952:8;:39::i;:::-;-1:-1:-1;15009:4:0;14828:193;;;;;:::o;18009:158::-;6475:6;;-1:-1:-1;;;;;6475:6:0;309:10;6475:22;6467:67;;;;-1:-1:-1;;;6467:67:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;18123:27:0;;;::::1;;::::0;;;:19:::1;:27;::::0;;;;:36;;-1:-1:-1;;18123:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18009:158::o;20032:446::-;20164:4;20181:36;20191:6;20199:9;20210:6;20181:9;:36::i;:::-;-1:-1:-1;20228:220:0;20251:6;309:10;20299:138;20355:6;20299:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20299:19:0;;;;;;:11;:19;;;;;;;;309:10;20299:33;;;;;;;;;;:37;:138::i;:::-;20228:8;:220::i;:::-;-1:-1:-1;20466:4:0;20032:446;;;;;;:::o;17887:114::-;6475:6;;-1:-1:-1;;;;;6475:6:0;309:10;6475:22;6467:67;;;;-1:-1:-1;;;6467:67:0;;;;;;;:::i;:::-;17966:16:::1;:27:::0;;;::::1;;-1:-1:-1::0;;;17966:27:0::1;-1:-1:-1::0;;;;17966:27:0;;::::1;::::0;;;::::1;::::0;;17887:114::o;18800:128::-;18907:11;;-1:-1:-1;;;;;18907:11:0;18853:7;13757:18;;;:9;:18;;;;;;18880:12;;:40;;:16;:40::i;:::-;18873:47;;18800:128;:::o;13983:300::-;309:10;14098:4;14192:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14192:34:0;;;;;;;;;;14098:4;;14120:133;;14170:7;;14192:50;;14231:10;14192:38;:50::i;18175:123::-;6475:6;;-1:-1:-1;;;;;6475:6:0;309:10;6475:22;6467:67;;;;-1:-1:-1;;;6467:67:0;;;;;;;:::i;:::-;18255:24:::1;:35:::0;18175:123::o;16011:135::-;6475:6;;-1:-1:-1;;;;;6475:6:0;309:10;6475:22;6467:67;;;;-1:-1:-1;;;6467:67:0;;;;;;;:::i;:::-;-1:-1:-1;;16065:12:0::1;:32:::0;;;16108:10:::1;:30:::0;16011:135::o;15408:152::-;6475:6;;-1:-1:-1;;;;;6475:6:0;309:10;6475:22;6467:67;;;;-1:-1:-1;;;6467:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15520:21:0;;;::::1;;::::0;;;:12:::1;:21;::::0;;;;:32;;-1:-1:-1;;15520:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15408:152::o;19557:167::-;6475:6;;-1:-1:-1;;;;;6475:6:0;309:10;6475:22;6467:67;;;;-1:-1:-1;;;6467:67:0;;;;;;;:::i;:::-;19612:15:::1;:22:::0;;-1:-1:-1;;19612:22:0::1;19630:4;19612:22:::0;;::::1;::::0;;;19645:21:::1;:28:::0;;-1:-1:-1;;;;19645:28:0::1;-1:-1:-1::0;;;19645:28:0::1;::::0;;19689:27:::1;::::0;1163:41:1;;;19689:27:0::1;::::0;1151:2:1;1136:18;19689:27:0::1;;;;;;;19557:167::o:0;6562:145::-;6475:6;;-1:-1:-1;;;;;6475:6:0;309:10;6475:22;6467:67;;;;-1:-1:-1;;;6467:67:0;;;;;;;:::i;:::-;6666:1:::1;6650:6:::0;;6629:40:::1;::::0;-1:-1:-1;;;;;6650:6:0;;::::1;::::0;6629:40:::1;::::0;6666:1;;6629:40:::1;6697:1;6680:19:::0;;-1:-1:-1;;;;;;6680:19:0::1;::::0;;6562:145::o;13370:87::-;13409:13;13442:7;13435:14;;;;;:::i;16154:1138::-;6475:6;;-1:-1:-1;;;;;6475:6:0;309:10;6475:22;6467:67;;;;-1:-1:-1;;;6467:67:0;;;;;;;:::i;:::-;16495:16:::1;:37:::0;;;16543:16:::1;:37:::0;;;16591:11:::1;:27:::0;;;16629:14:::1;:33:::0;;;16693:117:::1;16646:16:::0;16693:83:::1;16605:13:::0;16693:83;16514:18;16562;16693:34:::1;:52::i;:::-;:70:::0;::::1;:83::i;:117::-;16673:17;:137:::0;16823:17:::1;:39:::0;;;16873:17:::1;:39:::0;;;16923:12:::1;:29:::0;;;16963:15:::1;:35:::0;;;17030:121:::1;16981:17:::0;17030:86:::1;16938:14:::0;17030:86;16843:19;16893;17030:35:::1;:54::i;:121::-;17009:18;:142:::0;17186:17:::1;::::0;17207:2:::1;-1:-1:-1::0;17186:23:0;::::1;::::0;:51:::1;;;17235:2;17213:18;;:24;;17186:51;17164:120;;;::::0;-1:-1:-1;;;17164:120:0;;6842:2:1;17164:120:0::1;::::0;::::1;6824:21:1::0;6881:2;6861:18;;;6854:30;-1:-1:-1;;;6900:18:1;;;6893:49;6959:18;;17164:120:0::1;6640:343:1::0;17164:120:0::1;16154:1138:::0;;;;;;;;:::o;19084:465::-;6475:6;;-1:-1:-1;;;;;6475:6:0;309:10;6475:22;6467:67;;;;-1:-1:-1;;;6467:67:0;;;;;;;:::i;:::-;19145:15:::1;::::0;::::1;;19144:16;19136:58;;;::::0;-1:-1:-1;;;19136:58:0;;7190:2:1;19136:58:0::1;::::0;::::1;7172:21:1::0;7229:2;7209:18;;;7202:30;7268:31;7248:18;;;7241:59;7317:18;;19136:58:0::1;6988:353:1::0;19136:58:0::1;19239:15;;;;;;;;;-1:-1:-1::0;;;;;19239:15:0::1;-1:-1:-1::0;;;;;19239:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19221:55:0::1;;19299:4;19319:15;;;;;;;;;-1:-1:-1::0;;;;;19319:15:0::1;-1:-1:-1::0;;;;;19319:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19221:131;::::0;-1:-1:-1;;;;;;19221:131:0::1;::::0;;;;;;-1:-1:-1;;;;;7832:15:1;;;19221:131:0::1;::::0;::::1;7814:34:1::0;7884:15;;7864:18;;;7857:43;7749:18;;19221:131:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19207:11;:145:::0;;-1:-1:-1;;;;;;19207:145:0::1;-1:-1:-1::0;;;;;19207:145:0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;19365:41:0;;;:19:::1;:41;::::0;;;;;;;:48;;-1:-1:-1;;19365:48:0;;::::1;-1:-1:-1::0;19365:48:0;;::::1;::::0;;;19447:11;;;;::::1;19426:34:::0;;:12:::1;:34:::0;;;;;:41;;;;::::1;::::0;;::::1;::::0;;;19511:4:::1;13757:18:::0;;:9;:18;;;;;19480:61:::1;::::0;19519:21:::1;19480:12;:61::i;:::-;19084:465::o:0;14291:400::-;14411:4;14433:228;309:10;14483:7;14505:145;14562:15;14505:145;;;;;;;;;;;;;;;;;309:10;14505:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14505:34:0;;;;;;;;;;;;:38;:145::i;18400:125::-;6475:6;;-1:-1:-1;;;;;6475:6:0;309:10;6475:22;6467:67;;;;-1:-1:-1;;;6467:67:0;;;;;;;:::i;:::-;18481:25:::1;:36:::0;;;::::1;;-1:-1:-1::0;;;18481:36:0::1;-1:-1:-1::0;;;;18481:36:0;;::::1;::::0;;;::::1;::::0;;18400:125::o;19825:199::-;19930:4;19952:42;309:10;19976:9;19987:6;19952:9;:42::i;15892:111::-;6475:6;;-1:-1:-1;;;;;6475:6:0;309:10;6475:22;6467:67;;;;-1:-1:-1;;;6467:67:0;;;;;;;:::i;:::-;15965:17:::1;:30:::0;15892:111::o;17465:414::-;6475:6;;-1:-1:-1;;;;;6475:6:0;309:10;6475:22;6467:67;;;;-1:-1:-1;;;6467:67:0;;;;;;;:::i;:::-;17638:15:::1;:35:::0;;;17684:15:::1;:35:::0;;;17730:10:::1;:25:::0;;;17795:76:::1;17743:12:::0;17795:36:::1;17656:17:::0;17702;17795:19:::1;:36::i;:76::-;17768:24;:103:::0;-1:-1:-1;;;17465:414:0:o;18533:259::-;6475:6;;-1:-1:-1;;;;;6475:6:0;309:10;6475:22;6467:67;;;;-1:-1:-1;;;6467:67:0;;;;;;;:::i;:::-;18676:9:::1;18671:114;18691:19:::0;;::::1;18671:114;;;18765:8;18732:17;:30;18750:8;;18759:1;18750:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18732:30:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18732:30:0;:41;;-1:-1:-1;;18732:41:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18712:3;::::1;::::0;::::1;:::i;:::-;;;;18671:114;;;;18533:259:::0;;;:::o;18306:86::-;6475:6;;-1:-1:-1;;;;;6475:6:0;309:10;6475:22;6467:67;;;;-1:-1:-1;;;6467:67:0;;;;;;;:::i;:::-;18369:4:::1;:15:::0;18306:86::o;17300:157::-;6475:6;;-1:-1:-1;;;;;6475:6:0;309:10;6475:22;6467:67;;;;-1:-1:-1;;;6467:67:0;;;;;;;:::i;:::-;17391:1:::1;17379:8;:13;;17371:44;;;::::0;-1:-1:-1;;;17371:44:0;;8517:2:1;17371:44:0::1;::::0;::::1;8499:21:1::0;8556:2;8536:18;;;8529:30;-1:-1:-1;;;8575:18:1;;;8568:48;8633:18;;17371:44:0::1;8315:342:1::0;17371:44:0::1;17426:12;:23:::0;17300:157::o;15726:158::-;6475:6;;-1:-1:-1;;;;;6475:6:0;309:10;6475:22;6467:67;;;;-1:-1:-1;;;6467:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15839:26:0;;;::::1;;::::0;;;:17:::1;:26;::::0;;;;:37;;-1:-1:-1;;15839:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15726:158::o;6715:281::-;6475:6;;-1:-1:-1;;;;;6475:6:0;309:10;6475:22;6467:67;;;;-1:-1:-1;;;6467:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6818:22:0;::::1;6796:110;;;::::0;-1:-1:-1;;;6796:110:0;;8864:2:1;6796:110:0::1;::::0;::::1;8846:21:1::0;8903:2;8883:18;;;8876:30;8942:34;8922:18;;;8915:62;-1:-1:-1;;;8993:18:1;;;8986:36;9039:19;;6796:110:0::1;8662:402:1::0;6796:110:0::1;6943:6;::::0;;6922:38:::1;::::0;-1:-1:-1;;;;;6922:38:0;;::::1;::::0;6943:6;::::1;::::0;6922:38:::1;::::0;::::1;6971:6;:17:::0;;-1:-1:-1;;;;;;6971:17:0::1;-1:-1:-1::0;;;;;6971:17:0;;;::::1;::::0;;;::::1;::::0;;6715:281::o;15568:150::-;6475:6;;-1:-1:-1;;;;;6475:6:0;309:10;6475:22;6467:67;;;;-1:-1:-1;;;6467:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15678:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;15678:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15568:150::o;15029:371::-;-1:-1:-1;;;;;15156:19:0;;15148:68;;;;-1:-1:-1;;;15148:68:0;;9271:2:1;15148:68:0;;;9253:21:1;9310:2;9290:18;;;9283:30;9349:34;9329:18;;;9322:62;-1:-1:-1;;;9400:18:1;;;9393:34;9444:19;;15148:68:0;9069:400:1;15148:68:0;-1:-1:-1;;;;;15235:21:0;;15227:68;;;;-1:-1:-1;;;15227:68:0;;9676:2:1;15227:68:0;;;9658:21:1;9715:2;9695:18;;;9688:30;9754:34;9734:18;;;9727:62;-1:-1:-1;;;9805:18:1;;;9798:32;9847:19;;15227:68:0;9474:398:1;15227:68:0;-1:-1:-1;;;;;15308:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15360:32;;1595:25:1;;;15360:32:0;;1568:18:1;15360:32:0;;;;;;;15029:371;;;:::o;20486:2186::-;20607:4;-1:-1:-1;;;;;20632:20:0;;20624:70;;;;-1:-1:-1;;;20624:70:0;;10079:2:1;20624:70:0;;;10061:21:1;10118:2;10098:18;;;10091:30;10157:34;10137:18;;;10130:62;-1:-1:-1;;;10208:18:1;;;10201:35;10253:19;;20624:70:0;9877:401:1;20624:70:0;-1:-1:-1;;;;;20713:23:0;;20705:71;;;;-1:-1:-1;;;20705:71:0;;10485:2:1;20705:71:0;;;10467:21:1;10524:2;10504:18;;;10497:30;10563:34;10543:18;;;10536:62;-1:-1:-1;;;10614:18:1;;;10607:33;10657:19;;20705:71:0;10283:399:1;20705:71:0;20804:1;20795:6;:10;20787:64;;;;-1:-1:-1;;;20787:64:0;;10889:2:1;20787:64:0;;;10871:21:1;10928:2;10908:18;;;10901:30;10967:34;10947:18;;;10940:62;-1:-1:-1;;;11018:18:1;;;11011:39;11067:19;;20787:64:0;10687:405:1;20787:64:0;20881:11;;-1:-1:-1;;;;;20868:24:0;;;20881:11;;20868:24;:64;;;;-1:-1:-1;20914:11:0;;-1:-1:-1;;;;;20914:11:0;13730:7;13757:18;;;:9;:18;;;;;;20896:36;20868:64;20864:117;;;20957:12;20949:5;:20;20864:117;21005:11;;-1:-1:-1;;;;;20995:21:0;;;21005:11;;20995:21;:52;;;;;21043:4;;21035:5;;:12;;;;:::i;:::-;21020;:27;20995:52;20991:138;;;21094:14;;21071:46;;21086:6;;-1:-1:-1;;;;;21094:14:0;21110:6;21071:14;:46::i;:::-;21064:53;;;;20991:138;21143:16;;-1:-1:-1;;;21143:16:0;;;;21139:1526;;;21183:41;21198:6;21206:9;21217:6;21183:14;:41::i;21139:1526::-;-1:-1:-1;;;;;21262:23:0;;;;;;:15;:23;;;;;;;;21261:24;:55;;;;-1:-1:-1;;;;;;21290:26:0;;;;;;:15;:26;;;;;;;;21289:27;21261:55;21257:300;;;21345:15;;;;21337:47;;;;-1:-1:-1;;;21337:47:0;;11429:2:1;21337:47:0;;;11411:21:1;11468:2;11448:18;;;11441:30;-1:-1:-1;;;11487:18:1;;;11480:49;11546:18;;21337:47:0;11227:343:1;21337:47:0;21445:12;;21435:6;:22;;21405:136;;;;-1:-1:-1;;;21405:136:0;;11777:2:1;21405:136:0;;;11759:21:1;11816:2;11796:18;;;11789:30;11855:34;11835:18;;;11828:62;-1:-1:-1;;;11906:18:1;;;11899:38;11954:19;;21405:136:0;11575:404:1;21405:136:0;21622:4;21573:28;13757:18;;;:9;:18;;;;;;21684:24;;21573:55;;-1:-1:-1;21674:34:0;;;;;;;21747:61;;-1:-1:-1;21792:16:0;;-1:-1:-1;;;21792:16:0;;;;21791:17;21747:61;:105;;;;-1:-1:-1;;;;;;21829:23:0;;;;;;:12;:23;;;;;;;;21747:105;:147;;;;-1:-1:-1;21873:21:0;;-1:-1:-1;;;21873:21:0;;;;21747:147;:194;;;;-1:-1:-1;;;;;;21916:25:0;;;;;;:17;:25;;;;;;;;21915:26;21747:194;21725:436;;;22004:20;;21980;:44;21976:114;;22070:20;;22047:43;;21976:114;22109:36;22124:20;22109:14;:36::i;:::-;22177:19;22199:34;22207:6;22215:9;22226:6;22199:7;:34::i;:::-;22254:16;;22177:56;;-1:-1:-1;;;;22254:16:0;;;;:51;;;;-1:-1:-1;;;;;;22275:30:0;;;;;;:19;:30;;;;;;;;22274:31;22254:51;22250:238;;;22395:10;;22354:37;22379:11;22354:20;22364:9;-1:-1:-1;;;;;13757:18:0;13730:7;13757:18;;;:9;:18;;;;;;;13664:119;22354:37;:51;;22324:164;;;;-1:-1:-1;;;22324:164:0;;12186:2:1;22324:164:0;;;12168:21:1;12225:2;12205:18;;;12198:30;12264:34;12244:18;;;12237:62;-1:-1:-1;;;12315:18:1;;;12308:37;12362:19;;22324:164:0;11984:403:1;22324:164:0;-1:-1:-1;;;;;22528:20:0;;;;;;:9;:20;;;;;;:37;;22553:11;22528:24;:37::i;:::-;-1:-1:-1;;;;;22505:20:0;;;;;;;:9;:20;;;;;;;:60;;;;22587:40;;;;;;-1:-1:-1;;;;;;;;;;;22587:40:0;;;22615:11;1595:25:1;;1583:2;1568:18;;1449:177;22587:40:0;;;;;;;;22649:4;22642:11;;;;;;;1744:226;1864:7;1900:12;1892:6;;;;1884:29;;;;-1:-1:-1;;;1884:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1924:9:0;1936:5;1940:1;1936;:5;:::i;:::-;1924:17;1744:226;-1:-1:-1;;;;;1744:226:0:o;1600:136::-;1658:7;1685:43;1689:1;1692;1685:43;;;;;;;;;;;;;;;;;:3;:43::i;1411:181::-;1469:7;;1501:5;1505:1;1501;:5;:::i;:::-;1489:17;;1530:1;1525;:6;;1517:46;;;;-1:-1:-1;;;1517:46:0;;12727:2:1;1517:46:0;;;12709:21:1;12766:2;12746:18;;;12739:30;12805:29;12785:18;;;12778:57;12852:18;;1517:46:0;12525:351:1;24861:520:0;25041:15;;25009:62;;25026:4;;-1:-1:-1;;;;;25041:15:0;25059:11;25009:8;:62::i;:::-;25114:15;;25318:14;;25114:259;;-1:-1:-1;;;25114:259:0;;25186:4;25114:259;;;13222:34:1;13272:18;;;13265:34;;;25114:15:0;13315:18:1;;;13308:34;;;13358:18;;;13351:34;-1:-1:-1;;;;;25318:14:0;;;13401:19:1;;;13394:44;25347:15:0;13454:19:1;;;13447:35;25114:15:0;;;:31;;25153:9;;13156:19:1;;25114:259:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24861:520;;:::o;22680:401::-;22844:90;;;;;;;;;;;-1:-1:-1;;;22844:90:0;;;;;;;;-1:-1:-1;;;;;22844:17:0;;22807:4;22844:17;;;:9;:17;;;;;;;:90;;22880:6;;22844:21;:90::i;:::-;-1:-1:-1;;;;;22824:17:0;;;;;;;:9;:17;;;;;;:110;;;;22968:20;;;;;;;:32;;22993:6;22968:24;:32::i;:::-;-1:-1:-1;;;;;22945:20:0;;;;;;;:9;:20;;;;;;;:55;;;;23016:35;;;;;;-1:-1:-1;;;;;;;;;;;23016:35:0;;;23044:6;1595:25:1;;1583:2;1568:18;;1449:177;23016:35:0;;;;;;;;-1:-1:-1;23069:4:0;22680:401;;;;;:::o;23089:1098::-;11452:16;:23;;-1:-1:-1;;;;11452:23:0;-1:-1:-1;;;11452:23:0;;;23244:24:::1;::::0;11452:16;23209:15;11452:23;;23183:107:::1;::::0;23288:1:::1;::::0;23183:86:::1;::::0;;;:7;;:25:::1;:42::i;:::-;:60:::0;::::1;:86::i;:107::-;23161:129:::0;-1:-1:-1;23301:21:0::1;23325:24;:7:::0;23161:129;23325:11:::1;:24::i;:::-;23301:48;;23377:24;;23366:7;:35;23362:85;;23416:31;23433:13;23416:16;:31::i;:::-;23585:15;::::0;23483:21:::1;::::0;23458:22:::1;::::0;23542:76:::1;::::0;23585:22:::1;::::0;23605:1:::1;23585:19;:22::i;:::-;23542:24;::::0;;:28:::1;:76::i;:::-;23517:101;;23631:29;23663:104;23765:1;23663:83;23731:14;23663:49;23696:15;;23663:14;:32;;:49;;;;:::i;:104::-;23631:136;;23778:24;23805:74;23854:14;23805:30;23824:10;;23805:14;:18;;:30;;;;:::i;:74::-;23778:101:::0;-1:-1:-1;23896:20:0;;23892:90:::1;;23952:11;::::0;23931:51:::1;::::0;-1:-1:-1;;;;;23952:11:0::1;23965:16:::0;23931:20:::1;:51::i;:::-;24023:1;23999:21;:25;:44;;;;;24042:1;24028:11;:15;23999:44;23995:111;;;24058:48;24071:11;24084:21;24058:12;:48::i;:::-;24140:15;::::0;24119:60:::1;::::0;24140:15:::1;::::0;::::1;-1:-1:-1::0;;;;;24140:15:0::1;24157:21;24119:20;:60::i;:::-;-1:-1:-1::0;;11498:16:0;:24;;-1:-1:-1;;;;11498:24:0;;;-1:-1:-1;;;;;23089:1098:0:o;25389:2492::-;-1:-1:-1;;;;;25634:25:0;;25509:7;25634:25;;;:17;:25;;;;;;25509:7;;;;;;25634:25;;;:57;;-1:-1:-1;;;;;;25663:28:0;;;;;;:17;:28;;;;;;;;25634:57;25630:103;;;25715:6;25708:13;;;;;;;25630:103;-1:-1:-1;;;;;25761:23:0;;25779:4;25761:23;;;;:66;;-1:-1:-1;;;;;;25801:26:0;;25822:4;25801:26;;25761:66;:100;;;;-1:-1:-1;6386:7:0;6413:6;-1:-1:-1;;;;;25844:17:0;;;6413:6;;25844:17;;25761:100;:137;;;;-1:-1:-1;6386:7:0;6413:6;-1:-1:-1;;;;;25878:20:0;;;6413:6;;25878:20;;25761:137;25743:996;;;-1:-1:-1;;;;;25929:20:0;;;;;;:12;:20;;;;;;;;25925:803;;;25982:102;26080:3;25982:71;26015:37;26037:14;;26015:17;;:21;;:37;;;;:::i;:::-;25982:6;;:32;:71::i;:102::-;25970:114;;26124:1;26107:14;;:18;:52;;;;;26142:17;;26129:10;;:30;26107:52;26103:202;;;26197:35;26228:3;26197:26;26208:14;;26197:6;:10;;:26;;;;:::i;:35::-;26184:48;;26255:30;26266:6;26274:10;26255;:30::i;:::-;25925:803;;;-1:-1:-1;;;;;26330:23:0;;;;;;:12;:23;;;;;;;;26326:402;;;26386:104;26486:3;26386:73;26419:39;26442:15;;26419:18;;:22;;:39;;;;:::i;26386:104::-;26374:116;;26531:1;26513:15;;:19;:53;;;;;26549:17;;26536:10;;:30;26513:53;26509:204;;;26604:36;26636:3;26604:27;26615:15;;26604:6;:10;;:27;;;;:::i;:36::-;26591:49;;26663:30;26674:6;26682:10;26663;:30::i;:::-;-1:-1:-1;;;;;26755:20:0;;;;;;:12;:20;;;;;;;;;:47;;-1:-1:-1;;;;;;26779:23:0;;;;;;:12;:23;;;;;;;;26755:47;26751:738;;;26823:12;;:16;26819:659;;26860:10;;26889:523;26913:12;;26909:1;:16;26889:523;;;27122:44;;;;;;13989:19:1;;;14024:12;;;14017:28;;;27150:15:0;14061:12:1;;;14054:28;14098:12;;27122:44:0;;;-1:-1:-1;;27122:44:0;;;;;;;;;27074:127;;27122:44;27074:127;;;;-1:-1:-1;;;;;27321:13:0;;27032:200;27321:13;;;:9;:13;;;;;;27074:127;;-1:-1:-1;27321:20:0;;27339:1;27321:17;:20::i;:::-;-1:-1:-1;;;;;27305:13:0;;;;;;;:9;:13;;;;;;;:36;;;;27369:23;;;;;;-1:-1:-1;;;;;;;;;;;27369:23:0;;;27390:1;1595:25:1;;1583:2;1568:18;;1449:177;27369:23:0;;;;;;;;26927:3;;;;:::i;:::-;;;;26889:523;;;-1:-1:-1;27446:12:0;;:16;;27461:1;27446:16;:::i;:::-;27430:32;;26841:637;26819:659;27521:90;;;;;;;;;;;-1:-1:-1;;;27521:90:0;;;;;;;;-1:-1:-1;;;;;27521:17:0;;-1:-1:-1;27521:17:0;;;:9;:17;;;;;;;;:90;;27557:6;;27521:21;:90::i;:::-;-1:-1:-1;;;;;27501:17:0;;;;;;:9;:17;;;;;:110;27628:13;;27624:174;;27703:4;27685:24;;;;:9;:24;;;;;;:39;;27714:9;27685:28;:39::i;:::-;27676:4;27658:24;;;;:9;:24;;;;;;;:66;;;;27744:42;;-1:-1:-1;;;;;27744:42:0;;;-1:-1:-1;;;;;;;;;;;27744:42:0;;;27776:9;1595:25:1;;1583:2;1568:18;;1449:177;27744:42:0;;;;;;;;27624:174;27817:56;27828:44;27858:13;27828:25;:9;27842:10;27828:13;:25::i;:44::-;27817:6;;:10;:56::i;:::-;27810:63;25389:2492;-1:-1:-1;;;;;;;25389:2492:0:o;1978:250::-;2036:7;2060:1;2065;2060:6;2056:47;;-1:-1:-1;2090:1:0;2083:8;;2056:47;2115:9;2127:5;2131:1;2127;:5;:::i;:::-;2115:17;-1:-1:-1;2160:1:0;2151:5;2155:1;2115:17;2151:5;:::i;:::-;:10;2143:56;;;;-1:-1:-1;;;2143:56:0;;14908:2:1;2143:56:0;;;14890:21:1;14947:2;14927:18;;;14920:30;14986:34;14966:18;;;14959:62;-1:-1:-1;;;15037:18:1;;;15030:31;15078:19;;2143:56:0;14706:397:1;2236:132:0;2294:7;2321:39;2325:1;2328;2321:39;;;;;;;;;;;;;;;;;:3;:39::i;24195:658::-;24345:16;;;24359:1;24345:16;;;;;;;;24321:21;;24345:16;;;;;;;;;;-1:-1:-1;24345:16:0;24321:40;;24390:4;24372;24377:1;24372:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24372:23:0;;;:7;;;;;;;;;;:23;;;;24416:15;;:22;;;-1:-1:-1;;;24416:22:0;;;;:15;;;;;:20;;:22;;;;;24372:7;;24416:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24406:4;24411:1;24406:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24406:32:0;;;:7;;;;;;;;;:32;24483:15;;24451:62;;24468:4;;24483:15;24501:11;24451:8;:62::i;:::-;24552:15;;:240;;-1:-1:-1;;;24552:240:0;;-1:-1:-1;;;;;24552:15:0;;;;:66;;:240;;24633:11;;24552:15;;24703:4;;24730;;24766:15;;24552:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24810:35;24827:11;24840:4;24810:35;;;;;;;:::i;:::-;;;;;;;;24250:603;24195:658;:::o;18936:140::-;19042:26;;-1:-1:-1;;;;;19042:18:0;;;:26;;;;;19061:6;;19042:26;;;;19061:6;19042:18;:26;;;;;;;;;;;;;;;;;;;;;18936:140;;:::o;27889:322::-;28004:17;;27990:10;;:31;27986:44;;27889:322;;:::o;27986:44::-;28077:11;;-1:-1:-1;;;;;28077:11:0;28067:22;;;;:9;:22;;;;;;:35;;28094:7;28067:26;:35::i;:::-;28052:11;;-1:-1:-1;;;;;28052:11:0;28042:22;;;;:9;:22;;;;;:60;28126:10;;:23;;28141:7;28126:14;:23::i;:::-;28113:10;:36;28182:11;;28165:38;;1595:25:1;;;-1:-1:-1;;;;;28182:11:0;;;;28165:38;;;-1:-1:-1;;;;;;;;;;;28165:38:0;1583:2:1;1568:18;28165:38:0;;;;;;;27889:322;;:::o;2376:312::-;2496:7;2531:12;2524:5;2516:28;;;;-1:-1:-1;;;2516:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2555:9:0;2567:5;2571:1;2567;: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;1855:160::-;1920:20;;1976:13;;1969:21;1959:32;;1949:60;;2005:1;2002;1995:12;1949:60;1855:160;;;:::o;2020:315::-;2085:6;2093;2146:2;2134:9;2125:7;2121:23;2117:32;2114:52;;;2162:1;2159;2152:12;2114:52;2201:9;2188:23;2220:31;2245:5;2220:31;:::i;:::-;2270:5;-1:-1:-1;2294:35:1;2325:2;2310:18;;2294:35;:::i;:::-;2284:45;;2020:315;;;;;:::o;2340:456::-;2417:6;2425;2433;2486:2;2474:9;2465:7;2461:23;2457:32;2454:52;;;2502:1;2499;2492:12;2454:52;2541:9;2528:23;2560:31;2585:5;2560:31;:::i;:::-;2610:5;-1:-1:-1;2667:2:1;2652:18;;2639:32;2680:33;2639:32;2680:33;:::i;:::-;2340:456;;2732:7;;-1:-1:-1;;;2786:2:1;2771:18;;;;2758:32;;2340:456::o;2801:180::-;2857:6;2910:2;2898:9;2889:7;2885:23;2881:32;2878:52;;;2926:1;2923;2916:12;2878:52;2949:26;2965:9;2949:26;:::i;3383:180::-;3442:6;3495:2;3483:9;3474:7;3470:23;3466:32;3463:52;;;3511:1;3508;3501:12;3463:52;-1:-1:-1;3534:23:1;;3383:180;-1:-1:-1;3383:180:1:o;3568:247::-;3627:6;3680:2;3668:9;3659:7;3655:23;3651:32;3648:52;;;3696:1;3693;3686:12;3648:52;3735:9;3722:23;3754:31;3779:5;3754:31;:::i;3820:661::-;3942:6;3950;3958;3966;3974;3982;3990;3998;4051:3;4039:9;4030:7;4026:23;4022:33;4019:53;;;4068:1;4065;4058:12;4019:53;-1:-1:-1;;4091:23:1;;;4161:2;4146:18;;4133:32;;-1:-1:-1;4212:2:1;4197:18;;4184:32;;4263:2;4248:18;;4235:32;;-1:-1:-1;4314:3:1;4299:19;;4286:33;;-1:-1:-1;4366:3:1;4351:19;;4338:33;;-1:-1:-1;4418:3:1;4403:19;;4390:33;;-1:-1:-1;4470:3:1;4455:19;4442:33;;-1:-1:-1;3820:661:1;-1:-1:-1;3820:661:1:o;4486:316::-;4563:6;4571;4579;4632:2;4620:9;4611:7;4607:23;4603:32;4600:52;;;4648:1;4645;4638:12;4600:52;-1:-1:-1;;4671:23:1;;;4741:2;4726:18;;4713:32;;-1:-1:-1;4792:2:1;4777:18;;;4764:32;;4486:316;-1:-1:-1;4486:316:1:o;4807:689::-;4899:6;4907;4915;4968:2;4956:9;4947:7;4943:23;4939:32;4936:52;;;4984:1;4981;4974:12;4936:52;5024:9;5011:23;5053:18;5094:2;5086:6;5083:14;5080:34;;;5110:1;5107;5100:12;5080:34;5148:6;5137:9;5133:22;5123:32;;5193:7;5186:4;5182:2;5178:13;5174:27;5164:55;;5215:1;5212;5205:12;5164:55;5255:2;5242:16;5281:2;5273:6;5270:14;5267:34;;;5297:1;5294;5287:12;5267:34;5352:7;5345:4;5335:6;5332:1;5328:14;5324:2;5320:23;5316:34;5313:47;5310:67;;;5373:1;5370;5363:12;5310:67;5404:4;5396:13;;;;-1:-1:-1;5428:6:1;-1:-1:-1;5453:37:1;;5469:20;;;-1:-1:-1;5453:37:1;:::i;:::-;5443:47;;4807:689;;;;;:::o;5501:388::-;5569:6;5577;5630:2;5618:9;5609:7;5605:23;5601:32;5598:52;;;5646:1;5643;5636:12;5598:52;5685:9;5672:23;5704:31;5729:5;5704:31;:::i;:::-;5754:5;-1:-1:-1;5811:2:1;5796:18;;5783:32;5824:33;5783:32;5824:33;:::i;:::-;5876:7;5866:17;;;5501:388;;;;;:::o;5894:380::-;5973:1;5969:12;;;;6016;;;6037:61;;6091:4;6083:6;6079:17;6069:27;;6037:61;6144:2;6136:6;6133:14;6113:18;6110:38;6107:161;;6190:10;6185:3;6181:20;6178:1;6171:31;6225:4;6222:1;6215:15;6253:4;6250:1;6243:15;6107:161;;5894:380;;;:::o;6279:356::-;6481:2;6463:21;;;6500:18;;;6493:30;6559:34;6554:2;6539:18;;6532:62;6626:2;6611:18;;6279:356::o;7346:251::-;7416:6;7469:2;7457:9;7448:7;7444:23;7440:32;7437:52;;;7485:1;7482;7475:12;7437:52;7517:9;7511:16;7536:31;7561:5;7536:31;:::i;7911:127::-;7972:10;7967:3;7963:20;7960:1;7953:31;8003:4;8000:1;7993:15;8027:4;8024:1;8017:15;8043:127;8104:10;8099:3;8095:20;8092:1;8085:31;8135:4;8132:1;8125:15;8159:4;8156:1;8149:15;8175:135;8214:3;8235:17;;;8232:43;;8255:18;;:::i;:::-;-1:-1:-1;8302:1:1;8291:13;;8175:135::o;11097:125::-;11162:9;;;11183:10;;;11180:36;;;11196:18;;:::i;12392:128::-;12459:9;;;12480:11;;;12477:37;;;12494:18;;:::i;13493:306::-;13581:6;13589;13597;13650:2;13638:9;13629:7;13625:23;13621:32;13618:52;;;13666:1;13663;13656:12;13618:52;13695:9;13689:16;13679:26;;13745:2;13734:9;13730:18;13724:25;13714:35;;13789:2;13778:9;13774:18;13768:25;13758:35;;13493:306;;;;;:::o;14311:168::-;14384:9;;;14415;;14432:15;;;14426:22;;14412:37;14402:71;;14453:18;;:::i;14484:217::-;14524:1;14550;14540:132;;14594:10;14589:3;14585:20;14582:1;14575:31;14629:4;14626:1;14619:15;14657:4;14654:1;14647:15;14540:132;-1:-1:-1;14686:9:1;;14484:217::o;15240:461::-;15293:3;15331:5;15325:12;15358:6;15353:3;15346:19;15384:4;15413:2;15408:3;15404:12;15397:19;;15450:2;15443:5;15439:14;15471:1;15481:195;15495:6;15492:1;15489:13;15481:195;;;15560:13;;-1:-1:-1;;;;;15556:39:1;15544:52;;15616:12;;;;15651:15;;;;15592:1;15510:9;15481:195;;;-1:-1:-1;15692:3:1;;15240:461;-1:-1:-1;;;;;15240:461:1:o;15706:582::-;16005:6;15994:9;15987:25;16048:6;16043:2;16032:9;16028:18;16021:34;16091:3;16086:2;16075:9;16071:18;16064:31;15968:4;16112:57;16164:3;16153:9;16149:19;16141:6;16112:57;:::i;:::-;-1:-1:-1;;;;;16205:32:1;;;;16200:2;16185:18;;16178:60;-1:-1:-1;16269:3:1;16254:19;16247:35;16104:65;15706:582;-1:-1:-1;;;15706:582:1:o;16293:332::-;16500:6;16489:9;16482:25;16543:2;16538;16527:9;16523:18;16516:30;16463:4;16563:56;16615:2;16604:9;16600:18;16592:6;16563:56;:::i;:::-;16555:64;16293:332;-1:-1:-1;;;;16293:332:1:o

Swarm Source

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