ETH Price: $2,437.69 (+0.96%)

Token

NimbusAI (NIMBUS)
 

Overview

Max Total Supply

1,000,000 NIMBUS

Holders

192

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
2,000 NIMBUS

Value
$0.00
0x16c86ddd9ee2ad062032c0150dc9f3aa3f833ae0
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:
Nimbus_AI

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-08-27
*/

/**

Telegram: https://t.me/NimbusAIERC

*/

// SPDX-License-Identifier: unlicense

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


interface IERC20 {
    function totalSupply() external view returns (uint256);
 
    function balanceOf(address account) external view returns (uint256);
 
    function transfer(address recipient, uint256 amount) external returns (bool);
 
    function allowance(address owner, address spender) external view returns (uint256);
 
    function approve(address spender, uint256 amount) external returns (bool);
 
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
 
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}
 
contract Ownable is Context {
    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 owner() public view returns (address) {
        return _owner;
    }
 
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
 
    function renounceOwner() 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;
    }
 
}
 
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 IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}
 
interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
 
    function factory() external pure returns (address);
 
    function WETH() external pure returns (address);
 
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}
 
contract Nimbus_AI is Context, IERC20, Ownable {
 
    using SafeMath for uint256;
 
    string private constant _name = "NimbusAI";
    string private constant _symbol = "NIMBUS";
    uint8 private constant _decimals = 9;
 
    mapping(address => uint256) private _tOwned;
    mapping(address => uint256) private _rOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000* 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 public launchBlock;
    uint256 private _tFeeTotal;

    uint256 public _maxTxAmount = _tTotal.mul(20).div(1000); 
    uint256 public _maxWalletSize = _tTotal.mul(20).div(1000); 
    uint256 public _swapTokensAtAmount = _tTotal.mul(5).div(1000); 

    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
 
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 25;
 
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 40;
 
 
    mapping(address => bool) public bots;
    mapping(address => uint256) private cooldown;

 
    address payable private _marketerWallet = payable(0xC60e67f2Db15a43C3c4F8d886B9b88a07DcB15a8);//marketer
    address payable private _teamWallet = payable(0x661056EC155045e8df9ee4Dd7f50C7A2dfDE3339);//team

 
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
 
    bool private swapEnabled = true;
    bool private tradingOpen;
    bool private inSwap = false;
 
 
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
 
    constructor() {
 
        _rOwned[_msgSender()] = _rTotal;
 
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
 
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketerWallet] = true;
        _isExcludedFromFee[_teamWallet] = 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 balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }
 
    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }
 
 
    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
 
    function allowance(address owner, address spender)
        public
        view
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }
 
    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }
 
    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }
 
    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;
 
        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;
 
        _redisFee = 0;
        _taxFee = 0;
    }
 
    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }
 
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
 
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
 
        if (from != owner() && to != owner()) {
 
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }
 
            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");
 
            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }
 
            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;
 
            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }
 
            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
 
        bool takeFee = true;
 
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {
 
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }
 
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }
 
        }
 
        _tokenTransfer(from, to, amount, takeFee);
    }
 
    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
 
    function sendETHToFee(uint256 amount) private {
        _marketerWallet.transfer(amount.div(2));
        _teamWallet.transfer(amount.div(2));
    }
 
    function startTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
        launchBlock = block.number;
    }//Launch
 
    function manualswap() external {
        require(_msgSender() == _marketerWallet || _msgSender() == _teamWallet);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function addBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }//addbots

    function manualsend() external {
        require(_msgSender() == _marketerWallet || _msgSender() == _teamWallet);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function delBots(address notbot) public onlyOwner {
        bots[notbot] = false;
    }//removebots
 
 
 
 
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }
 
    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
 
    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }
 
    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }
 
    receive() external payable {}
 
    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
 
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }
 
    function _getTValues(
        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 _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 _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
 
        return rSupply.div(tSupply);
    }
 
    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
 
        return (rSupply, tSupply);
    }
 
    function reduceFees(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
 
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }
 
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }
 
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

    function removeLimits () external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
    }
 
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }
 
    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }
 
    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }
}

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":"_maxTxAmount","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":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"reduceFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526200001866038d7ea4c680005f19620004d9565b62000025905f1962000503565b6006556200004a6103e86200004366038d7ea4c680006014620003af565b9062000442565b600955620000686103e86200004366038d7ea4c680006014620003af565b600a55620000866103e86200004366038d7ea4c680006005620003af565b600b5560128054600c81905560138054600d819055600e92909255600f919091555f601081905560196011819055925560289055601680546001600160a01b031990811673c60e67f2db15a43c3c4f8d886b9b88a07dcb15a8179091556017805490911673661056ec155045e8df9ee4dd7f50c7a2dfde3339179055805462ff00ff60a01b1916600160a01b17905534801562000121575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600654335f9081526003602090815260409182902092909255601880546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a015592600480830193928290030181865afa158015620001db573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000201919062000519565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200024d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000273919062000519565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620002be573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002e4919062000519565b601980546001600160a01b0319166001600160a01b039283161790555f80548216815260056020526040808220805460ff1990811660019081179092553084528284208054821683179055601654851684528284208054821683179055601754909416835291208054909216179055336001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef66038d7ea4c68000604051620003a091815260200190565b60405180910390a350620005bf565b5f825f03620003c057505f6200043c565b5f620003cd838562000541565b905082620003dc85836200055b565b14620004395760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b5f6200043983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200048b60201b60201c565b5f8183620004ae5760405162461bcd60e51b815260040162000430919062000571565b505f620004bc84866200055b565b95945050505050565b634e487b7160e01b5f52601260045260245ffd5b5f82620004ea57620004ea620004c5565b500690565b634e487b7160e01b5f52601160045260245ffd5b818103818111156200043c576200043c620004ef565b5f602082840312156200052a575f80fd5b81516001600160a01b038116811462000439575f80fd5b80820281158282048414176200043c576200043c620004ef565b5f826200056c576200056c620004c5565b500490565b5f602080835283518060208501525f5b818110156200059f5785810183015185820160400152820162000581565b505f604082860101526040601f19601f8301168501019250505092915050565b611d9080620005cd5f395ff3fe6080604052600436106101d3575f3560e01c806374010ece116100fd578063bfd7928411610092578063d34628cc11610062578063d34628cc14610537578063dd62ed3e14610556578063ea1644d51461059a578063f2fde38b146105b9575f80fd5b8063bfd79284146104c1578063c3c8cd80146104ef578063c492f04614610503578063d00efb2f14610522575f80fd5b80638f9a55c0116100cd5780638f9a55c01461044057806395d89b411461045557806398a5c31514610483578063a9059cbb146104a2575f80fd5b806374010ece146103dc578063751039fc146103fb5780637d1db4a51461040f5780638da5cb5b14610424575f80fd5b80632fd689e31161017357806360e65bb81161014357806360e65bb81461036b5780636d8aa8f81461038a5780636fc3eaec146103a957806370a08231146103bd575f80fd5b80632fd689e3146102fd578063313ce5671461031257806349bd5a5e1461032d5780634c8afff41461034c575f80fd5b80631694505e116101ae5780631694505e1461027057806318160ddd146102a757806323b872dd146102ca57806328c23a45146102e9575f80fd5b806306fdde03146101de57806309053ad014610220578063095ea7b314610241575f80fd5b366101da57005b5f80fd5b3480156101e9575f80fd5b506040805180820190915260088152674e696d627573414960c01b60208201525b6040516102179190611904565b60405180910390f35b34801561022b575f80fd5b5061023f61023a366004611950565b6105d8565b005b34801561024c575f80fd5b5061026061025b3660046119a3565b61061e565b6040519015158152602001610217565b34801561027b575f80fd5b5060185461028f906001600160a01b031681565b6040516001600160a01b039091168152602001610217565b3480156102b2575f80fd5b5066038d7ea4c680005b604051908152602001610217565b3480156102d5575f80fd5b506102606102e43660046119cd565b610634565b3480156102f4575f80fd5b5061023f61069b565b348015610308575f80fd5b506102bc600b5481565b34801561031d575f80fd5b5060405160098152602001610217565b348015610338575f80fd5b5060195461028f906001600160a01b031681565b348015610357575f80fd5b5061023f610366366004611a0b565b61070c565b348015610376575f80fd5b5061023f610385366004611a35565b610755565b348015610395575f80fd5b5061023f6103a4366004611a35565b6107a0565b3480156103b4575f80fd5b5061023f6107e7565b3480156103c8575f80fd5b506102bc6103d7366004611a0b565b610831565b3480156103e7575f80fd5b5061023f6103f6366004611a4e565b610852565b348015610406575f80fd5b5061023f610880565b34801561041a575f80fd5b506102bc60095481565b34801561042f575f80fd5b505f546001600160a01b031661028f565b34801561044b575f80fd5b506102bc600a5481565b348015610460575f80fd5b506040805180820190915260068152654e494d42555360d01b602082015261020a565b34801561048e575f80fd5b5061023f61049d366004611a4e565b6108bb565b3480156104ad575f80fd5b506102606104bc3660046119a3565b6108e9565b3480156104cc575f80fd5b506102606104db366004611a0b565b60146020525f908152604090205460ff1681565b3480156104fa575f80fd5b5061023f6108f5565b34801561050e575f80fd5b5061023f61051d366004611a65565b610947565b34801561052d575f80fd5b506102bc60075481565b348015610542575f80fd5b5061023f610551366004611af6565b6109da565b348015610561575f80fd5b506102bc610570366004611bb6565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b3480156105a5575f80fd5b5061023f6105b4366004611a4e565b610a62565b3480156105c4575f80fd5b5061023f6105d3366004611a0b565b610a90565b5f546001600160a01b0316331461060a5760405162461bcd60e51b815260040161060190611bed565b60405180910390fd5b601093909355601291909155601155601355565b5f61062a338484610b77565b5060015b92915050565b5f610640848484610c9a565b610691843361068c85604051806060016040528060288152602001611d33602891396001600160a01b038a165f90815260046020908152604080832033845290915290205491906111ca565b610b77565b5060019392505050565b5f546001600160a01b031633146106c45760405162461bcd60e51b815260040161060190611bed565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146107355760405162461bcd60e51b815260040161060190611bed565b6001600160a01b03165f908152601460205260409020805460ff19169055565b5f546001600160a01b0316331461077e5760405162461bcd60e51b815260040161060190611bed565b60198054911515600160a81b0260ff60a81b1990921691909117905543600755565b5f546001600160a01b031633146107c95760405162461bcd60e51b815260040161060190611bed565b60198054911515600160a01b0260ff60a01b19909216919091179055565b6016546001600160a01b0316336001600160a01b0316148061081c57506017546001600160a01b0316336001600160a01b0316145b610824575f80fd5b4761082e81611202565b50565b6001600160a01b0381165f9081526003602052604081205461062e90611281565b5f546001600160a01b0316331461087b5760405162461bcd60e51b815260040161060190611bed565b600955565b5f546001600160a01b031633146108a95760405162461bcd60e51b815260040161060190611bed565b66038d7ea4c680006009819055600a55565b5f546001600160a01b031633146108e45760405162461bcd60e51b815260040161060190611bed565b600b55565b5f61062a338484610c9a565b6016546001600160a01b0316336001600160a01b0316148061092a57506017546001600160a01b0316336001600160a01b0316145b610932575f80fd5b5f61093c30610831565b905061082e81611303565b5f546001600160a01b031633146109705760405162461bcd60e51b815260040161060190611bed565b5f5b828110156109d4578160055f86868581811061099057610990611c22565b90506020020160208101906109a59190611a0b565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610972565b50505050565b5f546001600160a01b03163314610a035760405162461bcd60e51b815260040161060190611bed565b5f5b8151811015610a5e57600160145f848481518110610a2557610a25611c22565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610a05565b5050565b5f546001600160a01b03163314610a8b5760405162461bcd60e51b815260040161060190611bed565b600a55565b5f546001600160a01b03163314610ab95760405162461bcd60e51b815260040161060190611bed565b6001600160a01b038116610b1e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610601565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610bd95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610601565b6001600160a01b038216610c3a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610601565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610cfe5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610601565b6001600160a01b038216610d605760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610601565b5f8111610dc15760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610601565b5f546001600160a01b03848116911614801590610deb57505f546001600160a01b03838116911614155b156110c657601954600160a81b900460ff16610e83575f546001600160a01b03848116911614610e835760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610601565b600954811115610ed55760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610601565b6001600160a01b0383165f9081526014602052604090205460ff16158015610f1557506001600160a01b0382165f9081526014602052604090205460ff16155b610f6d5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b6064820152608401610601565b6019546001600160a01b03838116911614610ff257600a5481610f8f84610831565b610f999190611c4a565b10610ff25760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610601565b5f610ffc30610831565b600b546009549192508210159082106110155760095491505b80801561102c5750601954600160b01b900460ff16155b801561104657506019546001600160a01b03868116911614155b801561105b5750601954600160a01b900460ff165b801561107f57506001600160a01b0385165f9081526005602052604090205460ff16155b80156110a357506001600160a01b0384165f9081526005602052604090205460ff16155b156110c3576110b182611303565b4780156110c1576110c147611202565b505b50505b6001600160a01b0383165f9081526005602052604090205460019060ff168061110657506001600160a01b0383165f9081526005602052604090205460ff165b8061113857506019546001600160a01b0385811691161480159061113857506019546001600160a01b03848116911614155b1561114457505f6111be565b6019546001600160a01b03858116911614801561116f57506018546001600160a01b03848116911614155b1561118157601054600c55601154600d555b6019546001600160a01b0384811691161480156111ac57506018546001600160a01b03858116911614155b156111be57601254600c55601354600d555b6109d484848484611473565b5f81848411156111ed5760405162461bcd60e51b81526004016106019190611904565b505f6111f98486611c5d565b95945050505050565b6016546001600160a01b03166108fc61121c8360026114a1565b6040518115909202915f818181858888f19350505050158015611241573d5f803e3d5ffd5b506017546001600160a01b03166108fc61125c8360026114a1565b6040518115909202915f818181858888f19350505050158015610a5e573d5f803e3d5ffd5b5f6006548211156112e75760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610601565b5f6112f06114e2565b90506112fc83826114a1565b9392505050565b6019805460ff60b01b1916600160b01b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061134957611349611c22565b6001600160a01b03928316602091820292909201810191909152601854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156113a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113c49190611c70565b816001815181106113d7576113d7611c22565b6001600160a01b0392831660209182029290920101526018546113fd9130911684610b77565b60185460405163791ac94760e01b81526001600160a01b039091169063791ac947906114359085905f90869030904290600401611c8b565b5f604051808303815f87803b15801561144c575f80fd5b505af115801561145e573d5f803e3d5ffd5b50506019805460ff60b01b1916905550505050565b8061148057611480611503565b61148b848484611530565b806109d4576109d4600e54600c55600f54600d55565b5f6112fc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611621565b5f805f6114ed61164d565b90925090506114fc82826114a1565b9250505090565b600c541580156115135750600d54155b1561151a57565b600c8054600e55600d8054600f555f9182905555565b5f805f805f8061153f8761168a565b6001600160a01b038f165f90815260036020526040902054959b5093995091975095509350915061157090876116df565b6001600160a01b03808b165f9081526003602052604080822093909355908a168152205461159e9086611720565b6001600160a01b0389165f908152600360205260409020556115bf8161177e565b6115c984836117c4565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161160e91815260200190565b60405180910390a3505050505050505050565b5f81836116415760405162461bcd60e51b81526004016106019190611904565b505f6111f98486611cfc565b6006545f90819066038d7ea4c6800061166682826114a1565b8210156116815750506006549266038d7ea4c6800092509050565b90939092509050565b5f805f805f805f805f6116a28a600c54600d546117e8565b9250925092505f6116b16114e2565b90505f805f6116c28e87878761183a565b919e509c509a509598509396509194505050505091939550919395565b5f6112fc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506111ca565b5f8061172c8385611c4a565b9050838110156112fc5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610601565b5f6117876114e2565b90505f6117948383611886565b305f908152600360205260409020549091506117b09082611720565b305f90815260036020526040902055505050565b6006546117d190836116df565b6006556008546117e19082611720565b6008555050565b5f80808061180160646117fb8989611886565b906114a1565b90505f61181360646117fb8a89611886565b90505f61182a826118248b866116df565b906116df565b9992985090965090945050505050565b5f8080806118488886611886565b90505f6118558887611886565b90505f6118628888611886565b90505f6118738261182486866116df565b939b939a50919850919650505050505050565b5f825f0361189557505f61062e565b5f6118a08385611d1b565b9050826118ad8583611cfc565b146112fc5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610601565b5f602080835283518060208501525f5b8181101561193057858101830151858201604001528201611914565b505f604082860101526040601f19601f8301168501019250505092915050565b5f805f8060808587031215611963575f80fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b038116811461082e575f80fd5b803561199e8161197f565b919050565b5f80604083850312156119b4575f80fd5b82356119bf8161197f565b946020939093013593505050565b5f805f606084860312156119df575f80fd5b83356119ea8161197f565b925060208401356119fa8161197f565b929592945050506040919091013590565b5f60208284031215611a1b575f80fd5b81356112fc8161197f565b8035801515811461199e575f80fd5b5f60208284031215611a45575f80fd5b6112fc82611a26565b5f60208284031215611a5e575f80fd5b5035919050565b5f805f60408486031215611a77575f80fd5b833567ffffffffffffffff80821115611a8e575f80fd5b818601915086601f830112611aa1575f80fd5b813581811115611aaf575f80fd5b8760208260051b8501011115611ac3575f80fd5b602092830195509350611ad99186019050611a26565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f6020808385031215611b07575f80fd5b823567ffffffffffffffff80821115611b1e575f80fd5b818501915085601f830112611b31575f80fd5b813581811115611b4357611b43611ae2565b8060051b604051601f19603f83011681018181108582111715611b6857611b68611ae2565b604052918252848201925083810185019188831115611b85575f80fd5b938501935b82851015611baa57611b9b85611993565b84529385019392850192611b8a565b98975050505050505050565b5f8060408385031215611bc7575f80fd5b8235611bd28161197f565b91506020830135611be28161197f565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8082018082111561062e5761062e611c36565b8181038181111561062e5761062e611c36565b5f60208284031215611c80575f80fd5b81516112fc8161197f565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611cdb5784516001600160a01b031683529383019391830191600101611cb6565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611d1657634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761062e5761062e611c3656fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220fe81e8592febca467ece967ce3ac4422710178cc1e743a1beecdf750400f43de64736f6c63430008170033

Deployed Bytecode

0x6080604052600436106101d3575f3560e01c806374010ece116100fd578063bfd7928411610092578063d34628cc11610062578063d34628cc14610537578063dd62ed3e14610556578063ea1644d51461059a578063f2fde38b146105b9575f80fd5b8063bfd79284146104c1578063c3c8cd80146104ef578063c492f04614610503578063d00efb2f14610522575f80fd5b80638f9a55c0116100cd5780638f9a55c01461044057806395d89b411461045557806398a5c31514610483578063a9059cbb146104a2575f80fd5b806374010ece146103dc578063751039fc146103fb5780637d1db4a51461040f5780638da5cb5b14610424575f80fd5b80632fd689e31161017357806360e65bb81161014357806360e65bb81461036b5780636d8aa8f81461038a5780636fc3eaec146103a957806370a08231146103bd575f80fd5b80632fd689e3146102fd578063313ce5671461031257806349bd5a5e1461032d5780634c8afff41461034c575f80fd5b80631694505e116101ae5780631694505e1461027057806318160ddd146102a757806323b872dd146102ca57806328c23a45146102e9575f80fd5b806306fdde03146101de57806309053ad014610220578063095ea7b314610241575f80fd5b366101da57005b5f80fd5b3480156101e9575f80fd5b506040805180820190915260088152674e696d627573414960c01b60208201525b6040516102179190611904565b60405180910390f35b34801561022b575f80fd5b5061023f61023a366004611950565b6105d8565b005b34801561024c575f80fd5b5061026061025b3660046119a3565b61061e565b6040519015158152602001610217565b34801561027b575f80fd5b5060185461028f906001600160a01b031681565b6040516001600160a01b039091168152602001610217565b3480156102b2575f80fd5b5066038d7ea4c680005b604051908152602001610217565b3480156102d5575f80fd5b506102606102e43660046119cd565b610634565b3480156102f4575f80fd5b5061023f61069b565b348015610308575f80fd5b506102bc600b5481565b34801561031d575f80fd5b5060405160098152602001610217565b348015610338575f80fd5b5060195461028f906001600160a01b031681565b348015610357575f80fd5b5061023f610366366004611a0b565b61070c565b348015610376575f80fd5b5061023f610385366004611a35565b610755565b348015610395575f80fd5b5061023f6103a4366004611a35565b6107a0565b3480156103b4575f80fd5b5061023f6107e7565b3480156103c8575f80fd5b506102bc6103d7366004611a0b565b610831565b3480156103e7575f80fd5b5061023f6103f6366004611a4e565b610852565b348015610406575f80fd5b5061023f610880565b34801561041a575f80fd5b506102bc60095481565b34801561042f575f80fd5b505f546001600160a01b031661028f565b34801561044b575f80fd5b506102bc600a5481565b348015610460575f80fd5b506040805180820190915260068152654e494d42555360d01b602082015261020a565b34801561048e575f80fd5b5061023f61049d366004611a4e565b6108bb565b3480156104ad575f80fd5b506102606104bc3660046119a3565b6108e9565b3480156104cc575f80fd5b506102606104db366004611a0b565b60146020525f908152604090205460ff1681565b3480156104fa575f80fd5b5061023f6108f5565b34801561050e575f80fd5b5061023f61051d366004611a65565b610947565b34801561052d575f80fd5b506102bc60075481565b348015610542575f80fd5b5061023f610551366004611af6565b6109da565b348015610561575f80fd5b506102bc610570366004611bb6565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b3480156105a5575f80fd5b5061023f6105b4366004611a4e565b610a62565b3480156105c4575f80fd5b5061023f6105d3366004611a0b565b610a90565b5f546001600160a01b0316331461060a5760405162461bcd60e51b815260040161060190611bed565b60405180910390fd5b601093909355601291909155601155601355565b5f61062a338484610b77565b5060015b92915050565b5f610640848484610c9a565b610691843361068c85604051806060016040528060288152602001611d33602891396001600160a01b038a165f90815260046020908152604080832033845290915290205491906111ca565b610b77565b5060019392505050565b5f546001600160a01b031633146106c45760405162461bcd60e51b815260040161060190611bed565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146107355760405162461bcd60e51b815260040161060190611bed565b6001600160a01b03165f908152601460205260409020805460ff19169055565b5f546001600160a01b0316331461077e5760405162461bcd60e51b815260040161060190611bed565b60198054911515600160a81b0260ff60a81b1990921691909117905543600755565b5f546001600160a01b031633146107c95760405162461bcd60e51b815260040161060190611bed565b60198054911515600160a01b0260ff60a01b19909216919091179055565b6016546001600160a01b0316336001600160a01b0316148061081c57506017546001600160a01b0316336001600160a01b0316145b610824575f80fd5b4761082e81611202565b50565b6001600160a01b0381165f9081526003602052604081205461062e90611281565b5f546001600160a01b0316331461087b5760405162461bcd60e51b815260040161060190611bed565b600955565b5f546001600160a01b031633146108a95760405162461bcd60e51b815260040161060190611bed565b66038d7ea4c680006009819055600a55565b5f546001600160a01b031633146108e45760405162461bcd60e51b815260040161060190611bed565b600b55565b5f61062a338484610c9a565b6016546001600160a01b0316336001600160a01b0316148061092a57506017546001600160a01b0316336001600160a01b0316145b610932575f80fd5b5f61093c30610831565b905061082e81611303565b5f546001600160a01b031633146109705760405162461bcd60e51b815260040161060190611bed565b5f5b828110156109d4578160055f86868581811061099057610990611c22565b90506020020160208101906109a59190611a0b565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610972565b50505050565b5f546001600160a01b03163314610a035760405162461bcd60e51b815260040161060190611bed565b5f5b8151811015610a5e57600160145f848481518110610a2557610a25611c22565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610a05565b5050565b5f546001600160a01b03163314610a8b5760405162461bcd60e51b815260040161060190611bed565b600a55565b5f546001600160a01b03163314610ab95760405162461bcd60e51b815260040161060190611bed565b6001600160a01b038116610b1e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610601565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610bd95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610601565b6001600160a01b038216610c3a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610601565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610cfe5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610601565b6001600160a01b038216610d605760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610601565b5f8111610dc15760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610601565b5f546001600160a01b03848116911614801590610deb57505f546001600160a01b03838116911614155b156110c657601954600160a81b900460ff16610e83575f546001600160a01b03848116911614610e835760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610601565b600954811115610ed55760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610601565b6001600160a01b0383165f9081526014602052604090205460ff16158015610f1557506001600160a01b0382165f9081526014602052604090205460ff16155b610f6d5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b6064820152608401610601565b6019546001600160a01b03838116911614610ff257600a5481610f8f84610831565b610f999190611c4a565b10610ff25760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610601565b5f610ffc30610831565b600b546009549192508210159082106110155760095491505b80801561102c5750601954600160b01b900460ff16155b801561104657506019546001600160a01b03868116911614155b801561105b5750601954600160a01b900460ff165b801561107f57506001600160a01b0385165f9081526005602052604090205460ff16155b80156110a357506001600160a01b0384165f9081526005602052604090205460ff16155b156110c3576110b182611303565b4780156110c1576110c147611202565b505b50505b6001600160a01b0383165f9081526005602052604090205460019060ff168061110657506001600160a01b0383165f9081526005602052604090205460ff165b8061113857506019546001600160a01b0385811691161480159061113857506019546001600160a01b03848116911614155b1561114457505f6111be565b6019546001600160a01b03858116911614801561116f57506018546001600160a01b03848116911614155b1561118157601054600c55601154600d555b6019546001600160a01b0384811691161480156111ac57506018546001600160a01b03858116911614155b156111be57601254600c55601354600d555b6109d484848484611473565b5f81848411156111ed5760405162461bcd60e51b81526004016106019190611904565b505f6111f98486611c5d565b95945050505050565b6016546001600160a01b03166108fc61121c8360026114a1565b6040518115909202915f818181858888f19350505050158015611241573d5f803e3d5ffd5b506017546001600160a01b03166108fc61125c8360026114a1565b6040518115909202915f818181858888f19350505050158015610a5e573d5f803e3d5ffd5b5f6006548211156112e75760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610601565b5f6112f06114e2565b90506112fc83826114a1565b9392505050565b6019805460ff60b01b1916600160b01b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061134957611349611c22565b6001600160a01b03928316602091820292909201810191909152601854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156113a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113c49190611c70565b816001815181106113d7576113d7611c22565b6001600160a01b0392831660209182029290920101526018546113fd9130911684610b77565b60185460405163791ac94760e01b81526001600160a01b039091169063791ac947906114359085905f90869030904290600401611c8b565b5f604051808303815f87803b15801561144c575f80fd5b505af115801561145e573d5f803e3d5ffd5b50506019805460ff60b01b1916905550505050565b8061148057611480611503565b61148b848484611530565b806109d4576109d4600e54600c55600f54600d55565b5f6112fc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611621565b5f805f6114ed61164d565b90925090506114fc82826114a1565b9250505090565b600c541580156115135750600d54155b1561151a57565b600c8054600e55600d8054600f555f9182905555565b5f805f805f8061153f8761168a565b6001600160a01b038f165f90815260036020526040902054959b5093995091975095509350915061157090876116df565b6001600160a01b03808b165f9081526003602052604080822093909355908a168152205461159e9086611720565b6001600160a01b0389165f908152600360205260409020556115bf8161177e565b6115c984836117c4565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161160e91815260200190565b60405180910390a3505050505050505050565b5f81836116415760405162461bcd60e51b81526004016106019190611904565b505f6111f98486611cfc565b6006545f90819066038d7ea4c6800061166682826114a1565b8210156116815750506006549266038d7ea4c6800092509050565b90939092509050565b5f805f805f805f805f6116a28a600c54600d546117e8565b9250925092505f6116b16114e2565b90505f805f6116c28e87878761183a565b919e509c509a509598509396509194505050505091939550919395565b5f6112fc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506111ca565b5f8061172c8385611c4a565b9050838110156112fc5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610601565b5f6117876114e2565b90505f6117948383611886565b305f908152600360205260409020549091506117b09082611720565b305f90815260036020526040902055505050565b6006546117d190836116df565b6006556008546117e19082611720565b6008555050565b5f80808061180160646117fb8989611886565b906114a1565b90505f61181360646117fb8a89611886565b90505f61182a826118248b866116df565b906116df565b9992985090965090945050505050565b5f8080806118488886611886565b90505f6118558887611886565b90505f6118628888611886565b90505f6118738261182486866116df565b939b939a50919850919650505050505050565b5f825f0361189557505f61062e565b5f6118a08385611d1b565b9050826118ad8583611cfc565b146112fc5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610601565b5f602080835283518060208501525f5b8181101561193057858101830151858201604001528201611914565b505f604082860101526040601f19601f8301168501019250505092915050565b5f805f8060808587031215611963575f80fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b038116811461082e575f80fd5b803561199e8161197f565b919050565b5f80604083850312156119b4575f80fd5b82356119bf8161197f565b946020939093013593505050565b5f805f606084860312156119df575f80fd5b83356119ea8161197f565b925060208401356119fa8161197f565b929592945050506040919091013590565b5f60208284031215611a1b575f80fd5b81356112fc8161197f565b8035801515811461199e575f80fd5b5f60208284031215611a45575f80fd5b6112fc82611a26565b5f60208284031215611a5e575f80fd5b5035919050565b5f805f60408486031215611a77575f80fd5b833567ffffffffffffffff80821115611a8e575f80fd5b818601915086601f830112611aa1575f80fd5b813581811115611aaf575f80fd5b8760208260051b8501011115611ac3575f80fd5b602092830195509350611ad99186019050611a26565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f6020808385031215611b07575f80fd5b823567ffffffffffffffff80821115611b1e575f80fd5b818501915085601f830112611b31575f80fd5b813581811115611b4357611b43611ae2565b8060051b604051601f19603f83011681018181108582111715611b6857611b68611ae2565b604052918252848201925083810185019188831115611b85575f80fd5b938501935b82851015611baa57611b9b85611993565b84529385019392850192611b8a565b98975050505050505050565b5f8060408385031215611bc7575f80fd5b8235611bd28161197f565b91506020830135611be28161197f565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8082018082111561062e5761062e611c36565b8181038181111561062e5761062e611c36565b5f60208284031215611c80575f80fd5b81516112fc8161197f565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611cdb5784516001600160a01b031683529383019391830191600101611cb6565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611d1657634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761062e5761062e611c3656fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220fe81e8592febca467ece967ce3ac4422710178cc1e743a1beecdf750400f43de64736f6c63430008170033

Deployed Bytecode Sourcemap

4147:13622:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6717:83;;;;;;;;;;-1:-1:-1;6787:5:0;;;;;;;;;;;;-1:-1:-1;;;6787:5:0;;;;6717:83;;;;;;;:::i;:::-;;;;;;;;16599:298;;;;;;;;;;-1:-1:-1;16599:298:0;;;;;:::i;:::-;;:::i;:::-;;7651:193;;;;;;;;;;-1:-1:-1;7651:193:0;;;;;:::i;:::-;;:::i;:::-;;;1717:14:1;;1710:22;1692:41;;1680:2;1665:18;7651:193:0;1552:187:1;5734:41:0;;;;;;;;;;-1:-1:-1;5734:41:0;;;;-1:-1:-1;;;;;5734:41:0;;;;;;-1:-1:-1;;;;;1934:32:1;;;1916:51;;1904:2;1889:18;5734:41:0;1744:229:1;7143:95:0;;;;;;;;;;-1:-1:-1;4700:14:0;7143:95;;;2124:25:1;;;2112:2;2097:18;7143:95:0;1978:177:1;7850:446:0;;;;;;;;;;-1:-1:-1;7850:446:0;;;;;:::i;:::-;;:::i;1624:144::-;;;;;;;;;;;;;:::i;4973:61::-;;;;;;;;;;;;;;;;6905:83;;;;;;;;;;-1:-1:-1;6905:83:0;;4373:1;2763:36:1;;2751:2;2736:18;6905:83:0;2621:184:1;5782:28:0;;;;;;;;;;-1:-1:-1;5782:28:0;;;;-1:-1:-1;;;;;5782:28:0;;;13057:89;;;;;;;;;;-1:-1:-1;13057:89:0;;;;;:::i;:::-;;:::i;12249:140::-;;;;;;;;;;-1:-1:-1;12249:140:0;;;;;:::i;:::-;;:::i;17054:101::-;;;;;;;;;;-1:-1:-1;17054:101:0;;;;;:::i;:::-;;:::i;12824:225::-;;;;;;;;;;;;;:::i;6996:138::-;;;;;;;;;;-1:-1:-1;6996:138:0;;;;;:::i;:::-;;:::i;17291:108::-;;;;;;;;;;-1:-1:-1;17291:108:0;;;;;:::i;:::-;;:::i;17163:119::-;;;;;;;;;;;;;:::i;4845:55::-;;;;;;;;;;;;;;;;1408:79;;;;;;;;;;-1:-1:-1;1446:7:0;1473:6;-1:-1:-1;;;;;1473:6:0;1408:79;;4908:57;;;;;;;;;;;;;;;;6809:87;;;;;;;;;;-1:-1:-1;6881:7:0;;;;;;;;;;;;-1:-1:-1;;;6881:7:0;;;;6809:87;;16906:139;;;;;;;;;;-1:-1:-1;16906:139:0;;;;;:::i;:::-;;:::i;7250:199::-;;;;;;;;;;-1:-1:-1;7250:199:0;;;;;:::i;:::-;;:::i;5418:36::-;;;;;;;;;;-1:-1:-1;5418:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12406:226;;;;;;;;;;;;;:::i;17532:234::-;;;;;;;;;;-1:-1:-1;17532:234:0;;;;;:::i;:::-;;:::i;4777:26::-;;;;;;;;;;;;;;;;12640:167;;;;;;;;;;-1:-1:-1;12640:167:0;;;;;:::i;:::-;;:::i;7458:184::-;;;;;;;;;;-1:-1:-1;7458:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7607:18:0;;;7575:7;7607:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7458:184;17408:115;;;;;;;;;;-1:-1:-1;17408:115:0;;;;;:::i;:::-;;:::i;1777:244::-;;;;;;;;;;-1:-1:-1;1777:244:0;;;;;:::i;:::-;;:::i;16599:298::-;1536:6;;-1:-1:-1;;;;;1536:6:0;236:10;1536:22;1528:67;;;;-1:-1:-1;;;1528:67:0;;;;;;;:::i;:::-;;;;;;;;;16737:14:::1;:30:::0;;;;16778:15:::1;:32:::0;;;;16824:12:::1;:26:::0;16861:13:::1;:28:::0;16599:298::o;7651:193::-;7753:4;7775:39;236:10;7798:7;7807:6;7775:8;:39::i;:::-;-1:-1:-1;7832:4:0;7651:193;;;;;:::o;7850:446::-;7982:4;7999:36;8009:6;8017:9;8028:6;7999:9;:36::i;:::-;8046:220;8069:6;236:10;8117:138;8173:6;8117:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8117:19:0;;;;;;:11;:19;;;;;;;;236:10;8117:33;;;;;;;;;;:37;:138::i;:::-;8046:8;:220::i;:::-;-1:-1:-1;8284:4:0;7850:446;;;;;:::o;1624:144::-;1536:6;;-1:-1:-1;;;;;1536:6:0;236:10;1536:22;1528:67;;;;-1:-1:-1;;;1528:67:0;;;;;;;:::i;:::-;1727:1:::1;1711:6:::0;;1690:40:::1;::::0;-1:-1:-1;;;;;1711:6:0;;::::1;::::0;1690:40:::1;::::0;1727:1;;1690:40:::1;1758:1;1741:19:::0;;-1:-1:-1;;;;;;1741:19:0::1;::::0;;1624:144::o;13057:89::-;1536:6;;-1:-1:-1;;;;;1536:6:0;236:10;1536:22;1528:67;;;;-1:-1:-1;;;1528:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13118:12:0::1;13133:5;13118:12:::0;;;:4:::1;:12;::::0;;;;:20;;-1:-1:-1;;13118:20:0::1;::::0;;13057:89::o;12249:140::-;1536:6;;-1:-1:-1;;;;;1536:6:0;236:10;1536:22;1528:67;;;;-1:-1:-1;;;1528:67:0;;;;;;;:::i;:::-;12318:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;12318:26:0::1;-1:-1:-1::0;;;;12318:26:0;;::::1;::::0;;;::::1;::::0;;12369:12:::1;12355:11;:26:::0;12249:140::o;17054:101::-;1536:6;;-1:-1:-1;;;;;1536:6:0;236:10;1536:22;1528:67;;;;-1:-1:-1;;;1528:67:0;;;;;;;:::i;:::-;17121:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;17121:26:0::1;-1:-1:-1::0;;;;17121:26:0;;::::1;::::0;;;::::1;::::0;;17054:101::o;12824:225::-;12890:15;;-1:-1:-1;;;;;12890:15:0;236:10;-1:-1:-1;;;;;12874:31:0;;:62;;;-1:-1:-1;12925:11:0;;-1:-1:-1;;;;;12925:11:0;236:10;-1:-1:-1;;;;;12909:27:0;;12874:62;12866:71;;;;;;12977:21;13009:32;12977:21;13009:12;:32::i;:::-;12855:194;12824:225::o;6996:138::-;-1:-1:-1;;;;;7109:16:0;;7062:7;7109:16;;;:7;:16;;;;;;7089:37;;:19;:37::i;17291:108::-;1536:6;;-1:-1:-1;;;;;1536:6:0;236:10;1536:22;1528:67;;;;-1:-1:-1;;;1528:67:0;;;;;;;:::i;:::-;17365:12:::1;:26:::0;17291:108::o;17163:119::-;1536:6;;-1:-1:-1;;;;;1536:6:0;236:10;1536:22;1528:67;;;;-1:-1:-1;;;1528:67:0;;;;;;;:::i;:::-;4700:14:::1;17217:12;:22:::0;;;17250:14:::1;:24:::0;17163:119::o;16906:139::-;1536:6;;-1:-1:-1;;;;;1536:6:0;236:10;1536:22;1528:67;;;;-1:-1:-1;;;1528:67:0;;;;;;;:::i;:::-;16997:19:::1;:40:::0;16906:139::o;7250:199::-;7355:4;7377:42;236:10;7401:9;7412:6;7377:9;:42::i;12406:226::-;12472:15;;-1:-1:-1;;;;;12472:15:0;236:10;-1:-1:-1;;;;;12456:31:0;;:62;;;-1:-1:-1;12507:11:0;;-1:-1:-1;;;;;12507:11:0;236:10;-1:-1:-1;;;;;12491:27:0;;12456:62;12448:71;;;;;;12530:23;12556:24;12574:4;12556:9;:24::i;:::-;12530:50;;12591:33;12608:15;12591:16;:33::i;17532:234::-;1536:6;;-1:-1:-1;;;;;1536:6:0;236:10;1536:22;1528:67;;;;-1:-1:-1;;;1528:67:0;;;;;;;:::i;:::-;17649:9:::1;17645:114;17664:19:::0;;::::1;17645:114;;;17739:8;17705:18;:31;17724:8;;17733:1;17724:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17705:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;17705:31:0;:42;;-1:-1:-1;;17705:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;17685:3:0::1;17645:114;;;;17532:234:::0;;;:::o;12640:167::-;1536:6;;-1:-1:-1;;;;;1536:6:0;236:10;1536:22;1528:67;;;;-1:-1:-1;;;1528:67:0;;;;;;;:::i;:::-;12714:9:::1;12709:91;12733:5;:12;12729:1;:16;12709:91;;;12784:4;12767;:14;12772:5;12778:1;12772:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;12767:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;12767:14:0;:21;;-1:-1:-1;;12767:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;12747:3:0::1;12709:91;;;;12640:167:::0;:::o;17408:115::-;1536:6;;-1:-1:-1;;;;;1536:6:0;236:10;1536:22;1528:67;;;;-1:-1:-1;;;1528:67:0;;;;;;;:::i;:::-;17485:14:::1;:30:::0;17408:115::o;1777:244::-;1536:6;;-1:-1:-1;;;;;1536:6:0;236:10;1536:22;1528:67;;;;-1:-1:-1;;;1528:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1866:22:0;::::1;1858:73;;;::::0;-1:-1:-1;;;1858:73:0;;6845:2:1;1858:73:0::1;::::0;::::1;6827:21:1::0;6884:2;6864:18;;;6857:30;6923:34;6903:18;;;6896:62;-1:-1:-1;;;6974:18:1;;;6967:36;7020:19;;1858:73:0::1;6643:402:1::0;1858:73:0::1;1968:6;::::0;;1947:38:::1;::::0;-1:-1:-1;;;;;1947:38:0;;::::1;::::0;1968:6;::::1;::::0;1947:38:::1;::::0;::::1;1996:6;:17:::0;;-1:-1:-1;;;;;;1996:17:0::1;-1:-1:-1::0;;;;;1996:17:0;;;::::1;::::0;;;::::1;::::0;;1777:244::o;8993:369::-;-1:-1:-1;;;;;9120:19:0;;9112:68;;;;-1:-1:-1;;;9112:68:0;;7252:2:1;9112:68:0;;;7234:21:1;7291:2;7271:18;;;7264:30;7330:34;7310:18;;;7303:62;-1:-1:-1;;;7381:18:1;;;7374:34;7425:19;;9112:68:0;7050:400:1;9112:68:0;-1:-1:-1;;;;;9199:21:0;;9191:68;;;;-1:-1:-1;;;9191:68:0;;7657:2:1;9191:68:0;;;7639:21:1;7696:2;7676:18;;;7669:30;7735:34;7715:18;;;7708:62;-1:-1:-1;;;7786:18:1;;;7779:32;7828:19;;9191:68:0;7455:398:1;9191:68:0;-1:-1:-1;;;;;9270:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9322:32;;2124:25:1;;;9322:32:0;;2097:18:1;9322:32:0;;;;;;;8993:369;;;:::o;9371:2218::-;-1:-1:-1;;;;;9493:18:0;;9485:68;;;;-1:-1:-1;;;9485:68:0;;8060:2:1;9485:68:0;;;8042:21:1;8099:2;8079:18;;;8072:30;8138:34;8118:18;;;8111:62;-1:-1:-1;;;8189:18:1;;;8182:35;8234:19;;9485:68:0;7858:401:1;9485:68:0;-1:-1:-1;;;;;9572:16:0;;9564:64;;;;-1:-1:-1;;;9564:64:0;;8466:2:1;9564:64:0;;;8448:21:1;8505:2;8485:18;;;8478:30;8544:34;8524:18;;;8517:62;-1:-1:-1;;;8595:18:1;;;8588:33;8638:19;;9564:64:0;8264:399:1;9564:64:0;9656:1;9647:6;:10;9639:64;;;;-1:-1:-1;;;9639:64:0;;8870:2:1;9639:64:0;;;8852:21:1;8909:2;8889:18;;;8882:30;8948:34;8928:18;;;8921:62;-1:-1:-1;;;8999:18:1;;;8992:39;9048:19;;9639:64:0;8668:405:1;9639:64:0;1446:7;1473:6;-1:-1:-1;;;;;9721:15:0;;;1473:6;;9721:15;;;;:32;;-1:-1:-1;1446:7:0;1473:6;-1:-1:-1;;;;;9740:13:0;;;1473:6;;9740:13;;9721:32;9717:1232;;;9778:11;;-1:-1:-1;;;9778:11:0;;;;9773:144;;1446:7;1473:6;-1:-1:-1;;;;;9818:15:0;;;1473:6;;9818:15;9810:91;;;;-1:-1:-1;;;9810:91:0;;9280:2:1;9810:91:0;;;9262:21:1;9319:2;9299:18;;;9292:30;9358:34;9338:18;;;9331:62;9429:33;9409:18;;;9402:61;9480:19;;9810:91:0;9078:427:1;9810:91:0;9952:12;;9942:6;:22;;9934:63;;;;-1:-1:-1;;;9934:63:0;;9712:2:1;9934:63:0;;;9694:21:1;9751:2;9731:18;;;9724:30;9790;9770:18;;;9763:58;9838:18;;9934:63:0;9510:352:1;9934:63:0;-1:-1:-1;;;;;10021:10:0;;;;;;:4;:10;;;;;;;;10020:11;:24;;;;-1:-1:-1;;;;;;10036:8:0;;;;;;:4;:8;;;;;;;;10035:9;10020:24;10012:72;;;;-1:-1:-1;;;10012:72:0;;10069:2:1;10012:72:0;;;10051:21:1;10108:2;10088:18;;;10081:30;10147:34;10127:18;;;10120:62;-1:-1:-1;;;10198:18:1;;;10191:33;10241:19;;10012:72:0;9867:399:1;10012:72:0;10111:13;;-1:-1:-1;;;;;10105:19:0;;;10111:13;;10105:19;10102:146;;10178:14;;10169:6;10153:13;10163:2;10153:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10145:87;;;;-1:-1:-1;;;10145:87:0;;10735:2:1;10145:87:0;;;10717:21:1;10774:2;10754:18;;;10747:30;10813:34;10793:18;;;10786:62;-1:-1:-1;;;10864:18:1;;;10857:33;10907:19;;10145:87:0;10533:399:1;10145:87:0;10265:28;10296:24;10314:4;10296:9;:24::i;:::-;10374:19;;10438:12;;10265:55;;-1:-1:-1;10350:43:0;;;;10414:36;;10411:124;;10507:12;;10484:35;;10411:124;10556:7;:18;;;;-1:-1:-1;10568:6:0;;-1:-1:-1;;;10568:6:0;;;;10567:7;10556:18;:43;;;;-1:-1:-1;10586:13:0;;-1:-1:-1;;;;;10578:21:0;;;10586:13;;10578:21;;10556:43;:58;;;;-1:-1:-1;10603:11:0;;-1:-1:-1;;;10603:11:0;;;;10556:58;:87;;;;-1:-1:-1;;;;;;10619:24:0;;;;;;:18;:24;;;;;;;;10618:25;10556:87;:114;;;;-1:-1:-1;;;;;;10648:22:0;;;;;;:18;:22;;;;;;;;10647:23;10556:114;10552:386;;;10691:38;10708:20;10691:16;:38::i;:::-;10777:21;10821:22;;10817:106;;10868:35;10881:21;10868:12;:35::i;:::-;10672:266;10552:386;9755:1194;;9717:1232;-1:-1:-1;;;;;11000:24:0;;10962:12;11000:24;;;:18;:24;;;;;;10977:4;;11000:24;;;:50;;-1:-1:-1;;;;;;11028:22:0;;;;;;:18;:22;;;;;;;;11000:50;10999:102;;;-1:-1:-1;11064:13:0;;-1:-1:-1;;;;;11056:21:0;;;11064:13;;11056:21;;;;:44;;-1:-1:-1;11087:13:0;;-1:-1:-1;;;;;11081:19:0;;;11087:13;;11081:19;;11056:44;10995:532;;;-1:-1:-1;11128:5:0;10995:532;;;11180:13;;-1:-1:-1;;;;;11172:21:0;;;11180:13;;11172:21;:55;;;;-1:-1:-1;11211:15:0;;-1:-1:-1;;;;;11197:30:0;;;11211:15;;11197:30;;11172:55;11169:162;;;11260:14;;11248:9;:26;11303:12;;11293:7;:22;11169:162;11358:13;;-1:-1:-1;;;;;11352:19:0;;;11358:13;;11352:19;:55;;;;-1:-1:-1;11391:15:0;;-1:-1:-1;;;;;11375:32:0;;;11391:15;;11375:32;;11352:55;11348:165;;;11440:15;;11428:9;:27;11484:13;;11474:7;:23;11348:165;11540:41;11555:4;11561:2;11565:6;11573:7;11540:14;:41::i;2389:224::-;2509:7;2545:12;2537:6;;;;2529:29;;;;-1:-1:-1;;;2529:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2569:9:0;2581:5;2585:1;2581;:5;:::i;:::-;2569:17;2389:224;-1:-1:-1;;;;;2389:224:0:o;12090:150::-;12147:15;;-1:-1:-1;;;;;12147:15:0;:39;12172:13;:6;12183:1;12172:10;:13::i;:::-;12147:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12197:11:0;;-1:-1:-1;;;;;12197:11:0;:35;12218:13;:6;12229:1;12218:10;:13::i;:::-;12197:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8305:323;8400:7;8458;;8447;:18;;8425:110;;;;-1:-1:-1;;;8425:110:0;;11272:2:1;8425:110:0;;;11254:21:1;11311:2;11291:18;;;11284:30;11350:34;11330:18;;;11323:62;-1:-1:-1;;;11401:18:1;;;11394:40;11451:19;;8425:110:0;11070:406:1;8425:110:0;8546:19;8568:10;:8;:10::i;:::-;8546:32;-1:-1:-1;8596:24:0;:7;8546:32;8596:11;:24::i;:::-;8589:31;8305:323;-1:-1:-1;;;8305:323:0:o;11598:483::-;6014:6;:13;;-1:-1:-1;;;;6014:13:0;-1:-1:-1;;;6014:13:0;;;11700:16:::1;::::0;;11714:1:::1;11700:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11700:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11700:16:0::1;11676:40;;11745:4;11727;11732:1;11727:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11727:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11771:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;11771:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11727:7;;11771:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11761:4;11766:1;11761:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11761:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;11836:15:::1;::::0;11804:62:::1;::::0;11821:4:::1;::::0;11836:15:::1;11854:11:::0;11804:8:::1;:62::i;:::-;11877:15;::::0;:196:::1;::::0;-1:-1:-1;;;11877:196:0;;-1:-1:-1;;;;;11877:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;11958:11;;11877:15:::1;::::0;12000:4;;12027::::1;::::0;12047:15:::1;::::0;11877:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6050:6:0;:14;;-1:-1:-1;;;;6050:14:0;;;-1:-1:-1;;;;11598:483:0:o;13176:282::-;13332:7;13327:28;;13341:14;:12;:14::i;:::-;13366:44;13384:6;13392:9;13403:6;13366:17;:44::i;:::-;13426:7;13421:29;;13435:15;8923:17;;8911:9;:29;8961:15;;8951:7;:25;8867:117;2877:132;2935:7;2962:39;2966:1;2969;2962:39;;;;;;;;;;;;;;;;;:3;:39::i;16154:167::-;16196:7;16217:15;16234;16253:19;:17;:19::i;:::-;16216:56;;-1:-1:-1;16216:56:0;-1:-1:-1;16293:20:0;16216:56;;16293:11;:20::i;:::-;16286:27;;;;16154:167;:::o;8637:221::-;8684:9;;:14;:30;;;;-1:-1:-1;8702:7:0;;:12;8684:30;8680:43;;;8637:221::o;8680:43::-;8756:9;;;8736:17;:29;8794:7;;;8776:15;:25;-1:-1:-1;8815:13:0;;;;8839:11;8637:221::o;13467:610::-;13614:15;13644:23;13682:12;13709:23;13747:12;13774:13;13801:19;13812:7;13801:10;:19::i;:::-;-1:-1:-1;;;;;13849:15:0;;;;;;:7;:15;;;;;;13599:221;;-1:-1:-1;13599:221:0;;-1:-1:-1;13599:221:0;;-1:-1:-1;13599:221:0;-1:-1:-1;13599:221:0;-1:-1:-1;13599:221:0;-1:-1:-1;13849:28:0;;13599:221;13849:19;:28::i;:::-;-1:-1:-1;;;;;13831:15:0;;;;;;;:7;:15;;;;;;:46;;;;13909:18;;;;;;;:39;;13932:15;13909:22;:39::i;:::-;-1:-1:-1;;;;;13888:18:0;;;;;;:7;:18;;;;;:60;13959:16;13969:5;13959:9;:16::i;:::-;13986:23;13998:4;14004;13986:11;:23::i;:::-;14042:9;-1:-1:-1;;;;;14025:44:0;14034:6;-1:-1:-1;;;;;14025:44:0;;14053:15;14025:44;;;;2124:25:1;;2112:2;2097:18;;1978:177;14025:44:0;;;;;;;;13588:489;;;;;;13467:610;;;:::o;3018:223::-;3138:7;3173:12;3166:5;3158:28;;;;-1:-1:-1;;;3158:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3197:9:0;3209:5;3213:1;3209;:5;:::i;16330:260::-;16428:7;;16381;;;;4700:14;16496:20;16428:7;4700:14;16496:11;:20::i;:::-;16486:7;:30;16482:61;;;-1:-1:-1;;16526:7:0;;;4700:14;;-1:-1:-1;16330:260:0;-1:-1:-1;16330:260:0:o;16482:61::-;16565:7;;16574;;-1:-1:-1;16330:260:0;-1:-1:-1;16330:260:0:o;14500:618::-;14600:7;14622;14644;14666;14688;14710;14746:23;14771:12;14785:13;14815:40;14827:7;14836:9;;14847:7;;14815:11;:40::i;:::-;14745:110;;;;;;14866:19;14888:10;:8;:10::i;:::-;14866:32;;14910:15;14927:23;14952:12;14981:46;14993:7;15002:4;15008:5;15015:11;14981;:46::i;:::-;14909:118;;-1:-1:-1;14909:118:0;-1:-1:-1;14909:118:0;-1:-1:-1;15081:15:0;;-1:-1:-1;15098:4:0;;-1:-1:-1;15104:5:0;;-1:-1:-1;;;;;14500:618:0;;;;;;;:::o;2244:136::-;2302:7;2329:43;2333:1;2336;2329:43;;;;;;;;;;;;;;;;;:3;:43::i;2056:179::-;2114:7;;2146:5;2150:1;2146;:5;:::i;:::-;2134:17;;2175:1;2170;:6;;2162:46;;;;-1:-1:-1;;;2162:46:0;;13146:2:1;2162:46:0;;;13128:21:1;13185:2;13165:18;;;13158:30;13224:29;13204:18;;;13197:57;13271:18;;2162:46:0;12944:351:1;14086:211:0;14139:19;14161:10;:8;:10::i;:::-;14139:32;-1:-1:-1;14182:13:0;14198:22;:5;14139:32;14198:9;:22::i;:::-;14272:4;14256:22;;;;:7;:22;;;;;;14182:38;;-1:-1:-1;14256:33:0;;14182:38;14256:26;:33::i;:::-;14247:4;14231:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;14086:211:0:o;14306:147::-;14384:7;;:17;;14396:4;14384:11;:17::i;:::-;14374:7;:27;14425:10;;:20;;14440:4;14425:14;:20::i;:::-;14412:10;:33;-1:-1:-1;;14306:147:0:o;15127:472::-;15296:7;;;;15390:30;15416:3;15390:21;:7;15402:8;15390:11;:21::i;:::-;:25;;:30::i;:::-;15375:45;-1:-1:-1;15431:13:0;15447:28;15471:3;15447:19;:7;15459:6;15447:11;:19::i;:28::-;15431:44;-1:-1:-1;15486:23:0;15512:28;15431:44;15512:17;:7;15524:4;15512:11;:17::i;:::-;:21;;:28::i;:::-;15486:54;15579:4;;-1:-1:-1;15585:5:0;;-1:-1:-1;15127:472:0;;-1:-1:-1;;;;;15127:472:0:o;15608:537::-;15802:7;;;;15899:24;:7;15911:11;15899;:24::i;:::-;15881:42;-1:-1:-1;15934:12:0;15949:21;:4;15958:11;15949:8;:21::i;:::-;15934:36;-1:-1:-1;15981:13:0;15997:22;:5;16007:11;15997:9;:22::i;:::-;15981:38;-1:-1:-1;16030:23:0;16056:28;15981:38;16056:17;:7;16068:4;16056:11;:17::i;:28::-;16106:7;;;;-1:-1:-1;16132:4:0;;-1:-1:-1;15608:537:0;;-1:-1:-1;;;;;;;15608:537:0:o;2622:246::-;2680:7;2704:1;2709;2704:6;2700:47;;-1:-1:-1;2734:1:0;2727:8;;2700:47;2757:9;2769:5;2773:1;2769;:5;:::i;:::-;2757:17;-1:-1:-1;2802:1:0;2793:5;2797:1;2757:17;2793:5;:::i;:::-;:10;2785:56;;;;-1:-1:-1;;;2785:56:0;;13675:2:1;2785:56:0;;;13657:21:1;13714:2;13694:18;;;13687:30;13753:34;13733:18;;;13726:62;-1:-1:-1;;;13804:18:1;;;13797:31;13845:19;;2785:56:0;13473:397:1;14:548;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:385::-;653:6;661;669;677;730:3;718:9;709:7;705:23;701:33;698:53;;;747:1;744;737:12;698:53;-1:-1:-1;;770:23:1;;;840:2;825:18;;812:32;;-1:-1:-1;891:2:1;876:18;;863:32;;942:2;927:18;914:32;;-1:-1:-1;567:385:1;-1:-1:-1;567:385:1:o;957:131::-;-1:-1:-1;;;;;1032:31:1;;1022:42;;1012:70;;1078:1;1075;1068:12;1093:134;1161:20;;1190:31;1161:20;1190:31;:::i;:::-;1093:134;;;:::o;1232:315::-;1300:6;1308;1361:2;1349:9;1340:7;1336:23;1332:32;1329:52;;;1377:1;1374;1367:12;1329:52;1416:9;1403:23;1435:31;1460:5;1435:31;:::i;:::-;1485:5;1537:2;1522:18;;;;1509:32;;-1:-1:-1;;;1232:315:1:o;2160:456::-;2237:6;2245;2253;2306:2;2294:9;2285:7;2281:23;2277:32;2274:52;;;2322:1;2319;2312:12;2274:52;2361:9;2348:23;2380:31;2405:5;2380:31;:::i;:::-;2430:5;-1:-1:-1;2487:2:1;2472:18;;2459:32;2500:33;2459:32;2500:33;:::i;:::-;2160:456;;2552:7;;-1:-1:-1;;;2606:2:1;2591:18;;;;2578:32;;2160:456::o;3018:247::-;3077:6;3130:2;3118:9;3109:7;3105:23;3101:32;3098:52;;;3146:1;3143;3136:12;3098:52;3185:9;3172:23;3204:31;3229:5;3204:31;:::i;3270:160::-;3335:20;;3391:13;;3384:21;3374:32;;3364:60;;3420:1;3417;3410:12;3435:180;3491:6;3544:2;3532:9;3523:7;3519:23;3515:32;3512:52;;;3560:1;3557;3550:12;3512:52;3583:26;3599:9;3583:26;:::i;3620:180::-;3679:6;3732:2;3720:9;3711:7;3707:23;3703:32;3700:52;;;3748:1;3745;3738:12;3700:52;-1:-1:-1;3771:23:1;;3620:180;-1:-1:-1;3620:180:1:o;3805:689::-;3897:6;3905;3913;3966:2;3954:9;3945:7;3941:23;3937:32;3934:52;;;3982:1;3979;3972:12;3934:52;4022:9;4009:23;4051:18;4092:2;4084:6;4081:14;4078:34;;;4108:1;4105;4098:12;4078:34;4146:6;4135:9;4131:22;4121:32;;4191:7;4184:4;4180:2;4176:13;4172:27;4162:55;;4213:1;4210;4203:12;4162:55;4253:2;4240:16;4279:2;4271:6;4268:14;4265:34;;;4295:1;4292;4285:12;4265:34;4350:7;4343:4;4333:6;4330:1;4326:14;4322:2;4318:23;4314:34;4311:47;4308:67;;;4371:1;4368;4361:12;4308:67;4402:4;4394:13;;;;-1:-1:-1;4426:6:1;-1:-1:-1;4451:37:1;;4467:20;;;-1:-1:-1;4451:37:1;:::i;:::-;4441:47;;3805:689;;;;;:::o;4499:127::-;4560:10;4555:3;4551:20;4548:1;4541:31;4591:4;4588:1;4581:15;4615:4;4612:1;4605:15;4631:1121;4715:6;4746:2;4789;4777:9;4768:7;4764:23;4760:32;4757:52;;;4805:1;4802;4795:12;4757:52;4845:9;4832:23;4874:18;4915:2;4907:6;4904:14;4901:34;;;4931:1;4928;4921:12;4901:34;4969:6;4958:9;4954:22;4944:32;;5014:7;5007:4;5003:2;4999:13;4995:27;4985:55;;5036:1;5033;5026:12;4985:55;5072:2;5059:16;5094:2;5090;5087:10;5084:36;;;5100:18;;:::i;:::-;5146:2;5143:1;5139:10;5178:2;5172:9;5241:2;5237:7;5232:2;5228;5224:11;5220:25;5212:6;5208:38;5296:6;5284:10;5281:22;5276:2;5264:10;5261:18;5258:46;5255:72;;;5307:18;;:::i;:::-;5343:2;5336:22;5393:18;;;5427:15;;;;-1:-1:-1;5469:11:1;;;5465:20;;;5497:19;;;5494:39;;;5529:1;5526;5519:12;5494:39;5553:11;;;;5573:148;5589:6;5584:3;5581:15;5573:148;;;5655:23;5674:3;5655:23;:::i;:::-;5643:36;;5606:12;;;;5699;;;;5573:148;;;5740:6;4631:1121;-1:-1:-1;;;;;;;;4631:1121:1:o;5757:388::-;5825:6;5833;5886:2;5874:9;5865:7;5861:23;5857:32;5854:52;;;5902:1;5899;5892:12;5854:52;5941:9;5928:23;5960:31;5985:5;5960:31;:::i;:::-;6010:5;-1:-1:-1;6067:2:1;6052:18;;6039:32;6080:33;6039:32;6080:33;:::i;:::-;6132:7;6122:17;;;5757:388;;;;;:::o;6150:356::-;6352:2;6334:21;;;6371:18;;;6364:30;6430:34;6425:2;6410:18;;6403:62;6497:2;6482:18;;6150:356::o;6511:127::-;6572:10;6567:3;6563:20;6560:1;6553:31;6603:4;6600:1;6593:15;6627:4;6624:1;6617:15;10271:127;10332:10;10327:3;10323:20;10320:1;10313:31;10363:4;10360:1;10353:15;10387:4;10384:1;10377:15;10403:125;10468:9;;;10489:10;;;10486:36;;;10502:18;;:::i;10937:128::-;11004:9;;;11025:11;;;11022:37;;;11039:18;;:::i;11481:251::-;11551:6;11604:2;11592:9;11583:7;11579:23;11575:32;11572:52;;;11620:1;11617;11610:12;11572:52;11652:9;11646:16;11671:31;11696:5;11671:31;:::i;11737:980::-;11999:4;12047:3;12036:9;12032:19;12078:6;12067:9;12060:25;12104:2;12142:6;12137:2;12126:9;12122:18;12115:34;12185:3;12180:2;12169:9;12165:18;12158:31;12209:6;12244;12238:13;12275:6;12267;12260:22;12313:3;12302:9;12298:19;12291:26;;12352:2;12344:6;12340:15;12326:29;;12373:1;12383:195;12397:6;12394:1;12391:13;12383:195;;;12462:13;;-1:-1:-1;;;;;12458:39:1;12446:52;;12553:15;;;;12518:12;;;;12494:1;12412:9;12383:195;;;-1:-1:-1;;;;;;;12634:32:1;;;;12629:2;12614:18;;12607:60;-1:-1:-1;;;12698:3:1;12683:19;12676:35;12595:3;11737:980;-1:-1:-1;;;11737:980:1:o;12722:217::-;12762:1;12788;12778:132;;12832:10;12827:3;12823:20;12820:1;12813:31;12867:4;12864:1;12857:15;12895:4;12892:1;12885:15;12778:132;-1:-1:-1;12924:9:1;;12722:217::o;13300:168::-;13373:9;;;13404;;13421:15;;;13415:22;;13401:37;13391:71;;13442:18;;:::i

Swarm Source

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