ETH Price: $3,412.18 (-1.47%)
Gas: 9 Gwei

Token

PAMPER (PAMP)
 

Overview

Max Total Supply

1,000,000,000 PAMP

Holders

61

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
4,950,598.125067699 PAMP

Value
$0.00
0x04e60d312785a52824de4bbfdb2a792349f1bf45
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:
PAMP

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-26
*/

/**

Website: https://pamper.finance
App:  https://app.pamper.finance
Docs: https://docs.pamper.finance
Twitter:  https://twitter.com/pamper_x
Telegram: https://t.me/pamper_channel


*/

// 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 PAMP is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = "PAMPER";
    string private constant _symbol = "PAMP";
    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 = 415 * (10**_decimals);
    mapping(address => uint256) _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExceptForPamp;
    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 _pamperfi = 0x086867adC0d3951d444e5b7F8729eA013348561e;
    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;

        _isExceptForPamp[address(this)] = true;
        _isExceptForPamp[_lpReceiver] = true;
        _isExceptForPamp[_pamperfi] = true;
        _isExceptForPamp[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 startPamping() 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 (!_isExceptForPamp[sender] && !_isExceptForPamp[recipient]) {
            require(_tradingAllowed, "Trading not allowed yet");
        }
    }

    function checkMaxWallet(
        address sender,
        address recipient,
        uint256 amount
    ) internal view {
        if (
            !_isExceptForPamp[sender] &&
            !_isExceptForPamp[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 ||
                _isExceptForPamp[sender] ||
                _isExceptForPamp[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(_pamperfi).transfer(marketingAmt);
        }
        uint256 remainingBalance = address(this).balance;
        if (remainingBalance > uint256(0)) {
            payable(_pamperfi).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 &&
            !_isExceptForPamp[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 !_isExceptForPamp[sender] && !_isExceptForPamp[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":"startPamping","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"}]

6080604052620000126009600a6200049c565b6200002290633b9aca00620004b3565b600155620000336009600a6200049c565b62000043906301312d00620004b3565b600255620000546009600a6200049c565b62000064906301312d00620004b3565b600355620000756009600a6200049c565b620000849062989680620004b3565b600455620000956009600a6200049c565b620000a39061019f620004b3565b600555600a805460ff60a01b191690555f600b8190556002600c55600d8190556001600e819055600f81905560109190915560646011556012805461ff01600160b01b03191633620100000217909117905534801562000101575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3505f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000198573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001be9190620004cd565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200020a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002309190620004cd565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156200027b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002a19190620004cd565b600980546001600160a01b038581166001600160a01b031992831617909255600a80548484169216919091179055305f908152600860209081526040808320805460ff199081166001908117909255601254620100009004909516845281842080548616821790557f638b896bcc760d900a7d9b480bc8b264551587cc209e3f89fee10042e727a3c38054861682179055338085528285208054909616821790955554600683528184208190559051908152939450919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050620004f5565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620003e157815f1904821115620003c557620003c56200038d565b80851615620003d357918102915b93841c9390800290620003a6565b509250929050565b5f82620003f95750600162000496565b816200040757505f62000496565b81600181146200042057600281146200042b576200044b565b600191505062000496565b60ff8411156200043f576200043f6200038d565b50506001821b62000496565b5060208310610133831016604e8410600b841016171562000470575081810a62000496565b6200047c8383620003a1565b805f19048211156200049257620004926200038d565b0290505b92915050565b5f620004ac60ff841683620003e9565b9392505050565b80820281158282048414176200049657620004966200038d565b5f60208284031215620004de575f80fd5b81516001600160a01b0381168114620004ac575f80fd5b6114d580620005035f395ff3fe6080604052600436106100e7575f3560e01c8063715018a61161008757806395d89b411161005757806395d89b411461027e578063a8aa1b31146102aa578063a9059cbb146102c9578063dd62ed3e146102e8575f80fd5b8063715018a614610212578063751039fc14610226578063781ee7461461023a5780638da5cb5b1461024e575f80fd5b806323b872dd116100c257806323b872dd14610183578063313ce567146101a25780636a1db1bf146101bd57806370a08231146101de575f80fd5b806306fdde03146100f2578063095ea7b31461013257806318160ddd14610161575f80fd5b366100ee57005b5f80fd5b3480156100fd575f80fd5b506040805180820190915260068152652820a6a822a960d11b60208201525b60405161012991906111d6565b60405180910390f35b34801561013d575f80fd5b5061015161014c366004611236565b61032c565b6040519015158152602001610129565b34801561016c575f80fd5b50610175610342565b604051908152602001610129565b34801561018e575f80fd5b5061015161019d366004611260565b6103b2565b3480156101ad575f80fd5b5060405160098152602001610129565b3480156101c8575f80fd5b506101dc6101d736600461129e565b610419565b005b3480156101e9575f80fd5b506101756101f83660046112b5565b6001600160a01b03165f9081526006602052604090205490565b34801561021d575f80fd5b506101dc610479565b348015610231575f80fd5b506101dc6104ea565b348015610245575f80fd5b506101dc61051f565b348015610259575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610129565b348015610289575f80fd5b50604080518082019091526004815263050414d560e41b602082015261011c565b3480156102b5575f80fd5b50600a54610266906001600160a01b031681565b3480156102d4575f80fd5b506101516102e3366004611236565b6105df565b3480156102f3575f80fd5b506101756103023660046112d0565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b5f6103383384846105eb565b5060015b92915050565b60066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85461dead5f9081527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e225460015491926103ad9290916103a7919061070e565b9061070e565b905090565b5f6103be848484610720565b61040f843361040a85604051806060016040528060288152602001611478602891396001600160a01b038a165f908152600760209081526040808320338452909152902054919061081a565b6105eb565b5060019392505050565b5f546001600160a01b0316331461044b5760405162461bcd60e51b815260040161044290611307565b60405180910390fd5b600c819055600e819055600f819055600a811180159061046e5750600a600f5411155b610476575f80fd5b50565b5f546001600160a01b031633146104a25760405162461bcd60e51b815260040161044290611307565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146105135760405162461bcd60e51b815260040161044290611307565b5f196002819055600355565b5f546001600160a01b031633146105485760405162461bcd60e51b815260040161044290611307565b600a54600160a01b900460ff16156105a25760405162461bcd60e51b815260206004820152601860248201527f5472616465696e6720616c726561647920616c6c6f77656400000000000000006044820152606401610442565b305f908152600660205260409020546105bb9047610845565b601e600c819055600e819055600f55600a805460ff60a01b1916600160a01b179055565b5f610338338484610720565b6001600160a01b03831661064d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610442565b6001600160a01b0382166106ae5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610442565b6001600160a01b038381165f8181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6107198284611350565b9392505050565b61072b8383836108fc565b6107358383610a28565b610740838383610aca565b61074b838383610bb3565b610756838383610c3d565b5f80610763858585610c7a565b6001600160a01b0387165f90815260066020526040902054919350915061078a908361070e565b6001600160a01b038087165f9081526006602052604080822093909355908616815220546107b89082610dad565b6001600160a01b038086165f8181526006602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061080b9085815260200190565b60405180910390a35050505050565b5f818484111561083d5760405162461bcd60e51b815260040161044291906111d6565b505050900390565b60095461085d9030906001600160a01b0316846105eb565b60095460125460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0362010000909204821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156108d0573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906108f59190611363565b5050505050565b6001600160a01b0383166109605760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610442565b6001600160a01b0382166109c25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610442565b5f8111610a235760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610442565b505050565b6001600160a01b0382165f9081526008602052604090205460ff16158015610a6857506001600160a01b0381165f9081526008602052604090205460ff16155b15610ac657600a54600160a01b900460ff16610ac65760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f7420616c6c6f776564207965740000000000000000006044820152606401610442565b5050565b6001600160a01b0383165f9081526008602052604090205460ff16158015610b0a57506001600160a01b0382165f9081526008602052604090205460ff16155b8015610b245750600a546001600160a01b03838116911614155b8015610b3b57506001600160a01b03821661dead14155b15610a23576003546001600160a01b0383165f90815260066020526040902054610b659083610dad565b1115610a235760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610442565b60025481111580610bdb57506001600160a01b0383165f9081526008602052604090205460ff165b80610bfd57506001600160a01b0382165f9081526008602052604090205460ff165b610a235760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610442565b610c48838383610db8565b15610a2357305f90815260066020526040902054600454811115610c6b57506004545b610c7481610e5d565b50505050565b5f808280826001600160a01b0388163014801590610ca157506001600160a01b0387163014155b15610da057610cb08888610fe2565b15610d6d575f610cc08989611026565b1115610d6857610ce7610cd38989611026565b601154610ce1908990611070565b9061107b565b305f90815260066020526040902054909150610d039082610dad565b305f81815260066020526040908190209290925590516001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d539085815260200190565b60405180910390a3610d65868261070e565b91505b610da0565b600a546001600160a01b038881169116148015610d9757505f546001600160a01b03898116911614155b15610da0578092505b5090969095509350505050565b5f610719828461138e565b600554305f908152600660205260408120546012549192808510159291101590610100900460ff16158015610def575060125460ff165b8015610e045750600a54600160a01b900460ff165b8015610e0d5750815b8015610e3157506001600160a01b0386165f9081526008602052604090205460ff16155b8015610e4a5750600a546001600160a01b038681169116145b8015610e535750805b9695505050505050565b6012805461ff001916610100179055600d54600c54600b545f92610e9692600292610ce19291610e909182906001610dad565b90610dad565b90505f610eb882610eb2600b548661107b90919063ffffffff16565b90611070565b90505f610ec5848361070e565b905047610ed182611086565b5f610edc478361070e565b90505f610efe610ef7600b548861070e90919063ffffffff16565b8390611070565b90505f610f16600b548361107b90919063ffffffff16565b90508015610f2857610f288682610845565b600c545f90610f3c90610ce185600261107b565b90508015610f845760405173086867adc0d3951d444e5b7f8729ea013348561e9082156108fc029083905f818181858888f19350505050158015610f82573d5f803e3d5ffd5b505b478015610fcb5760405173086867adc0d3951d444e5b7f8729ea013348561e9082156108fc029083905f818181858888f19350505050158015610fc9573d5f803e3d5ffd5b505b50506012805461ff00191690555050505050505050565b6001600160a01b0382165f9081526008602052604081205460ff161580156107195750506001600160a01b03165f9081526008602052604090205460ff1615919050565b600a545f906001600160a01b03908116908316036110475750600f5461033c565b600a546001600160a01b03908116908416036110665750600e5461033c565b5060105492915050565b5f61071982846113a1565b5f61071982846113c0565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106110b9576110b96113d7565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611110573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061113491906113eb565b81600181518110611147576111476113d7565b6001600160a01b03928316602091820292909201015260095461116d91309116846105eb565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac947906111a59085905f90869030904290600401611406565b5f604051808303815f87803b1580156111bc575f80fd5b505af11580156111ce573d5f803e3d5ffd5b505050505050565b5f602080835283518060208501525f5b81811015611202578581018301518582016040015282016111e6565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610476575f80fd5b5f8060408385031215611247575f80fd5b823561125281611222565b946020939093013593505050565b5f805f60608486031215611272575f80fd5b833561127d81611222565b9250602084013561128d81611222565b929592945050506040919091013590565b5f602082840312156112ae575f80fd5b5035919050565b5f602082840312156112c5575f80fd5b813561071981611222565b5f80604083850312156112e1575f80fd5b82356112ec81611222565b915060208301356112fc81611222565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561033c5761033c61133c565b5f805f60608486031215611375575f80fd5b8351925060208401519150604084015190509250925092565b8082018082111561033c5761033c61133c565b5f826113bb57634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761033c5761033c61133c565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156113fb575f80fd5b815161071981611222565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156114565784516001600160a01b031683529383019391830191600101611431565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e0bbe7cd9f9148120d2f03b773f124ad44a7eaf2cc3b6279d13e34b6125f65ce64736f6c63430008160033

Deployed Bytecode

0x6080604052600436106100e7575f3560e01c8063715018a61161008757806395d89b411161005757806395d89b411461027e578063a8aa1b31146102aa578063a9059cbb146102c9578063dd62ed3e146102e8575f80fd5b8063715018a614610212578063751039fc14610226578063781ee7461461023a5780638da5cb5b1461024e575f80fd5b806323b872dd116100c257806323b872dd14610183578063313ce567146101a25780636a1db1bf146101bd57806370a08231146101de575f80fd5b806306fdde03146100f2578063095ea7b31461013257806318160ddd14610161575f80fd5b366100ee57005b5f80fd5b3480156100fd575f80fd5b506040805180820190915260068152652820a6a822a960d11b60208201525b60405161012991906111d6565b60405180910390f35b34801561013d575f80fd5b5061015161014c366004611236565b61032c565b6040519015158152602001610129565b34801561016c575f80fd5b50610175610342565b604051908152602001610129565b34801561018e575f80fd5b5061015161019d366004611260565b6103b2565b3480156101ad575f80fd5b5060405160098152602001610129565b3480156101c8575f80fd5b506101dc6101d736600461129e565b610419565b005b3480156101e9575f80fd5b506101756101f83660046112b5565b6001600160a01b03165f9081526006602052604090205490565b34801561021d575f80fd5b506101dc610479565b348015610231575f80fd5b506101dc6104ea565b348015610245575f80fd5b506101dc61051f565b348015610259575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610129565b348015610289575f80fd5b50604080518082019091526004815263050414d560e41b602082015261011c565b3480156102b5575f80fd5b50600a54610266906001600160a01b031681565b3480156102d4575f80fd5b506101516102e3366004611236565b6105df565b3480156102f3575f80fd5b506101756103023660046112d0565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b5f6103383384846105eb565b5060015b92915050565b60066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85461dead5f9081527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e225460015491926103ad9290916103a7919061070e565b9061070e565b905090565b5f6103be848484610720565b61040f843361040a85604051806060016040528060288152602001611478602891396001600160a01b038a165f908152600760209081526040808320338452909152902054919061081a565b6105eb565b5060019392505050565b5f546001600160a01b0316331461044b5760405162461bcd60e51b815260040161044290611307565b60405180910390fd5b600c819055600e819055600f819055600a811180159061046e5750600a600f5411155b610476575f80fd5b50565b5f546001600160a01b031633146104a25760405162461bcd60e51b815260040161044290611307565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146105135760405162461bcd60e51b815260040161044290611307565b5f196002819055600355565b5f546001600160a01b031633146105485760405162461bcd60e51b815260040161044290611307565b600a54600160a01b900460ff16156105a25760405162461bcd60e51b815260206004820152601860248201527f5472616465696e6720616c726561647920616c6c6f77656400000000000000006044820152606401610442565b305f908152600660205260409020546105bb9047610845565b601e600c819055600e819055600f55600a805460ff60a01b1916600160a01b179055565b5f610338338484610720565b6001600160a01b03831661064d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610442565b6001600160a01b0382166106ae5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610442565b6001600160a01b038381165f8181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6107198284611350565b9392505050565b61072b8383836108fc565b6107358383610a28565b610740838383610aca565b61074b838383610bb3565b610756838383610c3d565b5f80610763858585610c7a565b6001600160a01b0387165f90815260066020526040902054919350915061078a908361070e565b6001600160a01b038087165f9081526006602052604080822093909355908616815220546107b89082610dad565b6001600160a01b038086165f8181526006602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061080b9085815260200190565b60405180910390a35050505050565b5f818484111561083d5760405162461bcd60e51b815260040161044291906111d6565b505050900390565b60095461085d9030906001600160a01b0316846105eb565b60095460125460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0362010000909204821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156108d0573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906108f59190611363565b5050505050565b6001600160a01b0383166109605760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610442565b6001600160a01b0382166109c25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610442565b5f8111610a235760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610442565b505050565b6001600160a01b0382165f9081526008602052604090205460ff16158015610a6857506001600160a01b0381165f9081526008602052604090205460ff16155b15610ac657600a54600160a01b900460ff16610ac65760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f7420616c6c6f776564207965740000000000000000006044820152606401610442565b5050565b6001600160a01b0383165f9081526008602052604090205460ff16158015610b0a57506001600160a01b0382165f9081526008602052604090205460ff16155b8015610b245750600a546001600160a01b03838116911614155b8015610b3b57506001600160a01b03821661dead14155b15610a23576003546001600160a01b0383165f90815260066020526040902054610b659083610dad565b1115610a235760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610442565b60025481111580610bdb57506001600160a01b0383165f9081526008602052604090205460ff165b80610bfd57506001600160a01b0382165f9081526008602052604090205460ff165b610a235760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610442565b610c48838383610db8565b15610a2357305f90815260066020526040902054600454811115610c6b57506004545b610c7481610e5d565b50505050565b5f808280826001600160a01b0388163014801590610ca157506001600160a01b0387163014155b15610da057610cb08888610fe2565b15610d6d575f610cc08989611026565b1115610d6857610ce7610cd38989611026565b601154610ce1908990611070565b9061107b565b305f90815260066020526040902054909150610d039082610dad565b305f81815260066020526040908190209290925590516001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d539085815260200190565b60405180910390a3610d65868261070e565b91505b610da0565b600a546001600160a01b038881169116148015610d9757505f546001600160a01b03898116911614155b15610da0578092505b5090969095509350505050565b5f610719828461138e565b600554305f908152600660205260408120546012549192808510159291101590610100900460ff16158015610def575060125460ff165b8015610e045750600a54600160a01b900460ff165b8015610e0d5750815b8015610e3157506001600160a01b0386165f9081526008602052604090205460ff16155b8015610e4a5750600a546001600160a01b038681169116145b8015610e535750805b9695505050505050565b6012805461ff001916610100179055600d54600c54600b545f92610e9692600292610ce19291610e909182906001610dad565b90610dad565b90505f610eb882610eb2600b548661107b90919063ffffffff16565b90611070565b90505f610ec5848361070e565b905047610ed182611086565b5f610edc478361070e565b90505f610efe610ef7600b548861070e90919063ffffffff16565b8390611070565b90505f610f16600b548361107b90919063ffffffff16565b90508015610f2857610f288682610845565b600c545f90610f3c90610ce185600261107b565b90508015610f845760405173086867adc0d3951d444e5b7f8729ea013348561e9082156108fc029083905f818181858888f19350505050158015610f82573d5f803e3d5ffd5b505b478015610fcb5760405173086867adc0d3951d444e5b7f8729ea013348561e9082156108fc029083905f818181858888f19350505050158015610fc9573d5f803e3d5ffd5b505b50506012805461ff00191690555050505050505050565b6001600160a01b0382165f9081526008602052604081205460ff161580156107195750506001600160a01b03165f9081526008602052604090205460ff1615919050565b600a545f906001600160a01b03908116908316036110475750600f5461033c565b600a546001600160a01b03908116908416036110665750600e5461033c565b5060105492915050565b5f61071982846113a1565b5f61071982846113c0565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106110b9576110b96113d7565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611110573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061113491906113eb565b81600181518110611147576111476113d7565b6001600160a01b03928316602091820292909201015260095461116d91309116846105eb565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac947906111a59085905f90869030904290600401611406565b5f604051808303815f87803b1580156111bc575f80fd5b505af11580156111ce573d5f803e3d5ffd5b505050505050565b5f602080835283518060208501525f5b81811015611202578581018301518582016040015282016111e6565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610476575f80fd5b5f8060408385031215611247575f80fd5b823561125281611222565b946020939093013593505050565b5f805f60608486031215611272575f80fd5b833561127d81611222565b9250602084013561128d81611222565b929592945050506040919091013590565b5f602082840312156112ae575f80fd5b5035919050565b5f602082840312156112c5575f80fd5b813561071981611222565b5f80604083850312156112e1575f80fd5b82356112ec81611222565b915060208301356112fc81611222565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561033c5761033c61133c565b5f805f60608486031215611375575f80fd5b8351925060208401519150604084015190509250925092565b8082018082111561033c5761033c61133c565b5f826113bb57634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761033c5761033c61133c565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156113fb575f80fd5b815161071981611222565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156114565784516001600160a01b031683529383019391830191600101611431565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e0bbe7cd9f9148120d2f03b773f124ad44a7eaf2cc3b6279d13e34b6125f65ce64736f6c63430008160033

Deployed Bytecode Sourcemap

6237:11439:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8355:83;;;;;;;;;;-1:-1:-1;8425:5:0;;;;;;;;;;;;-1:-1:-1;;;8425:5:0;;;;8355:83;;;;;;;:::i;:::-;;;;;;;;9156:191;;;;;;;;;;-1:-1:-1;9156:191:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;9156:191:0;1023:187:1;9355:148:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;9355:148:0;1215:177:1;16854:442:0;;;;;;;;;;-1:-1:-1;16854:442:0;;;;;:::i;:::-;;:::i;8541:83::-;;;;;;;;;;-1:-1:-1;8541:83:0;;6439:1;2000:36:1;;1988:2;1973:18;8541:83:0;1858:184:1;11109:219:0;;;;;;;;;;-1:-1:-1;11109:219:0;;;;;:::i;:::-;;:::i;:::-;;8632:119;;;;;;;;;;-1:-1:-1;8632:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;8725:18:0;8698:7;8725:18;;;:9;:18;;;;;;;8632:119;4513:148;;;;;;;;;;;;;:::i;10652:137::-;;;;;;;;;;;;;:::i;10797:304::-;;;;;;;;;;;;;:::i;4299:79::-;;;;;;;;;;-1:-1:-1;4337:7:0;4364:6;-1:-1:-1;;;;;4364:6:0;4299:79;;;-1:-1:-1;;;;;2648:32:1;;;2630:51;;2618:2;2603:18;4299:79:0;2484:203:1;8446:87:0;;;;;;;;;;-1:-1:-1;8518:7:0;;;;;;;;;;;;-1:-1:-1;;;8518:7:0;;;;8446:87;;6968:19;;;;;;;;;;-1:-1:-1;6968:19:0;;;;-1:-1:-1;;;;;6968:19:0;;;8759:197;;;;;;;;;;-1:-1:-1;8759:197:0;;;;;:::i;:::-;;:::i;8964:184::-;;;;;;;;;;-1:-1:-1;8964:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;9113:18:0;;;9081:7;9113:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8964:184;9156:191;9258:4;9280:37;9289:10;9301:7;9310:6;9280:8;:37::i;:::-;-1:-1:-1;9335:4:0;9156:191;;;;;:::o;9355:148::-;8725:9;:18;;;;7532:42;9408:7;8725:18;;;;;9435:12;;9408:7;;9435:60;;8725:18;;9435:33;;:12;:16;:33::i;:::-;:37;;:60::i;:::-;9428:67;;9355:148;:::o;16854:442::-;16986:4;17003:36;17013:6;17021:9;17032:6;17003:9;:36::i;:::-;17050:216;17073:6;17094:10;17119:136;17173:6;17119:136;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17119:19:0;;;;;;:11;:19;;;;;;;;17139:10;17119:31;;;;;;;;;:136;:35;:136::i;:::-;17050:8;:216::i;:::-;-1:-1:-1;17284:4:0;16854:442;;;;;:::o;11109:219::-;4426:6;;-1:-1:-1;;;;;4426:6:0;374:10;4426:22;4418:67;;;;-1:-1:-1;;;4418:67:0;;;;;;;:::i;:::-;;;;;;;;;11176:13:::1;:24:::0;;;11211:9:::1;:20:::0;;;11242:10:::1;:21:::0;;;11297:2:::1;11284:15:::0;::::1;::::0;::::1;::::0;:35:::1;;;11317:2;11303:10;;:16;;11284:35;11276:44;;;::::0;::::1;;11109:219:::0;:::o;4513:148::-;4426:6;;-1:-1:-1;;;;;4426:6:0;374:10;4426:22;4418:67;;;;-1:-1:-1;;;4418:67:0;;;;;;;:::i;:::-;4620:1:::1;4604:6:::0;;4583:40:::1;::::0;-1:-1:-1;;;;;4604:6:0;;::::1;::::0;4583:40:::1;::::0;4620:1;;4583:40:::1;4651:1;4634:19:::0;;-1:-1:-1;;;;;;4634:19:0::1;::::0;;4513:148::o;10652:137::-;4426:6;;-1:-1:-1;;;;;4426:6:0;374:10;4426:22;4418:67;;;;-1:-1:-1;;;4418:67:0;;;;;;;:::i;:::-;-1:-1:-1;;10706:10:0::1;:30:::0;;;10747:14:::1;:34:::0;10652:137::o;10797:304::-;4426:6;;-1:-1:-1;;;;;4426:6:0;374:10;4426:22;4418:67;;;;-1:-1:-1;;;4418:67:0;;;;;;;:::i;:::-;10860:15:::1;::::0;-1:-1:-1;;;10860:15:0;::::1;;;10859:16;10851:53;;;::::0;-1:-1:-1;;;10851:53:0;;3648:2:1;10851:53:0::1;::::0;::::1;3630:21:1::0;3687:2;3667:18;;;3660:30;3726:26;3706:18;;;3699:54;3770:18;;10851:53:0::1;3446:348:1::0;10851:53:0::1;10948:4;8698:7:::0;8725:18;;;:9;:18;;;;;;10917:61:::1;::::0;10956:21:::1;10917:12;:61::i;:::-;11007:2;10991:13;:18:::0;;;11020:9:::1;:14:::0;;;11045:10:::1;:15:::0;11071::::1;:22:::0;;-1:-1:-1;;;;11071:22:0::1;-1:-1:-1::0;;;11071:22:0::1;::::0;;10797:304::o;8759:197::-;8864:4;8886:40;8896:10;8908:9;8919:6;8886:9;:40::i;17304:369::-;-1:-1:-1;;;;;17431:19:0;;17423:68;;;;-1:-1:-1;;;17423:68:0;;4001:2:1;17423: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;;17423:68:0;3799:400:1;17423:68:0;-1:-1:-1;;;;;17510:21:0;;17502:68;;;;-1:-1:-1;;;17502:68:0;;4406:2:1;17502: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;;17502:68:0;4204:398:1;17502:68:0;-1:-1:-1;;;;;17581:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;17633:32;;1361:25:1;;;17633:32:0;;1334:18:1;17633:32:0;;;;;;;17304:369;;;:::o;529:98::-;587:7;614:5;618:1;614;:5;:::i;:::-;607:12;529:98;-1:-1:-1;;;529:98:0:o;9930:714::-;10053:37;10064:6;10072:9;10083:6;10053:10;:37::i;:::-;10101:36;10119:6;10127:9;10101:17;:36::i;:::-;10148:41;10163:6;10171:9;10182:6;10148:14;:41::i;:::-;10200:39;10213:6;10221:9;10232:6;10200:12;:39::i;:::-;10250:42;10266:6;10274:9;10285:6;10250:15;:42::i;:::-;10304:18;10324:22;10350:89;10377:6;10398:9;10422:6;10350:12;:89::i;:::-;-1:-1:-1;;;;;10470:17:0;;;;;;:9;:17;;;;;;10303:136;;-1:-1:-1;10303:136:0;-1:-1:-1;10470:33:0;;10303:136;10470:21;:33::i;:::-;-1:-1:-1;;;;;10450:17:0;;;;;;;:9;:17;;;;;;:53;;;;10537:20;;;;;;;:40;;10562:14;10537:24;:40::i;:::-;-1:-1:-1;;;;;10514:20:0;;;;;;;:9;:20;;;;;;;:63;;;;10593:43;;;;;;;;;;10621:14;1361:25:1;;1349:2;1334:18;;1215:177;10593:43:0;;;;;;;;10042:602;;9930:714;;;:::o;2229:240::-;2349:7;2410:12;2402:6;;;;2394:29;;;;-1:-1:-1;;;2394:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2445:5:0;;;2229:240::o;13617:346::-;13730:6;;13698:53;;13715:4;;-1:-1:-1;;;;;13730:6:0;13739:11;13698:8;:53::i;:::-;13762:6;;13903:11;;13762:193;;-1:-1:-1;;;13762:193:0;;13825:4;13762:193;;;5213:34:1;5263:18;;;5256:34;;;-1:-1:-1;5306:18:1;;;5299:34;;;5349:18;;;5342:34;-1:-1:-1;;;;;13903:11:0;;;;;;5392:19:1;;;5385:44;13929:15:0;5445:19:1;;;5438:35;13762:6:0;;;:22;;13792:9;;5147:19:1;;13762:193:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13617:346;;:::o;9511:411::-;-1:-1:-1;;;;;9649:20:0;;9641:70;;;;-1:-1:-1;;;9641:70:0;;5997:2:1;9641: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;;9641:70:0;5795:401:1;9641:70:0;-1:-1:-1;;;;;9730:23:0;;9722:71;;;;-1:-1:-1;;;9722:71:0;;6403:2:1;9722: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;;9722:71:0;6201:399:1;9722:71:0;9843:1;9826:6;:19;9804:110;;;;-1:-1:-1;;;9804:110:0;;6807:2:1;9804: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;;9804:110:0;6605:405:1;9804:110:0;9511:411;;;:::o;11336:258::-;-1:-1:-1;;;;;11451:24:0;;;;;;:16;:24;;;;;;;;11450:25;:57;;;;-1:-1:-1;;;;;;11480:27:0;;;;;;:16;:27;;;;;;;;11479:28;11450:57;11446:141;;;11532:15;;-1:-1:-1;;;11532:15:0;;;;11524:51;;;;-1:-1:-1;;;11524:51:0;;7217:2:1;11524:51:0;;;7199:21:1;7256:2;7236:18;;;7229:30;7295:25;7275:18;;;7268:53;7338:18;;11524:51:0;7015:347:1;11524:51:0;11336:258;;:::o;11602:498::-;-1:-1:-1;;;;;11755:24:0;;;;;;:16;:24;;;;;;;;11754:25;:70;;;;-1:-1:-1;;;;;;11797:27:0;;;;;;:16;:27;;;;;;;;11796:28;11754:70;:113;;;;-1:-1:-1;11862:4:0;;-1:-1:-1;;;;;11841:26:0;;;11862:4;;11841:26;;11754:113;:156;;;;-1:-1:-1;;;;;;11884:26:0;;7532:42;11884:26;;11754:156;11736:357;;;12001:14;;-1:-1:-1;;;;;11964:20:0;;;;;;:9;:20;;;;;;:32;;11989:6;11964:24;:32::i;:::-;11963:52;;11937:144;;;;-1:-1:-1;;;11937:144:0;;7569:2:1;11937:144:0;;;7551:21:1;7608:2;7588:18;;;7581:30;7647:32;7627:18;;;7620:60;7697:18;;11937:144:0;7367:354:1;12108:320:0;12272:10;;12262:6;:20;;:65;;;-1:-1:-1;;;;;;12303:24:0;;;;;;:16;:24;;;;;;;;12262:65;:113;;;-1:-1:-1;;;;;;12348:27:0;;;;;;:16;:27;;;;;;;;12262:113;12240:180;;;;-1:-1:-1;;;12240:180:0;;7928:2:1;12240:180:0;;;7910:21:1;7967:2;7947:18;;;7940:30;-1:-1:-1;;;7986:18:1;;;7979:47;8043:18;;12240:180:0;7726:341:1;14935:369:0;15069:41;15084:6;15092:9;15103:6;15069:14;:41::i;:::-;15065:232;;;15166:4;15127:18;8725;;;:9;:18;;;;;;15204:12;;15191:25;;15187:56;;;-1:-1:-1;15231:12:0;;15187:56;15258:27;15274:10;15258:15;:27::i;:::-;15112:185;14935:369;;;:::o;15846:1000::-;15968:7;;16015:6;;15968:7;-1:-1:-1;;;;;16097:23:0;;16115:4;16097:23;;;;:50;;-1:-1:-1;;;;;;16124:23:0;;16142:4;16124:23;;16097:50;16093:710;;;16168:30;16183:6;16191;16168:14;:30::i;:::-;16164:628;;;16257:1;16223:31;16239:6;16247;16223:15;:31::i;:::-;:35;16219:459;;;16293:108;16347:31;16363:6;16371;16347:15;:31::i;:::-;16304:11;;16293:23;;:6;;:10;:23::i;:::-;:27;;:108::i;:::-;16469:4;16451:24;;;;:9;:24;;;;;;16283:118;;-1:-1:-1;16451:85:0;;16283:118;16451:28;:85::i;:::-;16442:4;16424:24;;;;:9;:24;;;;;;;:112;;;;16564:40;;-1:-1:-1;;;;;16564:40:0;;;;;;;16596:7;1361:25:1;;1349:2;1334:18;;1215:177;16564:40:0;;;;;;;;16639:19;:6;16650:7;16639:10;:19::i;:::-;16629:29;;16219:459;16164:628;;;16732:4;;-1:-1:-1;;;;;16722:14:0;;;16732:4;;16722:14;:35;;;;-1:-1:-1;4337:7:0;4364:6;-1:-1:-1;;;;;16740:17:0;;;4364:6;;16740:17;;16722:35;16718:58;;;16769:7;16759:17;;16718:58;-1:-1:-1;16821:7:0;;;;-1:-1:-1;15846:1000:0;-1:-1:-1;;;;15846:1000:0:o;423:98::-;481:7;508:5;512:1;508;:5;:::i;14423:504::-;14598:12;;14661:4;14555;8725:18;;;:9;:18;;;;;;14715:11;;14555:4;;14588:22;;;;;-1:-1:-1;;14643:40:0;;14715:11;;;;;14714:12;:41;;;;-1:-1:-1;14743:12:0;;;;14714:41;:73;;;;-1:-1:-1;14772:15:0;;-1:-1:-1;;;14772:15:0;;;;14714:73;:98;;;;;14804:8;14714:98;:140;;;;-1:-1:-1;;;;;;14830:24:0;;;;;;:16;:24;;;;;;;;14829:25;14714:140;:174;;;;-1:-1:-1;14884:4:0;;-1:-1:-1;;;;;14871:17:0;;;14884:4;;14871:17;14714:174;:205;;;;;14905:14;14714:205;14694:225;14423:504;-1:-1:-1;;;;;;14423:504:0:o;12436:1173::-;7423:11;:18;;-1:-1:-1;;7423:18:0;;;;;12596:14:::1;::::0;12577:13:::1;::::0;12546:19:::1;::::0;7423:18;;12531:98:::1;::::0;12627:1:::1;::::0;12546:65:::1;::::0;12596:14;12546:45:::1;::::0;;;7437:4;12546:23:::1;:26::i;:::-;:30:::0;::::1;:45::i;12531:98::-;12508:121;;12640:32;12675:73;12725:12;12675:31;12686:19;;12675:6;:10;;:31;;;;:::i;:::-;:35:::0;::::1;:73::i;:::-;12640:108:::0;-1:-1:-1;12759:14:0::1;12776:36;:6:::0;12640:108;12776:10:::1;:36::i;:::-;12759:53:::0;-1:-1:-1;12848:21:0::1;12880:24;12759:53:::0;12880:16:::1;:24::i;:::-;12915:20;12938:41;:21;12964:14:::0;12938:25:::1;:41::i;:::-;12915:64;;12990:19;13012:55;13029:37;13046:19;;13029:12;:16;;:37;;;;:::i;:::-;13012:12:::0;;:16:::1;:55::i;:::-;12990:77;;13078:19;13100:36;13116:19;;13100:11;:15;;:36;;;;:::i;:::-;13078:58:::0;-1:-1:-1;13151:24:0;;13147:108:::1;;13192:51;13205:24;13231:11;13192:12;:51::i;:::-;13311:13;::::0;13265:20:::1;::::0;13288:37:::1;::::0;:18:::1;:11:::0;13304:1:::1;13288:15;:18::i;:37::-;13265:60:::0;-1:-1:-1;13340:16:0;;13336:90:::1;;13373:41;::::0;7619:42:::1;::::0;13373:41;::::1;;;::::0;13401:12;;13373:41:::1;::::0;;;13401:12;7619:42;13373:41;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;13336:90;13463:21;13499:29:::0;;13495:107:::1;;13545:45;::::0;7619:42:::1;::::0;13545:45;::::1;;;::::0;13573:16;;13545:45:::1;::::0;;;13573:16;7619:42;13545:45;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;13495:107;-1:-1:-1::0;;7464:11:0;:19;;-1:-1:-1;;7464:19:0;;;-1:-1:-1;;;;;;;;12436:1173:0:o;15635:203::-;-1:-1:-1;;;;;15774:24:0;;15744:4;15774:24;;;:16;:24;;;;;;;;15773:25;:57;;;;-1:-1:-1;;;;;;;15803:27:0;;;;;:16;:27;;;;;;;;15802:28;;15635:203;-1:-1:-1;15635:203:0:o;15312:315::-;15464:4;;15422:7;;-1:-1:-1;;;;;15464:4:0;;;15451:17;;;;15447:67;;-1:-1:-1;15492:10:0;;15485:17;;15447:67;15538:4;;-1:-1:-1;;;;;15538:4:0;;;15528:14;;;;15524:63;;-1:-1:-1;15566:9:0;;15559:16;;15524:63;-1:-1:-1;15604:15:0;;15312:315;;;;:::o;741:98::-;799:7;826:5;830:1;826;:5;:::i;635:98::-;693:7;720:5;724:1;720;:5;:::i;13971:444::-;14061:16;;;14075:1;14061:16;;;;;;;;14037:21;;14061:16;;;;;;;;;;-1:-1:-1;14061:16:0;14037:40;;14106:4;14088;14093:1;14088:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14088:23:0;;;:7;;;;;;;;;;:23;;;;14132:6;;:13;;;-1:-1:-1;;;14132:13:0;;;;:6;;;;;:11;;:13;;;;;14088:7;;14132:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14122:4;14127:1;14122:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14122:23:0;;;:7;;;;;;;;;:23;14188:6;;14156:53;;14173:4;;14188:6;14197:11;14156:8;:53::i;:::-;14220:6;;:187;;-1:-1:-1;;;14220:187:0;;-1:-1:-1;;;;;14220:6:0;;;;:57;;:187;;14292:11;;14220:6;;14334:4;;14361;;14381:15;;14220:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14026:389;13971: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://e0bbe7cd9f9148120d2f03b773f124ad44a7eaf2cc3b6279d13e34b6125f65ce
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.