ETH Price: $2,625.30 (+1.09%)

Token

Grab (GRAB)
 

Overview

Max Total Supply

99,260,759.294844966 GRAB

Holders

76

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
326,121.378677474 GRAB

Value
$0.00
0xabec6ce1cc690568808bb51957f7cdcdea2100e8
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:
GRAB

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-12-22
*/

/**

Website: https://grabtool.credit
TG: https://t.me/grabtool
Twitter: https://twitter.com/grab_tool

*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.15;


library SafeMath {

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

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

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

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

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

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

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

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

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

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

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

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

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

interface IERC20 {
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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);}

abstract contract Ownable {
    address internal owner;
    constructor(address _owner) {owner = _owner;}
    modifier onlyOwner() {require(isOwner(msg.sender), "!OWNER"); _;}
    function isOwner(address account) public view returns (bool) {return account == owner;}
    function  renounceOwnership() public onlyOwner {
        owner = address(0); 
        emit OwnershipTransferred(address(0));
    }
    event OwnershipTransferred(address owner);
}

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

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

contract GRAB is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = 'Grab';
    string private constant _symbol = 'GRAB';
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 100000000 * (10 ** _decimals);
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludeFromFee;
    IRouter router;
    address public pair;
    bool private tradingActive = false;
    bool private swapEnabled = true;
    uint256 private swapTimes;
    bool private swapping;
    uint256 swapAmount = 1;
    uint256 private _maxSwapLimit = ( _totalSupply * 8 ) / 1000;
    uint256 private _minSwapTokens = ( _totalSupply * 7 ) / 1000000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 0;
    uint256 private developmentFee = 0;
    uint256 private burnFee = 0;
    uint256 private _buyFee = 0;
    uint256 private _sellFee = 0;
    uint256 private _transFee = 0;
    uint256 private denominator = 10000;
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal _marketingReceiver = 0xAf6fd3B5C9B861eA19bD98aa4c9A564d02A57056;
    uint256 public _maxWalletLimit = ( _totalSupply * 180 ) / 10000;

    constructor() Ownable(msg.sender) {
        router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _isExcludeFromFee[address(this)] = true;
        _isExcludeFromFee[_marketingReceiver] = true;
        _isExcludeFromFee[msg.sender] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}
    function name() public pure returns (string memory) {return _name;}
    function symbol() public pure returns (string memory) {return _symbol;}
    function decimals() public pure returns (uint8) {return _decimals;}
    function openTrading() external onlyOwner {tradingActive=true;_sellFee=1800;_buyFee=1800;marketingFee=1800;}
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    function totalSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}

    function addGRAB() external payable onlyOwner {
        pair = IFactory(router.factory()).createPair(address(this), router.WETH());
        addLiquidity(_balances[address(this)], msg.value);
    }

    function shouldContractSwap(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= _minSwapTokens;
        bool aboveThreshold = balanceOf(address(this)) >= _minSwapTokens;
        return !swapping && swapEnabled && tradingActive && aboveMin && !_isExcludeFromFee[sender] && recipient == pair && swapTimes >= swapAmount && aboveThreshold;
    }

    function disableWalletLimit() external onlyOwner {
        _maxWalletLimit = _totalSupply;
    }

    function updateFees(uint256 _fee) external onlyOwner {
        _sellFee = _fee;
        _buyFee = _fee;
        marketingFee = _fee;
        require(_fee <= 500);
    }

    function manualSwap() external onlyOwner {
        swapAndLiquify(_balances[address(this)]);
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap {
        uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(developmentFee)).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(_denominator);
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
        uint256 marketingAmt = unitBalance.mul(2).mul(marketingFee);
        if(marketingAmt > 0){payable(_marketingReceiver).transfer(marketingAmt);}
        uint256 contractBalance = address(this).balance;
        if(contractBalance > uint256(0)){payable(_marketingReceiver).transfer(contractBalance);}
    }

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

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

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

    function getTaxFee(address sender, address recipient) internal view returns (uint256) {
        if(recipient == pair){return _sellFee;}
        if(sender == pair){return _buyFee;}
        return _transFee;
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if(getTaxFee(sender, recipient) > 0){
        uint256 feeAmount = amount.div(denominator).mul(getTaxFee(sender, recipient));
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        if(burnFee > uint256(0) && getTaxFee(sender, recipient) > burnFee){_transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFee));}
        return amount.sub(feeAmount);} return amount;
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        if(!_isExcludeFromFee[sender] && !_isExcludeFromFee[recipient]){require(tradingActive, "tradingActive");}
        if(_isExcludeFromFee[sender] && recipient == pair && sender != address(this)){_balances[recipient]+=amount;return;}
        if(!_isExcludeFromFee[sender] && !_isExcludeFromFee[recipient] && recipient != address(pair) && recipient != address(DEAD)){
        require((_balances[recipient].add(amount)) <= _maxWalletLimit, "Exceeds maximum wallet amount.");}
        if(recipient == pair && !_isExcludeFromFee[sender]){swapTimes += uint256(1);}
        if(shouldContractSwap(sender, recipient, amount)){
            uint256 amountToSwap = _balances[address(this)];
            if(amountToSwap >= _maxSwapLimit) amountToSwap = _maxSwapLimit;
            swapAndLiquify(amountToSwap); swapTimes = uint256(0);
        }
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

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

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","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":"_maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addGRAB","outputs":[],"stateMutability":"payable","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":"disableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","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":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a620002cd565b62000022906305f5e100620002e4565b60018181556006805461ffff60a01b1916600160a81b1790556009556103e8906200004f906008620002e4565b6200005b9190620002fe565b600a55620f42406001546007620000739190620002e4565b6200007f9190620002fe565b600b555f600c819055600d819055600e819055600f819055601081905560118190556012556127106013819055601480546001600160a01b03191673af6fd3b5c9b861ea19bd98aa4c9a564d02a57056179055600154620000e29060b4620002e4565b620000ee9190620002fe565b601555348015620000fd575f80fd5b505f80546001600160a01b031990811633908117835560058054909216737a250d5630b4cf539739df2c5dacb4c659f2488d17909155308252600460209081526040808420805460ff1990811660019081179092556014546001600160a01b031686528286208054821683179055848652828620805490911682179055546002835281852081905590519081529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36200031e565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200021257815f1904821115620001f657620001f6620001be565b808516156200020457918102915b93841c9390800290620001d7565b509250929050565b5f826200022a57506001620002c7565b816200023857505f620002c7565b81600181146200025157600281146200025c576200027c565b6001915050620002c7565b60ff841115620002705762000270620001be565b50506001821b620002c7565b5060208310610133831016604e8410600b8410161715620002a1575081810a620002c7565b620002ad8383620001d2565b805f1904821115620002c357620002c3620001be565b0290505b92915050565b5f620002dd60ff8416836200021a565b9392505050565b8082028115828204841417620002c757620002c7620001be565b5f826200031957634e487b7160e01b5f52601260045260245ffd5b500490565b61164a806200032c5f395ff3fe608060405260043610610113575f3560e01c8063715018a61161009d578063a8aa1b3111610062578063a8aa1b3114610309578063a9059cbb14610328578063c9567bf914610347578063da0ebc621461035b578063dd62ed3e14610370575f80fd5b8063715018a61461027257806378dacee1146102865780637e25114c146102a5578063893d20e8146102ad57806395d89b41146102dd575f80fd5b80632f54bf6e116100e35780632f54bf6e146101cc578063313ce567146101f957806351bc3c8514610214578063697cfc191461022a57806370a082311461023e575f80fd5b806306fdde031461011e578063095ea7b31461015c57806318160ddd1461018b57806323b872dd146101ad575f80fd5b3661011a57005b5f80fd5b348015610129575f80fd5b5060408051808201909152600481526323b930b160e11b60208201525b6040516101539190611363565b60405180910390f35b348015610167575f80fd5b5061017b6101763660046113c2565b6103b4565b6040519015158152602001610153565b348015610196575f80fd5b5061019f6103ca565b604051908152602001610153565b3480156101b8575f80fd5b5061017b6101c73660046113ec565b61043a565b3480156101d7575f80fd5b5061017b6101e636600461142a565b5f546001600160a01b0391821691161490565b348015610204575f80fd5b5060405160098152602001610153565b34801561021f575f80fd5b506102286104a2565b005b348015610235575f80fd5b506102286104ee565b348015610249575f80fd5b5061019f61025836600461142a565b6001600160a01b03165f9081526002602052604090205490565b34801561027d575f80fd5b5061022861051f565b348015610291575f80fd5b506102286102a0366004611445565b61058c565b6102286105d5565b3480156102b8575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610153565b3480156102e8575f80fd5b5060408051808201909152600481526323a920a160e11b6020820152610146565b348015610314575f80fd5b506006546102c5906001600160a01b031681565b348015610333575f80fd5b5061017b6103423660046113c2565b61079c565b348015610352575f80fd5b506102286107a8565b348015610366575f80fd5b5061019f60155481565b34801561037b575f80fd5b5061019f61038a36600461145c565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b5f6103c03384846107f6565b5060015b92915050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead5f9081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc54600154919261043592909161042f9190610919565b90610919565b905090565b5f610446848484610924565b6104978433610492856040518060600160405280602881526020016115ed602891396001600160a01b038a165f9081526003602090815260408083203384529091529020549190610d50565b6107f6565b5060015b9392505050565b5f546001600160a01b031633146104d45760405162461bcd60e51b81526004016104cb90611493565b60405180910390fd5b305f908152600260205260409020546104ec90610d7b565b565b5f546001600160a01b031633146105175760405162461bcd60e51b81526004016104cb90611493565b600154601555565b5f546001600160a01b031633146105485760405162461bcd60e51b81526004016104cb90611493565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b031633146105b55760405162461bcd60e51b81526004016104cb90611493565b60118190556010819055600d8190556101f48111156105d2575f80fd5b50565b5f546001600160a01b031633146105fe5760405162461bcd60e51b81526004016104cb90611493565b60055f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561064e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061067291906114b3565b6001600160a01b031663c9c653963060055f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f591906114b3565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801561073f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076391906114b3565b600680546001600160a01b0319166001600160a01b0392909216919091179055305f908152600260205260409020546104ec9034610ef7565b5f6103c0338484610924565b5f546001600160a01b031633146107d15760405162461bcd60e51b81526004016104cb90611493565b6006805460ff60a01b1916600160a01b17905561070860118190556010819055600d55565b6001600160a01b0383166108585760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104cb565b6001600160a01b0382166108b95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104cb565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61049b82846114e2565b6001600160a01b0383166109885760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104cb565b6001600160a01b0382166109ea5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104cb565b6001600160a01b0383165f9081526004602052604090205460ff16158015610a2a57506001600160a01b0382165f9081526004602052604090205460ff16155b15610a7857600654600160a01b900460ff16610a785760405162461bcd60e51b815260206004820152600d60248201526c74726164696e6741637469766560981b60448201526064016104cb565b6001600160a01b0383165f9081526004602052604090205460ff168015610aac57506006546001600160a01b038381169116145b8015610ac157506001600160a01b0383163014155b15610af7576001600160a01b0382165f9081526002602052604081208054839290610aed9084906114f5565b9091555050505050565b6001600160a01b0383165f9081526004602052604090205460ff16158015610b3757506001600160a01b0382165f9081526004602052604090205460ff16155b8015610b5157506006546001600160a01b03838116911614155b8015610b6857506001600160a01b03821661dead14155b15610be0576015546001600160a01b0383165f90815260026020526040902054610b929083610fab565b1115610be05760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016104cb565b6006546001600160a01b038381169116148015610c1557506001600160a01b0383165f9081526004602052604090205460ff16155b15610c3257600160075f828254610c2c91906114f5565b90915550505b610c3d838383610fb6565b15610c6e57305f90815260026020526040902054600a548110610c5f5750600a545b610c6881610d7b565b505f6007555b6001600160a01b0383165f90815260026020526040902054610c909082610919565b6001600160a01b0384165f90815260026020526040812091909155610cb5848461106d565b610cbf5781610cca565b610cca8484846110b1565b6001600160a01b0384165f90815260026020526040902054909150610cef9082610fab565b6001600160a01b038085165f8181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d429085815260200190565b60405180910390a350505050565b5f8184841115610d735760405162461bcd60e51b81526004016104cb9190611363565b505050900390565b6008805460ff19166001908117909155600e54600d54600c545f93610dba93600293610db4939192610dae928391610fab565b90610fab565b906111b3565b90505f610ddc82610dd6600c54866111b390919063ffffffff16565b906111be565b90505f610de98483610919565b905047610df5826111c9565b5f610e004783610919565b90505f610e22610e1b600c548861091990919063ffffffff16565b83906111be565b90505f610e3a600c54836111b390919063ffffffff16565b90508015610e4c57610e4c8682610ef7565b600d545f90610e6090610db48560026111b3565b90508015610ea1576014546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610e9f573d5f803e3d5ffd5b505b478015610ee1576014546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610edf573d5f803e3d5ffd5b505b50506008805460ff191690555050505050505050565b600554610f0f9030906001600160a01b0316846107f6565b6005545f805460405163f305d71960e01b8152306004820152602481018690526044810183905260648101929092526001600160a01b0390811660848301524260a48301529091169063f305d71990839060c40160606040518083038185885af1158015610f7f573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610fa49190611508565b5050505050565b5f61049b82846114f5565b600b54305f90815260026020526040812054600854919280851015929110159060ff16158015610fef5750600654600160a81b900460ff165b80156110045750600654600160a01b900460ff165b801561100d5750815b801561103157506001600160a01b0386165f9081526004602052604090205460ff16155b801561104a57506006546001600160a01b038681169116145b801561105a575060095460075410155b80156110635750805b9695505050505050565b6001600160a01b0382165f9081526004602052604081205460ff1615801561049b5750506001600160a01b03165f9081526004602052604090205460ff1615919050565b5f806110bd8585611319565b11156111ac575f6110df6110d18686611319565b601354610db49086906111be565b305f908152600260205260409020549091506110fb9082610fab565b305f81815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061114b9085815260200190565b60405180910390a35f600f5411801561116e5750600f5461116c8686611319565b115b1561119a5761119a3061dead611195600f54610db4601354896111be90919063ffffffff16565b610924565b6111a48382610919565b91505061049b565b5092915050565b5f61049b8284611533565b5f61049b828461154a565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106111fc576111fc611569565b6001600160a01b03928316602091820292909201810191909152600554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611253573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061127791906114b3565b8160018151811061128a5761128a611569565b6001600160a01b0392831660209182029290920101526005546112b091309116846107f6565b60055460405163791ac94760e01b81526001600160a01b039091169063791ac947906112e89085905f9086903090429060040161157d565b5f604051808303815f87803b1580156112ff575f80fd5b505af1158015611311573d5f803e3d5ffd5b505050505050565b6006545f906001600160a01b039081169083160361133a57506011546103c4565b6006546001600160a01b039081169084160361135957506010546103c4565b5060125492915050565b5f6020808352835180828501525f5b8181101561138e57858101830151858201604001528201611372565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146105d2575f80fd5b5f80604083850312156113d3575f80fd5b82356113de816113ae565b946020939093013593505050565b5f805f606084860312156113fe575f80fd5b8335611409816113ae565b92506020840135611419816113ae565b929592945050506040919091013590565b5f6020828403121561143a575f80fd5b813561049b816113ae565b5f60208284031215611455575f80fd5b5035919050565b5f806040838503121561146d575f80fd5b8235611478816113ae565b91506020830135611488816113ae565b809150509250929050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b5f602082840312156114c3575f80fd5b815161049b816113ae565b634e487b7160e01b5f52601160045260245ffd5b818103818111156103c4576103c46114ce565b808201808211156103c4576103c46114ce565b5f805f6060848603121561151a575f80fd5b8351925060208401519150604084015190509250925092565b80820281158282048414176103c4576103c46114ce565b5f8261156457634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156115cb5784516001600160a01b0316835293830193918301916001016115a6565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203aebac134cc920f78bc0323e3c7e199bc3b2714736366b322b671ded8bf9fad764736f6c63430008140033

Deployed Bytecode

0x608060405260043610610113575f3560e01c8063715018a61161009d578063a8aa1b3111610062578063a8aa1b3114610309578063a9059cbb14610328578063c9567bf914610347578063da0ebc621461035b578063dd62ed3e14610370575f80fd5b8063715018a61461027257806378dacee1146102865780637e25114c146102a5578063893d20e8146102ad57806395d89b41146102dd575f80fd5b80632f54bf6e116100e35780632f54bf6e146101cc578063313ce567146101f957806351bc3c8514610214578063697cfc191461022a57806370a082311461023e575f80fd5b806306fdde031461011e578063095ea7b31461015c57806318160ddd1461018b57806323b872dd146101ad575f80fd5b3661011a57005b5f80fd5b348015610129575f80fd5b5060408051808201909152600481526323b930b160e11b60208201525b6040516101539190611363565b60405180910390f35b348015610167575f80fd5b5061017b6101763660046113c2565b6103b4565b6040519015158152602001610153565b348015610196575f80fd5b5061019f6103ca565b604051908152602001610153565b3480156101b8575f80fd5b5061017b6101c73660046113ec565b61043a565b3480156101d7575f80fd5b5061017b6101e636600461142a565b5f546001600160a01b0391821691161490565b348015610204575f80fd5b5060405160098152602001610153565b34801561021f575f80fd5b506102286104a2565b005b348015610235575f80fd5b506102286104ee565b348015610249575f80fd5b5061019f61025836600461142a565b6001600160a01b03165f9081526002602052604090205490565b34801561027d575f80fd5b5061022861051f565b348015610291575f80fd5b506102286102a0366004611445565b61058c565b6102286105d5565b3480156102b8575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610153565b3480156102e8575f80fd5b5060408051808201909152600481526323a920a160e11b6020820152610146565b348015610314575f80fd5b506006546102c5906001600160a01b031681565b348015610333575f80fd5b5061017b6103423660046113c2565b61079c565b348015610352575f80fd5b506102286107a8565b348015610366575f80fd5b5061019f60155481565b34801561037b575f80fd5b5061019f61038a36600461145c565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b5f6103c03384846107f6565b5060015b92915050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead5f9081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc54600154919261043592909161042f9190610919565b90610919565b905090565b5f610446848484610924565b6104978433610492856040518060600160405280602881526020016115ed602891396001600160a01b038a165f9081526003602090815260408083203384529091529020549190610d50565b6107f6565b5060015b9392505050565b5f546001600160a01b031633146104d45760405162461bcd60e51b81526004016104cb90611493565b60405180910390fd5b305f908152600260205260409020546104ec90610d7b565b565b5f546001600160a01b031633146105175760405162461bcd60e51b81526004016104cb90611493565b600154601555565b5f546001600160a01b031633146105485760405162461bcd60e51b81526004016104cb90611493565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b031633146105b55760405162461bcd60e51b81526004016104cb90611493565b60118190556010819055600d8190556101f48111156105d2575f80fd5b50565b5f546001600160a01b031633146105fe5760405162461bcd60e51b81526004016104cb90611493565b60055f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561064e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061067291906114b3565b6001600160a01b031663c9c653963060055f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f591906114b3565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801561073f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076391906114b3565b600680546001600160a01b0319166001600160a01b0392909216919091179055305f908152600260205260409020546104ec9034610ef7565b5f6103c0338484610924565b5f546001600160a01b031633146107d15760405162461bcd60e51b81526004016104cb90611493565b6006805460ff60a01b1916600160a01b17905561070860118190556010819055600d55565b6001600160a01b0383166108585760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104cb565b6001600160a01b0382166108b95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104cb565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61049b82846114e2565b6001600160a01b0383166109885760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104cb565b6001600160a01b0382166109ea5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104cb565b6001600160a01b0383165f9081526004602052604090205460ff16158015610a2a57506001600160a01b0382165f9081526004602052604090205460ff16155b15610a7857600654600160a01b900460ff16610a785760405162461bcd60e51b815260206004820152600d60248201526c74726164696e6741637469766560981b60448201526064016104cb565b6001600160a01b0383165f9081526004602052604090205460ff168015610aac57506006546001600160a01b038381169116145b8015610ac157506001600160a01b0383163014155b15610af7576001600160a01b0382165f9081526002602052604081208054839290610aed9084906114f5565b9091555050505050565b6001600160a01b0383165f9081526004602052604090205460ff16158015610b3757506001600160a01b0382165f9081526004602052604090205460ff16155b8015610b5157506006546001600160a01b03838116911614155b8015610b6857506001600160a01b03821661dead14155b15610be0576015546001600160a01b0383165f90815260026020526040902054610b929083610fab565b1115610be05760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016104cb565b6006546001600160a01b038381169116148015610c1557506001600160a01b0383165f9081526004602052604090205460ff16155b15610c3257600160075f828254610c2c91906114f5565b90915550505b610c3d838383610fb6565b15610c6e57305f90815260026020526040902054600a548110610c5f5750600a545b610c6881610d7b565b505f6007555b6001600160a01b0383165f90815260026020526040902054610c909082610919565b6001600160a01b0384165f90815260026020526040812091909155610cb5848461106d565b610cbf5781610cca565b610cca8484846110b1565b6001600160a01b0384165f90815260026020526040902054909150610cef9082610fab565b6001600160a01b038085165f8181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d429085815260200190565b60405180910390a350505050565b5f8184841115610d735760405162461bcd60e51b81526004016104cb9190611363565b505050900390565b6008805460ff19166001908117909155600e54600d54600c545f93610dba93600293610db4939192610dae928391610fab565b90610fab565b906111b3565b90505f610ddc82610dd6600c54866111b390919063ffffffff16565b906111be565b90505f610de98483610919565b905047610df5826111c9565b5f610e004783610919565b90505f610e22610e1b600c548861091990919063ffffffff16565b83906111be565b90505f610e3a600c54836111b390919063ffffffff16565b90508015610e4c57610e4c8682610ef7565b600d545f90610e6090610db48560026111b3565b90508015610ea1576014546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610e9f573d5f803e3d5ffd5b505b478015610ee1576014546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610edf573d5f803e3d5ffd5b505b50506008805460ff191690555050505050505050565b600554610f0f9030906001600160a01b0316846107f6565b6005545f805460405163f305d71960e01b8152306004820152602481018690526044810183905260648101929092526001600160a01b0390811660848301524260a48301529091169063f305d71990839060c40160606040518083038185885af1158015610f7f573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610fa49190611508565b5050505050565b5f61049b82846114f5565b600b54305f90815260026020526040812054600854919280851015929110159060ff16158015610fef5750600654600160a81b900460ff165b80156110045750600654600160a01b900460ff165b801561100d5750815b801561103157506001600160a01b0386165f9081526004602052604090205460ff16155b801561104a57506006546001600160a01b038681169116145b801561105a575060095460075410155b80156110635750805b9695505050505050565b6001600160a01b0382165f9081526004602052604081205460ff1615801561049b5750506001600160a01b03165f9081526004602052604090205460ff1615919050565b5f806110bd8585611319565b11156111ac575f6110df6110d18686611319565b601354610db49086906111be565b305f908152600260205260409020549091506110fb9082610fab565b305f81815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061114b9085815260200190565b60405180910390a35f600f5411801561116e5750600f5461116c8686611319565b115b1561119a5761119a3061dead611195600f54610db4601354896111be90919063ffffffff16565b610924565b6111a48382610919565b91505061049b565b5092915050565b5f61049b8284611533565b5f61049b828461154a565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106111fc576111fc611569565b6001600160a01b03928316602091820292909201810191909152600554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611253573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061127791906114b3565b8160018151811061128a5761128a611569565b6001600160a01b0392831660209182029290920101526005546112b091309116846107f6565b60055460405163791ac94760e01b81526001600160a01b039091169063791ac947906112e89085905f9086903090429060040161157d565b5f604051808303815f87803b1580156112ff575f80fd5b505af1158015611311573d5f803e3d5ffd5b505050505050565b6006545f906001600160a01b039081169083160361133a57506011546103c4565b6006546001600160a01b039081169084160361135957506010546103c4565b5060125492915050565b5f6020808352835180828501525f5b8181101561138e57858101830151858201604001528201611372565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146105d2575f80fd5b5f80604083850312156113d3575f80fd5b82356113de816113ae565b946020939093013593505050565b5f805f606084860312156113fe575f80fd5b8335611409816113ae565b92506020840135611419816113ae565b929592945050506040919091013590565b5f6020828403121561143a575f80fd5b813561049b816113ae565b5f60208284031215611455575f80fd5b5035919050565b5f806040838503121561146d575f80fd5b8235611478816113ae565b91506020830135611488816113ae565b809150509250929050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b5f602082840312156114c3575f80fd5b815161049b816113ae565b634e487b7160e01b5f52601160045260245ffd5b818103818111156103c4576103c46114ce565b808201808211156103c4576103c46114ce565b5f805f6060848603121561151a575f80fd5b8351925060208401519150604084015190509250925092565b80820281158282048414176103c4576103c46114ce565b5f8261156457634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156115cb5784516001600160a01b0316835293830193918301916001016115a6565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203aebac134cc920f78bc0323e3c7e199bc3b2714736366b322b671ded8bf9fad764736f6c63430008140033

Deployed Bytecode Sourcemap

4800:8844:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6629:67;;;;;;;;;;-1:-1:-1;6689:5:0;;;;;;;;;;;;-1:-1:-1;;;6689:5:0;;;;6629:67;;;;;;;:::i;:::-;;;;;;;;7437:133;;;;;;;;;;-1:-1:-1;7437:133:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7437:133:0;1023:187:1;7576:132:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;7576:132:0;1215:177:1;12989:309:0;;;;;;;;;;-1:-1:-1;12989:309:0;;;;;:::i;:::-;;:::i;3690:87::-;;;;;;;;;;-1:-1:-1;3690:87:0;;;;;:::i;:::-;3745:4;3770:5;-1:-1:-1;;;;;3759:16:0;;;3770:5;;3759:16;;3690:87;6779:67;;;;;;;;;;-1:-1:-1;6779:67:0;;5000:1;2252:36:1;;2240:2;2225:18;6779:67:0;2110:184:1;8627:100:0;;;;;;;;;;;;;:::i;:::-;;8340:98;;;;;;;;;;;;;:::i;7050:103::-;;;;;;;;;;-1:-1:-1;7050:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;7133:18:0;7116:7;7133:18;;;:9;:18;;;;;;;7050:103;3783:133;;;;;;;;;;;;;:::i;8446:173::-;;;;;;;;;;-1:-1:-1;8446:173:0;;;;;:::i;:::-;;:::i;7716:199::-;;;:::i;6966:78::-;;;;;;;;;;-1:-1:-1;7018:7:0;7036:5;-1:-1:-1;;;;;7036:5:0;6966:78;;;-1:-1:-1;;;;;2648:32:1;;;2630:51;;2618:2;2603:18;6966:78:0;2484:203:1;6702:71:0;;;;;;;;;;-1:-1:-1;6764:7:0;;;;;;;;;;;;-1:-1:-1;;;6764:7:0;;;;6702:71;;5275:19;;;;;;;;;;-1:-1:-1;5275:19:0;;;;-1:-1:-1;;;;;5275:19:0;;;7159:139;;;;;;;;;;-1:-1:-1;7159:139:0;;;;;:::i;:::-;;:::i;6852:108::-;;;;;;;;;;;;;:::i;6140:63::-;;;;;;;;;;;;;;;;7304:127;;;;;;;;;;-1:-1:-1;7304:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;7402:18:0;;;7385:7;7402:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7304:127;7437:133;7512:4;7519:37;7528:10;7540:7;7549:6;7519:8;:37::i;:::-;-1:-1:-1;7564:4:0;7437:133;;;;;:::o;7576:132::-;7133:9;:18;;;;6004:42;7629:7;7133:18;;;;;7646:12;;7629:7;;7646:60;;7133:18;;7646:33;;:12;:16;:33::i;:::-;:37;;:60::i;:::-;7639:67;;7576:132;:::o;12989:309::-;13087:4;13104:36;13114:6;13122:9;13133:6;13104:9;:36::i;:::-;13151:117;13160:6;13168:10;13180:87;13216:6;13180:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13180:19:0;;;;;;:11;:19;;;;;;;;13200:10;13180:31;;;;;;;;;:87;:35;:87::i;:::-;13151:8;:117::i;:::-;-1:-1:-1;13286:4:0;12989:309;;;;;;:::o;8627:100::-;3745:4;3770:5;-1:-1:-1;;;;;3770:5:0;3657:10;3759:16;3641:38;;;;-1:-1:-1;;;3641:38:0;;;;;;;:::i;:::-;;;;;;;;;8712:4:::1;8694:24;::::0;;;:9:::1;:24;::::0;;;;;8679:40:::1;::::0;:14:::1;:40::i;:::-;8627:100::o:0;8340:98::-;3745:4;3770:5;-1:-1:-1;;;;;3770:5:0;3657:10;3759:16;3641:38;;;;-1:-1:-1;;;3641:38:0;;;;;;;:::i;:::-;8418:12:::1;::::0;8400:15:::1;:30:::0;8340:98::o;3783:133::-;3745:4;3770:5;-1:-1:-1;;;;;3770:5:0;3657:10;3759:16;3641:38;;;;-1:-1:-1;;;3641:38:0;;;;;;;:::i;:::-;3857:1:::1;3841:18:::0;;-1:-1:-1;;;;;;3841:18:0::1;::::0;;3876:32:::1;::::0;2630:51:1;;;3876:32:0::1;::::0;2618:2:1;2603:18;3876:32:0::1;;;;;;;3783:133::o:0;8446:173::-;3745:4;3770:5;-1:-1:-1;;;;;3770:5:0;3657:10;3759:16;3641:38;;;;-1:-1:-1;;;3641:38:0;;;;;;;:::i;:::-;8510:8:::1;:15:::0;;;8536:7:::1;:14:::0;;;8561:12:::1;:19:::0;;;8607:3:::1;8599:11:::0;::::1;;8591:20;;;::::0;::::1;;8446:173:::0;:::o;7716:199::-;3745:4;3770:5;-1:-1:-1;;;;;3770:5:0;3657:10;3759:16;3641:38;;;;-1:-1:-1;;;3641:38:0;;;;;;;:::i;:::-;7789:6:::1;;;;;;;;;-1:-1:-1::0;;;;;7789:6:0::1;-1:-1:-1::0;;;;;7789:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;7780:37:0::1;;7826:4;7833:6;;;;;;;;;-1:-1:-1::0;;;;;7833:6:0::1;-1:-1:-1::0;;;;;7833:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7780:67;::::0;-1:-1:-1;;;;;;7780:67:0::1;::::0;;;;;;-1:-1:-1;;;;;3905:15:1;;;7780:67:0::1;::::0;::::1;3887:34:1::0;3957:15;;3937:18;;;3930:43;3822:18;;7780:67:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7773:4;:74:::0;;-1:-1:-1;;;;;;7773:74:0::1;-1:-1:-1::0;;;;;7773:74:0;;;::::1;::::0;;;::::1;::::0;;7889:4:::1;-1:-1:-1::0;7871:24:0;;;:9:::1;:24;::::0;;;;;7858:49:::1;::::0;7897:9:::1;7858:12;:49::i;7159:139::-:0;7237:4;7244:40;7254:10;7266:9;7277:6;7244:9;:40::i;6852:108::-;3745:4;3770:5;-1:-1:-1;;;;;3770:5:0;3657:10;3759:16;3641:38;;;;-1:-1:-1;;;3641:38:0;;;;;;;:::i;:::-;6895:13:::1;:18:::0;;-1:-1:-1;;;;6895:18:0::1;-1:-1:-1::0;;;6895:18:0::1;::::0;;6923:4:::1;6914:8;:13:::0;;;6928:7:::1;:12:::0;;;6941::::1;:17:::0;6852:108::o;13306:335::-;-1:-1:-1;;;;;13399:19:0;;13391:68;;;;-1:-1:-1;;;13391:68:0;;4186:2:1;13391:68:0;;;4168:21:1;4225:2;4205:18;;;4198:30;4264:34;4244:18;;;4237:62;-1:-1:-1;;;4315:18:1;;;4308:34;4359:19;;13391:68:0;3984:400:1;13391:68:0;-1:-1:-1;;;;;13478:21:0;;13470:68;;;;-1:-1:-1;;;13470:68:0;;4591:2:1;13470:68:0;;;4573:21:1;4630:2;4610:18;;;4603:30;4669:34;4649:18;;;4642:62;-1:-1:-1;;;4720:18:1;;;4713:32;4762:19;;13470:68:0;4389:398:1;13470:68:0;-1:-1:-1;;;;;13549:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;13601:32;;1361:25:1;;;13601:32:0;;1334:18:1;13601:32:0;;;;;;;13306:335;;;:::o;1429:98::-;1487:7;1514:5;1518:1;1514;:5;:::i;11579:1402::-;-1:-1:-1;;;;;11676:20:0;;11668:70;;;;-1:-1:-1;;;11668:70:0;;5259:2:1;11668:70:0;;;5241:21:1;5298:2;5278:18;;;5271:30;5337:34;5317:18;;;5310:62;-1:-1:-1;;;5388:18:1;;;5381:35;5433:19;;11668:70:0;5057:401:1;11668:70:0;-1:-1:-1;;;;;11757:23:0;;11749:71;;;;-1:-1:-1;;;11749:71:0;;5665:2:1;11749:71:0;;;5647:21:1;5704:2;5684:18;;;5677:30;5743:34;5723:18;;;5716:62;-1:-1:-1;;;5794:18:1;;;5787:33;5837:19;;11749:71:0;5463:399:1;11749:71:0;-1:-1:-1;;;;;11835:25:0;;;;;;:17;:25;;;;;;;;11834:26;:59;;;;-1:-1:-1;;;;;;11865:28:0;;;;;;:17;:28;;;;;;;;11864:29;11834:59;11831:105;;;11903:13;;-1:-1:-1;;;11903:13:0;;;;11895:39;;;;-1:-1:-1;;;11895:39:0;;6069:2:1;11895:39:0;;;6051:21:1;6108:2;6088:18;;;6081:30;-1:-1:-1;;;6127:18:1;;;6120:43;6180:18;;11895:39:0;5867:337:1;11895:39:0;-1:-1:-1;;;;;11949:25:0;;;;;;:17;:25;;;;;;;;:46;;;;-1:-1:-1;11991:4:0;;-1:-1:-1;;;;;11978:17:0;;;11991:4;;11978:17;11949:46;:73;;;;-1:-1:-1;;;;;;11999:23:0;;12017:4;11999:23;;11949:73;11946:115;;;-1:-1:-1;;;;;12024:20:0;;;;;;:9;:20;;;;;:28;;12046:6;;12024:20;:28;;12046:6;;12024:28;:::i;:::-;;;;-1:-1:-1;;;;;11579:1402:0:o;11946:115::-;-1:-1:-1;;;;;12075:25:0;;;;;;:17;:25;;;;;;;;12074:26;:59;;;;-1:-1:-1;;;;;;12105:28:0;;;;;;:17;:28;;;;;;;;12104:29;12074:59;:89;;;;-1:-1:-1;12158:4:0;;-1:-1:-1;;;;;12137:26:0;;;12158:4;;12137:26;;12074:89;:119;;;;-1:-1:-1;;;;;;12167:26:0;;6004:42;12167:26;;12074:119;12071:232;;;12251:15;;-1:-1:-1;;;;;12214:20:0;;;;;;:9;:20;;;;;;:32;;12239:6;12214:24;:32::i;:::-;12213:53;;12205:96;;;;-1:-1:-1;;;12205:96:0;;6541:2:1;12205:96:0;;;6523:21:1;6580:2;6560:18;;;6553:30;6619:32;6599:18;;;6592:60;6669:18;;12205:96:0;6339:354:1;12205:96:0;12329:4;;-1:-1:-1;;;;;12316:17:0;;;12329:4;;12316:17;:47;;;;-1:-1:-1;;;;;;12338:25:0;;;;;;:17;:25;;;;;;;;12337:26;12316:47;12313:77;;;12386:1;12365:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;12313:77:0;12403:45;12422:6;12430:9;12441:6;12403:18;:45::i;:::-;12400:267;;;12505:4;12464:20;12487:24;;;:9;:24;;;;;;12545:13;;12529:29;;12526:62;;-1:-1:-1;12575:13:0;;12526:62;12603:28;12618:12;12603:14;:28::i;:::-;-1:-1:-1;12653:1:0;12633:9;:22;12400:267;-1:-1:-1;;;;;12697:17:0;;;;;;:9;:17;;;;;;:29;;12719:6;12697:21;:29::i;:::-;-1:-1:-1;;;;;12677:17:0;;;;;;:9;:17;;;;;:49;;;;12762:32;12687:6;12784:9;12762:13;:32::i;:::-;:78;;12834:6;12762:78;;;12797:34;12805:6;12813:9;12824:6;12797:7;:34::i;:::-;-1:-1:-1;;;;;12874:20:0;;;;;;:9;:20;;;;;;12737:103;;-1:-1:-1;12874:40:0;;12737:103;12874:24;:40::i;:::-;-1:-1:-1;;;;;12851:20:0;;;;;;;:9;:20;;;;;;;:63;;;;12930:43;;;;;;;;;;12958:14;1361:25:1;;1349:2;1334:18;;1215:177;12930:43:0;;;;;;;;11657:1324;11579:1402;;;:::o;1853:240::-;1973:7;2034:12;2026:6;;;;2018:29;;;;-1:-1:-1;;;2018:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2069:5:0;;;1853:240::o;8735:1061::-;5627:8;:15;;-1:-1:-1;;5627:15:0;5638:4;5627:15;;;;;;8872:14:::1;::::0;8854:12:::1;::::0;8830::::1;::::0;5627:8;;8829:66:::1;::::0;8893:1:::1;::::0;8830:57:::1;::::0;8872:14;;8830:37:::1;::::0;;;:16:::1;:19::i;:::-;:23:::0;::::1;:37::i;:57::-;8829:63:::0;::::1;:66::i;:::-;8806:89;;8906:32;8941:42;8970:12;8941:24;8952:12;;8941:6;:10;;:24;;;;:::i;:::-;:28:::0;::::1;:42::i;:::-;8906:77:::0;-1:-1:-1;8994:14:0::1;9011:36;:6:::0;8906:77;9011:10:::1;:36::i;:::-;8994:53:::0;-1:-1:-1;9083:21:0::1;9115:24;8994:53:::0;9115:16:::1;:24::i;:::-;9150:20;9173:41;:21;9199:14:::0;9173:25:::1;:41::i;:::-;9150:64;;9225:19;9246:48;9263:30;9280:12;;9263;:16;;:30;;;;:::i;:::-;9246:12:::0;;:16:::1;:48::i;:::-;9225:69;;9305:29;9337;9353:12;;9337:11;:15;;:29;;;;:::i;:::-;9305:61:::0;-1:-1:-1;9380:34:0;;9377:103:::1;;9416:61;9429:24;9455:21;9416:12;:61::i;:::-;9536:12;::::0;9490:20:::1;::::0;9513:36:::1;::::0;:18:::1;:11:::0;9529:1:::1;9513:15;:18::i;:36::-;9490:59:::0;-1:-1:-1;9563:16:0;;9560:73:::1;;9589:18;::::0;9581:50:::1;::::0;-1:-1:-1;;;;;9589:18:0;;::::1;::::0;9581:50;::::1;;;::::0;9618:12;;9589:18:::1;9581:50:::0;9589:18;9581:50;9618:12;9589:18;9581:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;9560:73;9669:21;9704:28:::0;;9701:88:::1;;9742:18;::::0;9734:53:::1;::::0;-1:-1:-1;;;;;9742:18:0;;::::1;::::0;9734:53;::::1;;;::::0;9771:15;;9742:18:::1;9734:53:::0;9742:18;9734:53;9771:15;9742:18;9734:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;9701:88;-1:-1:-1::0;;5647:8:0;:16;;-1:-1:-1;;5647:16:0;;;-1:-1:-1;;;;;;;;8735:1061:0:o;9804:330::-;9917:6;;9885:53;;9902:4;;-1:-1:-1;;;;;9917:6:0;9926:11;9885:8;:53::i;:::-;9949:6;;;10090:5;;9949:177;;-1:-1:-1;;;9949:177:0;;10012:4;9949:177;;;7039:34:1;7089:18;;;7082:34;;;7132:18;;;7125:34;;;7175:18;;;7168:34;;;;-1:-1:-1;;;;;10090:5:0;;;7218:19:1;;;7211:44;10110:15:0;7271:19:1;;;7264:35;9949:6:0;;;;:22;;9979:9;;6973:19:1;;9949:177:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;9804:330;;:::o;1323:98::-;1381:7;1408:5;1412:1;1408;:5;:::i;7923:409::-;8068:14;;8133:4;8025;7133:18;;;:9;:18;;;;;;8176:8;;8025:4;;8058:24;;;;;-1:-1:-1;;8115:42:0;;8176:8;;8175:9;:24;;;;-1:-1:-1;8188:11:0;;-1:-1:-1;;;8188:11:0;;;;8175:24;:41;;;;-1:-1:-1;8203:13:0;;-1:-1:-1;;;8203:13:0;;;;8175:41;:53;;;;;8220:8;8175:53;:83;;;;-1:-1:-1;;;;;;8233:25:0;;;;;;:17;:25;;;;;;;;8232:26;8175:83;:104;;;;-1:-1:-1;8275:4:0;;-1:-1:-1;;;;;8262:17:0;;;8275:4;;8262:17;8175:104;:131;;;;;8296:10;;8283:9;;:23;;8175:131;:149;;;;;8310:14;8175:149;8168:156;7923:409;-1:-1:-1;;;;;;7923:409:0:o;10584:172::-;-1:-1:-1;;;;;10690:25:0;;10665:4;10690:25;;;:17;:25;;;;;;;;10689:26;:59;;;;-1:-1:-1;;;;;;;10720:28:0;;;;;:17;:28;;;;;;;;10719:29;;10584:172;-1:-1:-1;10584:172:0:o;10987:584::-;11073:7;11127:1;11096:28;11106:6;11114:9;11096;:28::i;:::-;:32;11093:456;;;11140:17;11160:57;11188:28;11198:6;11206:9;11188;:28::i;:::-;11171:11;;11160:23;;:6;;:10;:23::i;:57::-;11273:4;11255:24;;;;:9;:24;;;;;;11140:77;;-1:-1:-1;11255:39:0;;11140:77;11255:28;:39::i;:::-;11246:4;11228:24;;;;:9;:24;;;;;;;:66;;;;11310:42;;-1:-1:-1;;;;;11310:42:0;;;;;;;11342:9;1361:25:1;;1349:2;1334:18;;1215:177;11310:42:0;;;;;;;;11384:1;11366:7;;:20;:62;;;;;11421:7;;11390:28;11400:6;11408:9;11390;:28::i;:::-;:38;11366:62;11363:146;;;11430:77;11448:4;6004:42;11470:36;11498:7;;11470:23;11481:11;;11470:6;:10;;:23;;;;:::i;:36::-;11430:9;:77::i;:::-;11526:21;:6;11537:9;11526:10;:21::i;:::-;11519:28;;;;;11093:456;-1:-1:-1;11557:6:0;10987:584;-1:-1:-1;;10987:584:0:o;1535:98::-;1593:7;1620:5;1624:1;1620;:5;:::i;1641:98::-;1699:7;1726:5;1730:1;1726;:5;:::i;10142:434::-;10232:16;;;10246:1;10232:16;;;;;;;;10208:21;;10232:16;;;;;;;;;;-1:-1:-1;10232:16:0;10208:40;;10277:4;10259;10264:1;10259:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10259:23:0;;;:7;;;;;;;;;;:23;;;;10303:6;;:13;;;-1:-1:-1;;;10303:13:0;;;;:6;;;;;:11;;:13;;;;;10259:7;;10303:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10293:4;10298:1;10293:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10293:23:0;;;:7;;;;;;;;;:23;10359:6;;10327:53;;10344:4;;10359:6;10368:11;10327:8;:53::i;:::-;10391:6;;:177;;-1:-1:-1;;;10391:177:0;;-1:-1:-1;;;;;10391:6:0;;;;:57;;:177;;10463:11;;10391:6;;10505:4;;10532;;10552:15;;10391:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10197:379;10142:434;:::o;10764:215::-;10877:4;;10841:7;;-1:-1:-1;;;;;10877:4:0;;;10864:17;;;;10861:39;;-1:-1:-1;10890:8:0;;10883:15;;10861:39;10923:4;;-1:-1:-1;;;;;10923:4:0;;;10913:14;;;;10910:35;;-1:-1:-1;10936:7:0;;10929:14;;10910:35;-1:-1:-1;10962:9:0;;10764:215;;;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;1858:247::-;1917:6;1970:2;1958:9;1949:7;1945:23;1941:32;1938:52;;;1986:1;1983;1976:12;1938:52;2025:9;2012:23;2044:31;2069:5;2044:31;:::i;2299:180::-;2358:6;2411:2;2399:9;2390:7;2386:23;2382:32;2379:52;;;2427:1;2424;2417:12;2379:52;-1:-1:-1;2450:23:1;;2299:180;-1:-1:-1;2299:180:1:o;2692:388::-;2760:6;2768;2821:2;2809:9;2800:7;2796:23;2792:32;2789:52;;;2837:1;2834;2827:12;2789:52;2876:9;2863:23;2895:31;2920:5;2895:31;:::i;:::-;2945:5;-1:-1:-1;3002:2:1;2987:18;;2974:32;3015:33;2974:32;3015:33;:::i;:::-;3067:7;3057:17;;;2692:388;;;;;:::o;3085:329::-;3287:2;3269:21;;;3326:1;3306:18;;;3299:29;-1:-1:-1;;;3359:2:1;3344:18;;3337:36;3405:2;3390:18;;3085:329::o;3419:251::-;3489:6;3542:2;3530:9;3521:7;3517:23;3513:32;3510:52;;;3558:1;3555;3548:12;3510:52;3590:9;3584:16;3609:31;3634:5;3609:31;:::i;4792:127::-;4853:10;4848:3;4844:20;4841:1;4834:31;4884:4;4881:1;4874:15;4908:4;4905:1;4898:15;4924:128;4991:9;;;5012:11;;;5009:37;;;5026:18;;:::i;6209:125::-;6274:9;;;6295:10;;;6292:36;;;6308:18;;:::i;7310:306::-;7398:6;7406;7414;7467:2;7455:9;7446:7;7442:23;7438:32;7435:52;;;7483:1;7480;7473:12;7435:52;7512:9;7506:16;7496:26;;7562:2;7551:9;7547:18;7541:25;7531:35;;7606:2;7595:9;7591:18;7585:25;7575:35;;7310:306;;;;;:::o;7621:168::-;7694:9;;;7725;;7742:15;;;7736:22;;7722:37;7712:71;;7763:18;;:::i;7794:217::-;7834:1;7860;7850:132;;7904:10;7899:3;7895:20;7892:1;7885:31;7939:4;7936:1;7929:15;7967:4;7964:1;7957:15;7850:132;-1:-1:-1;7996:9:1;;7794:217::o;8148:127::-;8209:10;8204:3;8200:20;8197:1;8190:31;8240:4;8237:1;8230:15;8264:4;8261:1;8254:15;8280:980;8542:4;8590:3;8579:9;8575:19;8621:6;8610:9;8603:25;8647:2;8685:6;8680:2;8669:9;8665:18;8658:34;8728:3;8723:2;8712:9;8708:18;8701:31;8752:6;8787;8781:13;8818:6;8810;8803:22;8856:3;8845:9;8841:19;8834:26;;8895:2;8887:6;8883:15;8869:29;;8916:1;8926:195;8940:6;8937:1;8934:13;8926:195;;;9005:13;;-1:-1:-1;;;;;9001:39:1;8989:52;;9096:15;;;;9061:12;;;;9037:1;8955:9;8926:195;;;-1:-1:-1;;;;;;;9177:32:1;;;;9172:2;9157:18;;9150:60;-1:-1:-1;;;9241:3:1;9226:19;9219:35;9138:3;8280:980;-1:-1:-1;;;8280:980:1:o

Swarm Source

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