ETH Price: $3,305.34 (-3.75%)
Gas: 19 Gwei

Token

Safe Scan AI (SSAI)
 

Overview

Max Total Supply

100,000,000 SSAI

Holders

170

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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

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

Contract Source Code Verified (Exact Match)

Contract Name:
SafeScanAI

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-30
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;

/*


 ███████╗ █████╗ ███████╗███████╗    ███████╗ ██████╗ █████╗ ███╗   ██╗     █████╗ ██╗
 ██╔════╝██╔══██╗██╔════╝██╔════╝    ██╔════╝██╔════╝██╔══██╗████╗  ██║    ██╔══██╗██║
 ███████╗███████║█████╗  █████╗      ███████╗██║     ███████║██╔██╗ ██║    ███████║██║
 ╚════██║██╔══██║██╔══╝  ██╔══╝      ╚════██║██║     ██╔══██║██║╚██╗██║    ██╔══██║██║
 ███████║██║  ██║██║     ███████╗    ███████║╚██████╗██║  ██║██║ ╚████║    ██║  ██║██║
 ╚══════╝╚═╝  ╚═╝╚═╝     ╚══════╝    ╚══════╝ ╚═════╝╚═╝  ╚═╝╚═╝  ╚═══╝    ╚═╝  ╚═╝╚═╝


Website:  https://safescanai.com/
Telegram:  https://t.me/safescanai
Twitter:  https://twitter.com/SafeScanAI
Dapp:  https://app.safescanai.com/
Docs:  https://safe-scan-ai.gitbook.io/
*/

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, 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, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

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

}

abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

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

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public _isExcludedFromFee;

    uint8 private constant _decimals = 18;
    uint256 private constant _tTotal = 100000000 * 10**_decimals; 
    string private constant _name = unicode"Safe Scan AI";  
    string private constant _symbol = unicode"SSAI"; 
    uint256 public _taxSwapThreshold= 100000 * 10**_decimals;
    uint256 public walletLimit = 2000000 * 10 ** decimals();

    uint256 public _feeOnBuy = 5; //on buy fee
    uint256 public _feeOnSell = 5; // on sell fee
    uint256 public _feeOnTransfer = 5; //on transfer fee

    address payable public projectFeeWallet = payable(0x76F1201da8263b3AE42aBA58513a77fD9445544c);

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private inSwap = false;
    bool private swapEnabled = true;

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // mainnet router address
        
        // Create a uniswap pair for this new token
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        // set the rest of the contract variables
        uniswapV2Router = _uniswapV2Router;

        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[projectFeeWallet] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    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 totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), 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(_msgSender(), spender, amount);
        return true;
    }

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

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount=0;
        if (!_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {

            if(to != uniswapV2Pair){
               require(balanceOf(to) + amount <= walletLimit, "Higher than the walletLimit for tokens");
            }

            if(_feeOnBuy > 0) {
            if (from == uniswapV2Pair && to != address(uniswapV2Router)) {
                taxAmount = amount.mul(_feeOnBuy).div(100);
            }
            }

            if(_feeOnTransfer > 0) {
            if(to != uniswapV2Pair && from != uniswapV2Pair) {
                taxAmount = amount.mul(_feeOnTransfer).div(100);
            }
            }

            if(_feeOnSell > 0) {
            if(to == uniswapV2Pair){
                taxAmount = amount.mul(_feeOnSell).div(100);
            }
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance>_taxSwapThreshold) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        if(taxAmount>0){
          _balances[address(this)]=_balances[address(this)].add(taxAmount);
          emit Transfer(from, address(this),taxAmount);
        }
        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }


    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        if(tokenAmount==0){return;}
        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 sendETHToFee(uint256 amount) private {
       (bool callSuccess, ) = payable(projectFeeWallet).call{value: amount}("");
        require(callSuccess, "Call failed");
    }

    receive() external payable {}

    function changeWalletLimit(uint256 _Limit) public onlyOwner{
        require(_Limit > totalSupply().div(200),"Limit very low");
        walletLimit = _Limit;
    }

    function changeTaxFees(uint256 _bFee, uint256 _sFee) public onlyOwner {
        require(_bFee <= 40 && _sFee <= 40, "Exceeds value");
        _feeOnBuy = _bFee;
        _feeOnSell = _sFee;
    }
    
    }

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":[],"name":"_feeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_feeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_feeOnTransfer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","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":[{"internalType":"uint256","name":"_bFee","type":"uint256"},{"internalType":"uint256","name":"_sFee","type":"uint256"}],"name":"changeTaxFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Limit","type":"uint256"}],"name":"changeWalletLimit","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":"projectFeeWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","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":"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"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"walletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126012600a62000496565b6200002190620186a0620004ad565b600455620000326012600a62000496565b6200004190621e8480620004ad565b600590815560068190556007819055600855600980546001600160a01b0319167376f1201da8263b3ae42aba58513a77fd9445544c179055600b805461ffff60a01b1916600160a81b17905534801562000099575f80fd5b50620000a53362000338565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000fa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001209190620004c7565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200016c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001929190620004c7565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620001dd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002039190620004c7565b600b80546001600160a01b03199081166001600160a01b0393841617909155600a8054909116918316919091178155620002409060129062000496565b62000250906305f5e100620004ad565b335f908152600160208190526040822092909255600390620002795f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790553081526003909352818320805485166001908117909155600954909116835291208054909216179055620002d73390565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620003106012600a62000496565b62000320906305f5e100620004ad565b60405190815260200160405180910390a350620004ef565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620003db57815f1904821115620003bf57620003bf62000387565b80851615620003cd57918102915b93841c9390800290620003a0565b509250929050565b5f82620003f35750600162000490565b816200040157505f62000490565b81600181146200041a5760028114620004255762000445565b600191505062000490565b60ff84111562000439576200043962000387565b50506001821b62000490565b5060208310610133831016604e8410600b84101617156200046a575081810a62000490565b6200047683836200039b565b805f19048211156200048c576200048c62000387565b0290505b92915050565b5f620004a660ff841683620003e3565b9392505050565b808202811582820484141762000490576200049062000387565b5f60208284031215620004d8575f80fd5b81516001600160a01b0381168114620004a6575f80fd5b61141080620004fd5f395ff3fe608060405260043610610129575f3560e01c806370a08231116100a85780638da5cb5b1161006d5780638da5cb5b1461034657806395d89b4114610362578063a9059cbb1461038e578063bf474bed146103ad578063dd62ed3e146103c2578063f2fde38b14610406575f80fd5b806370a0823114610290578063715018a6146102c4578063768dc710146102da5780637db1342c1461030857806389fe9a7214610327575f80fd5b8063291c5768116100ee578063291c576814610221578063313ce567146102365780633387ae48146102515780633c8463a11461026657806348cac36a1461027b575f80fd5b806306fdde0314610134578063095ea7b31461017a57806314c83aee146101a957806318160ddd146101e057806323b872dd14610202575f80fd5b3661013057005b5f80fd5b34801561013f575f80fd5b5060408051808201909152600c81526b53616665205363616e20414960a01b60208201525b6040516101719190611063565b60405180910390f35b348015610185575f80fd5b506101996101943660046110c3565b610425565b6040519015158152602001610171565b3480156101b4575f80fd5b506009546101c8906001600160a01b031681565b6040516001600160a01b039091168152602001610171565b3480156101eb575f80fd5b506101f461043b565b604051908152602001610171565b34801561020d575f80fd5b5061019961021c3660046110ed565b61045b565b34801561022c575f80fd5b506101f460065481565b348015610241575f80fd5b5060405160128152602001610171565b34801561025c575f80fd5b506101f460075481565b348015610271575f80fd5b506101f460055481565b348015610286575f80fd5b506101f460085481565b34801561029b575f80fd5b506101f46102aa36600461112b565b6001600160a01b03165f9081526001602052604090205490565b3480156102cf575f80fd5b506102d86104c2565b005b3480156102e5575f80fd5b506101996102f436600461112b565b60036020525f908152604090205460ff1681565b348015610313575f80fd5b506102d8610322366004611146565b6104d5565b348015610332575f80fd5b506102d861034136600461115d565b610539565b348015610351575f80fd5b505f546001600160a01b03166101c8565b34801561036d575f80fd5b506040805180820190915260048152635353414960e01b6020820152610164565b348015610399575f80fd5b506101996103a83660046110c3565b61059a565b3480156103b8575f80fd5b506101f460045481565b3480156103cd575f80fd5b506101f46103dc36600461117d565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610411575f80fd5b506102d861042036600461112b565b6105a6565b5f61043133848461061f565b5060015b92915050565b5f6104486012600a6112a8565b610456906305f5e1006112b6565b905090565b5f610467848484610742565b6104b884336104b3856040518060600160405280602881526020016113b3602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190610be9565b61061f565b5060019392505050565b6104ca610c21565b6104d35f610c7a565b565b6104dd610c21565b6104f060c86104ea61043b565b90610cc9565b81116105345760405162461bcd60e51b815260206004820152600e60248201526d4c696d69742076657279206c6f7760901b60448201526064015b60405180910390fd5b600555565b610541610c21565b60288211158015610553575060288111155b61058f5760405162461bcd60e51b815260206004820152600d60248201526c457863656564732076616c756560981b604482015260640161052b565b600691909155600755565b5f610431338484610742565b6105ae610c21565b6001600160a01b0381166106135760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161052b565b61061c81610c7a565b50565b6001600160a01b0383166106815760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161052b565b6001600160a01b0382166106e25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161052b565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166107a65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161052b565b6001600160a01b0382166108085760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161052b565b5f81116108695760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161052b565b6001600160a01b0383165f9081526003602052604081205460ff161580156108a957506001600160a01b0383165f9081526003602052604090205460ff16155b15610aac57600b546001600160a01b0384811691161461094c57600554826108e5856001600160a01b03165f9081526001602052604090205490565b6108ef91906112cd565b111561094c5760405162461bcd60e51b815260206004820152602660248201527f486967686572207468616e207468652077616c6c65744c696d697420666f7220604482015265746f6b656e7360d01b606482015260840161052b565b600654156109a157600b546001600160a01b03858116911614801561097f5750600a546001600160a01b03848116911614155b156109a15761099e60646104ea60065485610d1190919063ffffffff16565b90505b600854156109f757600b546001600160a01b038481169116148015906109d55750600b546001600160a01b03858116911614155b156109f7576109f460646104ea60085485610d1190919063ffffffff16565b90505b60075415610a3257600b546001600160a01b0390811690841603610a3257610a2f60646104ea60075485610d1190919063ffffffff16565b90505b305f90815260016020526040902054600b54600160a01b900460ff16158015610a685750600b546001600160a01b038581169116145b8015610a7d5750600b54600160a81b900460ff165b8015610a8a575060045481115b15610aaa57610a9881610d8f565b478015610aa857610aa847610f06565b505b505b8015610b2457305f90815260016020526040902054610acb9082610f98565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b1b9085815260200190565b60405180910390a35b6001600160a01b0384165f90815260016020526040902054610b469083610ff6565b6001600160a01b0385165f90815260016020526040902055610b89610b6b8383610ff6565b6001600160a01b0385165f9081526001602052604090205490610f98565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610bd28585610ff6565b60405190815260200160405180910390a350505050565b5f8184841115610c0c5760405162461bcd60e51b815260040161052b9190611063565b505f610c1884866112e0565b95945050505050565b5f546001600160a01b031633146104d35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161052b565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f610d0a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611037565b9392505050565b5f825f03610d2057505f610435565b5f610d2b83856112b6565b905082610d3885836112f3565b14610d0a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161052b565b600b805460ff60a01b1916600160a01b1790558015610ef6576040805160028082526060820183525f9260208301908036833701905050905030815f81518110610ddb57610ddb611312565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610e32573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e569190611326565b81600181518110610e6957610e69611312565b6001600160a01b039283166020918202929092010152600a54610e8f913091168461061f565b600a5460405163791ac94760e01b81526001600160a01b039091169063791ac94790610ec79085905f90869030904290600401611341565b5f604051808303815f87803b158015610ede575f80fd5b505af1158015610ef0573d5f803e3d5ffd5b50505050505b50600b805460ff60a01b19169055565b6009546040515f916001600160a01b03169083908381818185875af1925050503d805f8114610f50576040519150601f19603f3d011682016040523d82523d5f602084013e610f55565b606091505b5050905080610f945760405162461bcd60e51b815260206004820152600b60248201526a10d85b1b0819985a5b195960aa1b604482015260640161052b565b5050565b5f80610fa483856112cd565b905083811015610d0a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161052b565b5f610d0a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610be9565b5f81836110575760405162461bcd60e51b815260040161052b9190611063565b505f610c1884866112f3565b5f602080835283518060208501525f5b8181101561108f57858101830151858201604001528201611073565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461061c575f80fd5b5f80604083850312156110d4575f80fd5b82356110df816110af565b946020939093013593505050565b5f805f606084860312156110ff575f80fd5b833561110a816110af565b9250602084013561111a816110af565b929592945050506040919091013590565b5f6020828403121561113b575f80fd5b8135610d0a816110af565b5f60208284031215611156575f80fd5b5035919050565b5f806040838503121561116e575f80fd5b50508035926020909101359150565b5f806040838503121561118e575f80fd5b8235611199816110af565b915060208301356111a9816110af565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561120257815f19048211156111e8576111e86111b4565b808516156111f557918102915b93841c93908002906111cd565b509250929050565b5f8261121857506001610435565b8161122457505f610435565b816001811461123a576002811461124457611260565b6001915050610435565b60ff841115611255576112556111b4565b50506001821b610435565b5060208310610133831016604e8410600b8410161715611283575081810a610435565b61128d83836111c8565b805f19048211156112a0576112a06111b4565b029392505050565b5f610d0a60ff84168361120a565b8082028115828204841417610435576104356111b4565b80820180821115610435576104356111b4565b81810381811115610435576104356111b4565b5f8261130d57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611336575f80fd5b8151610d0a816110af565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156113915784516001600160a01b03168352938301939183019160010161136c565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122078e2c2e470d98ddae8c4c04147d73de3bc0d76e83fdb41d58690bb1ef737ba9364736f6c63430008180033

Deployed Bytecode

0x608060405260043610610129575f3560e01c806370a08231116100a85780638da5cb5b1161006d5780638da5cb5b1461034657806395d89b4114610362578063a9059cbb1461038e578063bf474bed146103ad578063dd62ed3e146103c2578063f2fde38b14610406575f80fd5b806370a0823114610290578063715018a6146102c4578063768dc710146102da5780637db1342c1461030857806389fe9a7214610327575f80fd5b8063291c5768116100ee578063291c576814610221578063313ce567146102365780633387ae48146102515780633c8463a11461026657806348cac36a1461027b575f80fd5b806306fdde0314610134578063095ea7b31461017a57806314c83aee146101a957806318160ddd146101e057806323b872dd14610202575f80fd5b3661013057005b5f80fd5b34801561013f575f80fd5b5060408051808201909152600c81526b53616665205363616e20414960a01b60208201525b6040516101719190611063565b60405180910390f35b348015610185575f80fd5b506101996101943660046110c3565b610425565b6040519015158152602001610171565b3480156101b4575f80fd5b506009546101c8906001600160a01b031681565b6040516001600160a01b039091168152602001610171565b3480156101eb575f80fd5b506101f461043b565b604051908152602001610171565b34801561020d575f80fd5b5061019961021c3660046110ed565b61045b565b34801561022c575f80fd5b506101f460065481565b348015610241575f80fd5b5060405160128152602001610171565b34801561025c575f80fd5b506101f460075481565b348015610271575f80fd5b506101f460055481565b348015610286575f80fd5b506101f460085481565b34801561029b575f80fd5b506101f46102aa36600461112b565b6001600160a01b03165f9081526001602052604090205490565b3480156102cf575f80fd5b506102d86104c2565b005b3480156102e5575f80fd5b506101996102f436600461112b565b60036020525f908152604090205460ff1681565b348015610313575f80fd5b506102d8610322366004611146565b6104d5565b348015610332575f80fd5b506102d861034136600461115d565b610539565b348015610351575f80fd5b505f546001600160a01b03166101c8565b34801561036d575f80fd5b506040805180820190915260048152635353414960e01b6020820152610164565b348015610399575f80fd5b506101996103a83660046110c3565b61059a565b3480156103b8575f80fd5b506101f460045481565b3480156103cd575f80fd5b506101f46103dc36600461117d565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610411575f80fd5b506102d861042036600461112b565b6105a6565b5f61043133848461061f565b5060015b92915050565b5f6104486012600a6112a8565b610456906305f5e1006112b6565b905090565b5f610467848484610742565b6104b884336104b3856040518060600160405280602881526020016113b3602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190610be9565b61061f565b5060019392505050565b6104ca610c21565b6104d35f610c7a565b565b6104dd610c21565b6104f060c86104ea61043b565b90610cc9565b81116105345760405162461bcd60e51b815260206004820152600e60248201526d4c696d69742076657279206c6f7760901b60448201526064015b60405180910390fd5b600555565b610541610c21565b60288211158015610553575060288111155b61058f5760405162461bcd60e51b815260206004820152600d60248201526c457863656564732076616c756560981b604482015260640161052b565b600691909155600755565b5f610431338484610742565b6105ae610c21565b6001600160a01b0381166106135760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161052b565b61061c81610c7a565b50565b6001600160a01b0383166106815760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161052b565b6001600160a01b0382166106e25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161052b565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166107a65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161052b565b6001600160a01b0382166108085760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161052b565b5f81116108695760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161052b565b6001600160a01b0383165f9081526003602052604081205460ff161580156108a957506001600160a01b0383165f9081526003602052604090205460ff16155b15610aac57600b546001600160a01b0384811691161461094c57600554826108e5856001600160a01b03165f9081526001602052604090205490565b6108ef91906112cd565b111561094c5760405162461bcd60e51b815260206004820152602660248201527f486967686572207468616e207468652077616c6c65744c696d697420666f7220604482015265746f6b656e7360d01b606482015260840161052b565b600654156109a157600b546001600160a01b03858116911614801561097f5750600a546001600160a01b03848116911614155b156109a15761099e60646104ea60065485610d1190919063ffffffff16565b90505b600854156109f757600b546001600160a01b038481169116148015906109d55750600b546001600160a01b03858116911614155b156109f7576109f460646104ea60085485610d1190919063ffffffff16565b90505b60075415610a3257600b546001600160a01b0390811690841603610a3257610a2f60646104ea60075485610d1190919063ffffffff16565b90505b305f90815260016020526040902054600b54600160a01b900460ff16158015610a685750600b546001600160a01b038581169116145b8015610a7d5750600b54600160a81b900460ff165b8015610a8a575060045481115b15610aaa57610a9881610d8f565b478015610aa857610aa847610f06565b505b505b8015610b2457305f90815260016020526040902054610acb9082610f98565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b1b9085815260200190565b60405180910390a35b6001600160a01b0384165f90815260016020526040902054610b469083610ff6565b6001600160a01b0385165f90815260016020526040902055610b89610b6b8383610ff6565b6001600160a01b0385165f9081526001602052604090205490610f98565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610bd28585610ff6565b60405190815260200160405180910390a350505050565b5f8184841115610c0c5760405162461bcd60e51b815260040161052b9190611063565b505f610c1884866112e0565b95945050505050565b5f546001600160a01b031633146104d35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161052b565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f610d0a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611037565b9392505050565b5f825f03610d2057505f610435565b5f610d2b83856112b6565b905082610d3885836112f3565b14610d0a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161052b565b600b805460ff60a01b1916600160a01b1790558015610ef6576040805160028082526060820183525f9260208301908036833701905050905030815f81518110610ddb57610ddb611312565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610e32573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e569190611326565b81600181518110610e6957610e69611312565b6001600160a01b039283166020918202929092010152600a54610e8f913091168461061f565b600a5460405163791ac94760e01b81526001600160a01b039091169063791ac94790610ec79085905f90869030904290600401611341565b5f604051808303815f87803b158015610ede575f80fd5b505af1158015610ef0573d5f803e3d5ffd5b50505050505b50600b805460ff60a01b19169055565b6009546040515f916001600160a01b03169083908381818185875af1925050503d805f8114610f50576040519150601f19603f3d011682016040523d82523d5f602084013e610f55565b606091505b5050905080610f945760405162461bcd60e51b815260206004820152600b60248201526a10d85b1b0819985a5b195960aa1b604482015260640161052b565b5050565b5f80610fa483856112cd565b905083811015610d0a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161052b565b5f610d0a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610be9565b5f81836110575760405162461bcd60e51b815260040161052b9190611063565b505f610c1884866112f3565b5f602080835283518060208501525f5b8181101561108f57858101830151858201604001528201611073565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461061c575f80fd5b5f80604083850312156110d4575f80fd5b82356110df816110af565b946020939093013593505050565b5f805f606084860312156110ff575f80fd5b833561110a816110af565b9250602084013561111a816110af565b929592945050506040919091013590565b5f6020828403121561113b575f80fd5b8135610d0a816110af565b5f60208284031215611156575f80fd5b5035919050565b5f806040838503121561116e575f80fd5b50508035926020909101359150565b5f806040838503121561118e575f80fd5b8235611199816110af565b915060208301356111a9816110af565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561120257815f19048211156111e8576111e86111b4565b808516156111f557918102915b93841c93908002906111cd565b509250929050565b5f8261121857506001610435565b8161122457505f610435565b816001811461123a576002811461124457611260565b6001915050610435565b60ff841115611255576112556111b4565b50506001821b610435565b5060208310610133831016604e8410600b8410161715611283575081810a610435565b61128d83836111c8565b805f19048211156112a0576112a06111b4565b029392505050565b5f610d0a60ff84168361120a565b8082028115828204841417610435576104356111b4565b80820180821115610435576104356111b4565b81810381811115610435576104356111b4565b5f8261130d57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611336575f80fd5b8151610d0a816110af565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156113915784516001600160a01b03168352938301939183019160010161136c565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122078e2c2e470d98ddae8c4c04147d73de3bc0d76e83fdb41d58690bb1ef737ba9364736f6c63430008180033

Deployed Bytecode Sourcemap

6356:6736:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8232:83;;;;;;;;;;-1:-1:-1;8302:5:0;;;;;;;;;;;;-1:-1:-1;;;8302:5:0;;;;8232:83;;;;;;;:::i;:::-;;;;;;;;9065:161;;;;;;;;;;-1:-1:-1;9065:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;9065:161:0;1023:187:1;7150:93:0;;;;;;;;;;-1:-1:-1;7150:93:0;;;;-1:-1:-1;;;;;7150:93:0;;;;;;-1:-1:-1;;;;;1395:32:1;;;1377:51;;1365:2;1350:18;7150:93:0;1215:219:1;8509:95:0;;;;;;;;;;;;;:::i;:::-;;;1585:25:1;;;1573:2;1558:18;8509:95:0;1439:177:1;9234:313:0;;;;;;;;;;-1:-1:-1;9234:313:0;;;;;:::i;:::-;;:::i;6991:28::-;;;;;;;;;;;;;;;;8418:83;;;;;;;;;;-1:-1:-1;8418:83:0;;6670:2;2224:36:1;;2212:2;2197:18;8418:83:0;2082:184:1;7039:29:0;;;;;;;;;;;;;;;;6927:55;;;;;;;;;;;;;;;;7090:33;;;;;;;;;;;;;;;;8612:119;;;;;;;;;;-1:-1:-1;8612:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;8705:18:0;8678:7;8705:18;;;:9;:18;;;;;;;8612:119;4777:103;;;;;;;;;;;;;:::i;:::-;;6575:51;;;;;;;;;;-1:-1:-1;6575:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12707:166;;;;;;;;;;-1:-1:-1;12707:166:0;;;;;:::i;:::-;;:::i;12881:198::-;;;;;;;;;;-1:-1:-1;12881:198:0;;;;;:::i;:::-;;:::i;4136:87::-;;;;;;;;;;-1:-1:-1;4182:7:0;4209:6;-1:-1:-1;;;;;4209:6:0;4136:87;;8323;;;;;;;;;;-1:-1:-1;8395:7:0;;;;;;;;;;;;-1:-1:-1;;;8395:7:0;;;;8323:87;;8739:167;;;;;;;;;;-1:-1:-1;8739:167:0;;;;;:::i;:::-;;:::i;6864:56::-;;;;;;;;;;;;;;;;8914:143;;;;;;;;;;-1:-1:-1;8914:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;9022:18:0;;;8995:7;9022:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8914:143;5035:201;;;;;;;;;;-1:-1:-1;5035:201:0;;;;;:::i;:::-;;:::i;9065:161::-;9140:4;9157:39;1719:10;9180:7;9189:6;9157:8;:39::i;:::-;-1:-1:-1;9214:4:0;9065:161;;;;;:::o;8509:95::-;8562:7;6726:13;6670:2;6726;:13;:::i;:::-;6714:25;;:9;:25;:::i;:::-;8582:14;;8509:95;:::o;9234:313::-;9332:4;9349:36;9359:6;9367:9;9378:6;9349:9;:36::i;:::-;9396:121;9405:6;1719:10;9427:89;9465:6;9427:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9427:19:0;;;;;;:11;:19;;;;;;;;1719:10;9427:33;;;;;;;;;;:37;:89::i;:::-;9396:8;:121::i;:::-;-1:-1:-1;9535:4:0;9234:313;;;;;:::o;4777:103::-;4022:13;:11;:13::i;:::-;4842:30:::1;4869:1;4842:18;:30::i;:::-;4777:103::o:0;12707:166::-;4022:13;:11;:13::i;:::-;12794:22:::1;12812:3;12794:13;:11;:13::i;:::-;:17:::0;::::1;:22::i;:::-;12785:6;:31;12777:57;;;::::0;-1:-1:-1;;;12777:57:0;;5446:2:1;12777:57:0::1;::::0;::::1;5428:21:1::0;5485:2;5465:18;;;5458:30;-1:-1:-1;;;5504:18:1;;;5497:44;5558:18;;12777:57:0::1;;;;;;;;;12845:11;:20:::0;12707:166::o;12881:198::-;4022:13;:11;:13::i;:::-;12979:2:::1;12970:5;:11;;:26;;;;;12994:2;12985:5;:11;;12970:26;12962:52;;;::::0;-1:-1:-1;;;12962:52:0;;5789:2:1;12962:52:0::1;::::0;::::1;5771:21:1::0;5828:2;5808:18;;;5801:30;-1:-1:-1;;;5847:18:1;;;5840:43;5900:18;;12962:52:0::1;5587:337:1::0;12962:52:0::1;13025:9;:17:::0;;;;13053:10:::1;:18:::0;12881:198::o;8739:167::-;8817:4;8834:42;1719:10;8858:9;8869:6;8834:9;:42::i;5035:201::-;4022:13;:11;:13::i;:::-;-1:-1:-1;;;;;5124:22:0;::::1;5116:73;;;::::0;-1:-1:-1;;;5116:73:0;;6131:2:1;5116:73:0::1;::::0;::::1;6113:21:1::0;6170:2;6150:18;;;6143:30;6209:34;6189:18;;;6182:62;-1:-1:-1;;;6260:18:1;;;6253:36;6306:19;;5116:73:0::1;5929:402:1::0;5116:73:0::1;5200:28;5219:8;5200:18;:28::i;:::-;5035:201:::0;:::o;9555:335::-;-1:-1:-1;;;;;9648:19:0;;9640:68;;;;-1:-1:-1;;;9640:68:0;;6538:2:1;9640:68:0;;;6520:21:1;6577:2;6557:18;;;6550:30;6616:34;6596:18;;;6589:62;-1:-1:-1;;;6667:18:1;;;6660:34;6711:19;;9640:68:0;6336:400:1;9640:68:0;-1:-1:-1;;;;;9727:21:0;;9719:68;;;;-1:-1:-1;;;9719:68:0;;6943:2:1;9719:68:0;;;6925:21:1;6982:2;6962:18;;;6955:30;7021:34;7001:18;;;6994:62;-1:-1:-1;;;7072:18:1;;;7065:32;7114:19;;9719:68:0;6741:398:1;9719:68:0;-1:-1:-1;;;;;9798:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9850:32;;1585:25:1;;;9850:32:0;;1558:18:1;9850:32:0;;;;;;;9555:335;;;:::o;9898:1938::-;-1:-1:-1;;;;;9986:18:0;;9978:68;;;;-1:-1:-1;;;9978:68:0;;7346:2:1;9978:68:0;;;7328:21:1;7385:2;7365:18;;;7358:30;7424:34;7404:18;;;7397:62;-1:-1:-1;;;7475:18:1;;;7468:35;7520:19;;9978:68:0;7144:401:1;9978:68:0;-1:-1:-1;;;;;10065:16:0;;10057:64;;;;-1:-1:-1;;;10057:64:0;;7752:2:1;10057:64:0;;;7734:21:1;7791:2;7771:18;;;7764:30;7830:34;7810:18;;;7803:62;-1:-1:-1;;;7881:18:1;;;7874:33;7924:19;;10057:64:0;7550:399:1;10057:64:0;10149:1;10140:6;:10;10132:64;;;;-1:-1:-1;;;10132:64:0;;8156:2:1;10132:64:0;;;8138:21:1;8195:2;8175:18;;;8168:30;8234:34;8214:18;;;8207:62;-1:-1:-1;;;8285:18:1;;;8278:39;8334:19;;10132:64:0;7954:405:1;10132:64:0;-1:-1:-1;;;;;10242:24:0;;10207:17;10242:24;;;:18;:24;;;;;;;;10241:25;:52;;;;-1:-1:-1;;;;;;10271:22:0;;;;;;:18;:22;;;;;;;;10270:23;10241:52;10237:1243;;;10321:13;;-1:-1:-1;;;;;10315:19:0;;;10321:13;;10315:19;10312:145;;10387:11;;10377:6;10361:13;10371:2;-1:-1:-1;;;;;8705:18:0;8678:7;8705:18;;;:9;:18;;;;;;;8612:119;10361:13;:22;;;;:::i;:::-;:37;;10353:88;;;;-1:-1:-1;;;10353:88:0;;8696:2:1;10353:88:0;;;8678:21:1;8735:2;8715:18;;;8708:30;8774:34;8754:18;;;8747:62;-1:-1:-1;;;8825:18:1;;;8818:36;8871:19;;10353:88:0;8494:402:1;10353:88:0;10476:9;;:13;10473:186;;10518:13;;-1:-1:-1;;;;;10510:21:0;;;10518:13;;10510:21;:55;;;;-1:-1:-1;10549:15:0;;-1:-1:-1;;;;;10535:30:0;;;10549:15;;10535:30;;10510:55;10506:138;;;10598:30;10624:3;10598:21;10609:9;;10598:6;:10;;:21;;;;:::i;:30::-;10586:42;;10506:138;10678:14;;:18;10675:184;;10722:13;;-1:-1:-1;;;;;10716:19:0;;;10722:13;;10716:19;;;;:44;;-1:-1:-1;10747:13:0;;-1:-1:-1;;;;;10739:21:0;;;10747:13;;10739:21;;10716:44;10713:131;;;10793:35;10824:3;10793:26;10804:14;;10793:6;:10;;:26;;;;:::i;:35::-;10781:47;;10713:131;10878:10;;:14;10875:150;;10918:13;;-1:-1:-1;;;;;10918:13:0;;;10912:19;;;;10909:101;;10963:31;10990:3;10963:22;10974:10;;10963:6;:10;;:22;;;;:::i;:31::-;10951:43;;10909:101;11090:4;11041:28;8705:18;;;:9;:18;;;;;;11116:6;;-1:-1:-1;;;11116:6:0;;;;11115:7;:30;;;;-1:-1:-1;11132:13:0;;-1:-1:-1;;;;;11126:19:0;;;11132:13;;11126:19;11115:30;:45;;;;-1:-1:-1;11149:11:0;;-1:-1:-1;;;11149:11:0;;;;11115:45;:87;;;;;11185:17;;11164:20;:38;11115:87;11111:358;;;11223:38;11240:20;11223:16;:38::i;:::-;11309:21;11352:22;;11349:105;;11399:35;11412:21;11399:12;:35::i;:::-;11204:265;11111:358;10295:1185;10237:1243;11495:11;;11492:161;;11563:4;11545:24;;;;:9;:24;;;;;;:39;;11574:9;11545:28;:39::i;:::-;11538:4;11520:24;;;;:9;:24;;;;;;;:64;;;;11602:39;;-1:-1:-1;;;;;11602:39:0;;;;;;;11631:9;1585:25:1;;1573:2;1558:18;;1439:177;11602:39:0;;;;;;;;11492:161;-1:-1:-1;;;;;11679:15:0;;;;;;:9;:15;;;;;;:27;;11699:6;11679:19;:27::i;:::-;-1:-1:-1;;;;;11663:15:0;;;;;;:9;:15;;;;;:43;11731:40;11749:21;:6;11760:9;11749:10;:21::i;:::-;-1:-1:-1;;;;;11731:13:0;;;;;;:9;:13;;;;;;;:17;:40::i;:::-;-1:-1:-1;;;;;11717:13:0;;;;;;;:9;:13;;;;;:54;;;;11787:41;;;11806:21;:6;11817:9;11806:10;:21::i;:::-;11787:41;;1585:25:1;;;1573:2;1558:18;11787:41:0;;;;;;;9967:1869;9898:1938;;;:::o;2776:190::-;2862:7;2898:12;2890:6;;;;2882:29;;;;-1:-1:-1;;;2882:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2922:9:0;2934:5;2938:1;2934;:5;:::i;:::-;2922:17;2776:190;-1:-1:-1;;;;;2776:190:0:o;4301:132::-;4182:7;4209:6;-1:-1:-1;;;;;4209:6:0;1719:10;4365:23;4357:68;;;;-1:-1:-1;;;4357:68:0;;9236:2:1;4357:68:0;;;9218:21:1;;;9255:18;;;9248:30;9314:34;9294:18;;;9287:62;9366:18;;4357:68:0;9034:356:1;5396:191:0;5470:16;5489:6;;-1:-1:-1;;;;;5506:17:0;;;-1:-1:-1;;;;;;5506:17:0;;;;;;5539:40;;5489:6;;;;;;;5539:40;;5470:16;5539:40;5459:128;5396:191;:::o;3228:132::-;3286:7;3313:39;3317:1;3320;3313:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3306:46;3228:132;-1:-1:-1;;;3228:132:0:o;2974:246::-;3032:7;3056:1;3061;3056:6;3052:47;;-1:-1:-1;3086:1:0;3079:8;;3052:47;3109:9;3121:5;3125:1;3121;:5;:::i;:::-;3109:17;-1:-1:-1;3154:1:0;3145:5;3149:1;3109:17;3145:5;:::i;:::-;:10;3137:56;;;;-1:-1:-1;;;3137:56:0;;9819:2:1;3137:56:0;;;9801:21:1;9858:2;9838:18;;;9831:30;9897:34;9877:18;;;9870:62;-1:-1:-1;;;9948:18:1;;;9941:31;9989:19;;3137:56:0;9617:397:1;11952:520:0;7443:6;:13;;-1:-1:-1;;;;7443:13:0;-1:-1:-1;;;7443:13:0;;;12030:27;;12049:7:::1;12030:27;12091:16;::::0;;12105:1:::1;12091:16:::0;;;;;::::1;::::0;;12067:21:::1;::::0;12091:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12091:16:0::1;12067:40;;12136:4;12118;12123:1;12118:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12118:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;12162:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;12162:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;12118:7;;12162:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12152:4;12157:1;12152:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12152:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;12227:15:::1;::::0;12195:62:::1;::::0;12212:4:::1;::::0;12227:15:::1;12245:11:::0;12195:8:::1;:62::i;:::-;12268:15;::::0;:196:::1;::::0;-1:-1:-1;;;12268:196:0;;-1:-1:-1;;;;;12268:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;12349:11;;12268:15:::1;::::0;12391:4;;12418::::1;::::0;12438:15:::1;::::0;12268:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12019:453;7467:1;-1:-1:-1::0;7479:6:0;:14;;-1:-1:-1;;;;7479:14:0;;;11952:520::o;12480:182::-;12567:16;;12559:49;;12537:16;;-1:-1:-1;;;;;12567:16:0;;12597:6;;12537:16;12559:49;12537:16;12559:49;12597:6;12567:16;12559:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12536:72;;;12627:11;12619:35;;;;-1:-1:-1;;;12619:35:0;;11936:2:1;12619:35:0;;;11918:21:1;11975:2;11955:18;;;11948:30;-1:-1:-1;;;11994:18:1;;;11987:41;12045:18;;12619:35:0;11734:335:1;12619:35:0;12526:136;12480:182;:::o;2445:179::-;2503:7;;2535:5;2539:1;2535;:5;:::i;:::-;2523:17;;2564:1;2559;:6;;2551:46;;;;-1:-1:-1;;;2551:46:0;;12276:2:1;2551:46:0;;;12258:21:1;12315:2;12295:18;;;12288:30;12354:29;12334:18;;;12327:57;12401:18;;2551:46:0;12074:351:1;2632:136:0;2690:7;2717:43;2721:1;2724;2717:43;;;;;;;;;;;;;;;;;:3;:43::i;3368:189::-;3454:7;3489:12;3482:5;3474:28;;;;-1:-1:-1;;;3474:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3513:9:0;3525:5;3529:1;3525;:5;:::i;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;1621:456::-;1698:6;1706;1714;1767:2;1755:9;1746:7;1742:23;1738:32;1735:52;;;1783:1;1780;1773:12;1735:52;1822:9;1809:23;1841:31;1866:5;1841:31;:::i;:::-;1891:5;-1:-1:-1;1948:2:1;1933:18;;1920:32;1961:33;1920:32;1961:33;:::i;:::-;1621:456;;2013:7;;-1:-1:-1;;;2067:2:1;2052:18;;;;2039:32;;1621:456::o;2271:247::-;2330:6;2383:2;2371:9;2362:7;2358:23;2354:32;2351:52;;;2399:1;2396;2389:12;2351:52;2438:9;2425:23;2457:31;2482:5;2457:31;:::i;2523:180::-;2582:6;2635:2;2623:9;2614:7;2610:23;2606:32;2603:52;;;2651:1;2648;2641:12;2603:52;-1:-1:-1;2674:23:1;;2523:180;-1:-1:-1;2523:180:1:o;2708:248::-;2776:6;2784;2837:2;2825:9;2816:7;2812:23;2808:32;2805:52;;;2853:1;2850;2843:12;2805:52;-1:-1:-1;;2876:23:1;;;2946:2;2931:18;;;2918:32;;-1:-1:-1;2708:248:1:o;3169:388::-;3237:6;3245;3298:2;3286:9;3277:7;3273:23;3269:32;3266:52;;;3314:1;3311;3304:12;3266:52;3353:9;3340:23;3372:31;3397:5;3372:31;:::i;:::-;3422:5;-1:-1:-1;3479:2:1;3464:18;;3451:32;3492:33;3451:32;3492:33;:::i;:::-;3544:7;3534:17;;;3169:388;;;;;:::o;3562:127::-;3623:10;3618:3;3614:20;3611:1;3604:31;3654:4;3651:1;3644:15;3678:4;3675:1;3668:15;3694:416;3783:1;3820:5;3783:1;3834:270;3855:7;3845:8;3842:21;3834:270;;;3914:4;3910:1;3906:6;3902:17;3896:4;3893:27;3890:53;;;3923:18;;:::i;:::-;3973:7;3963:8;3959:22;3956:55;;;3993:16;;;;3956:55;4072:22;;;;4032:15;;;;3834:270;;;3838:3;3694:416;;;;;:::o;4115:806::-;4164:5;4194:8;4184:80;;-1:-1:-1;4235:1:1;4249:5;;4184:80;4283:4;4273:76;;-1:-1:-1;4320:1:1;4334:5;;4273:76;4365:4;4383:1;4378:59;;;;4451:1;4446:130;;;;4358:218;;4378:59;4408:1;4399:10;;4422:5;;;4446:130;4483:3;4473:8;4470:17;4467:43;;;4490:18;;:::i;:::-;-1:-1:-1;;4546:1:1;4532:16;;4561:5;;4358:218;;4660:2;4650:8;4647:16;4641:3;4635:4;4632:13;4628:36;4622:2;4612:8;4609:16;4604:2;4598:4;4595:12;4591:35;4588:77;4585:159;;;-1:-1:-1;4697:19:1;;;4729:5;;4585:159;4776:34;4801:8;4795:4;4776:34;:::i;:::-;4846:6;4842:1;4838:6;4834:19;4825:7;4822:32;4819:58;;;4857:18;;:::i;:::-;4895:20;;4115:806;-1:-1:-1;;;4115:806:1:o;4926:140::-;4984:5;5013:47;5054:4;5044:8;5040:19;5034:4;5013:47;:::i;5071:168::-;5144:9;;;5175;;5192:15;;;5186:22;;5172:37;5162:71;;5213:18;;:::i;8364:125::-;8429:9;;;8450:10;;;8447:36;;;8463:18;;:::i;8901:128::-;8968:9;;;8989:11;;;8986:37;;;9003:18;;:::i;9395:217::-;9435:1;9461;9451:132;;9505:10;9500:3;9496:20;9493:1;9486:31;9540:4;9537:1;9530:15;9568:4;9565:1;9558:15;9451:132;-1:-1:-1;9597:9:1;;9395:217::o;10151:127::-;10212:10;10207:3;10203:20;10200:1;10193:31;10243:4;10240:1;10233:15;10267:4;10264:1;10257:15;10283:251;10353:6;10406:2;10394:9;10385:7;10381:23;10377:32;10374:52;;;10422:1;10419;10412:12;10374:52;10454:9;10448:16;10473:31;10498:5;10473:31;:::i;10539:980::-;10801:4;10849:3;10838:9;10834:19;10880:6;10869:9;10862:25;10906:2;10944:6;10939:2;10928:9;10924:18;10917:34;10987:3;10982:2;10971:9;10967:18;10960:31;11011:6;11046;11040:13;11077:6;11069;11062:22;11115:3;11104:9;11100:19;11093:26;;11154:2;11146:6;11142:15;11128:29;;11175:1;11185:195;11199:6;11196:1;11193:13;11185:195;;;11264:13;;-1:-1:-1;;;;;11260:39:1;11248:52;;11355:15;;;;11320:12;;;;11296:1;11214:9;11185:195;;;-1:-1:-1;;;;;;;11436:32:1;;;;11431:2;11416:18;;11409:60;-1:-1:-1;;;11500:3:1;11485:19;11478:35;11397:3;10539:980;-1:-1:-1;;;10539:980:1:o

Swarm Source

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