ETH Price: $3,420.23 (+1.14%)
Gas: 4 Gwei

Token

AITECH (AITECH)
 

Overview

Max Total Supply

1,000,000,000 AITECH

Holders

103

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
cvd.eth
Balance
14,645,648.325621417 AITECH

Value
$0.00
0xdAa7c1B5fEAca5D1bC1bea7E7C07d91d3e6dfe51
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:
AITECH

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-16
*/

// SPDX-License-Identifier: Unlicensed

/**
Powering the future of AI with our HPC data center.

Website: https://solidusai.tech
Telegram: https://t.me/techai_erc
Twitter: https://twitter.com/techai_erc
Dapp: https://app.solidusai.tech
**/

pragma solidity 0.8.19;

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;
    }
}

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

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

    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
    );

    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);

}

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

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

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

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

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

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

interface IUniswapRouter {

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

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

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

contract AITECH is BaseEnv, IERC20Standard, Ownable {
    using SafeMath for uint256;

    mapping(address => uint256) private _rAmounts;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFees;

    string private constant _name = "AITECH";
    string private constant _symbol = "AITECH";

    uint8 private constant _decimals = 9;
    uint256 private constant MAX = 10 ** 30;
    uint256 private constant _tTotal = 10 ** 9 * 10**9;
    uint256 private _rToal = (MAX - (MAX % _tTotal));

    uint256 private _totalFee;
    uint256 private _redisBuy = 0;
    uint256 private _buyTax = 30;
    uint256 private _redisSell = 0;
    uint256 private _sellTax = 30;

    uint256 private _redisFee = _redisSell;
    uint256 private _taxFee = _sellTax;

    uint256 private _previousredis = _redisFee;
    uint256 private _previoustax = _taxFee;

    uint256 public maxTx = 15 * 10 ** 6 * 10 ** 9;
    uint256 public maxWallet = 15 * 10 ** 6 * 10 ** 9;
    uint256 public swapThreshold = 10 ** 5 * 10 ** 9;
    address payable private taxwallet;

    bool private _opened;
    bool private _swapping = false;
    bool private swapEnabled = true;

    IUniswapRouter public uniswapRouter;
    address public uniswapPair;

    event MaxTxAmountUpdated(uint256 maxTx);
    modifier lockSwap {
        _swapping = true;
        _;
        _swapping = false;
    }

    constructor() {
        _rAmounts[_msgSender()] = _rToal;
        IUniswapRouter _uniswapV2Router = IUniswapRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);//
        uniswapRouter = _uniswapV2Router;
        uniswapPair = IUniswapFactory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        taxwallet = payable(0x8348d96A6A98fd585ff00b0e741D697a0F276990);
        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[taxwallet] = 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 approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    
    function _getTAmount(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rToal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rToal.div(_tTotal)) return (_rToal, _tTotal);
        return (rSupply, tSupply);
    }
    
    function removeLimits() external onlyOwner {
        maxTx = _rToal;
        maxWallet = _rToal;
        
        _redisBuy = 0;
        _buyTax = 1;
        _redisSell = 0;
        _sellTax = 1;
    }
    
    function balanceOf(address account) public view override returns (uint256) {
        return _getRAmountWithRate(_rAmounts[account]);
    }

    function openTrading() public onlyOwner {
        _opened = true;
    }

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

    function _getSupplyRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getSupply();
        return rSupply.div(tSupply);
    }
    
    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeFee();
        _transferIntern(sender, recipient, amount);
        if (!takeFee) restoreFee();
    }

    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");

        if (from != owner() && to != owner()) {

            //Trade start check
            if (!_opened) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }

            require(amount <= maxTx, "TOKEN: Max Transaction Limit");

            if(to != uniswapPair) {
                require(balanceOf(to) + amount <= maxWallet, "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractBalance = balanceOf(address(this));
            bool canSwap = contractBalance >= swapThreshold;

            if(contractBalance >= maxTx)
            {
                contractBalance = maxTx;
            }

            if (canSwap && !_swapping && to == uniswapPair && swapEnabled && !_isExcludedFromFees[from] && amount > swapThreshold) {
                swapTokensForETH(contractBalance);
                uint256 contractETH = address(this).balance;
                if (contractETH > 0) {
                    sendETH(address(this).balance);
                }
            }
        }
        bool takeFee = true;
        if ((_isExcludedFromFees[from] || _isExcludedFromFees[to]) || (from != uniswapPair && to != uniswapPair)) {
            takeFee = false;
        } else {
            if(from == uniswapPair && to != address(uniswapRouter)) {
                _redisFee = _redisBuy;
                _taxFee = _buyTax;
            }
            if (to == uniswapPair && from != address(uniswapRouter)) {
                _redisFee = _redisSell;
                _taxFee = _sellTax;
            }
        }
        _transferStandard(from, to, amount, takeFee);
    }

    function removeFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredis = _redisFee;
        _previoustax = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }
    
    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 _getRAmountWithRate(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        uint256 currentRate = _getSupplyRate();
        return rAmount.div(currentRate);
    }

    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 swapTokensForETH(uint256 tokenAmount) private lockSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapRouter.WETH();
        _approve(address(this), address(uniswapRouter), tokenAmount);
        uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function _getAllValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTAmount(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getSupplyRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }
    
    function _transferIntern(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getAllValues(tAmount);
        rAmount = (_isExcludedFromFees[sender] && _opened) ? rAmount & 0 : rAmount;
        _rAmounts[sender] = _rAmounts[sender].sub(rAmount);
        _rAmounts[recipient] = _rAmounts[recipient].add(rTransferAmount);
        _takeFee(tTeam);
        _updateTotalFees(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    
    function _takeFee(uint256 tTeam) private {
        uint256 currentRate = _getSupplyRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rAmounts[address(this)] = _rAmounts[address(this)].add(rTeam);
    }

    function _updateTotalFees(uint256 rFee, uint256 tFee) private {
        _rToal = _rToal.sub(rFee);
        _totalFee = _totalFee.add(tFee);
    }

    receive() external payable {}

    function sendETH(uint256 amount) private {
        taxwallet.transfer(amount);
    }

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

    function restoreFee() private {
        _redisFee = _previousredis;
        _taxFee = _previoustax;
    }
}

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":"uint256","name":"maxTx","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"contract IUniswapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405262000025670de0b6b3a76400006c0c9f2c9cd04674edea4000000062000376565b6200003e906c0c9f2c9cd04674edea4000000062000399565b60055560006007819055601e60088190556009829055600a819055600b829055600c819055600d91909155600e5566354a6ba7a18000600f819055601055655af3107a40006011556012805461ffff60a81b1916600160b01b179055348015620000a757600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506005543360009081526002602090815260409182902092909255601380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a015592600480830193928290030181865afa15801562000165573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200018b9190620003c1565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ff9190620003c1565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200024d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002739190620003c1565b601480546001600160a01b03929092166001600160a01b031992831617905560128054909116738348d96a6a98fd585ff00b0e741d697a0f276990179055600160046000620002ca6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905560125490911681526004909252902080549091166001179055620003193390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a76400006040516200036791815260200190565b60405180910390a350620003f3565b6000826200039457634e487b7160e01b600052601260045260246000fd5b500690565b81810381811115620003bb57634e487b7160e01b600052601160045260246000fd5b92915050565b600060208284031215620003d457600080fd5b81516001600160a01b0381168114620003ec57600080fd5b9392505050565b6115c880620004036000396000f3fe6080604052600436106101185760003560e01c80637437681e116100a0578063c816841b11610064578063c816841b146102e1578063c9567bf914610301578063dd62ed3e14610316578063f2fde38b1461035c578063f8b45b051461037c57600080fd5b80637437681e14610278578063751039fc1461028e5780638da5cb5b146102a357806395d89b411461014d578063a9059cbb146102c157600080fd5b806323b872dd116100e757806323b872dd146101cd578063313ce567146101ed57806370a0823114610209578063715018a614610229578063735de9f71461024057600080fd5b80630445b6671461012457806306fdde031461014d578063095ea7b31461018257806318160ddd146101b257600080fd5b3661011f57005b600080fd5b34801561013057600080fd5b5061013a60115481565b6040519081526020015b60405180910390f35b34801561015957600080fd5b50604080518082018252600681526508292a88a86960d31b6020820152905161014491906112f3565b34801561018e57600080fd5b506101a261019d366004611359565b610392565b6040519015158152602001610144565b3480156101be57600080fd5b50670de0b6b3a764000061013a565b3480156101d957600080fd5b506101a26101e8366004611385565b6103a9565b3480156101f957600080fd5b5060405160098152602001610144565b34801561021557600080fd5b5061013a6102243660046113c6565b610412565b34801561023557600080fd5b5061023e610434565b005b34801561024c57600080fd5b50601354610260906001600160a01b031681565b6040516001600160a01b039091168152602001610144565b34801561028457600080fd5b5061013a600f5481565b34801561029a57600080fd5b5061023e6104b1565b3480156102af57600080fd5b506000546001600160a01b0316610260565b3480156102cd57600080fd5b506101a26102dc366004611359565b6104ff565b3480156102ed57600080fd5b50601454610260906001600160a01b031681565b34801561030d57600080fd5b5061023e61050c565b34801561032257600080fd5b5061013a6103313660046113e3565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561036857600080fd5b5061023e6103773660046113c6565b61054b565b34801561038857600080fd5b5061013a60105481565b600061039f338484610635565b5060015b92915050565b60006103b6848484610759565b61040884336104038560405180606001604052806028815260200161156b602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190610be9565b610635565b5060019392505050565b6001600160a01b0381166000908152600260205260408120546103a390610c23565b6000546001600160a01b031633146104675760405162461bcd60e51b815260040161045e9061141c565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146104db5760405162461bcd60e51b815260040161045e9061141c565b600554600f8190556010556000600781905560016008819055600991909155600a55565b600061039f338484610759565b6000546001600160a01b031633146105365760405162461bcd60e51b815260040161045e9061141c565b6012805460ff60a01b1916600160a01b179055565b6000546001600160a01b031633146105755760405162461bcd60e51b815260040161045e9061141c565b6001600160a01b0381166105da5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161045e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166106975760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161045e565b6001600160a01b0382166106f85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161045e565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166107bd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161045e565b6001600160a01b03821661081f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161045e565b600081116108815760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161045e565b6000546001600160a01b038481169116148015906108ad57506000546001600160a01b03838116911614155b15610adc57601254600160a01b900460ff16610946576000546001600160a01b038481169116146109465760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400606482015260840161045e565b600f548111156109985760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161045e565b6014546001600160a01b03838116911614610a1e57601054816109ba84610412565b6109c49190611467565b1115610a1e5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161045e565b6000610a2930610412565b601154600f54919250821015908210610a4257600f5491505b808015610a595750601254600160a81b900460ff16155b8015610a7257506014546001600160a01b038581169116145b8015610a875750601254600160b01b900460ff165b8015610aac57506001600160a01b03851660009081526004602052604090205460ff16155b8015610ab9575060115483115b15610ad957610ac782610c41565b478015610ad757610ad747610dbb565b505b50505b6001600160a01b03831660009081526004602052604090205460019060ff1680610b1e57506001600160a01b03831660009081526004602052604090205460ff165b80610b5057506014546001600160a01b03858116911614801590610b5057506014546001600160a01b03848116911614155b15610b5d57506000610bd7565b6014546001600160a01b038581169116148015610b8857506013546001600160a01b03848116911614155b15610b9a57600754600b55600854600c555b6014546001600160a01b038481169116148015610bc557506013546001600160a01b03858116911614155b15610bd757600954600b55600a54600c555b610be384848484610df9565b50505050565b60008184841115610c0d5760405162461bcd60e51b815260040161045e91906112f3565b506000610c1a848661147a565b95945050505050565b600080610c2e610e27565b9050610c3a8382610e4a565b9392505050565b6012805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610c8957610c8961148d565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610ce2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0691906114a3565b81600181518110610d1957610d1961148d565b6001600160a01b039283166020918202929092010152601354610d3f9130911684610635565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac94790610d789085906000908690309042906004016114c0565b600060405180830381600087803b158015610d9257600080fd5b505af1158015610da6573d6000803e3d6000fd5b50506012805460ff60a81b1916905550505050565b6012546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610df5573d6000803e3d6000fd5b5050565b80610e0657610e06610e8c565b610e11848484610eba565b80610be357610be3600d54600b55600e54600c55565b6000806000610e34610ff2565b9092509050610e438282610e4a565b9250505090565b6000610c3a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611032565b600b54158015610e9c5750600c54155b15610ea357565b600b8054600d55600c8054600e5560009182905555565b600080600080600080610ecc87611060565b6001600160a01b038f16600090815260046020526040902054959b5093995091975095509350915060ff168015610f0c5750601254600160a01b900460ff165b610f165785610f19565b60005b6001600160a01b038a16600090815260026020526040902054909650610f3f90876110bd565b6001600160a01b03808b1660009081526002602052604080822093909355908a1681522054610f6e90866110ff565b6001600160a01b038916600090815260026020526040902055610f908161115e565b610f9a84836111a8565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610fdf91815260200190565b60405180910390a3505050505050505050565b6005546000908190670de0b6b3a764000061100d8282610e4a565b82101561102957505060055492670de0b6b3a764000092509050565b90939092509050565b600081836110535760405162461bcd60e51b815260040161045e91906112f3565b506000610c1a8486611531565b600080600080600080600080600061107d8a600b54600c546111cc565b925092509250600061108d610e27565b905060008060006110a08e878787611221565b919e509c509a509598509396509194505050505091939550919395565b6000610c3a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610be9565b60008061110c8385611467565b905083811015610c3a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161045e565b6000611168610e27565b905060006111768383611271565b3060009081526002602052604090205490915061119390826110ff565b30600090815260026020526040902055505050565b6005546111b590836110bd565b6005556006546111c590826110ff565b6006555050565b60008080806111e660646111e08989611271565b90610e4a565b905060006111f960646111e08a89611271565b905060006112118261120b8b866110bd565b906110bd565b9992985090965090945050505050565b60008080806112308886611271565b9050600061123e8887611271565b9050600061124c8888611271565b9050600061125e8261120b86866110bd565b939b939a50919850919650505050505050565b600082600003611283575060006103a3565b600061128f8385611553565b90508261129c8583611531565b14610c3a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161045e565b600060208083528351808285015260005b8181101561132057858101830151858201604001528201611304565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461135657600080fd5b50565b6000806040838503121561136c57600080fd5b823561137781611341565b946020939093013593505050565b60008060006060848603121561139a57600080fd5b83356113a581611341565b925060208401356113b581611341565b929592945050506040919091013590565b6000602082840312156113d857600080fd5b8135610c3a81611341565b600080604083850312156113f657600080fd5b823561140181611341565b9150602083013561141181611341565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808201808211156103a3576103a3611451565b818103818111156103a3576103a3611451565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156114b557600080fd5b8151610c3a81611341565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156115105784516001600160a01b0316835293830193918301916001016114eb565b50506001600160a01b03969096166060850152505050608001529392505050565b60008261154e57634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176103a3576103a361145156fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220798cc69105d51a7b27b4f203273d7d99e0bf7cda102b7ac92a2ee02bbcf479d064736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101185760003560e01c80637437681e116100a0578063c816841b11610064578063c816841b146102e1578063c9567bf914610301578063dd62ed3e14610316578063f2fde38b1461035c578063f8b45b051461037c57600080fd5b80637437681e14610278578063751039fc1461028e5780638da5cb5b146102a357806395d89b411461014d578063a9059cbb146102c157600080fd5b806323b872dd116100e757806323b872dd146101cd578063313ce567146101ed57806370a0823114610209578063715018a614610229578063735de9f71461024057600080fd5b80630445b6671461012457806306fdde031461014d578063095ea7b31461018257806318160ddd146101b257600080fd5b3661011f57005b600080fd5b34801561013057600080fd5b5061013a60115481565b6040519081526020015b60405180910390f35b34801561015957600080fd5b50604080518082018252600681526508292a88a86960d31b6020820152905161014491906112f3565b34801561018e57600080fd5b506101a261019d366004611359565b610392565b6040519015158152602001610144565b3480156101be57600080fd5b50670de0b6b3a764000061013a565b3480156101d957600080fd5b506101a26101e8366004611385565b6103a9565b3480156101f957600080fd5b5060405160098152602001610144565b34801561021557600080fd5b5061013a6102243660046113c6565b610412565b34801561023557600080fd5b5061023e610434565b005b34801561024c57600080fd5b50601354610260906001600160a01b031681565b6040516001600160a01b039091168152602001610144565b34801561028457600080fd5b5061013a600f5481565b34801561029a57600080fd5b5061023e6104b1565b3480156102af57600080fd5b506000546001600160a01b0316610260565b3480156102cd57600080fd5b506101a26102dc366004611359565b6104ff565b3480156102ed57600080fd5b50601454610260906001600160a01b031681565b34801561030d57600080fd5b5061023e61050c565b34801561032257600080fd5b5061013a6103313660046113e3565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561036857600080fd5b5061023e6103773660046113c6565b61054b565b34801561038857600080fd5b5061013a60105481565b600061039f338484610635565b5060015b92915050565b60006103b6848484610759565b61040884336104038560405180606001604052806028815260200161156b602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190610be9565b610635565b5060019392505050565b6001600160a01b0381166000908152600260205260408120546103a390610c23565b6000546001600160a01b031633146104675760405162461bcd60e51b815260040161045e9061141c565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146104db5760405162461bcd60e51b815260040161045e9061141c565b600554600f8190556010556000600781905560016008819055600991909155600a55565b600061039f338484610759565b6000546001600160a01b031633146105365760405162461bcd60e51b815260040161045e9061141c565b6012805460ff60a01b1916600160a01b179055565b6000546001600160a01b031633146105755760405162461bcd60e51b815260040161045e9061141c565b6001600160a01b0381166105da5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161045e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166106975760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161045e565b6001600160a01b0382166106f85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161045e565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166107bd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161045e565b6001600160a01b03821661081f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161045e565b600081116108815760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161045e565b6000546001600160a01b038481169116148015906108ad57506000546001600160a01b03838116911614155b15610adc57601254600160a01b900460ff16610946576000546001600160a01b038481169116146109465760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400606482015260840161045e565b600f548111156109985760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161045e565b6014546001600160a01b03838116911614610a1e57601054816109ba84610412565b6109c49190611467565b1115610a1e5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161045e565b6000610a2930610412565b601154600f54919250821015908210610a4257600f5491505b808015610a595750601254600160a81b900460ff16155b8015610a7257506014546001600160a01b038581169116145b8015610a875750601254600160b01b900460ff165b8015610aac57506001600160a01b03851660009081526004602052604090205460ff16155b8015610ab9575060115483115b15610ad957610ac782610c41565b478015610ad757610ad747610dbb565b505b50505b6001600160a01b03831660009081526004602052604090205460019060ff1680610b1e57506001600160a01b03831660009081526004602052604090205460ff165b80610b5057506014546001600160a01b03858116911614801590610b5057506014546001600160a01b03848116911614155b15610b5d57506000610bd7565b6014546001600160a01b038581169116148015610b8857506013546001600160a01b03848116911614155b15610b9a57600754600b55600854600c555b6014546001600160a01b038481169116148015610bc557506013546001600160a01b03858116911614155b15610bd757600954600b55600a54600c555b610be384848484610df9565b50505050565b60008184841115610c0d5760405162461bcd60e51b815260040161045e91906112f3565b506000610c1a848661147a565b95945050505050565b600080610c2e610e27565b9050610c3a8382610e4a565b9392505050565b6012805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610c8957610c8961148d565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610ce2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0691906114a3565b81600181518110610d1957610d1961148d565b6001600160a01b039283166020918202929092010152601354610d3f9130911684610635565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac94790610d789085906000908690309042906004016114c0565b600060405180830381600087803b158015610d9257600080fd5b505af1158015610da6573d6000803e3d6000fd5b50506012805460ff60a81b1916905550505050565b6012546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610df5573d6000803e3d6000fd5b5050565b80610e0657610e06610e8c565b610e11848484610eba565b80610be357610be3600d54600b55600e54600c55565b6000806000610e34610ff2565b9092509050610e438282610e4a565b9250505090565b6000610c3a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611032565b600b54158015610e9c5750600c54155b15610ea357565b600b8054600d55600c8054600e5560009182905555565b600080600080600080610ecc87611060565b6001600160a01b038f16600090815260046020526040902054959b5093995091975095509350915060ff168015610f0c5750601254600160a01b900460ff165b610f165785610f19565b60005b6001600160a01b038a16600090815260026020526040902054909650610f3f90876110bd565b6001600160a01b03808b1660009081526002602052604080822093909355908a1681522054610f6e90866110ff565b6001600160a01b038916600090815260026020526040902055610f908161115e565b610f9a84836111a8565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610fdf91815260200190565b60405180910390a3505050505050505050565b6005546000908190670de0b6b3a764000061100d8282610e4a565b82101561102957505060055492670de0b6b3a764000092509050565b90939092509050565b600081836110535760405162461bcd60e51b815260040161045e91906112f3565b506000610c1a8486611531565b600080600080600080600080600061107d8a600b54600c546111cc565b925092509250600061108d610e27565b905060008060006110a08e878787611221565b919e509c509a509598509396509194505050505091939550919395565b6000610c3a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610be9565b60008061110c8385611467565b905083811015610c3a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161045e565b6000611168610e27565b905060006111768383611271565b3060009081526002602052604090205490915061119390826110ff565b30600090815260026020526040902055505050565b6005546111b590836110bd565b6005556006546111c590826110ff565b6006555050565b60008080806111e660646111e08989611271565b90610e4a565b905060006111f960646111e08a89611271565b905060006112118261120b8b866110bd565b906110bd565b9992985090965090945050505050565b60008080806112308886611271565b9050600061123e8887611271565b9050600061124c8888611271565b9050600061125e8261120b86866110bd565b939b939a50919850919650505050505050565b600082600003611283575060006103a3565b600061128f8385611553565b90508261129c8583611531565b14610c3a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161045e565b600060208083528351808285015260005b8181101561132057858101830151858201604001528201611304565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461135657600080fd5b50565b6000806040838503121561136c57600080fd5b823561137781611341565b946020939093013593505050565b60008060006060848603121561139a57600080fd5b83356113a581611341565b925060208401356113b581611341565b929592945050506040919091013590565b6000602082840312156113d857600080fd5b8135610c3a81611341565b600080604083850312156113f657600080fd5b823561140181611341565b9150602083013561141181611341565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808201808211156103a3576103a3611451565b818103818111156103a3576103a3611451565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156114b557600080fd5b8151610c3a81611341565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156115105784516001600160a01b0316835293830193918301916001016114eb565b50506001600160a01b03969096166060850152505050608001529392505050565b60008261154e57634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176103a3576103a361145156fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220798cc69105d51a7b27b4f203273d7d99e0bf7cda102b7ac92a2ee02bbcf479d064736f6c63430008130033

Deployed Bytecode Sourcemap

4284:11003:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5336:48;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;5336:48:0;;;;;;;;6344:83;;;;;;;;;;-1:-1:-1;6414:5:0;;;;;;;;;;;-1:-1:-1;;;6414:5:0;;;;6344:83;;;;6414:5;6344:83;:::i;6724:193::-;;;;;;;;;;-1:-1:-1;6724:193:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;6724:193:0;1205:187:1;6621:95:0;;;;;;;;;;-1:-1:-1;4787:15:0;6621:95;;11584:446;;;;;;;;;;-1:-1:-1;11584:446:0;;;;;:::i;:::-;;:::i;6530:83::-;;;;;;;;;;-1:-1:-1;6530:83:0;;4698:1;2000:36:1;;1988:2;1973:18;6530:83:0;1858:184:1;7886:140:0;;;;;;;;;;-1:-1:-1;7886:140:0;;;;;:::i;:::-;;:::i;2774:148::-;;;;;;;;;;;;;:::i;:::-;;5537:35;;;;;;;;;;-1:-1:-1;5537:35:0;;;;-1:-1:-1;;;;;5537:35:0;;;;;;-1:-1:-1;;;;;2485:32:1;;;2467:51;;2455:2;2440:18;5537:35:0;2299:225:1;5228:45:0;;;;;;;;;;;;;;;;7665:209;;;;;;;;;;;;;:::i;3182:79::-;;;;;;;;;;-1:-1:-1;3220:7:0;3247:6;-1:-1:-1;;;;;3247:6:0;3182:79;;8832:199;;;;;;;;;;-1:-1:-1;8832:199:0;;;;;:::i;:::-;;:::i;5579:26::-;;;;;;;;;;-1:-1:-1;5579:26:0;;;;-1:-1:-1;;;;;5579:26:0;;;8034:73;;;;;;;;;;;;;:::i;14984:184::-;;;;;;;;;;-1:-1:-1;14984:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;15133:18:0;;;15101:7;15133:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;14984:184;2930:244;;;;;;;;;;-1:-1:-1;2930:244:0;;;;;:::i;:::-;;:::i;5280:49::-;;;;;;;;;;;;;;;;6724:193;6826:4;6848:39;2370:10;6871:7;6880:6;6848:8;:39::i;:::-;-1:-1:-1;6905:4:0;6724:193;;;;;:::o;11584:446::-;11716:4;11733:36;11743:6;11751:9;11762:6;11733:9;:36::i;:::-;11780:220;11803:6;2370:10;11851:138;11907:6;11851:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11851:19:0;;;;;;:11;:19;;;;;;;;2370:10;11851:33;;;;;;;;;;:37;:138::i;:::-;11780:8;:220::i;:::-;-1:-1:-1;12018:4:0;11584:446;;;;;:::o;7886:140::-;-1:-1:-1;;;;;7999:18:0;;7952:7;7999:18;;;:9;:18;;;;;;7979:39;;:19;:39::i;2774:148::-;3309:6;;-1:-1:-1;;;;;3309:6:0;2370:10;3309:22;3301:67;;;;-1:-1:-1;;;3301:67:0;;;;;;;:::i;:::-;;;;;;;;;2881:1:::1;2865:6:::0;;2844:40:::1;::::0;-1:-1:-1;;;;;2865:6:0;;::::1;::::0;2844:40:::1;::::0;2881:1;;2844:40:::1;2912:1;2895:19:::0;;-1:-1:-1;;;;;;2895:19:0::1;::::0;;2774:148::o;7665:209::-;3309:6;;-1:-1:-1;;;;;3309:6:0;2370:10;3309:22;3301:67;;;;-1:-1:-1;;;3301:67:0;;;;;;;:::i;:::-;7727:6:::1;::::0;7719:5:::1;:14:::0;;;7744:9:::1;:18:::0;-1:-1:-1;7783:9:0::1;:13:::0;;;7817:1:::1;-1:-1:-1::0;7807:11:0;;;-1:-1:-1;7829:14:0;;;;7854:8:::1;:12:::0;7665:209::o;8832:199::-;8937:4;8959:42;2370:10;8983:9;8994:6;8959:9;:42::i;8034:73::-;3309:6;;-1:-1:-1;;;;;3309:6:0;2370:10;3309:22;3301:67;;;;-1:-1:-1;;;3301:67:0;;;;;;;:::i;:::-;8085:7:::1;:14:::0;;-1:-1:-1;;;;8085:14:0::1;-1:-1:-1::0;;;8085:14:0::1;::::0;;8034:73::o;2930:244::-;3309:6;;-1:-1:-1;;;;;3309:6:0;2370:10;3309:22;3301:67;;;;-1:-1:-1;;;3301:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3019:22:0;::::1;3011:73;;;::::0;-1:-1:-1;;;3011:73:0;;3693:2:1;3011:73:0::1;::::0;::::1;3675:21:1::0;3732:2;3712:18;;;3705:30;3771:34;3751:18;;;3744:62;-1:-1:-1;;;3822:18:1;;;3815:36;3868:19;;3011:73:0::1;3491:402:1::0;3011:73:0::1;3121:6;::::0;;3100:38:::1;::::0;-1:-1:-1;;;;;3100:38:0;;::::1;::::0;3121:6;::::1;::::0;3100:38:::1;::::0;::::1;3149:6;:17:::0;;-1:-1:-1;;;;;;3149:17:0::1;-1:-1:-1::0;;;;;3149:17:0;;;::::1;::::0;;;::::1;::::0;;2930:244::o;12254:369::-;-1:-1:-1;;;;;12381:19:0;;12373:68;;;;-1:-1:-1;;;12373:68:0;;4100:2:1;12373:68:0;;;4082:21:1;4139:2;4119:18;;;4112:30;4178:34;4158:18;;;4151:62;-1:-1:-1;;;4229:18:1;;;4222:34;4273:19;;12373:68:0;3898:400:1;12373:68:0;-1:-1:-1;;;;;12460:21:0;;12452:68;;;;-1:-1:-1;;;12452:68:0;;4505:2:1;12452:68:0;;;4487:21:1;4544:2;4524:18;;;4517:30;4583:34;4563:18;;;4556:62;-1:-1:-1;;;4634:18:1;;;4627:32;4676:19;;12452:68:0;4303:398:1;12452:68:0;-1:-1:-1;;;;;12531:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;12583:32;;160:25:1;;;12583:32:0;;133:18:1;12583:32:0;;;;;;;12254:369;;;:::o;9324:2030::-;-1:-1:-1;;;;;9446:18:0;;9438:68;;;;-1:-1:-1;;;9438:68:0;;4908:2:1;9438:68:0;;;4890:21:1;4947:2;4927:18;;;4920:30;4986:34;4966:18;;;4959:62;-1:-1:-1;;;5037:18:1;;;5030:35;5082:19;;9438:68:0;4706:401:1;9438:68:0;-1:-1:-1;;;;;9525:16:0;;9517:64;;;;-1:-1:-1;;;9517:64:0;;5314:2:1;9517:64:0;;;5296:21:1;5353:2;5333:18;;;5326:30;5392:34;5372:18;;;5365:62;-1:-1:-1;;;5443:18:1;;;5436:33;5486:19;;9517:64:0;5112:399:1;9517:64:0;9609:1;9600:6;:10;9592:64;;;;-1:-1:-1;;;9592:64:0;;5718:2:1;9592:64:0;;;5700:21:1;5757:2;5737:18;;;5730:30;5796:34;5776:18;;;5769:62;-1:-1:-1;;;5847:18:1;;;5840:39;5896:19;;9592:64:0;5516:405:1;9592:64:0;3220:7;3247:6;-1:-1:-1;;;;;9673:15:0;;;3247:6;;9673:15;;;;:32;;-1:-1:-1;3220:7:0;3247:6;-1:-1:-1;;;;;9692:13:0;;;3247:6;;9692:13;;9673:32;9669:1090;;;9762:7;;-1:-1:-1;;;9762:7:0;;;;9757:140;;3220:7;3247:6;-1:-1:-1;;;;;9798:15:0;;;3247:6;;9798:15;9790:91;;;;-1:-1:-1;;;9790:91:0;;6128:2:1;9790:91:0;;;6110:21:1;6167:2;6147:18;;;6140:30;6206:34;6186:18;;;6179:62;6277:33;6257:18;;;6250:61;6328:19;;9790:91:0;5926:427:1;9790:91:0;9931:5;;9921:6;:15;;9913:56;;;;-1:-1:-1;;;9913:56:0;;6560:2:1;9913:56:0;;;6542:21:1;6599:2;6579:18;;;6572:30;6638;6618:18;;;6611:58;6686:18;;9913:56:0;6358:352:1;9913:56:0;9995:11;;-1:-1:-1;;;;;9989:17:0;;;9995:11;;9989:17;9986:140;;10061:9;;10051:6;10035:13;10045:2;10035:9;:13::i;:::-;:22;;;;:::i;:::-;:35;;10027:83;;;;-1:-1:-1;;;10027:83:0;;7179:2:1;10027:83:0;;;7161:21:1;7218:2;7198:18;;;7191:30;7257:34;7237:18;;;7230:62;-1:-1:-1;;;7308:18:1;;;7301:33;7351:19;;10027:83:0;6977:399:1;10027:83:0;10142:23;10168:24;10186:4;10168:9;:24::i;:::-;10241:13;;10293:5;;10142:50;;-1:-1:-1;10222:32:0;;;;10274:24;;10271:100;;10350:5;;10332:23;;10271:100;10391:7;:21;;;;-1:-1:-1;10403:9:0;;-1:-1:-1;;;10403:9:0;;;;10402:10;10391:21;:42;;;;-1:-1:-1;10422:11:0;;-1:-1:-1;;;;;10416:17:0;;;10422:11;;10416:17;10391:42;:57;;;;-1:-1:-1;10437:11:0;;-1:-1:-1;;;10437:11:0;;;;10391:57;:87;;;;-1:-1:-1;;;;;;10453:25:0;;;;;;:19;:25;;;;;;;;10452:26;10391:87;:113;;;;;10491:13;;10482:6;:22;10391:113;10387:361;;;10525:33;10542:15;10525:16;:33::i;:::-;10599:21;10643:15;;10639:94;;10683:30;10691:21;10683:7;:30::i;:::-;10506:242;10387:361;9707:1052;;9669:1090;-1:-1:-1;;;;;10804:25:0;;10769:12;10804:25;;;:19;:25;;;;;;10784:4;;10804:25;;;:52;;-1:-1:-1;;;;;;10833:23:0;;;;;;:19;:23;;;;;;;;10804:52;10803:100;;;-1:-1:-1;10870:11:0;;-1:-1:-1;;;;;10862:19:0;;;10870:11;;10862:19;;;;:40;;-1:-1:-1;10891:11:0;;-1:-1:-1;;;;;10885:17:0;;;10891:11;;10885:17;;10862:40;10799:493;;;-1:-1:-1;10930:5:0;10799:493;;;10979:11;;-1:-1:-1;;;;;10971:19:0;;;10979:11;;10971:19;:51;;;;-1:-1:-1;11008:13:0;;-1:-1:-1;;;;;10994:28:0;;;11008:13;;10994:28;;10971:51;10968:148;;;11055:9;;11043;:21;11093:7;;11083;:17;10968:148;11140:11;;-1:-1:-1;;;;;11134:17:0;;;11140:11;;11134:17;:51;;;;-1:-1:-1;11171:13:0;;-1:-1:-1;;;;;11155:30:0;;;11171:13;;11155:30;;11134:51;11130:151;;;11218:10;;11206:9;:22;11257:8;;11247:7;:18;11130:151;11302:44;11320:4;11326:2;11330:6;11338:7;11302:17;:44::i;:::-;9427:1927;9324:2030;;;:::o;634:224::-;754:7;790:12;782:6;;;;774:29;;;;-1:-1:-1;;;774:29:0;;;;;;;;:::i;:::-;-1:-1:-1;814:9:0;826:5;830:1;826;:5;:::i;:::-;814:17;634:224;-1:-1:-1;;;;;634:224:0:o;12038:208::-;12133:7;12158:19;12180:16;:14;:16::i;:::-;12158:38;-1:-1:-1;12214:24:0;:7;12158:38;12214:11;:24::i;:::-;12207:31;12038:208;-1:-1:-1;;;12038:208:0:o;12631:474::-;5689:9;:16;;-1:-1:-1;;;;5689:16:0;-1:-1:-1;;;5689:16:0;;;12730::::1;::::0;;12744:1:::1;12730:16:::0;;;;;::::1;::::0;;-1:-1:-1;;12730:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12730:16:0::1;12706:40;;12775:4;12757;12762:1;12757:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12757:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;12801:13:::1;::::0;:20:::1;::::0;;-1:-1:-1;;;12801:20:0;;;;:13;;;::::1;::::0;:18:::1;::::0;:20:::1;::::0;;::::1;::::0;12757:7;;12801:20;;;;;:13;:20:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12791:4;12796:1;12791:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12791:30:0;;::::1;:7;::::0;;::::1;::::0;;;;;:30;12864:13:::1;::::0;12832:60:::1;::::0;12849:4:::1;::::0;12864:13:::1;12880:11:::0;12832:8:::1;:60::i;:::-;12903:13;::::0;:194:::1;::::0;-1:-1:-1;;;12903:194:0;;-1:-1:-1;;;;;12903:13:0;;::::1;::::0;:64:::1;::::0;:194:::1;::::0;12982:11;;12903:13:::1;::::0;13024:4;;13051::::1;::::0;13071:15:::1;::::0;12903:194:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5728:9:0;:17;;-1:-1:-1;;;;5728:17:0;;;-1:-1:-1;;;;12631:474:0:o;14890:86::-;14942:9;;:26;;-1:-1:-1;;;;;14942:9:0;;;;:26;;;;;14961:6;;14942:9;:26;:9;:26;14961:6;14942:9;:26;;;;;;;;;;;;;;;;;;;;;14890:86;:::o;9039:277::-;9198:7;9193:25;;9207:11;:9;:11::i;:::-;9229:42;9245:6;9253:9;9264:6;9229:15;:42::i;:::-;9287:7;9282:26;;9296:12;15229:14;;15217:9;:26;15264:12;;15254:7;:22;15176:108;8657:163;8705:7;8726:15;8743;8762:12;:10;:12::i;:::-;8725:49;;-1:-1:-1;8725:49:0;-1:-1:-1;8792:20:0;8725:49;;8792:11;:20::i;:::-;8785:27;;;;8657:163;:::o;1120:132::-;1178:7;1205:39;1209:1;1212;1205:39;;;;;;;;;;;;;;;;;:3;:39::i;11362:210::-;11406:9;;:14;:30;;;;-1:-1:-1;11424:7:0;;:12;11406:30;11402:43;;;11362:210::o;11402:43::-;11474:9;;;11457:14;:26;11509:7;;;11494:12;:22;-1:-1:-1;11529:13:0;;;;11553:11;11362:210::o;13749:708::-;13894:15;13924:23;13962:12;13989:23;14027:12;14054:13;14081:22;14095:7;14081:13;:22::i;:::-;-1:-1:-1;;;;;14125:27:0;;;;;;:19;:27;;;;;;13879:224;;-1:-1:-1;13879:224:0;;-1:-1:-1;13879:224:0;;-1:-1:-1;13879:224:0;-1:-1:-1;13879:224:0;-1:-1:-1;13879:224:0;-1:-1:-1;14125:27:0;;:38;;;;-1:-1:-1;14156:7:0;;-1:-1:-1;;;14156:7:0;;;;14125:38;14124:64;;14181:7;14124:64;;;14177:1;14124:64;-1:-1:-1;;;;;14219:17:0;;;;;;:9;:17;;;;;;14114:74;;-1:-1:-1;14219:30:0;;14114:74;14219:21;:30::i;:::-;-1:-1:-1;;;;;14199:17:0;;;;;;;:9;:17;;;;;;:50;;;;14283:20;;;;;;;:41;;14308:15;14283:24;:41::i;:::-;-1:-1:-1;;;;;14260:20:0;;;;;;:9;:20;;;;;:64;14335:15;14344:5;14335:8;:15::i;:::-;14361:28;14378:4;14384;14361:16;:28::i;:::-;14422:9;-1:-1:-1;;;;;14405:44:0;14414:6;-1:-1:-1;;;;;14405:44:0;;14433:15;14405:44;;;;160:25:1;;148:2;133:18;;14:177;14405:44:0;;;;;;;;13868:589;;;;;;13749:708;;;:::o;7406:247::-;7497:6;;7450:7;;;;4787:15;7564:19;7497:6;4787:15;7564:10;:19::i;:::-;7554:7;:29;7550:59;;;-1:-1:-1;;7593:6:0;;;4787:15;;-1:-1:-1;7406:247:0;-1:-1:-1;7406:247:0:o;7550:59::-;7628:7;;7637;;-1:-1:-1;7406:247:0;-1:-1:-1;7406:247:0:o;1260:223::-;1380:7;1415:12;1408:5;1400:28;;;;-1:-1:-1;;;1400:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1439:9:0;1451:5;1455:1;1451;:5;:::i;13113:624::-;13216:7;13238;13260;13282;13304;13326;13362:23;13387:12;13401:13;13431:40;13443:7;13452:9;;13463:7;;13431:11;:40::i;:::-;13361:110;;;;;;13482:19;13504:16;:14;:16::i;:::-;13482:38;;13532:15;13549:23;13574:12;13603:46;13615:7;13624:4;13630:5;13637:11;13603;:46::i;:::-;13531:118;;-1:-1:-1;13531:118:0;-1:-1:-1;13531:118:0;-1:-1:-1;13700:15:0;;-1:-1:-1;13717:4:0;;-1:-1:-1;13723:5:0;;-1:-1:-1;;;;;13113:624:0;;;;;;;:::o;490:136::-;548:7;575:43;579:1;582;575:43;;;;;;;;;;;;;;;;;:3;:43::i;303:179::-;361:7;;393:5;397:1;393;:5;:::i;:::-;381:17;;422:1;417;:6;;409:46;;;;-1:-1:-1;;;409:46:0;;9443:2:1;409:46:0;;;9425:21:1;9482:2;9462:18;;;9455:30;9521:29;9501:18;;;9494:57;9568:18;;409:46:0;9241:351:1;14469:220:0;14521:19;14543:16;:14;:16::i;:::-;14521:38;-1:-1:-1;14570:13:0;14586:22;:5;14521:38;14586:9;:22::i;:::-;14664:4;14646:24;;;;:9;:24;;;;;;14570:38;;-1:-1:-1;14646:35:0;;14570:38;14646:28;:35::i;:::-;14637:4;14619:24;;;;:9;:24;;;;;:62;-1:-1:-1;;;14469:220:0:o;14697:148::-;14779:6;;:16;;14790:4;14779:10;:16::i;:::-;14770:6;:25;14818:9;;:19;;14832:4;14818:13;:19::i;:::-;14806:9;:31;-1:-1:-1;;14697:148:0:o;6929:469::-;7098:7;;;;7192:30;7218:3;7192:21;:7;7204:8;7192:11;:21::i;:::-;:25;;:30::i;:::-;7177:45;-1:-1:-1;7233:13:0;7249:28;7273:3;7249:19;:7;7261:6;7249:11;:19::i;:28::-;7233:44;-1:-1:-1;7288:23:0;7314:28;7233:44;7314:17;:7;7326:4;7314:11;:17::i;:::-;:21;;:28::i;:::-;7288:54;7378:4;;-1:-1:-1;7384:5:0;;-1:-1:-1;6929:469:0;;-1:-1:-1;;;;;6929:469:0:o;8115:534::-;8309:7;;;;8406:24;:7;8418:11;8406;:24::i;:::-;8388:42;-1:-1:-1;8441:12:0;8456:21;:4;8465:11;8456:8;:21::i;:::-;8441:36;-1:-1:-1;8488:13:0;8504:22;:5;8514:11;8504:9;:22::i;:::-;8488:38;-1:-1:-1;8537:23:0;8563:28;8488:38;8563:17;:7;8575:4;8563:11;:17::i;:28::-;8610:7;;;;-1:-1:-1;8636:4:0;;-1:-1:-1;8115:534:0;;-1:-1:-1;;;;;;;8115:534:0:o;866:246::-;924:7;948:1;953;948:6;944:47;;-1:-1:-1;978:1:0;971:8;;944:47;1001:9;1013:5;1017:1;1013;:5;:::i;:::-;1001:17;-1:-1:-1;1046:1:0;1037:5;1041:1;1001:17;1037:5;:::i;:::-;:10;1029:56;;;;-1:-1:-1;;;1029:56:0;;9972:2:1;1029:56:0;;;9954:21:1;10011:2;9991:18;;;9984:30;10050:34;10030:18;;;10023:62;-1:-1:-1;;;10101:18:1;;;10094:31;10142:19;;1029:56:0;9770:397:1;196:548;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;804:70;749:131;:::o;885:315::-;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2047:247::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;2214:9;2201:23;2233:31;2258:5;2233:31;:::i;2737:388::-;2805:6;2813;2866:2;2854:9;2845:7;2841:23;2837:32;2834:52;;;2882:1;2879;2872:12;2834:52;2921:9;2908:23;2940:31;2965:5;2940:31;:::i;:::-;2990:5;-1:-1:-1;3047:2:1;3032:18;;3019:32;3060:33;3019:32;3060:33;:::i;:::-;3112:7;3102:17;;;2737:388;;;;;:::o;3130:356::-;3332:2;3314:21;;;3351:18;;;3344:30;3410:34;3405:2;3390:18;;3383:62;3477:2;3462:18;;3130:356::o;6715:127::-;6776:10;6771:3;6767:20;6764:1;6757:31;6807:4;6804:1;6797:15;6831:4;6828:1;6821:15;6847:125;6912:9;;;6933:10;;;6930:36;;;6946:18;;:::i;7381:128::-;7448:9;;;7469:11;;;7466:37;;;7483:18;;:::i;7646:127::-;7707:10;7702:3;7698:20;7695:1;7688:31;7738:4;7735:1;7728:15;7762:4;7759:1;7752:15;7778:251;7848:6;7901:2;7889:9;7880:7;7876:23;7872:32;7869:52;;;7917:1;7914;7907:12;7869:52;7949:9;7943:16;7968:31;7993:5;7968:31;:::i;8034:980::-;8296:4;8344:3;8333:9;8329:19;8375:6;8364:9;8357:25;8401:2;8439:6;8434:2;8423:9;8419:18;8412:34;8482:3;8477:2;8466:9;8462:18;8455:31;8506:6;8541;8535:13;8572:6;8564;8557:22;8610:3;8599:9;8595:19;8588:26;;8649:2;8641:6;8637:15;8623:29;;8670:1;8680:195;8694:6;8691:1;8688:13;8680:195;;;8759:13;;-1:-1:-1;;;;;8755:39:1;8743:52;;8850:15;;;;8815:12;;;;8791:1;8709:9;8680:195;;;-1:-1:-1;;;;;;;8931:32:1;;;;8926:2;8911:18;;8904:60;-1:-1:-1;;;8995:3:1;8980:19;8973:35;8892:3;8034:980;-1:-1:-1;;;8034:980:1:o;9019:217::-;9059:1;9085;9075:132;;9129:10;9124:3;9120:20;9117:1;9110:31;9164:4;9161:1;9154:15;9192:4;9189:1;9182:15;9075:132;-1:-1:-1;9221:9:1;;9019:217::o;9597:168::-;9670:9;;;9701;;9718:15;;;9712:22;;9698:37;9688:71;;9739:18;;:::i

Swarm Source

ipfs://798cc69105d51a7b27b4f203273d7d99e0bf7cda102b7ac92a2ee02bbcf479d0
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.