ETH Price: $2,675.25 (+1.38%)
Gas: 15 Gwei

Token

SmartSwap (SMART)
 

Overview

Max Total Supply

1,000,000,000 SMART

Holders

78

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
SMART

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-04-25
*/

/**

Website: https://smartswap.services
Whitepaper: https://docs.smartswap.services
Twitter: https://twitter.com/smartswapteam
Telegram: https://t.me/smartswapportal


*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.18;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function decimals() external view returns (uint8);

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

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

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

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

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

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

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

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

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

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

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

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

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

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

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

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

    function WETH() external pure returns (address);

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

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

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

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

contract SMART is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = "SmartSwap";
    string private constant _symbol = "SMART";
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 1_000_000_000 * (10**_decimals);
    uint256 private _maxTxSize = 20_000_000 * (10**_decimals);
    uint256 private _maxWalletSize = 20_000_000 * (10**_decimals);
    uint256 private _maxSwapSize = 10_000_000 * (10**_decimals);
    uint256 private _minSwapSize = 425 * (10**_decimals);
    mapping(address => uint256) _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExceptForSmart;
    IRouter router;
    address public pair;
    bool private _tradingAllowed = false;
    uint256 private liquidityFeePercent = 0;
    uint256 private mktFeePercent = 2;
    uint256 private utilFeePercent = 0;
    uint256 private _feeOnBuy = 1;
    uint256 private _feeOnSell = 1;
    uint256 private _feeForTransfer = 0;
    uint256 private denominator = 100;
    bool private _swapEnabled = true;
    bool private _inSwapping;
    modifier lockTheSwap() {
        _inSwapping = true;
        _;
        _inSwapping = false;
    }

    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal constant _smartswap = 0x9CbE03D856B8163bA1E5b8030b28d2dfF5DbDDb5;
    address private _lpReceiver = msg.sender;

    constructor() Ownable() {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(
            address(this),
            _router.WETH()
        );
        router = _router;
        pair = _pair;

        _isExceptForSmart[address(this)] = true;
        _isExceptForSmart[_lpReceiver] = true;
        _isExceptForSmart[_smartswap] = true;
        _isExceptForSmart[msg.sender] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

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

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

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

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

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

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

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

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

    function preTxCheck(
        address sender,
        address recipient,
        uint256 amount
    ) internal pure {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(
            amount > uint256(0),
            "Transfer amount must be greater than zero"
        );
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        preTxCheck(sender, recipient, amount);
        _checkTradingOpen(sender, recipient);
        checkMaxWallet(sender, recipient, amount);
        checkTxLimit(sender, recipient, amount);
        processSwapBack(sender, recipient, amount);
        (uint256 amountSent, uint256 amountReceived) = _callTakeFee(
            sender,
            recipient,
            amount
        );
        _balances[sender] = _balances[sender].sub(amountSent);
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

    function removeLimits() external onlyOwner {
        _maxTxSize = type(uint256).max;
        _maxWalletSize = type(uint256).max;
    }

    function startSmartSwap() external onlyOwner {
        require(!_tradingAllowed, "Tradeing already allowed");

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

        mktFeePercent = 30;
        _feeOnBuy = 30;
        _feeOnSell = 30;
        _tradingAllowed = true;
    }

    function changeFee(uint256 _newfees) external onlyOwner {
        mktFeePercent = _newfees;
        _feeOnBuy = _newfees;
        _feeOnSell = _newfees;

        require(_feeOnBuy <= 10 && _feeOnSell <= 10);
    }

    function _checkTradingOpen(address sender, address recipient)
        internal
        view
    {
        if (!_isExceptForSmart[sender] && !_isExceptForSmart[recipient]) {
            require(_tradingAllowed, "Trading not allowed yet");
        }
    }

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

    function checkTxLimit(
        address sender,
        address recipient,
        uint256 amount
    ) internal view {
        require(
            amount <= _maxTxSize ||
                _isExceptForSmart[sender] ||
                _isExceptForSmart[recipient],
            "TX Limit Exceeded"
        );
    }

    function _swapBackTokens(uint256 tokens) private lockTheSwap {
        uint256 _denominator = (
            liquidityFeePercent.add(1).add(mktFeePercent).add(utilFeePercent)
        ).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFeePercent).div(
            _denominator
        );
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance = deltaBalance.div(_denominator.sub(liquidityFeePercent));
        uint256 ethForLpAdd = unitBalance.mul(liquidityFeePercent);
        if (ethForLpAdd > uint256(0)) {
            addLiquidity(tokensToAddLiquidityWith, ethForLpAdd);
        }
        uint256 marketingAmt = unitBalance.mul(2).mul(mktFeePercent);
        if (marketingAmt > 0) {
            payable(_smartswap).transfer(marketingAmt);
        }
        uint256 remainingBalance = address(this).balance;
        if (remainingBalance > uint256(0)) {
            payable(_smartswap).transfer(remainingBalance);
        }
    }

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

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

    function _checkSwapBack(
        address sender,
        address recipient,
        uint256 amount
    ) internal view returns (bool) {
        bool aboveMin = amount >= _minSwapSize;
        bool aboveThreshold = balanceOf(address(this)) >= _minSwapSize;
        return
            !_inSwapping &&
            _swapEnabled &&
            _tradingAllowed &&
            aboveMin &&
            !_isExceptForSmart[sender] &&
            recipient == pair &&
            aboveThreshold;
    }

    function processSwapBack(
        address sender,
        address recipient,
        uint256 amount
    ) internal {
        if (_checkSwapBack(sender, recipient, amount)) {
            uint256 swapTokens = balanceOf(address(this));
            if (swapTokens > _maxSwapSize) swapTokens = _maxSwapSize;
            _swapBackTokens(swapTokens);
        }
    }

    function _calcFeePercent(address sender, address recipient)
        internal
        view
        returns (uint256)
    {
        if (recipient == pair) {
            return _feeOnSell;
        }
        if (sender == pair) {
            return _feeOnBuy;
        }
        return _feeForTransfer;
    }

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

    function _callTakeFee(
        address sender,
        address recipt,
        uint256 amount
    ) internal returns (uint256, uint256) {
        uint256 xAmount = amount;
        uint256 yAmount = amount;
        uint256 zAmount;
        if (sender != address(this) && recipt != address(this)) {
            if (_shouldFeeTake(sender, recipt)) {
                if (_calcFeePercent(sender, recipt) > 0) {
                    zAmount = amount.div(denominator).mul(
                        _calcFeePercent(sender, recipt)
                    );
                    _balances[address(this)] = _balances[address(this)].add(
                        zAmount
                    );
                    emit Transfer(sender, address(this), zAmount);

                    yAmount = amount.sub(zAmount);
                }
            } else {
                if (recipt == pair && sender != owner()) xAmount = zAmount;
            }
        }
        return (xAmount, yAmount);
    }

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

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newfees","type":"uint256"}],"name":"changeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startSmartSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a6200049c565b6200002290633b9aca00620004b3565b600155620000336009600a6200049c565b62000043906301312d00620004b3565b600255620000546009600a6200049c565b62000064906301312d00620004b3565b600355620000756009600a6200049c565b620000849062989680620004b3565b600455620000956009600a6200049c565b620000a3906101a9620004b3565b600555600a805460ff60a01b191690555f600b8190556002600c55600d8190556001600e819055600f81905560109190915560646011556012805461ff01600160b01b03191633620100000217909117905534801562000101575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3505f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000198573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001be9190620004cd565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200020a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002309190620004cd565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156200027b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002a19190620004cd565b600980546001600160a01b038581166001600160a01b031992831617909255600a80548484169216919091179055305f908152600860209081526040808320805460ff199081166001908117909255601254620100009004909516845281842080548616821790557ff1ca6549ac68c05f5ea16cdd84504c843afee15c099ea4a0c2f8848333d2f4e08054861682179055338085528285208054909616821790955554600683528184208190559051908152939450919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050620004f5565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620003e157815f1904821115620003c557620003c56200038d565b80851615620003d357918102915b93841c9390800290620003a6565b509250929050565b5f82620003f95750600162000496565b816200040757505f62000496565b81600181146200042057600281146200042b576200044b565b600191505062000496565b60ff8411156200043f576200043f6200038d565b50506001821b62000496565b5060208310610133831016604e8410600b841016171562000470575081810a62000496565b6200047c8383620003a1565b805f19048211156200049257620004926200038d565b0290505b92915050565b5f620004ac60ff841683620003e9565b9392505050565b80820281158282048414176200049657620004966200038d565b5f60208284031215620004de575f80fd5b81516001600160a01b0381168114620004ac575f80fd5b6114d980620005035f395ff3fe6080604052600436106100e7575f3560e01c8063715018a611610087578063a8aa1b3111610057578063a8aa1b311461029a578063a9059cbb146102b9578063dd62ed3e146102d8578063eb8bf5c81461031c575f80fd5b8063715018a614610215578063751039fc146102295780638da5cb5b1461023d57806395d89b411461026d575f80fd5b806323b872dd116100c257806323b872dd14610186578063313ce567146101a55780636a1db1bf146101c057806370a08231146101e1575f80fd5b806306fdde03146100f2578063095ea7b31461013557806318160ddd14610164575f80fd5b366100ee57005b5f80fd5b3480156100fd575f80fd5b506040805180820190915260098152680536d617274537761760bc1b60208201525b60405161012c91906111da565b60405180910390f35b348015610140575f80fd5b5061015461014f36600461123a565b610330565b604051901515815260200161012c565b34801561016f575f80fd5b50610178610346565b60405190815260200161012c565b348015610191575f80fd5b506101546101a0366004611264565b6103b6565b3480156101b0575f80fd5b506040516009815260200161012c565b3480156101cb575f80fd5b506101df6101da3660046112a2565b61041d565b005b3480156101ec575f80fd5b506101786101fb3660046112b9565b6001600160a01b03165f9081526006602052604090205490565b348015610220575f80fd5b506101df61047d565b348015610234575f80fd5b506101df6104ee565b348015610248575f80fd5b505f546001600160a01b03165b6040516001600160a01b03909116815260200161012c565b348015610278575f80fd5b5060408051808201909152600581526414d350549560da1b602082015261011f565b3480156102a5575f80fd5b50600a54610255906001600160a01b031681565b3480156102c4575f80fd5b506101546102d336600461123a565b610523565b3480156102e3575f80fd5b506101786102f23660046112d4565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b348015610327575f80fd5b506101df61052f565b5f61033c3384846105ef565b5060015b92915050565b60066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85461dead5f9081527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e225460015491926103b19290916103ab9190610712565b90610712565b905090565b5f6103c2848484610724565b610413843361040e8560405180606001604052806028815260200161147c602891396001600160a01b038a165f908152600760209081526040808320338452909152902054919061081e565b6105ef565b5060019392505050565b5f546001600160a01b0316331461044f5760405162461bcd60e51b81526004016104469061130b565b60405180910390fd5b600c819055600e819055600f819055600a81118015906104725750600a600f5411155b61047a575f80fd5b50565b5f546001600160a01b031633146104a65760405162461bcd60e51b81526004016104469061130b565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146105175760405162461bcd60e51b81526004016104469061130b565b5f196002819055600355565b5f61033c338484610724565b5f546001600160a01b031633146105585760405162461bcd60e51b81526004016104469061130b565b600a54600160a01b900460ff16156105b25760405162461bcd60e51b815260206004820152601860248201527f5472616465696e6720616c726561647920616c6c6f77656400000000000000006044820152606401610446565b305f908152600660205260409020546105cb9047610849565b601e600c819055600e819055600f55600a805460ff60a01b1916600160a01b179055565b6001600160a01b0383166106515760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610446565b6001600160a01b0382166106b25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610446565b6001600160a01b038381165f8181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61071d8284611354565b9392505050565b61072f838383610900565b6107398383610a2c565b610744838383610ace565b61074f838383610bb7565b61075a838383610c41565b5f80610767858585610c7e565b6001600160a01b0387165f90815260066020526040902054919350915061078e9083610712565b6001600160a01b038087165f9081526006602052604080822093909355908616815220546107bc9082610db1565b6001600160a01b038086165f8181526006602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061080f9085815260200190565b60405180910390a35050505050565b5f81848411156108415760405162461bcd60e51b815260040161044691906111da565b505050900390565b6009546108619030906001600160a01b0316846105ef565b60095460125460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0362010000909204821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156108d4573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906108f99190611367565b5050505050565b6001600160a01b0383166109645760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610446565b6001600160a01b0382166109c65760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610446565b5f8111610a275760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610446565b505050565b6001600160a01b0382165f9081526008602052604090205460ff16158015610a6c57506001600160a01b0381165f9081526008602052604090205460ff16155b15610aca57600a54600160a01b900460ff16610aca5760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f7420616c6c6f776564207965740000000000000000006044820152606401610446565b5050565b6001600160a01b0383165f9081526008602052604090205460ff16158015610b0e57506001600160a01b0382165f9081526008602052604090205460ff16155b8015610b285750600a546001600160a01b03838116911614155b8015610b3f57506001600160a01b03821661dead14155b15610a27576003546001600160a01b0383165f90815260066020526040902054610b699083610db1565b1115610a275760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610446565b60025481111580610bdf57506001600160a01b0383165f9081526008602052604090205460ff165b80610c0157506001600160a01b0382165f9081526008602052604090205460ff165b610a275760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610446565b610c4c838383610dbc565b15610a2757305f90815260066020526040902054600454811115610c6f57506004545b610c7881610e61565b50505050565b5f808280826001600160a01b0388163014801590610ca557506001600160a01b0387163014155b15610da457610cb48888610fe6565b15610d71575f610cc4898961102a565b1115610d6c57610ceb610cd7898961102a565b601154610ce5908990611074565b9061107f565b305f90815260066020526040902054909150610d079082610db1565b305f81815260066020526040908190209290925590516001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d579085815260200190565b60405180910390a3610d698682610712565b91505b610da4565b600a546001600160a01b038881169116148015610d9b57505f546001600160a01b03898116911614155b15610da4578092505b5090969095509350505050565b5f61071d8284611392565b600554305f908152600660205260408120546012549192808510159291101590610100900460ff16158015610df3575060125460ff165b8015610e085750600a54600160a01b900460ff165b8015610e115750815b8015610e3557506001600160a01b0386165f9081526008602052604090205460ff16155b8015610e4e5750600a546001600160a01b038681169116145b8015610e575750805b9695505050505050565b6012805461ff001916610100179055600d54600c54600b545f92610e9a92600292610ce59291610e949182906001610db1565b90610db1565b90505f610ebc82610eb6600b548661107f90919063ffffffff16565b90611074565b90505f610ec98483610712565b905047610ed58261108a565b5f610ee04783610712565b90505f610f02610efb600b548861071290919063ffffffff16565b8390611074565b90505f610f1a600b548361107f90919063ffffffff16565b90508015610f2c57610f2c8682610849565b600c545f90610f4090610ce585600261107f565b90508015610f8857604051739cbe03d856b8163ba1e5b8030b28d2dff5dbddb59082156108fc029083905f818181858888f19350505050158015610f86573d5f803e3d5ffd5b505b478015610fcf57604051739cbe03d856b8163ba1e5b8030b28d2dff5dbddb59082156108fc029083905f818181858888f19350505050158015610fcd573d5f803e3d5ffd5b505b50506012805461ff00191690555050505050505050565b6001600160a01b0382165f9081526008602052604081205460ff1615801561071d5750506001600160a01b03165f9081526008602052604090205460ff1615919050565b600a545f906001600160a01b039081169083160361104b5750600f54610340565b600a546001600160a01b039081169084160361106a5750600e54610340565b5060105492915050565b5f61071d82846113a5565b5f61071d82846113c4565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106110bd576110bd6113db565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611114573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061113891906113ef565b8160018151811061114b5761114b6113db565b6001600160a01b03928316602091820292909201015260095461117191309116846105ef565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac947906111a99085905f9086903090429060040161140a565b5f604051808303815f87803b1580156111c0575f80fd5b505af11580156111d2573d5f803e3d5ffd5b505050505050565b5f602080835283518060208501525f5b81811015611206578581018301518582016040015282016111ea565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461047a575f80fd5b5f806040838503121561124b575f80fd5b823561125681611226565b946020939093013593505050565b5f805f60608486031215611276575f80fd5b833561128181611226565b9250602084013561129181611226565b929592945050506040919091013590565b5f602082840312156112b2575f80fd5b5035919050565b5f602082840312156112c9575f80fd5b813561071d81611226565b5f80604083850312156112e5575f80fd5b82356112f081611226565b9150602083013561130081611226565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561034057610340611340565b5f805f60608486031215611379575f80fd5b8351925060208401519150604084015190509250925092565b8082018082111561034057610340611340565b5f826113bf57634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761034057610340611340565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156113ff575f80fd5b815161071d81611226565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561145a5784516001600160a01b031683529383019391830191600101611435565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208f24c57a4d96f2fcef3030653861a32b46f5833010e4a663d28a252962c7358c64736f6c63430008160033

Deployed Bytecode

0x6080604052600436106100e7575f3560e01c8063715018a611610087578063a8aa1b3111610057578063a8aa1b311461029a578063a9059cbb146102b9578063dd62ed3e146102d8578063eb8bf5c81461031c575f80fd5b8063715018a614610215578063751039fc146102295780638da5cb5b1461023d57806395d89b411461026d575f80fd5b806323b872dd116100c257806323b872dd14610186578063313ce567146101a55780636a1db1bf146101c057806370a08231146101e1575f80fd5b806306fdde03146100f2578063095ea7b31461013557806318160ddd14610164575f80fd5b366100ee57005b5f80fd5b3480156100fd575f80fd5b506040805180820190915260098152680536d617274537761760bc1b60208201525b60405161012c91906111da565b60405180910390f35b348015610140575f80fd5b5061015461014f36600461123a565b610330565b604051901515815260200161012c565b34801561016f575f80fd5b50610178610346565b60405190815260200161012c565b348015610191575f80fd5b506101546101a0366004611264565b6103b6565b3480156101b0575f80fd5b506040516009815260200161012c565b3480156101cb575f80fd5b506101df6101da3660046112a2565b61041d565b005b3480156101ec575f80fd5b506101786101fb3660046112b9565b6001600160a01b03165f9081526006602052604090205490565b348015610220575f80fd5b506101df61047d565b348015610234575f80fd5b506101df6104ee565b348015610248575f80fd5b505f546001600160a01b03165b6040516001600160a01b03909116815260200161012c565b348015610278575f80fd5b5060408051808201909152600581526414d350549560da1b602082015261011f565b3480156102a5575f80fd5b50600a54610255906001600160a01b031681565b3480156102c4575f80fd5b506101546102d336600461123a565b610523565b3480156102e3575f80fd5b506101786102f23660046112d4565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b348015610327575f80fd5b506101df61052f565b5f61033c3384846105ef565b5060015b92915050565b60066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85461dead5f9081527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e225460015491926103b19290916103ab9190610712565b90610712565b905090565b5f6103c2848484610724565b610413843361040e8560405180606001604052806028815260200161147c602891396001600160a01b038a165f908152600760209081526040808320338452909152902054919061081e565b6105ef565b5060019392505050565b5f546001600160a01b0316331461044f5760405162461bcd60e51b81526004016104469061130b565b60405180910390fd5b600c819055600e819055600f819055600a81118015906104725750600a600f5411155b61047a575f80fd5b50565b5f546001600160a01b031633146104a65760405162461bcd60e51b81526004016104469061130b565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146105175760405162461bcd60e51b81526004016104469061130b565b5f196002819055600355565b5f61033c338484610724565b5f546001600160a01b031633146105585760405162461bcd60e51b81526004016104469061130b565b600a54600160a01b900460ff16156105b25760405162461bcd60e51b815260206004820152601860248201527f5472616465696e6720616c726561647920616c6c6f77656400000000000000006044820152606401610446565b305f908152600660205260409020546105cb9047610849565b601e600c819055600e819055600f55600a805460ff60a01b1916600160a01b179055565b6001600160a01b0383166106515760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610446565b6001600160a01b0382166106b25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610446565b6001600160a01b038381165f8181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61071d8284611354565b9392505050565b61072f838383610900565b6107398383610a2c565b610744838383610ace565b61074f838383610bb7565b61075a838383610c41565b5f80610767858585610c7e565b6001600160a01b0387165f90815260066020526040902054919350915061078e9083610712565b6001600160a01b038087165f9081526006602052604080822093909355908616815220546107bc9082610db1565b6001600160a01b038086165f8181526006602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061080f9085815260200190565b60405180910390a35050505050565b5f81848411156108415760405162461bcd60e51b815260040161044691906111da565b505050900390565b6009546108619030906001600160a01b0316846105ef565b60095460125460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0362010000909204821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156108d4573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906108f99190611367565b5050505050565b6001600160a01b0383166109645760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610446565b6001600160a01b0382166109c65760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610446565b5f8111610a275760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610446565b505050565b6001600160a01b0382165f9081526008602052604090205460ff16158015610a6c57506001600160a01b0381165f9081526008602052604090205460ff16155b15610aca57600a54600160a01b900460ff16610aca5760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f7420616c6c6f776564207965740000000000000000006044820152606401610446565b5050565b6001600160a01b0383165f9081526008602052604090205460ff16158015610b0e57506001600160a01b0382165f9081526008602052604090205460ff16155b8015610b285750600a546001600160a01b03838116911614155b8015610b3f57506001600160a01b03821661dead14155b15610a27576003546001600160a01b0383165f90815260066020526040902054610b699083610db1565b1115610a275760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610446565b60025481111580610bdf57506001600160a01b0383165f9081526008602052604090205460ff165b80610c0157506001600160a01b0382165f9081526008602052604090205460ff165b610a275760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610446565b610c4c838383610dbc565b15610a2757305f90815260066020526040902054600454811115610c6f57506004545b610c7881610e61565b50505050565b5f808280826001600160a01b0388163014801590610ca557506001600160a01b0387163014155b15610da457610cb48888610fe6565b15610d71575f610cc4898961102a565b1115610d6c57610ceb610cd7898961102a565b601154610ce5908990611074565b9061107f565b305f90815260066020526040902054909150610d079082610db1565b305f81815260066020526040908190209290925590516001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d579085815260200190565b60405180910390a3610d698682610712565b91505b610da4565b600a546001600160a01b038881169116148015610d9b57505f546001600160a01b03898116911614155b15610da4578092505b5090969095509350505050565b5f61071d8284611392565b600554305f908152600660205260408120546012549192808510159291101590610100900460ff16158015610df3575060125460ff165b8015610e085750600a54600160a01b900460ff165b8015610e115750815b8015610e3557506001600160a01b0386165f9081526008602052604090205460ff16155b8015610e4e5750600a546001600160a01b038681169116145b8015610e575750805b9695505050505050565b6012805461ff001916610100179055600d54600c54600b545f92610e9a92600292610ce59291610e949182906001610db1565b90610db1565b90505f610ebc82610eb6600b548661107f90919063ffffffff16565b90611074565b90505f610ec98483610712565b905047610ed58261108a565b5f610ee04783610712565b90505f610f02610efb600b548861071290919063ffffffff16565b8390611074565b90505f610f1a600b548361107f90919063ffffffff16565b90508015610f2c57610f2c8682610849565b600c545f90610f4090610ce585600261107f565b90508015610f8857604051739cbe03d856b8163ba1e5b8030b28d2dff5dbddb59082156108fc029083905f818181858888f19350505050158015610f86573d5f803e3d5ffd5b505b478015610fcf57604051739cbe03d856b8163ba1e5b8030b28d2dff5dbddb59082156108fc029083905f818181858888f19350505050158015610fcd573d5f803e3d5ffd5b505b50506012805461ff00191690555050505050505050565b6001600160a01b0382165f9081526008602052604081205460ff1615801561071d5750506001600160a01b03165f9081526008602052604090205460ff1615919050565b600a545f906001600160a01b039081169083160361104b5750600f54610340565b600a546001600160a01b039081169084160361106a5750600e54610340565b5060105492915050565b5f61071d82846113a5565b5f61071d82846113c4565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106110bd576110bd6113db565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611114573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061113891906113ef565b8160018151811061114b5761114b6113db565b6001600160a01b03928316602091820292909201015260095461117191309116846105ef565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac947906111a99085905f9086903090429060040161140a565b5f604051808303815f87803b1580156111c0575f80fd5b505af11580156111d2573d5f803e3d5ffd5b505050505050565b5f602080835283518060208501525f5b81811015611206578581018301518582016040015282016111ea565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461047a575f80fd5b5f806040838503121561124b575f80fd5b823561125681611226565b946020939093013593505050565b5f805f60608486031215611276575f80fd5b833561128181611226565b9250602084013561129181611226565b929592945050506040919091013590565b5f602082840312156112b2575f80fd5b5035919050565b5f602082840312156112c9575f80fd5b813561071d81611226565b5f80604083850312156112e5575f80fd5b82356112f081611226565b9150602083013561130081611226565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561034057610340611340565b5f805f60608486031215611379575f80fd5b8351925060208401519150604084015190509250925092565b8082018082111561034057610340611340565b5f826113bf57634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761034057610340611340565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156113ff575f80fd5b815161071d81611226565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561145a5784516001600160a01b031683529383019391830191600101611435565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208f24c57a4d96f2fcef3030653861a32b46f5833010e4a663d28a252962c7358c64736f6c63430008160033

Deployed Bytecode Sourcemap

6222:11464:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8352:83;;;;;;;;;;-1:-1:-1;8422:5:0;;;;;;;;;;;;-1:-1:-1;;;8422:5:0;;;;8352:83;;;;;;;:::i;:::-;;;;;;;;9153:191;;;;;;;;;;-1:-1:-1;9153:191:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;9153:191:0;1023:187:1;9352:148:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;9352:148:0;1215:177:1;16864:442:0;;;;;;;;;;-1:-1:-1;16864:442:0;;;;;:::i;:::-;;:::i;8538:83::-;;;;;;;;;;-1:-1:-1;8538:83:0;;6429:1;2000:36:1;;1988:2;1973:18;8538:83:0;1858:184:1;11108:219:0;;;;;;;;;;-1:-1:-1;11108:219:0;;;;;:::i;:::-;;:::i;:::-;;8629:119;;;;;;;;;;-1:-1:-1;8629:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;8722:18:0;8695:7;8722:18;;;:9;:18;;;;;;;8629:119;4498:148;;;;;;;;;;;;;:::i;10649:137::-;;;;;;;;;;;;;:::i;4284:79::-;;;;;;;;;;-1:-1:-1;4322:7:0;4349:6;-1:-1:-1;;;;;4349:6:0;4284:79;;;-1:-1:-1;;;;;2648:32:1;;;2630:51;;2618:2;2603:18;4284:79:0;2484:203:1;8443:87:0;;;;;;;;;;-1:-1:-1;8515:7:0;;;;;;;;;;;;-1:-1:-1;;;8515:7:0;;;;8443:87;;6959:19;;;;;;;;;;-1:-1:-1;6959:19:0;;;;-1:-1:-1;;;;;6959:19:0;;;8756:197;;;;;;;;;;-1:-1:-1;8756:197:0;;;;;:::i;:::-;;:::i;8961:184::-;;;;;;;;;;-1:-1:-1;8961:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;9110:18:0;;;9078:7;9110:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8961:184;10794:306;;;;;;;;;;;;;:::i;9153:191::-;9255:4;9277:37;9286:10;9298:7;9307:6;9277:8;:37::i;:::-;-1:-1:-1;9332:4:0;9153:191;;;;;:::o;9352:148::-;8722:9;:18;;;;7523:42;9405:7;8722:18;;;;;9432:12;;9405:7;;9432:60;;8722:18;;9432:33;;:12;:16;:33::i;:::-;:37;;:60::i;:::-;9425:67;;9352:148;:::o;16864:442::-;16996:4;17013:36;17023:6;17031:9;17042:6;17013:9;:36::i;:::-;17060:216;17083:6;17104:10;17129:136;17183:6;17129:136;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17129:19:0;;;;;;:11;:19;;;;;;;;17149:10;17129:31;;;;;;;;;:136;:35;:136::i;:::-;17060:8;:216::i;:::-;-1:-1:-1;17294:4:0;16864:442;;;;;:::o;11108:219::-;4411:6;;-1:-1:-1;;;;;4411:6:0;359:10;4411:22;4403:67;;;;-1:-1:-1;;;4403:67:0;;;;;;;:::i;:::-;;;;;;;;;11175:13:::1;:24:::0;;;11210:9:::1;:20:::0;;;11241:10:::1;:21:::0;;;11296:2:::1;11283:15:::0;::::1;::::0;::::1;::::0;:35:::1;;;11316:2;11302:10;;:16;;11283:35;11275:44;;;::::0;::::1;;11108:219:::0;:::o;4498:148::-;4411:6;;-1:-1:-1;;;;;4411:6:0;359:10;4411:22;4403:67;;;;-1:-1:-1;;;4403:67:0;;;;;;;:::i;:::-;4605:1:::1;4589:6:::0;;4568:40:::1;::::0;-1:-1:-1;;;;;4589:6:0;;::::1;::::0;4568:40:::1;::::0;4605:1;;4568:40:::1;4636:1;4619:19:::0;;-1:-1:-1;;;;;;4619:19:0::1;::::0;;4498:148::o;10649:137::-;4411:6;;-1:-1:-1;;;;;4411:6:0;359:10;4411:22;4403:67;;;;-1:-1:-1;;;4403:67:0;;;;;;;:::i;:::-;-1:-1:-1;;10703:10:0::1;:30:::0;;;10744:14:::1;:34:::0;10649:137::o;8756:197::-;8861:4;8883:40;8893:10;8905:9;8916:6;8883:9;:40::i;10794:306::-;4411:6;;-1:-1:-1;;;;;4411:6:0;359:10;4411:22;4403:67;;;;-1:-1:-1;;;4403:67:0;;;;;;;:::i;:::-;10859:15:::1;::::0;-1:-1:-1;;;10859:15:0;::::1;;;10858:16;10850:53;;;::::0;-1:-1:-1;;;10850:53:0;;3648:2:1;10850:53:0::1;::::0;::::1;3630:21:1::0;3687:2;3667:18;;;3660:30;3726:26;3706:18;;;3699:54;3770:18;;10850:53:0::1;3446:348:1::0;10850:53:0::1;10947:4;8695:7:::0;8722:18;;;:9;:18;;;;;;10916:61:::1;::::0;10955:21:::1;10916:12;:61::i;:::-;11006:2;10990:13;:18:::0;;;11019:9:::1;:14:::0;;;11044:10:::1;:15:::0;11070::::1;:22:::0;;-1:-1:-1;;;;11070:22:0::1;-1:-1:-1::0;;;11070:22:0::1;::::0;;10794:306::o;17314:369::-;-1:-1:-1;;;;;17441:19:0;;17433:68;;;;-1:-1:-1;;;17433:68:0;;4001:2:1;17433:68:0;;;3983:21:1;4040:2;4020:18;;;4013:30;4079:34;4059:18;;;4052:62;-1:-1:-1;;;4130:18:1;;;4123:34;4174:19;;17433:68:0;3799:400:1;17433:68:0;-1:-1:-1;;;;;17520:21:0;;17512:68;;;;-1:-1:-1;;;17512:68:0;;4406:2:1;17512:68:0;;;4388:21:1;4445:2;4425:18;;;4418:30;4484:34;4464:18;;;4457:62;-1:-1:-1;;;4535:18:1;;;4528:32;4577:19;;17512:68:0;4204:398:1;17512:68:0;-1:-1:-1;;;;;17591:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;17643:32;;1361:25:1;;;17643:32:0;;1334:18:1;17643:32:0;;;;;;;17314:369;;;:::o;514:98::-;572:7;599:5;603:1;599;:5;:::i;:::-;592:12;514:98;-1:-1:-1;;;514:98:0:o;9927:714::-;10050:37;10061:6;10069:9;10080:6;10050:10;:37::i;:::-;10098:36;10116:6;10124:9;10098:17;:36::i;:::-;10145:41;10160:6;10168:9;10179:6;10145:14;:41::i;:::-;10197:39;10210:6;10218:9;10229:6;10197:12;:39::i;:::-;10247:42;10263:6;10271:9;10282:6;10247:15;:42::i;:::-;10301:18;10321:22;10347:89;10374:6;10395:9;10419:6;10347:12;:89::i;:::-;-1:-1:-1;;;;;10467:17:0;;;;;;:9;:17;;;;;;10300:136;;-1:-1:-1;10300:136:0;-1:-1:-1;10467:33:0;;10300:136;10467:21;:33::i;:::-;-1:-1:-1;;;;;10447:17:0;;;;;;;:9;:17;;;;;;:53;;;;10534:20;;;;;;;:40;;10559:14;10534:24;:40::i;:::-;-1:-1:-1;;;;;10511:20:0;;;;;;;:9;:20;;;;;;;:63;;;;10590:43;;;;;;;;;;10618:14;1361:25:1;;1349:2;1334:18;;1215:177;10590:43:0;;;;;;;;10039:602;;9927:714;;;:::o;2214:240::-;2334:7;2395:12;2387:6;;;;2379:29;;;;-1:-1:-1;;;2379:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2430:5:0;;;2214:240::o;13624:346::-;13737:6;;13705:53;;13722:4;;-1:-1:-1;;;;;13737:6:0;13746:11;13705:8;:53::i;:::-;13769:6;;13910:11;;13769:193;;-1:-1:-1;;;13769:193:0;;13832:4;13769:193;;;5213:34:1;5263:18;;;5256:34;;;-1:-1:-1;5306:18:1;;;5299:34;;;5349:18;;;5342:34;-1:-1:-1;;;;;13910:11:0;;;;;;5392:19:1;;;5385:44;13936:15:0;5445:19:1;;;5438:35;13769:6:0;;;:22;;13799:9;;5147:19:1;;13769:193:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13624:346;;:::o;9508:411::-;-1:-1:-1;;;;;9646:20:0;;9638:70;;;;-1:-1:-1;;;9638:70:0;;5997:2:1;9638:70:0;;;5979:21:1;6036:2;6016:18;;;6009:30;6075:34;6055:18;;;6048:62;-1:-1:-1;;;6126:18:1;;;6119:35;6171:19;;9638:70:0;5795:401:1;9638:70:0;-1:-1:-1;;;;;9727:23:0;;9719:71;;;;-1:-1:-1;;;9719:71:0;;6403:2:1;9719:71:0;;;6385:21:1;6442:2;6422:18;;;6415:30;6481:34;6461:18;;;6454:62;-1:-1:-1;;;6532:18:1;;;6525:33;6575:19;;9719:71:0;6201:399:1;9719:71:0;9840:1;9823:6;:19;9801:110;;;;-1:-1:-1;;;9801:110:0;;6807:2:1;9801:110:0;;;6789:21:1;6846:2;6826:18;;;6819:30;6885:34;6865:18;;;6858:62;-1:-1:-1;;;6936:18:1;;;6929:39;6985:19;;9801:110:0;6605:405:1;9801:110:0;9508:411;;;:::o;11335:260::-;-1:-1:-1;;;;;11450:25:0;;;;;;:17;:25;;;;;;;;11449:26;:59;;;;-1:-1:-1;;;;;;11480:28:0;;;;;;:17;:28;;;;;;;;11479:29;11449:59;11445:143;;;11533:15;;-1:-1:-1;;;11533:15:0;;;;11525:51;;;;-1:-1:-1;;;11525:51:0;;7217:2:1;11525:51:0;;;7199:21:1;7256:2;7236:18;;;7229:30;7295:25;7275:18;;;7268:53;7338:18;;11525:51:0;7015:347:1;11525:51:0;11335:260;;:::o;11603:500::-;-1:-1:-1;;;;;11756:25:0;;;;;;:17;:25;;;;;;;;11755:26;:72;;;;-1:-1:-1;;;;;;11799:28:0;;;;;;:17;:28;;;;;;;;11798:29;11755:72;:115;;;;-1:-1:-1;11865:4:0;;-1:-1:-1;;;;;11844:26:0;;;11865:4;;11844:26;;11755:115;:158;;;;-1:-1:-1;;;;;;11887:26:0;;7523:42;11887:26;;11755:158;11737:359;;;12004:14;;-1:-1:-1;;;;;11967:20:0;;;;;;:9;:20;;;;;;:32;;11992:6;11967:24;:32::i;:::-;11966:52;;11940:144;;;;-1:-1:-1;;;11940:144:0;;7569:2:1;11940:144:0;;;7551:21:1;7608:2;7588:18;;;7581:30;7647:32;7627:18;;;7620:60;7697:18;;11940:144:0;7367:354:1;12111:322:0;12275:10;;12265:6;:20;;:66;;;-1:-1:-1;;;;;;12306:25:0;;;;;;:17;:25;;;;;;;;12265:66;:115;;;-1:-1:-1;;;;;;12352:28:0;;;;;;:17;:28;;;;;;;;12265:115;12243:182;;;;-1:-1:-1;;;12243:182:0;;7928:2:1;12243:182:0;;;7910:21:1;7967:2;7947:18;;;7940:30;-1:-1:-1;;;7986:18:1;;;7979:47;8043:18;;12243:182:0;7726:341:1;14943:369:0;15077:41;15092:6;15100:9;15111:6;15077:14;:41::i;:::-;15073:232;;;15174:4;15135:18;8722;;;:9;:18;;;;;;15212:12;;15199:25;;15195:56;;;-1:-1:-1;15239:12:0;;15195:56;15266:27;15282:10;15266:15;:27::i;:::-;15120:185;14943:369;;;:::o;15856:1000::-;15978:7;;16025:6;;15978:7;-1:-1:-1;;;;;16107:23:0;;16125:4;16107:23;;;;:50;;-1:-1:-1;;;;;;16134:23:0;;16152:4;16134:23;;16107:50;16103:710;;;16178:30;16193:6;16201;16178:14;:30::i;:::-;16174:628;;;16267:1;16233:31;16249:6;16257;16233:15;:31::i;:::-;:35;16229:459;;;16303:108;16357:31;16373:6;16381;16357:15;:31::i;:::-;16314:11;;16303:23;;:6;;:10;:23::i;:::-;:27;;:108::i;:::-;16479:4;16461:24;;;;:9;:24;;;;;;16293:118;;-1:-1:-1;16461:85:0;;16293:118;16461:28;:85::i;:::-;16452:4;16434:24;;;;:9;:24;;;;;;;:112;;;;16574:40;;-1:-1:-1;;;;;16574:40:0;;;;;;;16606:7;1361:25:1;;1349:2;1334:18;;1215:177;16574:40:0;;;;;;;;16649:19;:6;16660:7;16649:10;:19::i;:::-;16639:29;;16229:459;16174:628;;;16742:4;;-1:-1:-1;;;;;16732:14:0;;;16742:4;;16732:14;:35;;;;-1:-1:-1;4322:7:0;4349:6;-1:-1:-1;;;;;16750:17:0;;;4349:6;;16750:17;;16732:35;16728:58;;;16779:7;16769:17;;16728:58;-1:-1:-1;16831:7:0;;;;-1:-1:-1;15856:1000:0;-1:-1:-1;;;;15856:1000:0:o;408:98::-;466:7;493:5;497:1;493;:5;:::i;14430:505::-;14605:12;;14668:4;14562;8722:18;;;:9;:18;;;;;;14722:11;;14562:4;;14595:22;;;;;-1:-1:-1;;14650:40:0;;14722:11;;;;;14721:12;:41;;;;-1:-1:-1;14750:12:0;;;;14721:41;:73;;;;-1:-1:-1;14779:15:0;;-1:-1:-1;;;14779:15:0;;;;14721:73;:98;;;;;14811:8;14721:98;:141;;;;-1:-1:-1;;;;;;14837:25:0;;;;;;:17;:25;;;;;;;;14836:26;14721:141;:175;;;;-1:-1:-1;14892:4:0;;-1:-1:-1;;;;;14879:17:0;;;14892:4;;14879:17;14721:175;:206;;;;;14913:14;14721:206;14701:226;14430:505;-1:-1:-1;;;;;;14430:505:0:o;12441:1175::-;7414:11;:18;;-1:-1:-1;;7414:18:0;;;;;12601:14:::1;::::0;12582:13:::1;::::0;12551:19:::1;::::0;7414:18;;12536:98:::1;::::0;12632:1:::1;::::0;12551:65:::1;::::0;12601:14;12551:45:::1;::::0;;;7428:4;12551:23:::1;:26::i;:::-;:30:::0;::::1;:45::i;12536:98::-;12513:121;;12645:32;12680:73;12730:12;12680:31;12691:19;;12680:6;:10;;:31;;;;:::i;:::-;:35:::0;::::1;:73::i;:::-;12645:108:::0;-1:-1:-1;12764:14:0::1;12781:36;:6:::0;12645:108;12781:10:::1;:36::i;:::-;12764:53:::0;-1:-1:-1;12853:21:0::1;12885:24;12764:53:::0;12885:16:::1;:24::i;:::-;12920:20;12943:41;:21;12969:14:::0;12943:25:::1;:41::i;:::-;12920:64;;12995:19;13017:55;13034:37;13051:19;;13034:12;:16;;:37;;;;:::i;:::-;13017:12:::0;;:16:::1;:55::i;:::-;12995:77;;13083:19;13105:36;13121:19;;13105:11;:15;;:36;;;;:::i;:::-;13083:58:::0;-1:-1:-1;13156:24:0;;13152:108:::1;;13197:51;13210:24;13236:11;13197:12;:51::i;:::-;13316:13;::::0;13270:20:::1;::::0;13293:37:::1;::::0;:18:::1;:11:::0;13309:1:::1;13293:15;:18::i;:37::-;13270:60:::0;-1:-1:-1;13345:16:0;;13341:91:::1;;13378:42;::::0;7611::::1;::::0;13378;::::1;;;::::0;13407:12;;13378:42:::1;::::0;;;13407:12;7611:42;13378;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;13341:91;13469:21;13505:29:::0;;13501:108:::1;;13551:46;::::0;7611:42:::1;::::0;13551:46;::::1;;;::::0;13580:16;;13551:46:::1;::::0;;;13580:16;7611:42;13551:46;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;13501:108;-1:-1:-1::0;;7455:11:0;:19;;-1:-1:-1;;7455:19:0;;;-1:-1:-1;;;;;;;;12441:1175:0:o;15643:205::-;-1:-1:-1;;;;;15782:25:0;;15752:4;15782:25;;;:17;:25;;;;;;;;15781:26;:59;;;;-1:-1:-1;;;;;;;15812:28:0;;;;;:17;:28;;;;;;;;15811:29;;15643:205;-1:-1:-1;15643:205:0:o;15320:315::-;15472:4;;15430:7;;-1:-1:-1;;;;;15472:4:0;;;15459:17;;;;15455:67;;-1:-1:-1;15500:10:0;;15493:17;;15455:67;15546:4;;-1:-1:-1;;;;;15546:4:0;;;15536:14;;;;15532:63;;-1:-1:-1;15574:9:0;;15567:16;;15532:63;-1:-1:-1;15612:15:0;;15320:315;;;;:::o;726:98::-;784:7;811:5;815:1;811;:5;:::i;620:98::-;678:7;705:5;709:1;705;:5;:::i;13978:444::-;14068:16;;;14082:1;14068:16;;;;;;;;14044:21;;14068:16;;;;;;;;;;-1:-1:-1;14068:16:0;14044:40;;14113:4;14095;14100:1;14095:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14095:23:0;;;:7;;;;;;;;;;:23;;;;14139:6;;:13;;;-1:-1:-1;;;14139:13:0;;;;:6;;;;;:11;;:13;;;;;14095:7;;14139:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14129:4;14134:1;14129:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14129:23:0;;;:7;;;;;;;;;:23;14195:6;;14163:53;;14180:4;;14195:6;14204:11;14163:8;:53::i;:::-;14227:6;;:187;;-1:-1:-1;;;14227:187:0;;-1:-1:-1;;;;;14227:6:0;;;;:57;;:187;;14299:11;;14227:6;;14341:4;;14368;;14388:15;;14227:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14033:389;13978:444;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2047:180::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;-1:-1:-1;2198:23:1;;2047:180;-1:-1:-1;2047:180:1:o;2232:247::-;2291:6;2344:2;2332:9;2323:7;2319:23;2315:32;2312:52;;;2360:1;2357;2350:12;2312:52;2399:9;2386:23;2418:31;2443:5;2418:31;:::i;2692:388::-;2760:6;2768;2821:2;2809:9;2800:7;2796:23;2792:32;2789:52;;;2837:1;2834;2827:12;2789:52;2876:9;2863:23;2895:31;2920:5;2895:31;:::i;:::-;2945:5;-1:-1:-1;3002:2:1;2987:18;;2974:32;3015:33;2974:32;3015:33;:::i;:::-;3067:7;3057:17;;;2692:388;;;;;:::o;3085:356::-;3287:2;3269:21;;;3306:18;;;3299:30;3365:34;3360:2;3345:18;;3338:62;3432:2;3417:18;;3085:356::o;4607:127::-;4668:10;4663:3;4659:20;4656:1;4649:31;4699:4;4696:1;4689:15;4723:4;4720:1;4713:15;4739:128;4806:9;;;4827:11;;;4824:37;;;4841:18;;:::i;5484:306::-;5572:6;5580;5588;5641:2;5629:9;5620:7;5616:23;5612:32;5609:52;;;5657:1;5654;5647:12;5609:52;5686:9;5680:16;5670:26;;5736:2;5725:9;5721:18;5715:25;5705:35;;5780:2;5769:9;5765:18;5759:25;5749:35;;5484:306;;;;;:::o;8072:125::-;8137:9;;;8158:10;;;8155:36;;;8171:18;;:::i;8202:217::-;8242:1;8268;8258:132;;8312:10;8307:3;8303:20;8300:1;8293:31;8347:4;8344:1;8337:15;8375:4;8372:1;8365:15;8258:132;-1:-1:-1;8404:9:1;;8202:217::o;8424:168::-;8497:9;;;8528;;8545:15;;;8539:22;;8525:37;8515:71;;8566:18;;:::i;8729:127::-;8790:10;8785:3;8781:20;8778:1;8771:31;8821:4;8818:1;8811:15;8845:4;8842:1;8835:15;8861:251;8931:6;8984:2;8972:9;8963:7;8959:23;8955:32;8952:52;;;9000:1;8997;8990:12;8952:52;9032:9;9026:16;9051:31;9076:5;9051:31;:::i;9117:980::-;9379:4;9427:3;9416:9;9412:19;9458:6;9447:9;9440:25;9484:2;9522:6;9517:2;9506:9;9502:18;9495:34;9565:3;9560:2;9549:9;9545:18;9538:31;9589:6;9624;9618:13;9655:6;9647;9640:22;9693:3;9682:9;9678:19;9671:26;;9732:2;9724:6;9720:15;9706:29;;9753:1;9763:195;9777:6;9774:1;9771:13;9763:195;;;9842:13;;-1:-1:-1;;;;;9838:39:1;9826:52;;9933:15;;;;9898:12;;;;9874:1;9792:9;9763:195;;;-1:-1:-1;;;;;;;10014:32:1;;;;10009:2;9994:18;;9987:60;-1:-1:-1;;;10078:3:1;10063:19;10056:35;9975:3;9117:980;-1:-1:-1;;;9117:980:1:o

Swarm Source

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