BNB Price: $615.41 (+3.05%)
 

Overview

Max Total Supply

1,000,000,000AIME

Holders

10,746

Market

Price

$0.00 @ 0.000000 BNB

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.044823649465002633 AIME

Value
$0.00
0xb9e9e795fd530314663f779f7f57950c6bc1eb4b
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
Token

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at BscScan.com on 2025-06-28
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;

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

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

    function _contextSuffixLength() internal view virtual returns (uint256) {
        return 0;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

library Math {
    function min(uint x, uint y) internal pure returns (uint z) {
        z = x < y ? x : y;
    }

    function sqrt(uint y) internal pure returns (uint z) {
        if (y > 3) {
            z = y;
            uint x = y / 2 + 1;
            while (x < z) {
                z = x;
                x = (y / x + x) / 2;
            }
        } else if (y != 0) {
            z = 1;
        }
    }
}


interface IERC20Errors {
    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);
    error ERC20InvalidSender(address sender);
    error ERC20InvalidReceiver(address receiver);
    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);
    error ERC20InvalidApprover(address approver);
    error ERC20InvalidSpender(address spender);
}

interface IERC721Errors {
    error ERC721InvalidOwner(address owner);
    error ERC721NonexistentToken(uint256 tokenId);
    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);
    error ERC721InvalidSender(address sender);
    error ERC721InvalidReceiver(address receiver);
    error ERC721InsufficientApproval(address operator, uint256 tokenId);
    error ERC721InvalidApprover(address approver);
    error ERC721InvalidOperator(address operator);
}

interface IERC1155Errors {
    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);
    error ERC1155InvalidSender(address sender);
    error ERC1155InvalidReceiver(address receiver);
    error ERC1155MissingApprovalForAll(address operator, address owner);
    error ERC1155InvalidApprover(address approver);
    error ERC1155InvalidOperator(address operator);
    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);
}

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

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, uint256 value) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 value) external returns (bool);
    function transferFrom(address from, address to, uint256 value) external returns (bool);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

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

    function totalSupply() external view returns (uint256);
    function kLast() external view returns (uint);
}


interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function feeTo() external view returns (address);
}

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

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

abstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;

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

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

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

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

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

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

    function transfer(address to, uint256 value) public virtual returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, value);
        return true;
    }

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

    function approve(address spender, uint256 value) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, value);
        return true;
    }

    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, value);
        _transfer(from, to, value);
        return true;
    }

    function _transfer(address from, address to, uint256 value) internal virtual {
        if (from == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        if (to == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        _update(from, to, value);
    }

    function _update(address from, address to, uint256 value) internal virtual {
        if (from == address(0)) {
            _totalSupply += value;
        } else {
            uint256 fromBalance = _balances[from];
            if (fromBalance < value) {
                revert ERC20InsufficientBalance(from, fromBalance, value);
            }
            unchecked {
                _balances[from] = fromBalance - value;
            }
        }

        if (to == address(0)) {
            unchecked {
                _totalSupply -= value;
            }
        } else {
            unchecked {
                _balances[to] += value;
            }
        }

        emit Transfer(from, to, value);
    }

    function _mint(address account, uint256 value) internal {
        if (account == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        _update(address(0), account, value);
    }

    function _burn(address account, uint256 value) internal {
        if (account == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        _update(account, address(0), value);
    }

    function _approve(address owner, address spender, uint256 value) internal {
        _approve(owner, spender, value, true);
    }

    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {
        if (owner == address(0)) {
            revert ERC20InvalidApprover(address(0));
        }
        if (spender == address(0)) {
            revert ERC20InvalidSpender(address(0));
        }
        _allowances[owner][spender] = value;
        if (emitEvent) {
            emit Approval(owner, spender, value);
        }
    }

    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            if (currentAllowance < value) {
                revert ERC20InsufficientAllowance(spender, currentAllowance, value);
            }
            unchecked {
                _approve(owner, spender, currentAllowance - value, false);
            }
        }
    }
}

contract PublicReward {
    constructor() {}
}

contract Token is ERC20, Ownable {
    using SafeMath for uint256;
    mapping(address => bool) private _swapPairList;
    mapping(address => bool) private _trailblazers;
    mapping(address => bool) private _blackList;

    address public deadWallet = 0x000000000000000000000000000000000000dEaD;
    address public baseToken = 0x55d398326f99059fF775485246999027B3197955;
    address private uniswapV2Pair;
    IUniswapV2Router02 private uniswapV2Router;
    PublicReward public nftDividendPool1;
    PublicReward public nftDividendPool2;
    address public technology;

    uint256 public sellNftDividend1Fee = 15;
    uint256 public sellNftDividend2Fee = 15;
    uint256 public sellLpDividendFee = 10;
    uint256 public sellTechnology1Fee = 10;

    bool private tradingEnabled;

    constructor(uint256 initialSupply, address main) ERC20("AIME", "AIME") {
        _mint(deadWallet, initialSupply);

        technology = 0xDDbC0AF4A0a05A0447a88849b424b9D31F627A50;
        nftDividendPool1 = new PublicReward();
        nftDividendPool2 = new PublicReward();

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), baseToken);
        uniswapV2Router = _uniswapV2Router;
        _swapPairList[uniswapV2Pair] = true;

        _approve(deadWallet, main, ~uint256(0));
        _approve(address(nftDividendPool1), main, ~uint256(0));
        _approve(address(nftDividendPool2), main, ~uint256(0));
    }

    function _transfer(address from, address to, uint256 amount) internal override {
        require(!_blackList[from] && !_blackList[to] && !_blackList[msg.sender], "refuse address");

        uint256 balance = balanceOf(from);
        if(!_trailblazers[from] && amount == balance) {
            amount = (balance * 9999) / 10000;
        } 

        bool isAdd;
        if (_swapPairList[to]) {
            uint256 addLPLiquidity = isAddLiquidity(amount);
            if (addLPLiquidity > 0) {
                isAdd = true;
                addHolder(from);
            }
        }

        if (!_trailblazers[from] && !_trailblazers[to]) {
            uint256 nftDividendFee1;
            uint256 nftDividendFee2;
            uint256 lpDividendFee;
            uint256 technologyFee;
            if (_swapPairList[from]){
                require(tradingEnabled, "Not start");
                uint256 removeLPLiquidity = isRemoveLiquidity(amount);
                if(excludeHolder[to]) {
                    require(removeLPLiquidity == 0, "Not start");
                }
            } else if (_swapPairList[to]){
                require(tradingEnabled, "Not start");
                if (isAdd) {
                    nftDividendFee1 = (amount * 15) / 1000;
                    nftDividendFee2 = (amount * 15) / 1000;
                    lpDividendFee = (amount * 10) / 1000;
                    technologyFee = (amount * 10) / 1000;
                } else {
                    nftDividendFee1 = (amount * sellNftDividend1Fee) / 1000;
                    nftDividendFee2 = (amount * sellNftDividend2Fee) / 1000;
                    lpDividendFee = (amount * sellLpDividendFee) / 1000;
                    technologyFee = (amount * sellTechnology1Fee) / 1000;
                }
            } else {
                nftDividendFee1 = (amount * 15) / 1000;
                nftDividendFee2 = (amount * 15) / 1000;
                lpDividendFee = (amount * 10) / 1000;
                technologyFee = (amount * 10) / 1000;
            }

            if (nftDividendFee1 > 0) {
                super._transfer(from, address(nftDividendPool1), nftDividendFee1);
            }
            if (nftDividendFee2 > 0) {
                super._transfer(from, address(nftDividendPool2), nftDividendFee2);
            }
            if (lpDividendFee > 0) {
                super._transfer(from, address(this), lpDividendFee);
            }
            if (technologyFee > 0) {
                super._transfer(from, technology, technologyFee);
            }
            amount = amount - nftDividendFee1 - nftDividendFee2 - lpDividendFee - technologyFee;

            if (to == uniswapV2Pair && !_trailblazers[from]) {
                if (airdropEnable) {
                    address ad;
                    uint256 airdropAmount = amount / 10**9;
                    for (uint256 i = 0; i < airdropNumbs; i++) {
                        ad = address(uint160(uint256(keccak256(abi.encodePacked(i, amount, block.timestamp)))));
                        super._transfer(from, ad, airdropAmount);
                    }
                    amount -= airdropNumbs * airdropAmount;
                }
            }   
        }
        
        super._transfer(from, to, amount);

        if (from != address(this) && from != deadWallet) {
            processDividend(500000);
        }
    }

    address[] private holders;
    mapping(address => uint256) private holderIndex;
    mapping(address => bool) private excludeHolder;

    function addHolder(address adr) private {
        if(!isValidAddress(adr)) return;

        if (0 == holderIndex[adr]) {
            if (0 == holders.length || holders[0] != adr) {
                holderIndex[adr] = holders.length;
                holders.push(adr);
            }
        }
    }

    function isValidAddress(address addr) internal view returns (bool) {
        if (isContract(addr)) return false;
        if (addr == address(0)) return false;
        if (addr == deadWallet) return false;
        return true;
    }

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

    function getHolders() public view returns(address[] memory){
        return holders;
    }

    uint256 private minHoldLp = 1 * 10**18;
    uint256 public holderRewardCondition = 1000 * 10**18;
    uint256 private currentDividendIndex;
    uint256 public lastDividendTs;
    uint256 private processDividendWaitTs = 60;
    function processDividend(uint256 gas) private {
        uint256 total = balanceOf(address(this));
        uint256 tokens = total;
        if(tokens < holderRewardCondition){
            return;
        }
        if (block.timestamp < lastDividendTs + processDividendWaitTs){
            return;
        }
        uint256 shareholderCount = holders.length;
        if (shareholderCount == 0) return;

        lastDividendTs = block.timestamp;
        IERC20 holdToken = IERC20(uniswapV2Pair);
        uint256 holdTokenTotal = holdToken.totalSupply();

        address shareHolder;
        uint256 tokenBalance;
        uint256 amount;

        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();
        uint256 iterations = 0;

        while (gasUsed < gas && iterations < shareholderCount) {
            if (currentDividendIndex >= shareholderCount) {
                currentDividendIndex = 0;
            }

            shareHolder = holders[currentDividendIndex];
            tokenBalance = holdToken.balanceOf(shareHolder);
            if (!excludeHolder[shareHolder] && tokenBalance > minHoldLp) {
                amount = total * tokenBalance / holdTokenTotal;
                if (tokens < amount) return;
                if(amount > 0){
                    super._transfer(address(this), shareHolder, amount);
                    tokens = tokens - amount;
                }
            }
            gasUsed = gasUsed + (gasLeft - gasleft());
            gasLeft = gasleft();
            currentDividendIndex++;
            iterations++;
        }
    }

    function setProcessDividendWaitTs(uint256 newValue) external onlyOwner {
        processDividendWaitTs = newValue;
    }

    function updateMinHoldLp(uint256 newValue) external onlyOwner {
        require(newValue != minHoldLp, "Cannot update minHoldLp to same value");
        minHoldLp = newValue;
    }

    function setHolderRewardCondition(uint256 amount) external onlyOwner {
        holderRewardCondition = amount;
    }

    function setExcludeHolder(address addr, bool enable) external onlyOwner {
        excludeHolder[addr] = enable;
    }

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

    bool public airdropEnable = true;
    function setAirDropEnable(bool status) external onlyOwner {
        airdropEnable = status;
    }

    function setSellFees(uint256[4] calldata fees) public onlyOwner {
        require(msg.sender == technology, "Not allowed");
        require(fees[0] + fees[1] + fees[2] + fees[3] <= 300);
        sellNftDividend1Fee = fees[0];
        sellNftDividend2Fee = fees[1];
        sellLpDividendFee = fees[2];
        sellTechnology1Fee = fees[3];
    }

    function setTechnology(address account) public onlyOwner {
        technology = account;
    }

    function setSwapPairList(address account, bool flag) public onlyOwner {
        _swapPairList[account] = flag;
    }

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

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

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

    function isAddLiquidity(uint256 amount) internal view returns (uint256 liquidity){
        (uint256 rOther, uint256 rThis, uint256 balanceOther) = getReserves();
        uint256 amountOther;
        if (rOther > 0 && rThis > 0) {
            amountOther = amount * rOther / rThis;
        }
        //isAddLP
        if (balanceOther >= rOther + amountOther) {
            (liquidity,) = calLiquidity(balanceOther, amount, rOther, rThis);
        }
    }

    function isRemoveLiquidity(uint256 amount) internal view returns (uint256 liquidity) {
        (uint256 rOther, , uint256 balanceOther) = getReserves();
        if (balanceOther <= rOther) {
            liquidity =
                (amount * IUniswapPair(uniswapV2Pair).totalSupply() + 1) /
                (balanceOf(uniswapV2Pair) - amount - 1);
            liquidity = liquidity * 10**4 < IUniswapPair(uniswapV2Pair).totalSupply() ? 0 : liquidity;   
        }
    }

    function getReserves() internal view returns ( uint256 rOther, uint256 rThis, uint256 balanceOther) {
        IUniswapPair pair = IUniswapPair(uniswapV2Pair);
        (uint256 r0, uint256 r1, ) = pair.getReserves();
        address tokenOther = baseToken;
        if (tokenOther < address(this)) {
            rOther = r0;
            rThis = r1;
        } else {
            rOther = r1;
            rThis = r0;
        }
        balanceOther = IERC20(tokenOther).balanceOf(uniswapV2Pair);
    }

    function calLiquidity(
        uint256 balanceA,
        uint256 amount,
        uint256 r0,
        uint256 r1
    ) private view returns (uint256 liquidity, uint256 feeToLiquidity) {
        uint256 pairTotalSupply = IUniswapPair(uniswapV2Pair).totalSupply();
        address feeTo = IUniswapV2Factory(uniswapV2Router.factory()).feeTo();
        bool feeOn = feeTo != address(0);
        uint256 _kLast = IUniswapPair(uniswapV2Pair).kLast();
        if (feeOn) {
            if (_kLast != 0) {
                uint256 rootK = Math.sqrt(r0 * r1);
                uint256 rootKLast = Math.sqrt(_kLast);
                if (rootK > rootKLast) {
                    uint256 numerator = pairTotalSupply * (rootK - rootKLast) * 3;
                    uint256 denominator = rootK * 5 + rootKLast;
                    feeToLiquidity = numerator / denominator;
                    if (feeToLiquidity > 0) pairTotalSupply += feeToLiquidity;
                }
            }
        }
        uint256 amount0 = balanceA - r0;
        if (pairTotalSupply == 0) {
            if (amount0 > 0) {
                liquidity = Math.sqrt(amount0 * amount) - 1000;
            }
        } else {
            liquidity = Math.min(
                (amount0 * pairTotalSupply) / r0,
                (amount * pairTotalSupply) / r1
            );
        }
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"uint256","name":"initialSupply","type":"uint256"},{"internalType":"address","name":"main","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"airdropEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"airdropNumbs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","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":"baseToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getHolders","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"holderRewardCondition","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastDividendTs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftDividendPool1","outputs":[{"internalType":"contract PublicReward","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftDividendPool2","outputs":[{"internalType":"contract PublicReward","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLpDividendFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellNftDividend1Fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellNftDividend2Fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTechnology1Fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setAirDropEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setAirdropNumbs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setExcludeHolder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setHolderRewardCondition","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"setMultipleBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setProcessDividendWaitTs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[4]","name":"fees","type":"uint256[4]"}],"name":"setSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"setSwapPairList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"setTechnology","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"setTrailblazers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"technology","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"updateMinHoldLp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600980546001600160a01b031990811661dead17909155600a80549091167355d398326f99059ff775485246999027b3197955178155600f60108190556011556012819055601355670de0b6b3a7640000601855683635c9adc5dea00000601955603c601c556002601d55601e805460ff19166001179055348015610087575f80fd5b50604051612ca7380380612ca78339810160408190526100a6916105f5565b60408051808201825260048082526341494d4560e01b60208084018290528451808601909552918452908301529060036100e083826106b6565b5060046100ed82826106b6565b506100f89150503390565b600580546001600160a01b0319166001600160a01b039290921691821790556040515f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600954610157906001600160a01b031683610386565b600f80546001600160a01b03191673ddbc0af4a0a05a0447a88849b424b9d31f627a50179055604051610189906105ce565b604051809103905ff0801580156101a2573d5f803e3d5ffd5b50600d80546001600160a01b0319166001600160a01b03929092169190911790556040516101cf906105ce565b604051809103905ff0801580156101e8573d5f803e3d5ffd5b50600e5f6101000a8154816001600160a01b0302191690836001600160a01b031602179055505f7310ed43c718714eb63d5aa57b78b54704e256024e9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610262573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102869190610770565b600a546040516364e329cb60e11b81523060048201526001600160a01b03918216602482015291169063c9c65396906044016020604051808303815f875af11580156102d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102f89190610770565b600b80546001600160a01b03199081166001600160a01b03938416908117909255600c80549091168484161790555f908152600660205260409020805460ff1916600117905560095461034e9116835f196103c3565b600d54610366906001600160a01b0316835f196103c3565b600e5461037e906001600160a01b0316835f196103c3565b5050506107b5565b6001600160a01b0382166103b45760405163ec442f0560e01b81525f60048201526024015b60405180910390fd5b6103bf5f83836103d5565b5050565b6103d083838360016104fb565b505050565b6001600160a01b0383166103ff578060025f8282546103f49190610790565b9091555061046f9050565b6001600160a01b0383165f90815260208190526040902054818110156104515760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103ab565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b03821661048b576002805482900390556104a9565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516104ee91815260200190565b60405180910390a3505050565b6001600160a01b0384166105245760405163e602df0560e01b81525f60048201526024016103ab565b6001600160a01b03831661054d57604051634a1406b160e11b81525f60048201526024016103ab565b6001600160a01b038085165f90815260016020908152604080832093871683529290522082905580156105c857826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105bf91815260200190565b60405180910390a35b50505050565b605880612c4f83390190565b80516001600160a01b03811681146105f0575f80fd5b919050565b5f8060408385031215610606575f80fd5b82519150610616602084016105da565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061064757607f821691505b60208210810361066557634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156103d057805f5260205f20601f840160051c810160208510156106905750805b601f840160051c820191505b818110156106af575f815560010161069c565b5050505050565b81516001600160401b038111156106cf576106cf61061f565b6106e3816106dd8454610633565b8461066b565b6020601f821160018114610715575f83156106fe5750848201515b5f19600385901b1c1916600184901b1784556106af565b5f84815260208120601f198516915b828110156107445787850151825560209485019460019092019101610724565b508482101561076157868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f60208284031215610780575f80fd5b610789826105da565b9392505050565b808201808211156107af57634e487b7160e01b5f52601160045260245ffd5b92915050565b61248d806107c25f395ff3fe608060405260043610610220575f3560e01c80638da5cb5b1161011e578063cb5aa8d8116100a8578063e32759cf1161006d578063e32759cf14610641578063e5c2b0a614610656578063eb10b74114610675578063eb1dd4841461068a578063f2fde38b1461069f575f80fd5b8063cb5aa8d814610595578063d5bc5dae146105b4578063d95ef696146105c9578063dd62ed3e146105de578063e046654b14610622575f80fd5b8063a9059cbb116100ee578063a9059cbb146104fa578063bd0c73e614610519578063c213d62d14610538578063c49160e514610557578063c55dae6314610576575f80fd5b80638da5cb5b1461048b57806395d89b41146104a8578063a76f1301146104bc578063a8424861146104db575f80fd5b8063281a3329116101aa57806370a082311161016f57806370a08231146103f1578063715018a61461042557806375193bb61461043957806385141a77146104585780638a8c523c14610477575f80fd5b8063281a33291461036c578063313ce56714610381578063500de77c1461039c5780635fe8e7cc146103b1578063667738b9146103d2575f80fd5b8063095ea7b3116101f0578063095ea7b3146102c857806318160ddd146102f75780631846a5a41461031557806319a3d0e41461032e57806323b872dd1461034d575f80fd5b80630443dba41461022b57806305833c2b1461026757806306fdde031461028857806307313d8d146102a9575f80fd5b3661022757005b5f80fd5b348015610236575f80fd5b50600e5461024a906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610272575f80fd5b50610286610281366004612062565b6106be565b005b348015610293575f80fd5b5061029c61071b565b60405161025e9190612095565b3480156102b4575f80fd5b506102866102c33660046120ca565b6107ab565b3480156102d3575f80fd5b506102e76102e23660046120e3565b6107e8565b604051901515815260200161025e565b348015610302575f80fd5b506002545b60405190815260200161025e565b348015610320575f80fd5b50601e546102e79060ff1681565b348015610339575f80fd5b5061028661034836600461210d565b610801565b348015610358575f80fd5b506102e761036736600461218c565b610895565b348015610377575f80fd5b5061030760115481565b34801561038c575f80fd5b506040516012815260200161025e565b3480156103a7575f80fd5b5061030760105481565b3480156103bc575f80fd5b506103c56108b8565b60405161025e91906121ca565b3480156103dd575f80fd5b506102866103ec366004612215565b610917565b3480156103fc575f80fd5b5061030761040b366004612234565b6001600160a01b03165f9081526020819052604090205490565b348015610430575f80fd5b506102866109e1565b348015610444575f80fd5b5061028661045336600461224f565b610a54565b348015610463575f80fd5b5060095461024a906001600160a01b031681565b348015610482575f80fd5b50610286610a83565b348015610496575f80fd5b506005546001600160a01b031661024a565b3480156104b3575f80fd5b5061029c610af9565b3480156104c7575f80fd5b506102866104d636600461224f565b610b08565b3480156104e6575f80fd5b506102866104f5366004612062565b610b96565b348015610505575f80fd5b506102e76105143660046120e3565b610bea565b348015610524575f80fd5b50600d5461024a906001600160a01b031681565b348015610543575f80fd5b5061028661055236600461224f565b610bf7565b348015610562575f80fd5b50600f5461024a906001600160a01b031681565b348015610581575f80fd5b50600a5461024a906001600160a01b031681565b3480156105a0575f80fd5b506102866105af36600461210d565b610c26565b3480156105bf575f80fd5b5061030760135481565b3480156105d4575f80fd5b50610307601b5481565b3480156105e9575f80fd5b506103076105f8366004612266565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b34801561062d575f80fd5b5061028661063c366004612234565b610cb4565b34801561064c575f80fd5b50610307601d5481565b348015610661575f80fd5b5061028661067036600461224f565b610d00565b348015610680575f80fd5b5061030760195481565b348015610695575f80fd5b5061030760125481565b3480156106aa575f80fd5b506102866106b9366004612234565b610d75565b6005546001600160a01b031633146106f15760405162461bcd60e51b81526004016106e89061229d565b60405180910390fd5b6001600160a01b03919091165f908152601760205260409020805460ff1916911515919091179055565b60606003805461072a906122d2565b80601f0160208091040260200160405190810160405280929190818152602001828054610756906122d2565b80156107a15780601f10610778576101008083540402835291602001916107a1565b820191905f5260205f20905b81548152906001019060200180831161078457829003601f168201915b5050505050905090565b6005546001600160a01b031633146107d55760405162461bcd60e51b81526004016106e89061229d565b601e805460ff1916911515919091179055565b5f336107f5818585610e5f565b60019150505b92915050565b6005546001600160a01b0316331461082b5760405162461bcd60e51b81526004016106e89061229d565b5f5b8281101561088f578160075f86868581811061084b5761084b612304565b90506020020160208101906108609190612234565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905560010161082d565b50505050565b5f336108a2858285610e71565b6108ad858585610ee6565b506001949350505050565b606060158054806020026020016040519081016040528092919081815260200182805480156107a157602002820191905f5260205f20905b81546001600160a01b031681526001909101906020018083116108f0575050505050905090565b6005546001600160a01b031633146109415760405162461bcd60e51b81526004016106e89061229d565b600f546001600160a01b031633146109895760405162461bcd60e51b815260206004820152600b60248201526a139bdd08185b1b1bddd95960aa1b60448201526064016106e8565b61012c606082013560408301356109a56020850135853561232c565b6109af919061232c565b6109b9919061232c565b11156109c3575f80fd5b80356010556020810135601155604081013560125560600135601355565b6005546001600160a01b03163314610a0b5760405162461bcd60e51b81526004016106e89061229d565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610a7e5760405162461bcd60e51b81526004016106e89061229d565b601c55565b6005546001600160a01b03163314610aad5760405162461bcd60e51b81526004016106e89061229d565b60145460ff1615610aea5760405162461bcd60e51b8152602060048201526007602482015266115b98589b195960ca1b60448201526064016106e8565b6014805460ff19166001179055565b60606004805461072a906122d2565b6005546001600160a01b03163314610b325760405162461bcd60e51b81526004016106e89061229d565b6018548103610b915760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f7420757064617465206d696e486f6c644c7020746f2073616d652060448201526476616c756560d81b60648201526084016106e8565b601855565b6005546001600160a01b03163314610bc05760405162461bcd60e51b81526004016106e89061229d565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b5f336107f5818585610ee6565b6005546001600160a01b03163314610c215760405162461bcd60e51b81526004016106e89061229d565b601955565b6005546001600160a01b03163314610c505760405162461bcd60e51b81526004016106e89061229d565b5f5b8281101561088f578160085f868685818110610c7057610c70612304565b9050602002016020810190610c859190612234565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610c52565b6005546001600160a01b03163314610cde5760405162461bcd60e51b81526004016106e89061229d565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610d2a5760405162461bcd60e51b81526004016106e89061229d565b6003811115610d705760405162461bcd60e51b81526020600482015260126024820152716e657756616c7565206d757374203c3d203360701b60448201526064016106e8565b601d55565b6005546001600160a01b03163314610d9f5760405162461bcd60e51b81526004016106e89061229d565b6001600160a01b038116610e045760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106e8565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b610e6c8383836001611425565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811461088f5781811015610ed857604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016106e8565b61088f84848484035f611425565b6001600160a01b0383165f9081526008602052604090205460ff16158015610f2657506001600160a01b0382165f9081526008602052604090205460ff16155b8015610f415750335f9081526008602052604090205460ff16155b610f7e5760405162461bcd60e51b815260206004820152600e60248201526d726566757365206164647265737360901b60448201526064016106e8565b6001600160a01b0383165f908152602081815260408083205460079092529091205460ff16158015610faf57508082145b15610fd057612710610fc38261270f61233f565b610fcd9190612356565b91505b6001600160a01b0383165f9081526006602052604081205460ff1615611011575f610ffa846114f7565b9050801561100f576001915061100f8661155e565b505b6001600160a01b0385165f9081526007602052604090205460ff1615801561105157506001600160a01b0384165f9081526007602052604090205460ff16155b156113db576001600160a01b0385165f9081526006602052604081205481908190819060ff16156110ef5760145460ff1661109e5760405162461bcd60e51b81526004016106e890612375565b5f6110a88861162e565b6001600160a01b038a165f9081526017602052604090205490915060ff16156110e95780156110e95760405162461bcd60e51b81526004016106e890612375565b50611275565b6001600160a01b0388165f9081526006602052604090205460ff161561120c5760145460ff166111315760405162461bcd60e51b81526004016106e890612375565b84156111a4576103e861114588600f61233f565b61114f9190612356565b93506103e861115f88600f61233f565b6111699190612356565b92506103e861117988600a61233f565b6111839190612356565b91506103e861119388600a61233f565b61119d9190612356565b9050611275565b6103e8601054886111b5919061233f565b6111bf9190612356565b93506103e8601154886111d2919061233f565b6111dc9190612356565b92506103e8601254886111ef919061233f565b6111f99190612356565b91506103e860135488611193919061233f565b6103e861121a88600f61233f565b6112249190612356565b93506103e861123488600f61233f565b61123e9190612356565b92506103e861124e88600a61233f565b6112589190612356565b91506103e861126888600a61233f565b6112729190612356565b90505b831561129357600d54611293908a906001600160a01b0316866117a3565b82156112b157600e546112b1908a906001600160a01b0316856117a3565b81156112c2576112c28930846117a3565b80156112e057600f546112e0908a906001600160a01b0316836117a3565b8082846112ed878b612398565b6112f79190612398565b6113019190612398565b61130b9190612398565b600b549097506001600160a01b03898116911614801561134357506001600160a01b0389165f9081526007602052604090205460ff16155b156113d657601e5460ff16156113d6575f80611363633b9aca008a612356565b90505f5b601d548110156113b85760408051602081018390529081018b9052426060820152608001604051602081830303815290604052805190602001205f1c92506113b08c84846117a3565b600101611367565b5080601d546113c7919061233f565b6113d1908a612398565b985050505b505050505b6113e68585856117a3565b6001600160a01b038516301480159061140d57506009546001600160a01b03868116911614155b1561141e5761141e6207a120611800565b5050505050565b6001600160a01b03841661144e5760405163e602df0560e01b81525f60048201526024016106e8565b6001600160a01b03831661147757604051634a1406b160e11b81525f60048201526024016106e8565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561088f57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516114e991815260200190565b60405180910390a350505050565b5f805f80611503611a46565b9250925092505f808411801561151857505f83115b156115355782611528858861233f565b6115329190612356565b90505b61153f818561232c565b82106115555761155182878686611b72565b5094505b50505050919050565b61156781611e4b565b61156e5750565b6001600160a01b0381165f90815260166020526040812054900361162b5760155415806115ca5750806001600160a01b031660155f815481106115b3576115b3612304565b5f918252602090912001546001600160a01b031614155b1561162b57601580546001600160a01b0383165f818152601660205260408120839055600183018455929092527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec4750180546001600160a01b03191690911790555b50565b5f805f611639611a46565b925050915081811161179c57600b546001600160a01b03165f9081526020819052604090205460019061166d908690612398565b6116779190612398565b600b5f9054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116eb91906123ab565b6116f5908661233f565b61170090600161232c565b61170a9190612356565b9250600b5f9054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561175c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061178091906123ab565b61178c8461271061233f565b106117975782611799565b5f5b92505b5050919050565b6001600160a01b0383166117cc57604051634b637e8f60e11b81525f60048201526024016106e8565b6001600160a01b0382166117f55760405163ec442f0560e01b81525f60048201526024016106e8565b610e6c838383611e94565b305f90815260208190526040902054601954819081101561182057505050565b601c54601b54611830919061232c565b42101561183c57505050565b6015545f81900361184d5750505050565b42601b55600b54604080516318160ddd60e01b815290516001600160a01b03909216915f9183916318160ddd916004808201926020929091908290030181865afa15801561189d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118c191906123ab565b90505f808080805a90505f5b8b831080156118db57508881105b15611a385788601a54106118ee575f601a555b6015601a548154811061190357611903612304565b5f918252602090912001546040516370a0823160e01b81526001600160a01b03918216600482018190529750908916906370a0823190602401602060405180830381865afa158015611957573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061197b91906123ab565b6001600160a01b0387165f9081526017602052604090205490955060ff161580156119a7575060185485115b156119f757866119b7868d61233f565b6119c19190612356565b9350838a10156119d957505050505050505050505050565b83156119f7576119ea3087866117a3565b6119f4848b612398565b99505b5a611a029083612398565b611a0c908461232c565b92505a601a80549193505f611a20836123c2565b91905055508080611a30906123c2565b9150506118cd565b505050505050505050505050565b5f805f80600b5f9054906101000a90046001600160a01b031690505f80826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611a9f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ac391906123f0565b50600a546001600160701b039283169450911691506001600160a01b031630811015611af457829650819550611afb565b8196508295505b600b546040516370a0823160e01b81526001600160a01b039182166004820152908216906370a0823190602401602060405180830381865afa158015611b43573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b6791906123ab565b945050505050909192565b5f805f600b5f9054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bc5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611be991906123ab565b90505f600c5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c3c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c60919061243c565b6001600160a01b031663017e7e586040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c9b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cbf919061243c565b600b5460408051637464fc3d60e01b815290519293506001600160a01b038085161515935f9390911691637464fc3d9160048083019260209291908290030181865afa158015611d11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d3591906123ab565b90508115611dcc578015611dcc575f611d56611d51898b61233f565b611fba565b90505f611d6283611fba565b905080821115611dc9575f611d778284612398565b611d81908861233f565b611d8c90600361233f565b90505f82611d9b85600561233f565b611da5919061232c565b9050611db18183612356565b98508815611dc657611dc3898961232c565b97505b50505b50505b5f611dd7898c612398565b9050845f03611e08578015611e03576103e8611df6611d518c8461233f565b611e009190612398565b96505b611e3d565b611e3a89611e16878461233f565b611e209190612356565b89611e2b888e61233f565b611e359190612356565b612028565b96505b505050505094509492505050565b5f813b15611e5a57505f919050565b6001600160a01b038216611e6f57505f919050565b6009546001600160a01b0390811690831603611e8c57505f919050565b506001919050565b6001600160a01b038316611ebe578060025f828254611eb3919061232c565b90915550611f2e9050565b6001600160a01b0383165f9081526020819052604090205481811015611f105760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016106e8565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216611f4a57600280548290039055611f68565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611fad91815260200190565b60405180910390a3505050565b5f60038211156120195750805f611fd2600283612356565b611fdd90600161232c565b90505b8181101561201357905080600281611ff88186612356565b612002919061232c565b61200c9190612356565b9050611fe0565b50919050565b8115612023575060015b919050565b5f8183106120365781612038565b825b9392505050565b6001600160a01b038116811461162b575f80fd5b80358015158114612023575f80fd5b5f8060408385031215612073575f80fd5b823561207e8161203f565b915061208c60208401612053565b90509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f602082840312156120da575f80fd5b61203882612053565b5f80604083850312156120f4575f80fd5b82356120ff8161203f565b946020939093013593505050565b5f805f6040848603121561211f575f80fd5b833567ffffffffffffffff811115612135575f80fd5b8401601f81018613612145575f80fd5b803567ffffffffffffffff81111561215b575f80fd5b8660208260051b840101111561216f575f80fd5b602091820194509250612183908501612053565b90509250925092565b5f805f6060848603121561219e575f80fd5b83356121a98161203f565b925060208401356121b98161203f565b929592945050506040919091013590565b602080825282518282018190525f918401906040840190835b8181101561220a5783516001600160a01b03168352602093840193909201916001016121e3565b509095945050505050565b5f60808284031215612225575f80fd5b82608083011115612013575f80fd5b5f60208284031215612244575f80fd5b81356120388161203f565b5f6020828403121561225f575f80fd5b5035919050565b5f8060408385031215612277575f80fd5b82356122828161203f565b915060208301356122928161203f565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c908216806122e657607f821691505b60208210810361201357634e487b7160e01b5f52602260045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156107fb576107fb612318565b80820281158282048414176107fb576107fb612318565b5f8261237057634e487b7160e01b5f52601260045260245ffd5b500490565b602080825260099082015268139bdd081cdd185c9d60ba1b604082015260600190565b818103818111156107fb576107fb612318565b5f602082840312156123bb575f80fd5b5051919050565b5f600182016123d3576123d3612318565b5060010190565b80516001600160701b0381168114612023575f80fd5b5f805f60608486031215612402575f80fd5b61240b846123da565b9250612419602085016123da565b9150604084015163ffffffff81168114612431575f80fd5b809150509250925092565b5f6020828403121561244c575f80fd5b81516120388161203f56fea264697066735822122003129dfbe539a2cc48fc939a9b624f232b4a4db2aa1d8ac864416330b978a49b64736f6c634300081a00336080604052348015600e575f80fd5b50603e80601a5f395ff3fe60806040525f80fdfea2646970667358221220a5623e2069c549dbe28ed80e29110350fbea176b80b1ecce89111523f533609364736f6c634300081a00330000000000000000000000000000000000000000033b2e3c9fd0803ce80000000000000000000000000000008fb6c61df2359c722f14595f865a6fe5dc2ad046

Deployed Bytecode

0x608060405260043610610220575f3560e01c80638da5cb5b1161011e578063cb5aa8d8116100a8578063e32759cf1161006d578063e32759cf14610641578063e5c2b0a614610656578063eb10b74114610675578063eb1dd4841461068a578063f2fde38b1461069f575f80fd5b8063cb5aa8d814610595578063d5bc5dae146105b4578063d95ef696146105c9578063dd62ed3e146105de578063e046654b14610622575f80fd5b8063a9059cbb116100ee578063a9059cbb146104fa578063bd0c73e614610519578063c213d62d14610538578063c49160e514610557578063c55dae6314610576575f80fd5b80638da5cb5b1461048b57806395d89b41146104a8578063a76f1301146104bc578063a8424861146104db575f80fd5b8063281a3329116101aa57806370a082311161016f57806370a08231146103f1578063715018a61461042557806375193bb61461043957806385141a77146104585780638a8c523c14610477575f80fd5b8063281a33291461036c578063313ce56714610381578063500de77c1461039c5780635fe8e7cc146103b1578063667738b9146103d2575f80fd5b8063095ea7b3116101f0578063095ea7b3146102c857806318160ddd146102f75780631846a5a41461031557806319a3d0e41461032e57806323b872dd1461034d575f80fd5b80630443dba41461022b57806305833c2b1461026757806306fdde031461028857806307313d8d146102a9575f80fd5b3661022757005b5f80fd5b348015610236575f80fd5b50600e5461024a906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610272575f80fd5b50610286610281366004612062565b6106be565b005b348015610293575f80fd5b5061029c61071b565b60405161025e9190612095565b3480156102b4575f80fd5b506102866102c33660046120ca565b6107ab565b3480156102d3575f80fd5b506102e76102e23660046120e3565b6107e8565b604051901515815260200161025e565b348015610302575f80fd5b506002545b60405190815260200161025e565b348015610320575f80fd5b50601e546102e79060ff1681565b348015610339575f80fd5b5061028661034836600461210d565b610801565b348015610358575f80fd5b506102e761036736600461218c565b610895565b348015610377575f80fd5b5061030760115481565b34801561038c575f80fd5b506040516012815260200161025e565b3480156103a7575f80fd5b5061030760105481565b3480156103bc575f80fd5b506103c56108b8565b60405161025e91906121ca565b3480156103dd575f80fd5b506102866103ec366004612215565b610917565b3480156103fc575f80fd5b5061030761040b366004612234565b6001600160a01b03165f9081526020819052604090205490565b348015610430575f80fd5b506102866109e1565b348015610444575f80fd5b5061028661045336600461224f565b610a54565b348015610463575f80fd5b5060095461024a906001600160a01b031681565b348015610482575f80fd5b50610286610a83565b348015610496575f80fd5b506005546001600160a01b031661024a565b3480156104b3575f80fd5b5061029c610af9565b3480156104c7575f80fd5b506102866104d636600461224f565b610b08565b3480156104e6575f80fd5b506102866104f5366004612062565b610b96565b348015610505575f80fd5b506102e76105143660046120e3565b610bea565b348015610524575f80fd5b50600d5461024a906001600160a01b031681565b348015610543575f80fd5b5061028661055236600461224f565b610bf7565b348015610562575f80fd5b50600f5461024a906001600160a01b031681565b348015610581575f80fd5b50600a5461024a906001600160a01b031681565b3480156105a0575f80fd5b506102866105af36600461210d565b610c26565b3480156105bf575f80fd5b5061030760135481565b3480156105d4575f80fd5b50610307601b5481565b3480156105e9575f80fd5b506103076105f8366004612266565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b34801561062d575f80fd5b5061028661063c366004612234565b610cb4565b34801561064c575f80fd5b50610307601d5481565b348015610661575f80fd5b5061028661067036600461224f565b610d00565b348015610680575f80fd5b5061030760195481565b348015610695575f80fd5b5061030760125481565b3480156106aa575f80fd5b506102866106b9366004612234565b610d75565b6005546001600160a01b031633146106f15760405162461bcd60e51b81526004016106e89061229d565b60405180910390fd5b6001600160a01b03919091165f908152601760205260409020805460ff1916911515919091179055565b60606003805461072a906122d2565b80601f0160208091040260200160405190810160405280929190818152602001828054610756906122d2565b80156107a15780601f10610778576101008083540402835291602001916107a1565b820191905f5260205f20905b81548152906001019060200180831161078457829003601f168201915b5050505050905090565b6005546001600160a01b031633146107d55760405162461bcd60e51b81526004016106e89061229d565b601e805460ff1916911515919091179055565b5f336107f5818585610e5f565b60019150505b92915050565b6005546001600160a01b0316331461082b5760405162461bcd60e51b81526004016106e89061229d565b5f5b8281101561088f578160075f86868581811061084b5761084b612304565b90506020020160208101906108609190612234565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905560010161082d565b50505050565b5f336108a2858285610e71565b6108ad858585610ee6565b506001949350505050565b606060158054806020026020016040519081016040528092919081815260200182805480156107a157602002820191905f5260205f20905b81546001600160a01b031681526001909101906020018083116108f0575050505050905090565b6005546001600160a01b031633146109415760405162461bcd60e51b81526004016106e89061229d565b600f546001600160a01b031633146109895760405162461bcd60e51b815260206004820152600b60248201526a139bdd08185b1b1bddd95960aa1b60448201526064016106e8565b61012c606082013560408301356109a56020850135853561232c565b6109af919061232c565b6109b9919061232c565b11156109c3575f80fd5b80356010556020810135601155604081013560125560600135601355565b6005546001600160a01b03163314610a0b5760405162461bcd60e51b81526004016106e89061229d565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610a7e5760405162461bcd60e51b81526004016106e89061229d565b601c55565b6005546001600160a01b03163314610aad5760405162461bcd60e51b81526004016106e89061229d565b60145460ff1615610aea5760405162461bcd60e51b8152602060048201526007602482015266115b98589b195960ca1b60448201526064016106e8565b6014805460ff19166001179055565b60606004805461072a906122d2565b6005546001600160a01b03163314610b325760405162461bcd60e51b81526004016106e89061229d565b6018548103610b915760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f7420757064617465206d696e486f6c644c7020746f2073616d652060448201526476616c756560d81b60648201526084016106e8565b601855565b6005546001600160a01b03163314610bc05760405162461bcd60e51b81526004016106e89061229d565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b5f336107f5818585610ee6565b6005546001600160a01b03163314610c215760405162461bcd60e51b81526004016106e89061229d565b601955565b6005546001600160a01b03163314610c505760405162461bcd60e51b81526004016106e89061229d565b5f5b8281101561088f578160085f868685818110610c7057610c70612304565b9050602002016020810190610c859190612234565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610c52565b6005546001600160a01b03163314610cde5760405162461bcd60e51b81526004016106e89061229d565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610d2a5760405162461bcd60e51b81526004016106e89061229d565b6003811115610d705760405162461bcd60e51b81526020600482015260126024820152716e657756616c7565206d757374203c3d203360701b60448201526064016106e8565b601d55565b6005546001600160a01b03163314610d9f5760405162461bcd60e51b81526004016106e89061229d565b6001600160a01b038116610e045760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106e8565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b610e6c8383836001611425565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811461088f5781811015610ed857604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016106e8565b61088f84848484035f611425565b6001600160a01b0383165f9081526008602052604090205460ff16158015610f2657506001600160a01b0382165f9081526008602052604090205460ff16155b8015610f415750335f9081526008602052604090205460ff16155b610f7e5760405162461bcd60e51b815260206004820152600e60248201526d726566757365206164647265737360901b60448201526064016106e8565b6001600160a01b0383165f908152602081815260408083205460079092529091205460ff16158015610faf57508082145b15610fd057612710610fc38261270f61233f565b610fcd9190612356565b91505b6001600160a01b0383165f9081526006602052604081205460ff1615611011575f610ffa846114f7565b9050801561100f576001915061100f8661155e565b505b6001600160a01b0385165f9081526007602052604090205460ff1615801561105157506001600160a01b0384165f9081526007602052604090205460ff16155b156113db576001600160a01b0385165f9081526006602052604081205481908190819060ff16156110ef5760145460ff1661109e5760405162461bcd60e51b81526004016106e890612375565b5f6110a88861162e565b6001600160a01b038a165f9081526017602052604090205490915060ff16156110e95780156110e95760405162461bcd60e51b81526004016106e890612375565b50611275565b6001600160a01b0388165f9081526006602052604090205460ff161561120c5760145460ff166111315760405162461bcd60e51b81526004016106e890612375565b84156111a4576103e861114588600f61233f565b61114f9190612356565b93506103e861115f88600f61233f565b6111699190612356565b92506103e861117988600a61233f565b6111839190612356565b91506103e861119388600a61233f565b61119d9190612356565b9050611275565b6103e8601054886111b5919061233f565b6111bf9190612356565b93506103e8601154886111d2919061233f565b6111dc9190612356565b92506103e8601254886111ef919061233f565b6111f99190612356565b91506103e860135488611193919061233f565b6103e861121a88600f61233f565b6112249190612356565b93506103e861123488600f61233f565b61123e9190612356565b92506103e861124e88600a61233f565b6112589190612356565b91506103e861126888600a61233f565b6112729190612356565b90505b831561129357600d54611293908a906001600160a01b0316866117a3565b82156112b157600e546112b1908a906001600160a01b0316856117a3565b81156112c2576112c28930846117a3565b80156112e057600f546112e0908a906001600160a01b0316836117a3565b8082846112ed878b612398565b6112f79190612398565b6113019190612398565b61130b9190612398565b600b549097506001600160a01b03898116911614801561134357506001600160a01b0389165f9081526007602052604090205460ff16155b156113d657601e5460ff16156113d6575f80611363633b9aca008a612356565b90505f5b601d548110156113b85760408051602081018390529081018b9052426060820152608001604051602081830303815290604052805190602001205f1c92506113b08c84846117a3565b600101611367565b5080601d546113c7919061233f565b6113d1908a612398565b985050505b505050505b6113e68585856117a3565b6001600160a01b038516301480159061140d57506009546001600160a01b03868116911614155b1561141e5761141e6207a120611800565b5050505050565b6001600160a01b03841661144e5760405163e602df0560e01b81525f60048201526024016106e8565b6001600160a01b03831661147757604051634a1406b160e11b81525f60048201526024016106e8565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561088f57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516114e991815260200190565b60405180910390a350505050565b5f805f80611503611a46565b9250925092505f808411801561151857505f83115b156115355782611528858861233f565b6115329190612356565b90505b61153f818561232c565b82106115555761155182878686611b72565b5094505b50505050919050565b61156781611e4b565b61156e5750565b6001600160a01b0381165f90815260166020526040812054900361162b5760155415806115ca5750806001600160a01b031660155f815481106115b3576115b3612304565b5f918252602090912001546001600160a01b031614155b1561162b57601580546001600160a01b0383165f818152601660205260408120839055600183018455929092527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec4750180546001600160a01b03191690911790555b50565b5f805f611639611a46565b925050915081811161179c57600b546001600160a01b03165f9081526020819052604090205460019061166d908690612398565b6116779190612398565b600b5f9054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116eb91906123ab565b6116f5908661233f565b61170090600161232c565b61170a9190612356565b9250600b5f9054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561175c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061178091906123ab565b61178c8461271061233f565b106117975782611799565b5f5b92505b5050919050565b6001600160a01b0383166117cc57604051634b637e8f60e11b81525f60048201526024016106e8565b6001600160a01b0382166117f55760405163ec442f0560e01b81525f60048201526024016106e8565b610e6c838383611e94565b305f90815260208190526040902054601954819081101561182057505050565b601c54601b54611830919061232c565b42101561183c57505050565b6015545f81900361184d5750505050565b42601b55600b54604080516318160ddd60e01b815290516001600160a01b03909216915f9183916318160ddd916004808201926020929091908290030181865afa15801561189d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118c191906123ab565b90505f808080805a90505f5b8b831080156118db57508881105b15611a385788601a54106118ee575f601a555b6015601a548154811061190357611903612304565b5f918252602090912001546040516370a0823160e01b81526001600160a01b03918216600482018190529750908916906370a0823190602401602060405180830381865afa158015611957573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061197b91906123ab565b6001600160a01b0387165f9081526017602052604090205490955060ff161580156119a7575060185485115b156119f757866119b7868d61233f565b6119c19190612356565b9350838a10156119d957505050505050505050505050565b83156119f7576119ea3087866117a3565b6119f4848b612398565b99505b5a611a029083612398565b611a0c908461232c565b92505a601a80549193505f611a20836123c2565b91905055508080611a30906123c2565b9150506118cd565b505050505050505050505050565b5f805f80600b5f9054906101000a90046001600160a01b031690505f80826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611a9f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ac391906123f0565b50600a546001600160701b039283169450911691506001600160a01b031630811015611af457829650819550611afb565b8196508295505b600b546040516370a0823160e01b81526001600160a01b039182166004820152908216906370a0823190602401602060405180830381865afa158015611b43573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b6791906123ab565b945050505050909192565b5f805f600b5f9054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bc5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611be991906123ab565b90505f600c5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c3c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c60919061243c565b6001600160a01b031663017e7e586040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c9b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cbf919061243c565b600b5460408051637464fc3d60e01b815290519293506001600160a01b038085161515935f9390911691637464fc3d9160048083019260209291908290030181865afa158015611d11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d3591906123ab565b90508115611dcc578015611dcc575f611d56611d51898b61233f565b611fba565b90505f611d6283611fba565b905080821115611dc9575f611d778284612398565b611d81908861233f565b611d8c90600361233f565b90505f82611d9b85600561233f565b611da5919061232c565b9050611db18183612356565b98508815611dc657611dc3898961232c565b97505b50505b50505b5f611dd7898c612398565b9050845f03611e08578015611e03576103e8611df6611d518c8461233f565b611e009190612398565b96505b611e3d565b611e3a89611e16878461233f565b611e209190612356565b89611e2b888e61233f565b611e359190612356565b612028565b96505b505050505094509492505050565b5f813b15611e5a57505f919050565b6001600160a01b038216611e6f57505f919050565b6009546001600160a01b0390811690831603611e8c57505f919050565b506001919050565b6001600160a01b038316611ebe578060025f828254611eb3919061232c565b90915550611f2e9050565b6001600160a01b0383165f9081526020819052604090205481811015611f105760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016106e8565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216611f4a57600280548290039055611f68565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611fad91815260200190565b60405180910390a3505050565b5f60038211156120195750805f611fd2600283612356565b611fdd90600161232c565b90505b8181101561201357905080600281611ff88186612356565b612002919061232c565b61200c9190612356565b9050611fe0565b50919050565b8115612023575060015b919050565b5f8183106120365781612038565b825b9392505050565b6001600160a01b038116811461162b575f80fd5b80358015158114612023575f80fd5b5f8060408385031215612073575f80fd5b823561207e8161203f565b915061208c60208401612053565b90509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f602082840312156120da575f80fd5b61203882612053565b5f80604083850312156120f4575f80fd5b82356120ff8161203f565b946020939093013593505050565b5f805f6040848603121561211f575f80fd5b833567ffffffffffffffff811115612135575f80fd5b8401601f81018613612145575f80fd5b803567ffffffffffffffff81111561215b575f80fd5b8660208260051b840101111561216f575f80fd5b602091820194509250612183908501612053565b90509250925092565b5f805f6060848603121561219e575f80fd5b83356121a98161203f565b925060208401356121b98161203f565b929592945050506040919091013590565b602080825282518282018190525f918401906040840190835b8181101561220a5783516001600160a01b03168352602093840193909201916001016121e3565b509095945050505050565b5f60808284031215612225575f80fd5b82608083011115612013575f80fd5b5f60208284031215612244575f80fd5b81356120388161203f565b5f6020828403121561225f575f80fd5b5035919050565b5f8060408385031215612277575f80fd5b82356122828161203f565b915060208301356122928161203f565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c908216806122e657607f821691505b60208210810361201357634e487b7160e01b5f52602260045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156107fb576107fb612318565b80820281158282048414176107fb576107fb612318565b5f8261237057634e487b7160e01b5f52601260045260245ffd5b500490565b602080825260099082015268139bdd081cdd185c9d60ba1b604082015260600190565b818103818111156107fb576107fb612318565b5f602082840312156123bb575f80fd5b5051919050565b5f600182016123d3576123d3612318565b5060010190565b80516001600160701b0381168114612023575f80fd5b5f805f60608486031215612402575f80fd5b61240b846123da565b9250612419602085016123da565b9150604084015163ffffffff81168114612431575f80fd5b809150509250925092565b5f6020828403121561244c575f80fd5b81516120388161203f56fea264697066735822122003129dfbe539a2cc48fc939a9b624f232b4a4db2aa1d8ac864416330b978a49b64736f6c634300081a0033

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

0000000000000000000000000000000000000000033b2e3c9fd0803ce80000000000000000000000000000008fb6c61df2359c722f14595f865a6fe5dc2ad046

-----Decoded View---------------
Arg [0] : initialSupply (uint256): 1000000000000000000000000000
Arg [1] : main (address): 0x8fb6C61Df2359c722f14595F865a6fe5DC2AD046

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000033b2e3c9fd0803ce8000000
Arg [1] : 0000000000000000000000008fb6c61df2359c722f14595f865a6fe5dc2ad046


Deployed Bytecode Sourcemap

14320:12874:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14832:36;;;;;;;;;;-1:-1:-1;14832:36:0;;;;-1:-1:-1;;;;;14832:36:0;;;;;;-1:-1:-1;;;;;199:32:1;;;181:51;;169:2;154:18;14832:36:0;;;;;;;;22677:119;;;;;;;;;;-1:-1:-1;22677:119:0;;;;;:::i;:::-;;:::i;:::-;;10361:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;23046:99::-;;;;;;;;;;-1:-1:-1;23046:99:0;;;;;:::i;:::-;;:::i;11228:190::-;;;;;;;;;;-1:-1:-1;11228:190:0;;;;;:::i;:::-;;:::i;:::-;;;2009:14:1;;2002:22;1984:41;;1972:2;1957:18;11228:190:0;1844:187:1;10655:99:0;;;;;;;;;;-1:-1:-1;10734:12:0;;10655:99;;;2182:25:1;;;2170:2;2155:18;10655:99:0;2036:177:1;23007:32:0;;;;;;;;;;-1:-1:-1;23007:32:0;;;;;;;;23957:206;;;;;;;;;;-1:-1:-1;23957:206:0;;;;;:::i;:::-;;:::i;11426:249::-;;;;;;;;;;-1:-1:-1;11426:249:0;;;;;:::i;:::-;;:::i;14955:39::-;;;;;;;;;;;;;;;;10563:84;;;;;;;;;;-1:-1:-1;10563:84:0;;10637:2;3562:36:1;;3550:2;3535:18;10563:84:0;3420:184:1;14909:39:0;;;;;;;;;;;;;;;;20280:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;23153:352::-;;;;;;;;;;-1:-1:-1;23153:352:0;;;;;:::i;:::-;;:::i;10762:118::-;;;;;;;;;;-1:-1:-1;10762:118:0;;;;;:::i;:::-;-1:-1:-1;;;;;10854:18:0;10827:7;10854:18;;;;;;;;;;;;10762:118;1167:148;;;;;;;;;;;;;:::i;22230:122::-;;;;;;;;;;-1:-1:-1;22230:122:0;;;;;:::i;:::-;;:::i;14551:70::-;;;;;;;;;;-1:-1:-1;14551:70:0;;;;-1:-1:-1;;;;;14551:70:0;;;24171:130;;;;;;;;;;;;;:::i;700:79::-;;;;;;;;;;-1:-1:-1;765:6:0;;-1:-1:-1;;;;;765:6:0;700:79;;10460:95;;;;;;;;;;;;;:::i;22360:183::-;;;;;;;;;;-1:-1:-1;22360:183:0;;;;;:::i;:::-;;:::i;23617:118::-;;;;;;;;;;-1:-1:-1;23617:118:0;;;;;:::i;:::-;;:::i;10888:182::-;;;;;;;;;;-1:-1:-1;10888:182:0;;;;;:::i;:::-;;:::i;14789:36::-;;;;;;;;;;-1:-1:-1;14789:36:0;;;;-1:-1:-1;;;;;14789:36:0;;;22551:118;;;;;;;;;;-1:-1:-1;22551:118:0;;;;;:::i;:::-;;:::i;14875:25::-;;;;;;;;;;-1:-1:-1;14875:25:0;;;;-1:-1:-1;;;;;14875:25:0;;;14628:69;;;;;;;;;;-1:-1:-1;14628:69:0;;;;-1:-1:-1;;;;;14628:69:0;;;23743:206;;;;;;;;;;-1:-1:-1;23743:206:0;;;;;:::i;:::-;;:::i;15045:38::-;;;;;;;;;;;;;;;;20527:29;;;;;;;;;;;;;;;;11078:142;;;;;;;;;;-1:-1:-1;11078:142:0;;;;;:::i;:::-;-1:-1:-1;;;;;11185:18:0;;;11158:7;11185:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;11078:142;23513:96;;;;;;;;;;-1:-1:-1;23513:96:0;;;;;:::i;:::-;;:::i;22804:31::-;;;;;;;;;;;;;;;;22842:157;;;;;;;;;;-1:-1:-1;22842:157:0;;;;;:::i;:::-;;:::i;20425:52::-;;;;;;;;;;;;;;;;15001:37;;;;;;;;;;;;;;;;915:244;;;;;;;;;;-1:-1:-1;915:244:0;;;;;:::i;:::-;;:::i;22677:119::-;765:6;;-1:-1:-1;;;;;765:6:0;174:10;827:23;819:68;;;;-1:-1:-1;;;819:68:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;22760:19:0;;;::::1;;::::0;;;:13:::1;:19;::::0;;;;:28;;-1:-1:-1;;22760:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22677:119::o;10361:91::-;10406:13;10439:5;10432:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10361:91;:::o;23046:99::-;765:6;;-1:-1:-1;;;;;765:6:0;174:10;827:23;819:68;;;;-1:-1:-1;;;819:68:0;;;;;;;:::i;:::-;23115:13:::1;:22:::0;;-1:-1:-1;;23115:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23046:99::o;11228:190::-;11301:4;174:10;11357:31;174:10;11373:7;11382:5;11357:8;:31::i;:::-;11406:4;11399:11;;;11228:190;;;;;:::o;23957:206::-;765:6;;-1:-1:-1;;;;;765:6:0;174:10;827:23;819:68;;;;-1:-1:-1;;;819:68:0;;;;;;;:::i;:::-;24055:9:::1;24050:106;24070:19:::0;;::::1;24050:106;;;24140:4;24111:13;:26;24125:8;;24134:1;24125:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24111:26:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;24111:26:0;:33;;-1:-1:-1;;24111:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;24091:3:0::1;24050:106;;;;23957:206:::0;;;:::o;11426:249::-;11513:4;174:10;11571:37;11587:4;174:10;11602:5;11571:15;:37::i;:::-;11619:26;11629:4;11635:2;11639:5;11619:9;:26::i;:::-;-1:-1:-1;11663:4:0;;11426:249;-1:-1:-1;;;;11426:249:0:o;20280:92::-;20322:16;20357:7;20350:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20350:14:0;;;;;;;;;;;;;;;;;;;;;;20280:92;:::o;23153:352::-;765:6;;-1:-1:-1;;;;;765:6:0;174:10;827:23;819:68;;;;-1:-1:-1;;;819:68:0;;;;;;;:::i;:::-;23250:10:::1;::::0;-1:-1:-1;;;;;23250:10:0::1;23236;:24;23228:48;;;::::0;-1:-1:-1;;;23228:48:0;;6673:2:1;23228:48:0::1;::::0;::::1;6655:21:1::0;6712:2;6692:18;;;6685:30;-1:-1:-1;;;6731:18:1;;;6724:41;6782:18;;23228:48:0::1;6471:335:1::0;23228:48:0::1;23336:3;23325:7:::0;;::::1;;23315::::0;;::::1;;23295:17;23325:7;23305::::0;::::1;;23295::::0;::::1;:17;:::i;:::-;:27;;;;:::i;:::-;:37;;;;:::i;:::-;:44;;23287:53;;;::::0;::::1;;23373:7:::0;::::1;23351:19;:29:::0;23373:7:::1;23413::::0;::::1;;23391:19;:29:::0;23451:7;;::::1;;23431:17;:27:::0;23490:7;::::1;;23469:18;:28:::0;23153:352::o;1167:148::-;765:6;;-1:-1:-1;;;;;765:6:0;174:10;827:23;819:68;;;;-1:-1:-1;;;819:68:0;;;;;;;:::i;:::-;1258:6:::1;::::0;1237:40:::1;::::0;1274:1:::1;::::0;-1:-1:-1;;;;;1258:6:0::1;::::0;1237:40:::1;::::0;1274:1;;1237:40:::1;1288:6;:19:::0;;-1:-1:-1;;;;;;1288:19:0::1;::::0;;1167:148::o;22230:122::-;765:6;;-1:-1:-1;;;;;765:6:0;174:10;827:23;819:68;;;;-1:-1:-1;;;819:68:0;;;;;;;:::i;:::-;22312:21:::1;:32:::0;22230:122::o;24171:130::-;765:6;;-1:-1:-1;;;;;765:6:0;174:10;827:23;819:68;;;;-1:-1:-1;;;819:68:0;;;;;;;:::i;:::-;24235:14:::1;::::0;::::1;;24234:15;24226:35;;;::::0;-1:-1:-1;;;24226:35:0;;7275:2:1;24226:35:0::1;::::0;::::1;7257:21:1::0;7314:1;7294:18;;;7287:29;-1:-1:-1;;;7332:18:1;;;7325:37;7379:18;;24226:35:0::1;7073:330:1::0;24226:35:0::1;24272:14;:21:::0;;-1:-1:-1;;24272:21:0::1;24289:4;24272:21;::::0;;24171:130::o;10460:95::-;10507:13;10540:7;10533:14;;;;;:::i;22360:183::-;765:6;;-1:-1:-1;;;;;765:6:0;174:10;827:23;819:68;;;;-1:-1:-1;;;819:68:0;;;;;;;:::i;:::-;22453:9:::1;;22441:8;:21:::0;22433:71:::1;;;::::0;-1:-1:-1;;;22433:71:0;;7610:2:1;22433:71:0::1;::::0;::::1;7592:21:1::0;7649:2;7629:18;;;7622:30;7688:34;7668:18;;;7661:62;-1:-1:-1;;;7739:18:1;;;7732:35;7784:19;;22433:71:0::1;7408:401:1::0;22433:71:0::1;22515:9;:20:::0;22360:183::o;23617:118::-;765:6;;-1:-1:-1;;;;;765:6:0;174:10;827:23;819:68;;;;-1:-1:-1;;;819:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23698:22:0;;;::::1;;::::0;;;:13:::1;:22;::::0;;;;:29;;-1:-1:-1;;23698:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23617:118::o;10888:182::-;10957:4;174:10;11013:27;174:10;11030:2;11034:5;11013:9;:27::i;22551:118::-;765:6;;-1:-1:-1;;;;;765:6:0;174:10;827:23;819:68;;;;-1:-1:-1;;;819:68:0;;;;;;;:::i;:::-;22631:21:::1;:30:::0;22551:118::o;23743:206::-;765:6;;-1:-1:-1;;;;;765:6:0;174:10;827:23;819:68;;;;-1:-1:-1;;;819:68:0;;;;;;;:::i;:::-;23844:9:::1;23840:102;23859:19:::0;;::::1;23840:102;;;23926:4;23900:10;:23;23911:8;;23920:1;23911:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23900:23:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;23900:23:0;:30;;-1:-1:-1;;23900:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;23880:3:0::1;23840:102;;23513:96:::0;765:6;;-1:-1:-1;;;;;765:6:0;174:10;827:23;819:68;;;;-1:-1:-1;;;819:68:0;;;;;;;:::i;:::-;23581:10:::1;:20:::0;;-1:-1:-1;;;;;;23581:20:0::1;-1:-1:-1::0;;;;;23581:20:0;;;::::1;::::0;;;::::1;::::0;;23513:96::o;22842:157::-;765:6;;-1:-1:-1;;;;;765:6:0;174:10;827:23;819:68;;;;-1:-1:-1;;;819:68:0;;;;;;;:::i;:::-;22933:1:::1;22921:8;:13;;22913:44;;;::::0;-1:-1:-1;;;22913:44:0;;8016:2:1;22913:44:0::1;::::0;::::1;7998:21:1::0;8055:2;8035:18;;;8028:30;-1:-1:-1;;;8074:18:1;;;8067:48;8132:18;;22913:44:0::1;7814:342:1::0;22913:44:0::1;22968:12;:23:::0;22842:157::o;915:244::-;765:6;;-1:-1:-1;;;;;765:6:0;174:10;827:23;819:68;;;;-1:-1:-1;;;819:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1004:22:0;::::1;996:73;;;::::0;-1:-1:-1;;;996:73:0;;8363:2:1;996:73:0::1;::::0;::::1;8345:21:1::0;8402:2;8382:18;;;8375:30;8441:34;8421:18;;;8414:62;-1:-1:-1;;;8492:18:1;;;8485:36;8538:19;;996:73:0::1;8161:402:1::0;996:73:0::1;1106:6;::::0;1085:38:::1;::::0;-1:-1:-1;;;;;1085:38:0;;::::1;::::0;1106:6:::1;::::0;1085:38:::1;::::0;1106:6:::1;::::0;1085:38:::1;1134:6;:17:::0;;-1:-1:-1;;;;;;1134:17:0::1;-1:-1:-1::0;;;;;1134:17:0;;;::::1;::::0;;;::::1;::::0;;915:244::o;13185:130::-;13270:37;13279:5;13286:7;13295:5;13302:4;13270:8;:37::i;:::-;13185:130;;;:::o;13774:487::-;-1:-1:-1;;;;;11185:18:0;;;13874:24;11185:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;13941:37:0;;13937:317;;14018:5;13999:16;:24;13995:132;;;14051:60;;-1:-1:-1;;;14051:60:0;;-1:-1:-1;;;;;8788:32:1;;14051:60:0;;;8770:51:1;8837:18;;;8830:34;;;8880:18;;;8873:34;;;8743:18;;14051:60:0;8568:345:1;13995:132:0;14170:57;14179:5;14186:7;14214:5;14195:16;:24;14221:5;14170:8;:57::i;15931:3445::-;-1:-1:-1;;;;;16030:16:0;;;;;;:10;:16;;;;;;;;16029:17;:36;;;;-1:-1:-1;;;;;;16051:14:0;;;;;;:10;:14;;;;;;;;16050:15;16029:36;:63;;;;-1:-1:-1;16081:10:0;16070:22;;;;:10;:22;;;;;;;;16069:23;16029:63;16021:90;;;;-1:-1:-1;;;16021:90:0;;9120:2:1;16021:90:0;;;9102:21:1;9159:2;9139:18;;;9132:30;-1:-1:-1;;;9178:18:1;;;9171:44;9232:18;;16021:90:0;8918:338:1;16021:90:0;-1:-1:-1;;;;;10854:18:0;;16124:15;10854:18;;;;;;;;;;;;16172:13;:19;;;;;;;;;16171:20;:41;;;;;16205:7;16195:6;:17;16171:41;16168:106;;;16257:5;16239:14;:7;16249:4;16239:14;:::i;:::-;16238:24;;;;:::i;:::-;16229:33;;16168:106;-1:-1:-1;;;;;16312:17:0;;16287:10;16312:17;;;:13;:17;;;;;;;;16308:216;;;16346:22;16371;16386:6;16371:14;:22::i;:::-;16346:47;-1:-1:-1;16412:18:0;;16408:105;;16459:4;16451:12;;16482:15;16492:4;16482:9;:15::i;:::-;16331:193;16308:216;-1:-1:-1;;;;;16541:19:0;;;;;;:13;:19;;;;;;;;16540:20;:42;;;;-1:-1:-1;;;;;;16565:17:0;;;;;;:13;:17;;;;;;;;16564:18;16540:42;16536:2668;;;-1:-1:-1;;;;;16751:19:0;;16599:23;16751:19;;;:13;:19;;;;;;16599:23;;;;;;16751:19;;16747:1259;;;16798:14;;;;16790:36;;;;-1:-1:-1;;;16790:36:0;;;;;;;:::i;:::-;16845:25;16873;16891:6;16873:17;:25::i;:::-;-1:-1:-1;;;;;16920:17:0;;;;;;:13;:17;;;;;;16845:53;;-1:-1:-1;16920:17:0;;16917:109;;;16970:22;;16962:44;;;;-1:-1:-1;;;16962:44:0;;;;;;;:::i;:::-;16771:270;16747:1259;;;-1:-1:-1;;;;;17051:17:0;;;;;;:13;:17;;;;;;;;17047:959;;;17096:14;;;;17088:36;;;;-1:-1:-1;;;17088:36:0;;;;;;;:::i;:::-;17147:5;17143:602;;;17211:4;17196:11;:6;17205:2;17196:11;:::i;:::-;17195:20;;;;:::i;:::-;17177:38;-1:-1:-1;17272:4:0;17257:11;:6;17266:2;17257:11;:::i;:::-;17256:20;;;;:::i;:::-;17238:38;-1:-1:-1;17331:4:0;17316:11;:6;17325:2;17316:11;:::i;:::-;17315:20;;;;:::i;:::-;17299:36;-1:-1:-1;17390:4:0;17375:11;:6;17384:2;17375:11;:::i;:::-;17374:20;;;;:::i;:::-;17358:36;;17047:959;;17143:602;17494:4;17471:19;;17462:6;:28;;;;:::i;:::-;17461:37;;;;:::i;:::-;17443:55;;17572:4;17549:19;;17540:6;:28;;;;:::i;:::-;17539:37;;;;:::i;:::-;17521:55;;17646:4;17625:17;;17616:6;:26;;;;:::i;:::-;17615:35;;;;:::i;:::-;17599:51;;17721:4;17699:18;;17690:6;:27;;;;:::i;17047:959::-;17819:4;17804:11;:6;17813:2;17804:11;:::i;:::-;17803:20;;;;:::i;:::-;17785:38;-1:-1:-1;17876:4:0;17861:11;:6;17870:2;17861:11;:::i;:::-;17860:20;;;;:::i;:::-;17842:38;-1:-1:-1;17931:4:0;17916:11;:6;17925:2;17916:11;:::i;:::-;17915:20;;;;:::i;:::-;17899:36;-1:-1:-1;17986:4:0;17971:11;:6;17980:2;17971:11;:::i;:::-;17970:20;;;;:::i;:::-;17954:36;;17047:959;18026:19;;18022:125;;18096:16;;18066:65;;18082:4;;-1:-1:-1;;;;;18096:16:0;18115:15;18066;:65::i;:::-;18165:19;;18161:125;;18235:16;;18205:65;;18221:4;;-1:-1:-1;;;;;18235:16:0;18254:15;18205;:65::i;:::-;18304:17;;18300:109;;18342:51;18358:4;18372;18379:13;18342:15;:51::i;:::-;18427:17;;18423:106;;18487:10;;18465:48;;18481:4;;-1:-1:-1;;;;;18487:10:0;18499:13;18465:15;:48::i;:::-;18613:13;18597;18579:15;18552:24;18561:15;18552:6;:24;:::i;:::-;:42;;;;:::i;:::-;:58;;;;:::i;:::-;:74;;;;:::i;:::-;18653:13;;18543:83;;-1:-1:-1;;;;;;18647:19:0;;;18653:13;;18647:19;:43;;;;-1:-1:-1;;;;;;18671:19:0;;;;;;:13;:19;;;;;;;;18670:20;18647:43;18643:547;;;18715:13;;;;18711:464;;;18753:10;;18810:14;18819:5;18810:6;:14;:::i;:::-;18786:38;;18852:9;18847:248;18871:12;;18867:1;:16;18847:248;;;18956:44;;;;;;10311:19:1;;;10346:12;;;10339:28;;;18984:15:0;10383:12:1;;;10376:28;10420:12;;18956:44:0;;;;;;;;;;;;18946:55;;;;;;18938:64;;18917:87;;19031:40;19047:4;19053:2;19057:13;19031:15;:40::i;:::-;18885:3;;18847:248;;;;19142:13;19127:12;;:28;;;;:::i;:::-;19117:38;;;;:::i;:::-;;;18730:445;;18711:464;16584:2620;;;;16536:2668;19224:33;19240:4;19246:2;19250:6;19224:15;:33::i;:::-;-1:-1:-1;;;;;19274:21:0;;19290:4;19274:21;;;;:43;;-1:-1:-1;19307:10:0;;-1:-1:-1;;;;;19299:18:0;;;19307:10;;19299:18;;19274:43;19270:99;;;19334:23;19350:6;19334:15;:23::i;:::-;16010:3366;;15931:3445;;;:::o;13323:443::-;-1:-1:-1;;;;;13436:19:0;;13432:91;;13479:32;;-1:-1:-1;;;13479:32:0;;13508:1;13479:32;;;181:51:1;154:18;;13479:32:0;14:224:1;13432:91:0;-1:-1:-1;;;;;13537:21:0;;13533:92;;13582:31;;-1:-1:-1;;;13582:31:0;;13610:1;13582:31;;;181:51:1;154:18;;13582:31:0;14:224:1;13533:92:0;-1:-1:-1;;;;;13635:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:35;;;13681:78;;;;13732:7;-1:-1:-1;;;;;13716:31:0;13725:5;-1:-1:-1;;;;;13716:31:0;;13741:5;13716:31;;;;2182:25:1;;2170:2;2155:18;;2036:177;13716:31:0;;;;;;;;13323:443;;;;:::o;24309:464::-;24372:17;24402:14;24418:13;24433:20;24457:13;:11;:13::i;:::-;24401:69;;;;;;24481:19;24524:1;24515:6;:10;:23;;;;;24537:1;24529:5;:9;24515:23;24511:93;;;24587:5;24569:15;24578:6;24569;:15;:::i;:::-;:23;;;;:::i;:::-;24555:37;;24511:93;24653:20;24662:11;24653:6;:20;:::i;:::-;24637:12;:36;24633:133;;24705:49;24718:12;24732:6;24740;24748:5;24705:12;:49::i;:::-;-1:-1:-1;24690:64:0;-1:-1:-1;24633:133:0;24390:383;;;;24309:464;;;:::o;19525:305::-;19580:19;19595:3;19580:14;:19::i;:::-;19576:32;;19525:305;:::o;19576:32::-;-1:-1:-1;;;;;19629:16:0;;;;;;:11;:16;;;;;;19624:21;;19620:203;;19671:7;:14;19666:19;;:40;;;19703:3;-1:-1:-1;;;;;19689:17:0;:7;19697:1;19689:10;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;19689:10:0;:17;;19666:40;19662:150;;;19746:7;:14;;-1:-1:-1;;;;;19727:16:0;;;;;;:11;:16;;;;;:33;;;19779:17;;;;;;;;;;;;;-1:-1:-1;;;;;;19779:17:0;;;;;;19662:150;19525:305;:::o;24781:476::-;24847:17;24878:14;24896:20;24920:13;:11;:13::i;:::-;24877:56;;;;;24964:6;24948:12;:22;24944:306;;25103:13;;-1:-1:-1;;;;;25103:13:0;10827:7;10854:18;;;;;;;;;;;25129:1;;25093:33;;25120:6;;25093:33;:::i;:::-;:37;;;;:::i;:::-;25039:13;;;;;;;;;-1:-1:-1;;;;;25039:13:0;-1:-1:-1;;;;;25026:39:0;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25017:50;;:6;:50;:::i;:::-;:54;;25070:1;25017:54;:::i;:::-;25016:115;;;;:::i;:::-;24987:144;;25191:13;;;;;;;;;-1:-1:-1;;;;;25191:13:0;-1:-1:-1;;;;;25178:39:0;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25158:17;:9;25170:5;25158:17;:::i;:::-;:61;:77;;25226:9;25158:77;;;25222:1;25158:77;25146:89;;24944:306;24866:391;;24781:476;;;:::o;11683:316::-;-1:-1:-1;;;;;11775:18:0;;11771:88;;11817:30;;-1:-1:-1;;;11817:30:0;;11844:1;11817:30;;;181:51:1;154:18;;11817:30:0;14:224:1;11771:88:0;-1:-1:-1;;;;;11873:16:0;;11869:88;;11913:32;;-1:-1:-1;;;11913:32:0;;11942:1;11913:32;;;181:51:1;154:18;;11913:32:0;14:224:1;11869:88:0;11967:24;11975:4;11981:2;11985:5;11967:7;:24::i;20612:1610::-;20703:4;20669:13;10854:18;;;;;;;;;;;20765:21;;10854:18;;20756:30;;20753:67;;;20802:7;;20612:1610;:::o;20753:67::-;20869:21;;20852:14;;:38;;;;:::i;:::-;20834:15;:56;20830:94;;;20906:7;;20612:1610;:::o;20830:94::-;20961:7;:14;20934:24;20990:21;;;20986:34;;21013:7;;;20612:1610;:::o;20986:34::-;21049:15;21032:14;:32;21101:13;;21151:23;;;-1:-1:-1;;;21151:23:0;;;;-1:-1:-1;;;;;21101:13:0;;;;21075:16;;21101:13;;21151:21;;:23;;;;;;;;;;;;;;;21101:13;21151:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21126:48;-1:-1:-1;21187:19:0;;;;;21323:9;21305:27;;21343:18;21378:837;21395:3;21385:7;:13;:46;;;;;21415:16;21402:10;:29;21385:46;21378:837;;;21476:16;21452:20;;:40;21448:105;;21536:1;21513:20;:24;21448:105;21583:7;21591:20;;21583:29;;;;;;;;:::i;:::-;;;;;;;;;;;21642:32;;-1:-1:-1;;;21642:32:0;;-1:-1:-1;;;;;21583:29:0;;;21642:32;;;181:51:1;;;21583:29:0;-1:-1:-1;21642:19:0;;;;;;154:18:1;;21642:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21694:26:0;;;;;;:13;:26;;;;;;21627:47;;-1:-1:-1;21694:26:0;;21693:27;:55;;;;;21739:9;;21724:12;:24;21693:55;21689:361;;;21801:14;21778:20;21786:12;21778:5;:20;:::i;:::-;:37;;;;:::i;:::-;21769:46;;21847:6;21838;:15;21834:28;;;21855:7;;;;;;;;;;;20612:1610;:::o;21834:28::-;21883:10;;21880:155;;21917:51;21941:4;21948:11;21961:6;21917:15;:51::i;:::-;22000:15;22009:6;22000;:15;:::i;:::-;21991:24;;21880:155;22095:9;22085:19;;:7;:19;:::i;:::-;22074:31;;:7;:31;:::i;:::-;22064:41;;22130:9;22154:20;:22;;22120:19;;-1:-1:-1;22154:20:0;:22;;;:::i;:::-;;;;;;22191:12;;;;;:::i;:::-;;;;21378:837;;;20658:1564;;;;;;;;;;;20612:1610;:::o;25265:508::-;25312:14;25328:13;25343:20;25376:17;25409:13;;;;;;;;;-1:-1:-1;;;;;25409:13:0;25376:47;;25435:10;25447;25463:4;-1:-1:-1;;;;;25463:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;25513:9:0;;-1:-1:-1;;;;;25434:47:0;;;;-1:-1:-1;25434:47:0;;;-1:-1:-1;;;;;;25513:9:0;25558:4;25537:26;;25533:164;;;25589:2;25580:11;;25614:2;25606:10;;25533:164;;;25658:2;25649:11;;25683:2;25675:10;;25533:164;25751:13;;25722:43;;-1:-1:-1;;;25722:43:0;;-1:-1:-1;;;;;25751:13:0;;;25722:43;;;181:51:1;25722:28:0;;;;;;154:18:1;;25722:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25707:58;;25365:408;;;;25265:508;;;:::o;25781:1373::-;25926:17;25945:22;25980:23;26019:13;;;;;;;;;-1:-1:-1;;;;;26019:13:0;-1:-1:-1;;;;;26006:39:0;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25980:67;;26058:13;26092:15;;;;;;;;;-1:-1:-1;;;;;26092:15:0;-1:-1:-1;;;;;26092:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26074:50:0;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26210:13;;26197:35;;;-1:-1:-1;;;26197:35:0;;;;26058:68;;-1:-1:-1;;;;;;26150:19:0;;;;;;26137:10;;26210:13;;;;26197:33;;:35;;;;;;;;;;;;;;26210:13;26197:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26180:52;;26247:5;26243:533;;;26273:11;;26269:496;;26305:13;26321:18;26331:7;26336:2;26331;:7;:::i;:::-;26321:9;:18::i;:::-;26305:34;;26358:17;26378;26388:6;26378:9;:17::i;:::-;26358:37;;26426:9;26418:5;:17;26414:336;;;26460:17;26499;26507:9;26499:5;:17;:::i;:::-;26480:37;;:15;:37;:::i;:::-;:41;;26520:1;26480:41;:::i;:::-;26460:61;-1:-1:-1;26544:19:0;26578:9;26566;:5;26574:1;26566:9;:::i;:::-;:21;;;;:::i;:::-;26544:43;-1:-1:-1;26627:23:0;26544:43;26627:9;:23;:::i;:::-;26610:40;-1:-1:-1;26677:18:0;;26673:57;;26697:33;26716:14;26697:33;;:::i;:::-;;;26673:57;26437:313;;26414:336;26286:479;;26269:496;26786:15;26804:13;26815:2;26804:8;:13;:::i;:::-;26786:31;;26832:15;26851:1;26832:20;26828:319;;26873:11;;26869:98;;26947:4;26917:27;26927:16;26937:6;26927:7;:16;:::i;26917:27::-;:34;;;;:::i;:::-;26905:46;;26869:98;26828:319;;;27011:124;27068:2;27039:25;27049:15;27039:7;:25;:::i;:::-;27038:32;;;;:::i;:::-;27118:2;27090:24;27099:15;27090:6;:24;:::i;:::-;27089:31;;;;:::i;:::-;27011:8;:124::i;:::-;26999:136;;26828:319;25969:1185;;;;;25781:1373;;;;;;;:::o;19838:236::-;19899:4;20211:17;;20256:8;19916:34;;-1:-1:-1;19945:5:0;;19838:236;-1:-1:-1;19838:236:0:o;19916:34::-;-1:-1:-1;;;;;19965:18:0;;19961:36;;-1:-1:-1;19992:5:0;;19838:236;-1:-1:-1;19838:236:0:o;19961:36::-;20020:10;;-1:-1:-1;;;;;20020:10:0;;;20012:18;;;;20008:36;;-1:-1:-1;20039:5:0;;19838:236;-1:-1:-1;19838:236:0:o;20008:36::-;-1:-1:-1;20062:4:0;;19838:236;-1:-1:-1;19838:236:0:o;12007:730::-;-1:-1:-1;;;;;12097:18:0;;12093:369;;12148:5;12132:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;12093:369:0;;-1:-1:-1;12093:369:0;;-1:-1:-1;;;;;12208:15:0;;12186:19;12208:15;;;;;;;;;;;12242:19;;;12238:117;;;12289:50;;-1:-1:-1;;;12289:50:0;;-1:-1:-1;;;;;8788:32:1;;12289:50:0;;;8770:51:1;8837:18;;;8830:34;;;8880:18;;;8873:34;;;8743:18;;12289:50:0;8568:345:1;12238:117:0;-1:-1:-1;;;;;12398:15:0;;:9;:15;;;;;;;;;;12416:19;;;;12398:37;;12093:369;-1:-1:-1;;;;;12478:16:0;;12474:213;;12540:12;:21;;;;;;;12474:213;;;-1:-1:-1;;;;;12638:13:0;;:9;:13;;;;;;;;;;:22;;;;;;12474:213;12719:2;-1:-1:-1;;;;;12704:25:0;12713:4;-1:-1:-1;;;;;12704:25:0;;12723:5;12704:25;;;;2182::1;;2170:2;2155:18;;2036:177;12704:25:0;;;;;;;;12007:730;;;:::o;6271:303::-;6316:6;6343:1;6339;:5;6335:232;;;-1:-1:-1;6365:1:0;6381:6;6390:5;6394:1;6365;6390:5;:::i;:::-;:9;;6398:1;6390:9;:::i;:::-;6381:18;;6414:92;6425:1;6421;:5;6414:92;;;6451:1;-1:-1:-1;6451:1:0;6489;6451;6476:5;6451:1;6476;:5;:::i;:::-;:9;;;;:::i;:::-;6475:15;;;;:::i;:::-;6471:19;;6414:92;;;6346:171;6271:303;;;:::o;6335:232::-;6527:6;;6523:44;;-1:-1:-1;6554:1:0;6523:44;6271:303;;;:::o;6167:96::-;6219:6;6246:1;6242;:5;:13;;6254:1;6242:13;;;6250:1;6242:13;6238:17;6167:96;-1:-1:-1;;;6167:96:0:o;243:131:1:-;-1:-1:-1;;;;;318:31:1;;308:42;;298:70;;364:1;361;354:12;379:160;444:20;;500:13;;493:21;483:32;;473:60;;529:1;526;519:12;544:315;609:6;617;670:2;658:9;649:7;645:23;641:32;638:52;;;686:1;683;676:12;638:52;725:9;712:23;744:31;769:5;744:31;:::i;:::-;794:5;-1:-1:-1;818:35:1;849:2;834:18;;818:35;:::i;:::-;808:45;;544:315;;;;;:::o;864:418::-;1013:2;1002:9;995:21;976:4;1045:6;1039:13;1088:6;1083:2;1072:9;1068:18;1061:34;1147:6;1142:2;1134:6;1130:15;1125:2;1114:9;1110:18;1104:50;1203:1;1198:2;1189:6;1178:9;1174:22;1170:31;1163:42;1273:2;1266;1262:7;1257:2;1249:6;1245:15;1241:29;1230:9;1226:45;1222:54;1214:62;;;864:418;;;;:::o;1287:180::-;1343:6;1396:2;1384:9;1375:7;1371:23;1367:32;1364:52;;;1412:1;1409;1402:12;1364:52;1435:26;1451:9;1435:26;:::i;1472:367::-;1540:6;1548;1601:2;1589:9;1580:7;1576:23;1572:32;1569:52;;;1617:1;1614;1607:12;1569:52;1656:9;1643:23;1675:31;1700:5;1675:31;:::i;:::-;1725:5;1803:2;1788:18;;;;1775:32;;-1:-1:-1;;;1472:367:1:o;2218:684::-;2310:6;2318;2326;2379:2;2367:9;2358:7;2354:23;2350:32;2347:52;;;2395:1;2392;2385:12;2347:52;2435:9;2422:23;2468:18;2460:6;2457:30;2454:50;;;2500:1;2497;2490:12;2454:50;2523:22;;2576:4;2568:13;;2564:27;-1:-1:-1;2554:55:1;;2605:1;2602;2595:12;2554:55;2645:2;2632:16;2671:18;2663:6;2660:30;2657:50;;;2703:1;2700;2693:12;2657:50;2758:7;2751:4;2741:6;2738:1;2734:14;2730:2;2726:23;2722:34;2719:47;2716:67;;;2779:1;2776;2769:12;2716:67;2810:4;2802:13;;;;-1:-1:-1;2834:6:1;-1:-1:-1;2859:37:1;;2875:20;;2859:37;:::i;:::-;2849:47;;2218:684;;;;;:::o;2907:508::-;2984:6;2992;3000;3053:2;3041:9;3032:7;3028:23;3024:32;3021:52;;;3069:1;3066;3059:12;3021:52;3108:9;3095:23;3127:31;3152:5;3127:31;:::i;:::-;3177:5;-1:-1:-1;3234:2:1;3219:18;;3206:32;3247:33;3206:32;3247:33;:::i;:::-;2907:508;;3299:7;;-1:-1:-1;;;3379:2:1;3364:18;;;;3351:32;;2907:508::o;3609:637::-;3799:2;3811:21;;;3881:13;;3784:18;;;3903:22;;;3751:4;;3982:15;;;3956:2;3941:18;;;3751:4;4025:195;4039:6;4036:1;4033:13;4025:195;;;4104:13;;-1:-1:-1;;;;;4100:39:1;4088:52;;4169:2;4195:15;;;;4160:12;;;;4136:1;4054:9;4025:195;;;-1:-1:-1;4237:3:1;;3609:637;-1:-1:-1;;;;;3609:637:1:o;4251:253::-;4335:6;4388:3;4376:9;4367:7;4363:23;4359:33;4356:53;;;4405:1;4402;4395:12;4356:53;4445:7;4439:3;4428:9;4424:19;4421:32;4418:52;;;4466:1;4463;4456:12;4509:247;4568:6;4621:2;4609:9;4600:7;4596:23;4592:32;4589:52;;;4637:1;4634;4627:12;4589:52;4676:9;4663:23;4695:31;4720:5;4695:31;:::i;4761:226::-;4820:6;4873:2;4861:9;4852:7;4848:23;4844:32;4841:52;;;4889:1;4886;4879:12;4841:52;-1:-1:-1;4934:23:1;;4761:226;-1:-1:-1;4761:226:1:o;5200:388::-;5268:6;5276;5329:2;5317:9;5308:7;5304:23;5300:32;5297:52;;;5345:1;5342;5335:12;5297:52;5384:9;5371:23;5403:31;5428:5;5403:31;:::i;:::-;5453:5;-1:-1:-1;5510:2:1;5495:18;;5482:32;5523:33;5482:32;5523:33;:::i;:::-;5575:7;5565:17;;;5200:388;;;;;:::o;5593:356::-;5795:2;5777:21;;;5814:18;;;5807:30;5873:34;5868:2;5853:18;;5846:62;5940:2;5925:18;;5593:356::o;5954:380::-;6033:1;6029:12;;;;6076;;;6097:61;;6151:4;6143:6;6139:17;6129:27;;6097:61;6204:2;6196:6;6193:14;6173:18;6170:38;6167:161;;6250:10;6245:3;6241:20;6238:1;6231:31;6285:4;6282:1;6275:15;6313:4;6310:1;6303:15;6339:127;6400:10;6395:3;6391:20;6388:1;6381:31;6431:4;6428:1;6421:15;6455:4;6452:1;6445:15;6811:127;6872:10;6867:3;6863:20;6860:1;6853:31;6903:4;6900:1;6893:15;6927:4;6924:1;6917:15;6943:125;7008:9;;;7029:10;;;7026:36;;;7042:18;;:::i;9261:168::-;9334:9;;;9365;;9382:15;;;9376:22;;9362:37;9352:71;;9403:18;;:::i;9434:217::-;9474:1;9500;9490:132;;9544:10;9539:3;9535:20;9532:1;9525:31;9579:4;9576:1;9569:15;9607:4;9604:1;9597:15;9490:132;-1:-1:-1;9636:9:1;;9434:217::o;9656:332::-;9858:2;9840:21;;;9897:1;9877:18;;;9870:29;-1:-1:-1;;;9930:2:1;9915:18;;9908:39;9979:2;9964:18;;9656:332::o;9993:128::-;10060:9;;;10081:11;;;10078:37;;;10095:18;;:::i;10443:184::-;10513:6;10566:2;10554:9;10545:7;10541:23;10537:32;10534:52;;;10582:1;10579;10572:12;10534:52;-1:-1:-1;10605:16:1;;10443:184;-1:-1:-1;10443:184:1:o;10632:135::-;10671:3;10692:17;;;10689:43;;10712:18;;:::i;:::-;-1:-1:-1;10759:1:1;10748:13;;10632:135::o;10772:188::-;10851:13;;-1:-1:-1;;;;;10893:42:1;;10883:53;;10873:81;;10950:1;10947;10940:12;10965:450;11052:6;11060;11068;11121:2;11109:9;11100:7;11096:23;11092:32;11089:52;;;11137:1;11134;11127:12;11089:52;11160:40;11190:9;11160:40;:::i;:::-;11150:50;;11219:49;11264:2;11253:9;11249:18;11219:49;:::i;:::-;11209:59;;11311:2;11300:9;11296:18;11290:25;11355:10;11348:5;11344:22;11337:5;11334:33;11324:61;;11381:1;11378;11371:12;11324:61;11404:5;11394:15;;;10965:450;;;;;:::o;11420:251::-;11490:6;11543:2;11531:9;11522:7;11518:23;11514:32;11511:52;;;11559:1;11556;11549:12;11511:52;11591:9;11585:16;11610:31;11635:5;11610:31;:::i

Swarm Source

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