ETH Price: $3,170.68 (+2.32%)
Gas: 50 Gwei

Token

DJCAT (DJCAT)
 

Overview

Max Total Supply

1,000,000,000 DJCAT

Holders

28

Total Transfers

-

Market

Chart

Fully Diluted Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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

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

Contract Source Code Verified (Exact Match)

Contract Name:
DJCAT

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

//SPDX-License-Identifier: MIT

// Join the party with D.J. Cat!
// https://t.me/DJCat_ChatPortal
pragma solidity 0.8.23;

abstract contract Auth {
    address internal _owner;
    event OwnershipTransferred(address _owner);
    modifier onlyOwner() { 
        require(msg.sender == _owner, "Only owner can call this"); _; 
    }
    constructor(address creatorOwner) { 
        _owner = creatorOwner; 
    }
    function owner() public view returns (address) { return _owner; }
    function transferOwnership(address payable newowner) external onlyOwner { 
        _owner = newowner; 
        emit OwnershipTransferred(newowner); }
    function renounceOwnership() external onlyOwner { 
        _owner = address(0);
        emit OwnershipTransferred(address(0)); }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address holder, 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 DJCAT is IERC20, Auth {
    string private constant _symbol  = "DJCAT";
    string private constant _name    = "DJCAT";
    uint8 private constant _decimals = 9;
    uint256 private constant _totalSupply = 1000000000 * (10**_decimals);
  
    address payable private _marketingWallet = payable(0xb49E4d52A106605910f0c47936797bFF3c4BddF8);
    
    uint8 private _sellTaxrate = 10;
    uint8 private _buyTaxrate  = 10;
    
    uint256 private _maxTxVal = _totalSupply; 
    uint256 private _maxWalletVal = _totalSupply;
    uint256 private _swapMin = _totalSupply * 10 / 100000;
    uint256 private _swapMax = _totalSupply * 150 / 100000;
    uint256 private _swapTrigger = 200 * (10**15);
    uint256 private _swapLimits = _swapMin * 45 * 100;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (uint256 => uint8) private blockSwaps;
    mapping (address => bool) private _nofee;
    mapping (address => bool) private _nolimit;

    address private LpOwner;

    address private constant _swapRouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address private immutable WETH;
    
    IUniswapV2Router02 private _primarySwapRouter = IUniswapV2Router02(_swapRouterAddress);
    address private _primaryLP; 
    mapping (address => bool) private _isLP;

    bool private _tradingOpen;

    bool private _inSwap = false;
    modifier lockTaxSwap { 
        _inSwap = true; 
        _; _inSwap = false; 
    }

    constructor() Auth(msg.sender) {
        LpOwner = msg.sender;
        WETH = _primarySwapRouter.WETH();

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _balances[msg.sender]);  

        _nofee[_owner] = true;
        _nofee[address(this)] = true;
        _nofee[_marketingWallet] = true;
        _nofee[_swapRouterAddress] = true;
        _nolimit[_owner] = true;
        _nolimit[address(this)] = true;
        _nolimit[_marketingWallet] = true;
        _nolimit[_swapRouterAddress] = true;
        
    }

    receive() external payable {}
    
    function decimals() external pure override returns (uint8) { return _decimals; }
    function totalSupply() external pure override returns (uint256) { return _totalSupply; }
    function name() external pure override returns (string memory) { return _name; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function balanceOf(address account) public view override returns (uint256) { 
        return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { 
        return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true; }

    function transfer(address toWallet, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(msg.sender), "Trading not open");
        return _transferFrom(msg.sender, toWallet, amount); }

    function transferFrom(address fromWallet, address toWallet, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(fromWallet), "Trading not open");
        _allowances[fromWallet][msg.sender] -= amount;
        return _transferFrom(fromWallet, toWallet, amount); }

    function _approveRouter(uint256 _tokenAmount) internal {
        if ( _allowances[address(this)][_swapRouterAddress] < _tokenAmount ) {
            _allowances[address(this)][_swapRouterAddress] = type(uint256).max;
            emit Approval(address(this), _swapRouterAddress, type(uint256).max);
        }
    }

    function addLiquidity() external payable onlyOwner lockTaxSwap {
        require(_primaryLP == address(0), "LP created");
        require(!_tradingOpen, "trading open");
        require(msg.value > 0 || address(this).balance>0, "No ETH");
        require(_balances[address(this)]>0, "No tokens");
        _primaryLP = IUniswapV2Factory(_primarySwapRouter.factory()).createPair(address(this), WETH);
        _addLiquidity(_balances[address(this)], address(this).balance);
        _balances[_primaryLP] -= _swapLimits;
        (_isLP[_primaryLP],) = _primaryLP.call(abi.encodeWithSignature("sync()") );
        require(_isLP[_primaryLP], "Failed bootstrap");
        _openTrading();
    }

    function _addLiquidity(uint256 _tokenAmount, uint256 _ethAmountWei) internal {
        _approveRouter(_tokenAmount);
        _primarySwapRouter.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, LpOwner, block.timestamp );
    }

    function _openTrading() internal {
        _maxTxVal     = 2 * _totalSupply / 100; 
        _maxWalletVal = 2 * _totalSupply / 100;
        _tradingOpen = true;
    }

    function shouldSwap(uint256 tokenAmt) private returns (bool) {
        bool result;
        if (_swapTrigger > 0) { 
            uint256 lpTkn = _balances[_primaryLP];
            uint256 lpWeth = IERC20(WETH).balanceOf(_primaryLP); 
            uint256 weiValue = (tokenAmt * lpWeth) / lpTkn;
            if (weiValue >= _swapTrigger) { 
                if (blockSwaps[block.number] < 5) {
                    result = true; 
                    blockSwaps[block.number] += 1;
                }
            }    
        } else { result = true; }
        if (blockSwaps[block.number] > 5) {}
        return result;
    }


    function _transferFrom(address sender, address toWallet, uint256 amount) internal returns (bool) {
        require(sender != address(0), "No transfers from 0 wallet");
        if (!_tradingOpen) { require(_nofee[sender] && _nolimit[sender], "Trading not yet open"); }
        if ( !_inSwap && _isLP[toWallet] && shouldSwap(amount) ) { _swapTaxAndLiquify(); }

        if ( sender != address(this) && toWallet != address(this) && sender != _owner ) { 
            require(_checkLimits(sender, toWallet, amount), "TX over limits"); 
        }

        uint256 _taxAmount = _calculateTax(sender, toWallet, amount);
        uint256 _transferAmount = amount - _taxAmount;
        _balances[sender] -= amount;
        _swapLimits += _taxAmount;
        _balances[toWallet] += _transferAmount;
        emit Transfer(sender, toWallet, amount);
        return true;
    }

    function _checkLimits(address fromWallet, address toWallet, uint256 transferAmount) internal view returns (bool) {
        bool limitCheckPassed = true;
        if ( _tradingOpen && !_nolimit[fromWallet] && !_nolimit[toWallet] ) {
            if ( transferAmount > _maxTxVal ) { 
                limitCheckPassed = false; 
            }
            else if ( 
                !_isLP[toWallet] && (_balances[toWallet] + transferAmount > _maxWalletVal) 
                ) { limitCheckPassed = false; }
        }
        return limitCheckPassed;
    }

    function _checkTradingOpen(address fromWallet) private view returns (bool){
        bool checkResult = false;
        if ( _tradingOpen ) { checkResult = true; } 
        else if (_nofee[fromWallet] && _nolimit[fromWallet]) { checkResult = true; } 

        return checkResult;
    }

    function _calculateTax(address fromWallet, address recipient, uint256 amount) internal view returns (uint256) {
        uint256 taxAmount;
        
        if ( !_tradingOpen || _nofee[fromWallet] || _nofee[recipient] ) { 
            taxAmount = 0; 
        } else if ( _isLP[fromWallet] ) { 
            taxAmount = amount * _buyTaxrate / 100; 
         } else if ( _isLP[recipient] ) { 
            taxAmount = amount * _sellTaxrate / 100; 
        }

        return taxAmount;
    }

    function exemptions(address wallet) external view returns (bool fees, bool limits) {
        return (_nofee[wallet], _nolimit[wallet]); }

    function setExemptions(address wlt, bool noFees, bool noLimits) external onlyOwner {
        if (noLimits || noFees) { require(!_isLP[wlt], "Cannot exempt LP"); }
        _nofee[ wlt ] = noFees;
        _nolimit[ wlt ] = noLimits;
    }

    function buyFee() external view returns(uint8) { return _buyTaxrate; }
    function sellFee() external view returns(uint8) { return _sellTaxrate; }

    function setFees(uint8 buyFees, uint8 sellFees) external onlyOwner {
        require(buyFees + sellFees <= 20, "Roundtrip too high");
        _buyTaxrate = buyFees;
        _sellTaxrate = sellFees;
    }  

    function marketingWallet() external view returns (address) { 
        return _marketingWallet; }

    function updateMarketingWallet(address marketingWlt) external onlyOwner {
        require(!_isLP[marketingWlt], "LP cannot be tax wallet");
        _marketingWallet = payable(marketingWlt);
        _nofee[marketingWlt] = true;
        _nolimit[marketingWlt] = true;
    }

    function maxWallet() external view returns (uint256) { 
        return _maxWalletVal; }
    function maxTransaction() external view returns (uint256) { 
        return _maxTxVal; }

    function swapMin() external view returns (uint256) { 
        return _swapMin; }
    function swapMax() external view returns (uint256) { 
        return _swapMax; }

    function setLimits(uint16 maxTransPermille, uint16 maxWaletPermille) external onlyOwner {
        uint256 newTxAmt = _totalSupply * maxTransPermille / 1000 + 1;
        require(newTxAmt >= _maxTxVal, "tx too low");
        _maxTxVal = newTxAmt;
        uint256 newWalletAmt = _totalSupply * maxWaletPermille / 1000 + 1;
        require(newWalletAmt >= _maxWalletVal, "wallet too low");
        _maxWalletVal = newWalletAmt;
    }

    function removeLimits() external onlyOwner {
        _maxTxVal = _totalSupply;
        _maxWalletVal = _totalSupply;
    }

    function setTaxSwaps(uint32 minVal, uint32 minDiv, uint32 maxVal, uint32 maxDiv, uint32 trigger) external onlyOwner {
        _swapMin = _totalSupply * minVal / minDiv;
        _swapMax = _totalSupply * maxVal / maxDiv;
        _swapTrigger = trigger * 10**15;
        require(_swapMax>=_swapMin, "Min-Max error");
    }


    function _swapTaxAndLiquify() private lockTaxSwap {
        uint256 _taxTokenAvailable = _swapLimits;
        if ( _taxTokenAvailable >= _swapMin && _tradingOpen ) {
            if ( _taxTokenAvailable >= _swapMax ) { _taxTokenAvailable = _swapMax; }
            
            uint256 _tokensForSwap = _taxTokenAvailable; 
            if( _tokensForSwap > 1 * 10**_decimals ) {
                _balances[address(this)] += _taxTokenAvailable;
                _swapTaxTokensForEth(_tokensForSwap);
                _swapLimits -= _taxTokenAvailable;
            }
            uint256 _contractETHBalance = address(this).balance;
            if(_contractETHBalance > 0) { _distributeTaxEth(_contractETHBalance); }
        }
    }

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

    function _distributeTaxEth(uint256 amount) private {
        _marketingWallet.transfer(amount);
    }
}

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"buyFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"exemptions","outputs":[{"internalType":"bool","name":"fees","type":"bool"},{"internalType":"bool","name":"limits","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wlt","type":"address"},{"internalType":"bool","name":"noFees","type":"bool"},{"internalType":"bool","name":"noLimits","type":"bool"}],"name":"setExemptions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"buyFees","type":"uint8"},{"internalType":"uint8","name":"sellFees","type":"uint8"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTransPermille","type":"uint16"},{"internalType":"uint16","name":"maxWaletPermille","type":"uint16"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"minVal","type":"uint32"},{"internalType":"uint32","name":"minDiv","type":"uint32"},{"internalType":"uint32","name":"maxVal","type":"uint32"},{"internalType":"uint32","name":"maxDiv","type":"uint32"},{"internalType":"uint32","name":"trigger","type":"uint32"}],"name":"setTaxSwaps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapMin","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":"toWallet","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"fromWallet","type":"address"},{"internalType":"address","name":"toWallet","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newowner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"marketingWlt","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a0604052600180546001600160b01b031916750a0ab49e4d52a106605910f0c47936797bff3c4bddf81790556200003a6009600a62000454565b6200004a90633b9aca006200046b565b6002556200005b6009600a62000454565b6200006b90633b9aca006200046b565b600355620186a0620000806009600a62000454565b6200009090633b9aca006200046b565b6200009d90600a6200046b565b620000a9919062000485565b600455620186a0620000be6009600a62000454565b620000ce90633b9aca006200046b565b620000db9060966200046b565b620000e7919062000485565b6005556702c68af0bb1400006006556004546200010690602d6200046b565b620001139060646200046b565b600755600e80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790556011805461ff001916905534801562000153575f80fd5b505f8054336001600160a01b03199182168117909255600d80549091169091179055600e54604080516315ab88c960e31b815290516001600160a01b039092169163ad5c4648916004808201926020929091908290030181865afa158015620001be573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001e49190620004a5565b6001600160a01b0316608052620001fe6009600a62000454565b6200020e90633b9aca006200046b565b335f81815260086020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35f80546001600160a01b039081168252600b602090815260408084208054600160ff19918216811790925530808752838720805483168417905582548616875283872080548316841790557fd1def2fe8304e5e69b6f2907349cddd4c272de4ef47368d65b87ae00d7f101478054831684179055865486168752600c909452828620805482168317905592855281852080548416821790558054909316845283208054821683179055737a250d5630b4cf539739df2c5dacb4c659f2488d9092527f0ec9aca9afadc09fc0bd96ec7d7d6cfbb5408a5bc5bcf87bc0656b65508e559a8054909216179055620004cd565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200039957815f19048211156200037d576200037d62000345565b808516156200038b57918102915b93841c93908002906200035e565b509250929050565b5f82620003b1575060016200044e565b81620003bf57505f6200044e565b8160018114620003d85760028114620003e35762000403565b60019150506200044e565b60ff841115620003f757620003f762000345565b50506001821b6200044e565b5060208310610133831016604e8410600b841016171562000428575081810a6200044e565b62000434838362000359565b805f19048211156200044a576200044a62000345565b0290505b92915050565b5f6200046460ff841683620003a1565b9392505050565b80820281158282048414176200044e576200044e62000345565b5f82620004a057634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215620004b6575f80fd5b81516001600160a01b038116811462000464575f80fd5b608051611f96620004f45f395f8181610e0b015281816114cc01526119410152611f965ff3fe608060405260043610610198575f3560e01c8063751039fc116100e7578063b3de9b5d11610087578063e537a83411610062578063e537a834146104d1578063e8078d94146104f0578063f2fde38b146104f8578063f8b45b0514610517575f80fd5b8063b3de9b5d14610465578063c3f70b5214610479578063dd62ed3e1461048d575f80fd5b806395d89b41116100c257806395d89b41146101a3578063a5e992bb14610413578063a9059cbb14610427578063aacebbe314610446575f80fd5b8063751039fc146103b257806375f0a874146103c65780638da5cb5b146103f7575f80fd5b806330449efd11610152578063470624021161012d578063470624021461032d5780634fcd24461461034b57806370a082311461036a578063715018a61461039e575f80fd5b806330449efd1461029c578063313ce567146102fb578063368f48001461030e575f80fd5b806306fdde03146101a3578063095ea7b3146101df57806318160ddd1461020e57806318839bc31461023057806323b872dd146102515780632b14ca5614610270575f80fd5b3661019f57005b5f80fd5b3480156101ae575f80fd5b506040805180820182526005815264111290d05560da1b602082015290516101d69190611a46565b60405180910390f35b3480156101ea575f80fd5b506101fe6101f9366004611a8c565b61052b565b60405190151581526020016101d6565b348015610219575f80fd5b50610222610597565b6040519081526020016101d6565b34801561023b575f80fd5b5061024f61024a366004611aca565b6105b7565b005b34801561025c575f80fd5b506101fe61026b366004611b0c565b610693565b34801561027b575f80fd5b50600154600160a01b900460ff165b60405160ff90911681526020016101d6565b3480156102a7575f80fd5b506102e46102b6366004611b4a565b6001600160a01b03165f908152600b6020908152604080832054600c9092529091205460ff91821692911690565b6040805192151583529015156020830152016101d6565b348015610306575f80fd5b50600961028a565b348015610319575f80fd5b5061024f610328366004611b76565b610727565b348015610338575f80fd5b50600154600160a81b900460ff1661028a565b348015610356575f80fd5b5061024f610365366004611bb7565b610867565b348015610375575f80fd5b50610222610384366004611b4a565b6001600160a01b03165f9081526008602052604090205490565b3480156103a9575f80fd5b5061024f610916565b3480156103bd575f80fd5b5061024f610983565b3480156103d1575f80fd5b506001546001600160a01b03165b6040516001600160a01b0390911681526020016101d6565b348015610402575f80fd5b505f546001600160a01b03166103df565b34801561041e575f80fd5b50600554610222565b348015610432575f80fd5b506101fe610441366004611a8c565b6109e8565b348015610451575f80fd5b5061024f610460366004611b4a565b610a43565b348015610470575f80fd5b50600454610222565b348015610484575f80fd5b50600254610222565b348015610498575f80fd5b506102226104a7366004611bdf565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b3480156104dc575f80fd5b5061024f6104eb366004611c29565b610b22565b61024f610c31565b348015610503575f80fd5b5061024f610512366004611b4a565b610ffa565b348015610522575f80fd5b50600354610222565b335f8181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105859086815260200190565b60405180910390a35060015b92915050565b5f6105a46009600a611d7e565b6105b290633b9aca00611d8c565b905090565b5f546001600160a01b031633146105e95760405162461bcd60e51b81526004016105e090611da3565b60405180910390fd5b80806105f25750815b15610652576001600160a01b0383165f9081526010602052604090205460ff16156106525760405162461bcd60e51b815260206004820152601060248201526f043616e6e6f74206578656d7074204c560841b60448201526064016105e0565b6001600160a01b039092165f908152600b60209081526040808320805494151560ff19958616179055600c9091529020805492151592909116919091179055565b5f61069d84611076565b6106dc5760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b60448201526064016105e0565b6001600160a01b0384165f9081526009602090815260408083203384529091528120805484929061070e908490611dda565b9091555061071f90508484846110d9565b949350505050565b5f546001600160a01b031633146107505760405162461bcd60e51b81526004016105e090611da3565b5f6103e861ffff84166107656009600a611d7e565b61077390633b9aca00611d8c565b61077d9190611d8c565b6107879190611ded565b610792906001611e0c565b90506002548110156107d35760405162461bcd60e51b815260206004820152600a602482015269747820746f6f206c6f7760b01b60448201526064016105e0565b60028190555f6103e861ffff84166107ed6009600a611d7e565b6107fb90633b9aca00611d8c565b6108059190611d8c565b61080f9190611ded565b61081a906001611e0c565b905060035481101561085f5760405162461bcd60e51b815260206004820152600e60248201526d77616c6c657420746f6f206c6f7760901b60448201526064016105e0565b600355505050565b5f546001600160a01b031633146108905760405162461bcd60e51b81526004016105e090611da3565b601461089c8284611e1f565b60ff1611156108e25760405162461bcd60e51b81526020600482015260126024820152710a4deeadcc8e8e4d2e040e8dede40d0d2ced60731b60448201526064016105e0565b6001805461ffff60a01b1916600160a81b60ff9485160260ff60a01b191617600160a01b9290931691909102919091179055565b5f546001600160a01b0316331461093f5760405162461bcd60e51b81526004016105e090611da3565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b031633146109ac5760405162461bcd60e51b81526004016105e090611da3565b6109b86009600a611d7e565b6109c690633b9aca00611d8c565b6002556109d56009600a611d7e565b6109e390633b9aca00611d8c565b600355565b5f6109f233611076565b610a315760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b60448201526064016105e0565b610a3c3384846110d9565b9392505050565b5f546001600160a01b03163314610a6c5760405162461bcd60e51b81526004016105e090611da3565b6001600160a01b0381165f9081526010602052604090205460ff1615610ad45760405162461bcd60e51b815260206004820152601760248201527f4c502063616e6e6f74206265207461782077616c6c657400000000000000000060448201526064016105e0565b600180546001600160a01b039092166001600160a01b0319909216821781555f918252600b60209081526040808420805460ff199081168517909155600c9092529092208054909216179055565b5f546001600160a01b03163314610b4b5760405162461bcd60e51b81526004016105e090611da3565b63ffffffff808516908616610b626009600a611d7e565b610b7090633b9aca00611d8c565b610b7a9190611d8c565b610b849190611ded565b60045563ffffffff808316908416610b9e6009600a611d7e565b610bac90633b9aca00611d8c565b610bb69190611d8c565b610bc09190611ded565b600555610bda63ffffffff821666038d7ea4c68000611e38565b66ffffffffffffff166006556004546005541015610c2a5760405162461bcd60e51b815260206004820152600d60248201526c26b4b716a6b0bc1032b93937b960991b60448201526064016105e0565b5050505050565b5f546001600160a01b03163314610c5a5760405162461bcd60e51b81526004016105e090611da3565b6011805461ff001916610100179055600f546001600160a01b031615610caf5760405162461bcd60e51b815260206004820152600a60248201526913140818dc99585d195960b21b60448201526064016105e0565b60115460ff1615610cf15760405162461bcd60e51b815260206004820152600c60248201526b3a3930b234b7339037b832b760a11b60448201526064016105e0565b5f341180610cfe57505f47115b610d335760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b60448201526064016105e0565b305f90815260086020526040902054610d7a5760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b60448201526064016105e0565b600e5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dca573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dee9190611e63565b6040516364e329cb60e11b81523060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152919091169063c9c65396906044016020604051808303815f875af1158015610e5b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e7f9190611e63565b600f80546001600160a01b0319166001600160a01b0392909216919091179055305f90815260086020526040902054610eb89047611378565b600754600f546001600160a01b03165f9081526008602052604081208054909190610ee4908490611dda565b9091555050600f5460408051600481526024810182526020810180516001600160e01b031660016209351760e01b031917905290516001600160a01b0390921691610f2f9190611e7e565b5f604051808303815f865af19150503d805f8114610f68576040519150601f19603f3d011682016040523d82523d5f602084013e610f6d565b606091505b5050600f80546001600160a01b039081165f90815260106020526040808220805460ff1916951515959095179094559154168152205460ff16610fe55760405162461bcd60e51b815260206004820152601060248201526f04661696c656420626f6f7473747261760841b60448201526064016105e0565b610fed611413565b6011805461ff0019169055565b5f546001600160a01b031633146110235760405162461bcd60e51b81526004016105e090611da3565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6011545f90819060ff161561108d57506001610591565b6001600160a01b0383165f908152600b602052604090205460ff1680156110cb57506001600160a01b0383165f908152600c602052604090205460ff165b156105915750600192915050565b5f6001600160a01b0384166111305760405162461bcd60e51b815260206004820152601a60248201527f4e6f207472616e73666572732066726f6d20302077616c6c657400000000000060448201526064016105e0565b60115460ff166111bb576001600160a01b0384165f908152600b602052604090205460ff16801561117857506001600160a01b0384165f908152600c602052604090205460ff165b6111bb5760405162461bcd60e51b81526020600482015260146024820152732a3930b234b733903737ba103cb2ba1037b832b760611b60448201526064016105e0565b601154610100900460ff161580156111ea57506001600160a01b0383165f9081526010602052604090205460ff165b80156111fa57506111fa8261148a565b15611207576112076115ce565b6001600160a01b038416301480159061122957506001600160a01b0383163014155b801561124257505f546001600160a01b03858116911614155b1561128f5761125284848461168b565b61128f5760405162461bcd60e51b815260206004820152600e60248201526d5458206f766572206c696d69747360901b60448201526064016105e0565b5f61129b85858561174e565b90505f6112a88285611dda565b6001600160a01b0387165f908152600860205260408120805492935086929091906112d4908490611dda565b925050819055508160075f8282546112ec9190611e0c565b90915550506001600160a01b0385165f9081526008602052604081208054839290611318908490611e0c565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161136491815260200190565b60405180910390a350600195945050505050565b61138182611841565b600e54600d5460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156113ee573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610c2a9190611e99565b60646114216009600a611d7e565b61142f90633b9aca00611d8c565b61143a906002611d8c565b6114449190611ded565b60025560646114556009600a611d7e565b61146390633b9aca00611d8c565b61146e906002611d8c565b6114789190611ded565b6003556011805460ff19166001179055565b5f805f60065411156115bc57600f546001600160a01b039081165f818152600860205260408082205490516370a0823160e01b815260048101939093529290917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015611513573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115379190611ec4565b90505f826115458388611d8c565b61154f9190611ded565b905060065481106115b457435f908152600a6020526040902054600560ff90911610156115b457435f908152600a6020526040812080546001965086929061159b90849060ff16611e1f565b92506101000a81548160ff021916908360ff1602179055505b5050506115c0565b5060015b435f52600a60205292915050565b6011805461ff00191661010017905560075460045481108015906115f4575060115460ff165b1561167d57600554811061160757506005545b806116146009600a611d7e565b61161f906001611d8c565b81111561166a57305f9081526008602052604081208054849290611644908490611e0c565b909155506116539050816118e3565b8160075f8282546116649190611dda565b90915550505b47801561167a5761167a816119e9565b50505b506011805461ff0019169055565b6011545f9060019060ff1680156116ba57506001600160a01b0385165f908152600c602052604090205460ff16155b80156116de57506001600160a01b0384165f908152600c602052604090205460ff16155b1561071f576002548311156116f457505f61071f565b6001600160a01b0384165f9081526010602052604090205460ff1615801561173f57506003546001600160a01b0385165f9081526008602052604090205461173d908590611e0c565b115b1561071f57505f949350505050565b6011545f90819060ff16158061177b57506001600160a01b0385165f908152600b602052604090205460ff165b8061179d57506001600160a01b0384165f908152600b602052604090205460ff165b156117a957505f61071f565b6001600160a01b0385165f9081526010602052604090205460ff16156117f4576001546064906117e390600160a81b900460ff1685611d8c565b6117ed9190611ded565b905061071f565b6001600160a01b0384165f9081526010602052604090205460ff161561071f5760015460649061182e90600160a01b900460ff1685611d8c565b6118389190611ded565b95945050505050565b305f908152600960209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d84529091529020548111156118e057305f818152600960209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190205f199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b6118ec81611841565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061191f5761191f611edb565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061197357611973611edb565b6001600160a01b039283166020918202929092010152600e5460405163791ac94760e01b815291169063791ac947906119b89085905f90869030904290600401611eef565b5f604051808303815f87803b1580156119cf575f80fd5b505af11580156119e1573d5f803e3d5ffd5b505050505050565b6001546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611a20573d5f803e3d5ffd5b5050565b5f5b83811015611a3e578181015183820152602001611a26565b50505f910152565b602081525f8251806020840152611a64816040850160208701611a24565b601f01601f19169190910160400192915050565b6001600160a01b03811681146118e0575f80fd5b5f8060408385031215611a9d575f80fd5b8235611aa881611a78565b946020939093013593505050565b80358015158114611ac5575f80fd5b919050565b5f805f60608486031215611adc575f80fd5b8335611ae781611a78565b9250611af560208501611ab6565b9150611b0360408501611ab6565b90509250925092565b5f805f60608486031215611b1e575f80fd5b8335611b2981611a78565b92506020840135611b3981611a78565b929592945050506040919091013590565b5f60208284031215611b5a575f80fd5b8135610a3c81611a78565b803561ffff81168114611ac5575f80fd5b5f8060408385031215611b87575f80fd5b611b9083611b65565b9150611b9e60208401611b65565b90509250929050565b803560ff81168114611ac5575f80fd5b5f8060408385031215611bc8575f80fd5b611bd183611ba7565b9150611b9e60208401611ba7565b5f8060408385031215611bf0575f80fd5b8235611bfb81611a78565b91506020830135611c0b81611a78565b809150509250929050565b803563ffffffff81168114611ac5575f80fd5b5f805f805f60a08688031215611c3d575f80fd5b611c4686611c16565b9450611c5460208701611c16565b9350611c6260408701611c16565b9250611c7060608701611c16565b9150611c7e60808701611c16565b90509295509295909350565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611cd857815f1904821115611cbe57611cbe611c8a565b80851615611ccb57918102915b93841c9390800290611ca3565b509250929050565b5f82611cee57506001610591565b81611cfa57505f610591565b8160018114611d105760028114611d1a57611d36565b6001915050610591565b60ff841115611d2b57611d2b611c8a565b50506001821b610591565b5060208310610133831016604e8410600b8410161715611d59575081810a610591565b611d638383611c9e565b805f1904821115611d7657611d76611c8a565b029392505050565b5f610a3c60ff841683611ce0565b808202811582820484141761059157610591611c8a565b60208082526018908201527f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000604082015260600190565b8181038181111561059157610591611c8a565b5f82611e0757634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561059157610591611c8a565b60ff818116838216019081111561059157610591611c8a565b66ffffffffffffff818116838216028082169190828114611e5b57611e5b611c8a565b505092915050565b5f60208284031215611e73575f80fd5b8151610a3c81611a78565b5f8251611e8f818460208701611a24565b9190910192915050565b5f805f60608486031215611eab575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611ed4575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611f3f5784516001600160a01b031683529383019391830191600101611f1a565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220e6470045a6a314bbf917e9a9f73baa66093d2059bdf6eb28f2636a1baa12d03e64736f6c63430008170033

Deployed Bytecode

0x608060405260043610610198575f3560e01c8063751039fc116100e7578063b3de9b5d11610087578063e537a83411610062578063e537a834146104d1578063e8078d94146104f0578063f2fde38b146104f8578063f8b45b0514610517575f80fd5b8063b3de9b5d14610465578063c3f70b5214610479578063dd62ed3e1461048d575f80fd5b806395d89b41116100c257806395d89b41146101a3578063a5e992bb14610413578063a9059cbb14610427578063aacebbe314610446575f80fd5b8063751039fc146103b257806375f0a874146103c65780638da5cb5b146103f7575f80fd5b806330449efd11610152578063470624021161012d578063470624021461032d5780634fcd24461461034b57806370a082311461036a578063715018a61461039e575f80fd5b806330449efd1461029c578063313ce567146102fb578063368f48001461030e575f80fd5b806306fdde03146101a3578063095ea7b3146101df57806318160ddd1461020e57806318839bc31461023057806323b872dd146102515780632b14ca5614610270575f80fd5b3661019f57005b5f80fd5b3480156101ae575f80fd5b506040805180820182526005815264111290d05560da1b602082015290516101d69190611a46565b60405180910390f35b3480156101ea575f80fd5b506101fe6101f9366004611a8c565b61052b565b60405190151581526020016101d6565b348015610219575f80fd5b50610222610597565b6040519081526020016101d6565b34801561023b575f80fd5b5061024f61024a366004611aca565b6105b7565b005b34801561025c575f80fd5b506101fe61026b366004611b0c565b610693565b34801561027b575f80fd5b50600154600160a01b900460ff165b60405160ff90911681526020016101d6565b3480156102a7575f80fd5b506102e46102b6366004611b4a565b6001600160a01b03165f908152600b6020908152604080832054600c9092529091205460ff91821692911690565b6040805192151583529015156020830152016101d6565b348015610306575f80fd5b50600961028a565b348015610319575f80fd5b5061024f610328366004611b76565b610727565b348015610338575f80fd5b50600154600160a81b900460ff1661028a565b348015610356575f80fd5b5061024f610365366004611bb7565b610867565b348015610375575f80fd5b50610222610384366004611b4a565b6001600160a01b03165f9081526008602052604090205490565b3480156103a9575f80fd5b5061024f610916565b3480156103bd575f80fd5b5061024f610983565b3480156103d1575f80fd5b506001546001600160a01b03165b6040516001600160a01b0390911681526020016101d6565b348015610402575f80fd5b505f546001600160a01b03166103df565b34801561041e575f80fd5b50600554610222565b348015610432575f80fd5b506101fe610441366004611a8c565b6109e8565b348015610451575f80fd5b5061024f610460366004611b4a565b610a43565b348015610470575f80fd5b50600454610222565b348015610484575f80fd5b50600254610222565b348015610498575f80fd5b506102226104a7366004611bdf565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b3480156104dc575f80fd5b5061024f6104eb366004611c29565b610b22565b61024f610c31565b348015610503575f80fd5b5061024f610512366004611b4a565b610ffa565b348015610522575f80fd5b50600354610222565b335f8181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105859086815260200190565b60405180910390a35060015b92915050565b5f6105a46009600a611d7e565b6105b290633b9aca00611d8c565b905090565b5f546001600160a01b031633146105e95760405162461bcd60e51b81526004016105e090611da3565b60405180910390fd5b80806105f25750815b15610652576001600160a01b0383165f9081526010602052604090205460ff16156106525760405162461bcd60e51b815260206004820152601060248201526f043616e6e6f74206578656d7074204c560841b60448201526064016105e0565b6001600160a01b039092165f908152600b60209081526040808320805494151560ff19958616179055600c9091529020805492151592909116919091179055565b5f61069d84611076565b6106dc5760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b60448201526064016105e0565b6001600160a01b0384165f9081526009602090815260408083203384529091528120805484929061070e908490611dda565b9091555061071f90508484846110d9565b949350505050565b5f546001600160a01b031633146107505760405162461bcd60e51b81526004016105e090611da3565b5f6103e861ffff84166107656009600a611d7e565b61077390633b9aca00611d8c565b61077d9190611d8c565b6107879190611ded565b610792906001611e0c565b90506002548110156107d35760405162461bcd60e51b815260206004820152600a602482015269747820746f6f206c6f7760b01b60448201526064016105e0565b60028190555f6103e861ffff84166107ed6009600a611d7e565b6107fb90633b9aca00611d8c565b6108059190611d8c565b61080f9190611ded565b61081a906001611e0c565b905060035481101561085f5760405162461bcd60e51b815260206004820152600e60248201526d77616c6c657420746f6f206c6f7760901b60448201526064016105e0565b600355505050565b5f546001600160a01b031633146108905760405162461bcd60e51b81526004016105e090611da3565b601461089c8284611e1f565b60ff1611156108e25760405162461bcd60e51b81526020600482015260126024820152710a4deeadcc8e8e4d2e040e8dede40d0d2ced60731b60448201526064016105e0565b6001805461ffff60a01b1916600160a81b60ff9485160260ff60a01b191617600160a01b9290931691909102919091179055565b5f546001600160a01b0316331461093f5760405162461bcd60e51b81526004016105e090611da3565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b031633146109ac5760405162461bcd60e51b81526004016105e090611da3565b6109b86009600a611d7e565b6109c690633b9aca00611d8c565b6002556109d56009600a611d7e565b6109e390633b9aca00611d8c565b600355565b5f6109f233611076565b610a315760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b60448201526064016105e0565b610a3c3384846110d9565b9392505050565b5f546001600160a01b03163314610a6c5760405162461bcd60e51b81526004016105e090611da3565b6001600160a01b0381165f9081526010602052604090205460ff1615610ad45760405162461bcd60e51b815260206004820152601760248201527f4c502063616e6e6f74206265207461782077616c6c657400000000000000000060448201526064016105e0565b600180546001600160a01b039092166001600160a01b0319909216821781555f918252600b60209081526040808420805460ff199081168517909155600c9092529092208054909216179055565b5f546001600160a01b03163314610b4b5760405162461bcd60e51b81526004016105e090611da3565b63ffffffff808516908616610b626009600a611d7e565b610b7090633b9aca00611d8c565b610b7a9190611d8c565b610b849190611ded565b60045563ffffffff808316908416610b9e6009600a611d7e565b610bac90633b9aca00611d8c565b610bb69190611d8c565b610bc09190611ded565b600555610bda63ffffffff821666038d7ea4c68000611e38565b66ffffffffffffff166006556004546005541015610c2a5760405162461bcd60e51b815260206004820152600d60248201526c26b4b716a6b0bc1032b93937b960991b60448201526064016105e0565b5050505050565b5f546001600160a01b03163314610c5a5760405162461bcd60e51b81526004016105e090611da3565b6011805461ff001916610100179055600f546001600160a01b031615610caf5760405162461bcd60e51b815260206004820152600a60248201526913140818dc99585d195960b21b60448201526064016105e0565b60115460ff1615610cf15760405162461bcd60e51b815260206004820152600c60248201526b3a3930b234b7339037b832b760a11b60448201526064016105e0565b5f341180610cfe57505f47115b610d335760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b60448201526064016105e0565b305f90815260086020526040902054610d7a5760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b60448201526064016105e0565b600e5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dca573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dee9190611e63565b6040516364e329cb60e11b81523060048201526001600160a01b037f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281166024830152919091169063c9c65396906044016020604051808303815f875af1158015610e5b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e7f9190611e63565b600f80546001600160a01b0319166001600160a01b0392909216919091179055305f90815260086020526040902054610eb89047611378565b600754600f546001600160a01b03165f9081526008602052604081208054909190610ee4908490611dda565b9091555050600f5460408051600481526024810182526020810180516001600160e01b031660016209351760e01b031917905290516001600160a01b0390921691610f2f9190611e7e565b5f604051808303815f865af19150503d805f8114610f68576040519150601f19603f3d011682016040523d82523d5f602084013e610f6d565b606091505b5050600f80546001600160a01b039081165f90815260106020526040808220805460ff1916951515959095179094559154168152205460ff16610fe55760405162461bcd60e51b815260206004820152601060248201526f04661696c656420626f6f7473747261760841b60448201526064016105e0565b610fed611413565b6011805461ff0019169055565b5f546001600160a01b031633146110235760405162461bcd60e51b81526004016105e090611da3565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6011545f90819060ff161561108d57506001610591565b6001600160a01b0383165f908152600b602052604090205460ff1680156110cb57506001600160a01b0383165f908152600c602052604090205460ff165b156105915750600192915050565b5f6001600160a01b0384166111305760405162461bcd60e51b815260206004820152601a60248201527f4e6f207472616e73666572732066726f6d20302077616c6c657400000000000060448201526064016105e0565b60115460ff166111bb576001600160a01b0384165f908152600b602052604090205460ff16801561117857506001600160a01b0384165f908152600c602052604090205460ff165b6111bb5760405162461bcd60e51b81526020600482015260146024820152732a3930b234b733903737ba103cb2ba1037b832b760611b60448201526064016105e0565b601154610100900460ff161580156111ea57506001600160a01b0383165f9081526010602052604090205460ff165b80156111fa57506111fa8261148a565b15611207576112076115ce565b6001600160a01b038416301480159061122957506001600160a01b0383163014155b801561124257505f546001600160a01b03858116911614155b1561128f5761125284848461168b565b61128f5760405162461bcd60e51b815260206004820152600e60248201526d5458206f766572206c696d69747360901b60448201526064016105e0565b5f61129b85858561174e565b90505f6112a88285611dda565b6001600160a01b0387165f908152600860205260408120805492935086929091906112d4908490611dda565b925050819055508160075f8282546112ec9190611e0c565b90915550506001600160a01b0385165f9081526008602052604081208054839290611318908490611e0c565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161136491815260200190565b60405180910390a350600195945050505050565b61138182611841565b600e54600d5460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156113ee573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610c2a9190611e99565b60646114216009600a611d7e565b61142f90633b9aca00611d8c565b61143a906002611d8c565b6114449190611ded565b60025560646114556009600a611d7e565b61146390633b9aca00611d8c565b61146e906002611d8c565b6114789190611ded565b6003556011805460ff19166001179055565b5f805f60065411156115bc57600f546001600160a01b039081165f818152600860205260408082205490516370a0823160e01b815260048101939093529290917f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2909116906370a0823190602401602060405180830381865afa158015611513573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115379190611ec4565b90505f826115458388611d8c565b61154f9190611ded565b905060065481106115b457435f908152600a6020526040902054600560ff90911610156115b457435f908152600a6020526040812080546001965086929061159b90849060ff16611e1f565b92506101000a81548160ff021916908360ff1602179055505b5050506115c0565b5060015b435f52600a60205292915050565b6011805461ff00191661010017905560075460045481108015906115f4575060115460ff165b1561167d57600554811061160757506005545b806116146009600a611d7e565b61161f906001611d8c565b81111561166a57305f9081526008602052604081208054849290611644908490611e0c565b909155506116539050816118e3565b8160075f8282546116649190611dda565b90915550505b47801561167a5761167a816119e9565b50505b506011805461ff0019169055565b6011545f9060019060ff1680156116ba57506001600160a01b0385165f908152600c602052604090205460ff16155b80156116de57506001600160a01b0384165f908152600c602052604090205460ff16155b1561071f576002548311156116f457505f61071f565b6001600160a01b0384165f9081526010602052604090205460ff1615801561173f57506003546001600160a01b0385165f9081526008602052604090205461173d908590611e0c565b115b1561071f57505f949350505050565b6011545f90819060ff16158061177b57506001600160a01b0385165f908152600b602052604090205460ff165b8061179d57506001600160a01b0384165f908152600b602052604090205460ff165b156117a957505f61071f565b6001600160a01b0385165f9081526010602052604090205460ff16156117f4576001546064906117e390600160a81b900460ff1685611d8c565b6117ed9190611ded565b905061071f565b6001600160a01b0384165f9081526010602052604090205460ff161561071f5760015460649061182e90600160a01b900460ff1685611d8c565b6118389190611ded565b95945050505050565b305f908152600960209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d84529091529020548111156118e057305f818152600960209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190205f199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b6118ec81611841565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061191f5761191f611edb565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061197357611973611edb565b6001600160a01b039283166020918202929092010152600e5460405163791ac94760e01b815291169063791ac947906119b89085905f90869030904290600401611eef565b5f604051808303815f87803b1580156119cf575f80fd5b505af11580156119e1573d5f803e3d5ffd5b505050505050565b6001546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611a20573d5f803e3d5ffd5b5050565b5f5b83811015611a3e578181015183820152602001611a26565b50505f910152565b602081525f8251806020840152611a64816040850160208701611a24565b601f01601f19169190910160400192915050565b6001600160a01b03811681146118e0575f80fd5b5f8060408385031215611a9d575f80fd5b8235611aa881611a78565b946020939093013593505050565b80358015158114611ac5575f80fd5b919050565b5f805f60608486031215611adc575f80fd5b8335611ae781611a78565b9250611af560208501611ab6565b9150611b0360408501611ab6565b90509250925092565b5f805f60608486031215611b1e575f80fd5b8335611b2981611a78565b92506020840135611b3981611a78565b929592945050506040919091013590565b5f60208284031215611b5a575f80fd5b8135610a3c81611a78565b803561ffff81168114611ac5575f80fd5b5f8060408385031215611b87575f80fd5b611b9083611b65565b9150611b9e60208401611b65565b90509250929050565b803560ff81168114611ac5575f80fd5b5f8060408385031215611bc8575f80fd5b611bd183611ba7565b9150611b9e60208401611ba7565b5f8060408385031215611bf0575f80fd5b8235611bfb81611a78565b91506020830135611c0b81611a78565b809150509250929050565b803563ffffffff81168114611ac5575f80fd5b5f805f805f60a08688031215611c3d575f80fd5b611c4686611c16565b9450611c5460208701611c16565b9350611c6260408701611c16565b9250611c7060608701611c16565b9150611c7e60808701611c16565b90509295509295909350565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611cd857815f1904821115611cbe57611cbe611c8a565b80851615611ccb57918102915b93841c9390800290611ca3565b509250929050565b5f82611cee57506001610591565b81611cfa57505f610591565b8160018114611d105760028114611d1a57611d36565b6001915050610591565b60ff841115611d2b57611d2b611c8a565b50506001821b610591565b5060208310610133831016604e8410600b8410161715611d59575081810a610591565b611d638383611c9e565b805f1904821115611d7657611d76611c8a565b029392505050565b5f610a3c60ff841683611ce0565b808202811582820484141761059157610591611c8a565b60208082526018908201527f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000604082015260600190565b8181038181111561059157610591611c8a565b5f82611e0757634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561059157610591611c8a565b60ff818116838216019081111561059157610591611c8a565b66ffffffffffffff818116838216028082169190828114611e5b57611e5b611c8a565b505092915050565b5f60208284031215611e73575f80fd5b8151610a3c81611a78565b5f8251611e8f818460208701611a24565b9190910192915050565b5f805f60608486031215611eab575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611ed4575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611f3f5784516001600160a01b031683529383019391830191600101611f1a565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220e6470045a6a314bbf917e9a9f73baa66093d2059bdf6eb28f2636a1baa12d03e64736f6c63430008170033

Deployed Bytecode Sourcemap

1652:11586:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4023:80;;;;;;;;;;-1:-1:-1;4095:5:0;;;;;;;;;;;-1:-1:-1;;;4095:5:0;;;;4023:80;;;;4095:5;4023:80;:::i;:::-;;;;;;;;4471:211;;;;;;;;;;-1:-1:-1;4471:211:0;;;;;:::i;:::-;;:::i;:::-;;;1291:14:1;;1284:22;1266:41;;1254:2;1239:18;4471:211:0;1126:187:1;3929:88:0;;;;;;;;;;;;;:::i;:::-;;;1464:25:1;;;1452:2;1437:18;3929:88:0;1318:177:1;9741:240:0;;;;;;;;;;-1:-1:-1;9741:240:0;;;;;:::i;:::-;;:::i;:::-;;4916:298;;;;;;;;;;-1:-1:-1;4916:298:0;;;;;:::i;:::-;;:::i;10065:72::-;;;;;;;;;;-1:-1:-1;10122:12:0;;-1:-1:-1;;;10122:12:0;;;;10065:72;;;2686:4:1;2674:17;;;2656:36;;2644:2;2629:18;10065:72:0;2514:184:1;9595:138:0;;;;;;;;;;-1:-1:-1;9595:138:0;;;;;:::i;:::-;-1:-1:-1;;;;;9697:14:0;9654:9;9697:14;;;:6;:14;;;;;;;;;9713:8;:16;;;;;;;9697:14;;;;;9713:16;;;9595:138;;;;;3142:14:1;;3135:22;3117:41;;3201:14;;3194:22;3189:2;3174:18;;3167:50;3090:18;9595:138:0;2955:268:1;3843:80:0;;;;;;;;;;-1:-1:-1;1823:1:0;3843:80;;11118:436;;;;;;;;;;-1:-1:-1;11118:436:0;;;;;:::i;:::-;;:::i;9989:70::-;;;;;;;;;;-1:-1:-1;10045:11:0;;-1:-1:-1;;;10045:11:0;;;;9989:70;;10145:207;;;;;;;;;;-1:-1:-1;10145:207:0;;;;;:::i;:::-;;:::i;4199:115::-;;;;;;;;;;-1:-1:-1;4199:115:0;;;;;:::i;:::-;-1:-1:-1;;;;;4293:18:0;4265:7;4293:18;;;:9;:18;;;;;;;4199:115;656:130;;;;;;;;;;;;;:::i;11562:125::-;;;;;;;;;;;;;:::i;10362:97::-;;;;;;;;;;-1:-1:-1;10440:16:0;;-1:-1:-1;;;;;10440:16:0;10362:97;;;-1:-1:-1;;;;;4235:32:1;;;4217:51;;4205:2;4190:18;10362:97:0;4071:203:1;428:65:0;;;;;;;;;;-1:-1:-1;466:7:0;484:6;-1:-1:-1;;;;;484:6:0;428:65;;11029:81;;;;;;;;;;-1:-1:-1;11099:8:0;;11029:81;;4690:218;;;;;;;;;;-1:-1:-1;4690:218:0;;;;;:::i;:::-;;:::i;10467:276::-;;;;;;;;;;-1:-1:-1;10467:276:0;;;;;:::i;:::-;;:::i;10942:81::-;;;;;;;;;;-1:-1:-1;11012:8:0;;10942:81;;10845:89;;;;;;;;;;-1:-1:-1;10922:9:0;;10845:89;;4320:143;;;;;;;;;;-1:-1:-1;4320:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;4432:19:0;;;4404:7;4432:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;4320:143;11695:325;;;;;;;;;;-1:-1:-1;11695:325:0;;;;;:::i;:::-;;:::i;5547:697::-;;;:::i;499:151::-;;;;;;;;;;-1:-1:-1;499:151:0;;;;;:::i;:::-;;:::i;10751:88::-;;;;;;;;;;-1:-1:-1;10823:13:0;;10751:88;;4471:211;4575:10;4546:4;4563:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;4563:32:0;;;;;;;;;;:41;;;4620:37;4546:4;;4563:32;;4620:37;;;;4598:6;1464:25:1;;1452:2;1437:18;;1318:177;4620:37:0;;;;;;;;-1:-1:-1;4675:4:0;4471:211;;;;;:::o;3929:88::-;3984:7;1885:13;1823:1;1885:2;:13;:::i;:::-;1871:28;;:10;:28;:::i;:::-;3995:19;;3929:88;:::o;9741:240::-;293:6;;-1:-1:-1;;;;;293:6:0;279:10;:20;271:57;;;;-1:-1:-1;;;271:57:0;;;;;;;:::i;:::-;;;;;;;;;9839:8:::1;:18;;;;9851:6;9839:18;9835:69;;;-1:-1:-1::0;;;;;9870:10:0;::::1;;::::0;;;:5:::1;:10;::::0;;;;;::::1;;9869:11;9861:40;;;::::0;-1:-1:-1;;;9861:40:0;;7816:2:1;9861:40:0::1;::::0;::::1;7798:21:1::0;7855:2;7835:18;;;7828:30;-1:-1:-1;;;7874:18:1;;;7867:46;7930:18;;9861:40:0::1;7614:340:1::0;9861:40:0::1;-1:-1:-1::0;;;;;9914:13:0;;::::1;;::::0;;;:6:::1;:13;::::0;;;;;;;:22;;;::::1;;-1:-1:-1::0;;9914:22:0;;::::1;;::::0;;9947:8:::1;:15:::0;;;;;:26;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;9741:240::o;4916:298::-;5019:4;5044:29;5062:10;5044:17;:29::i;:::-;5036:58;;;;-1:-1:-1;;;5036:58:0;;8161:2:1;5036:58:0;;;8143:21:1;8200:2;8180:18;;;8173:30;-1:-1:-1;;;8219:18:1;;;8212:46;8275:18;;5036:58:0;7959:340:1;5036:58:0;-1:-1:-1;;;;;5105:23:0;;;;;;:11;:23;;;;;;;;5129:10;5105:35;;;;;;;:45;;5144:6;;5105:23;:45;;5144:6;;5105:45;:::i;:::-;;;;-1:-1:-1;5168:43:0;;-1:-1:-1;5182:10:0;5194:8;5204:6;5168:13;:43::i;:::-;5161:50;4916:298;-1:-1:-1;;;;4916:298:0:o;11118:436::-;293:6;;-1:-1:-1;;;;;293:6:0;279:10;:20;271:57;;;;-1:-1:-1;;;271:57:0;;;;;;;:::i;:::-;11217:16:::1;11270:4;11236:31;::::0;::::1;1885:13;1823:1;1885:2;:13;:::i;:::-;1871:28;::::0;:10:::1;:28;:::i;:::-;11236:31;;;;:::i;:::-;:38;;;;:::i;:::-;:42;::::0;11277:1:::1;11236:42;:::i;:::-;11217:61;;11309:9;;11297:8;:21;;11289:44;;;::::0;-1:-1:-1;;;11289:44:0;;8991:2:1;11289:44:0::1;::::0;::::1;8973:21:1::0;9030:2;9010:18;;;9003:30;-1:-1:-1;;;9049:18:1;;;9042:40;9099:18;;11289:44:0::1;8789:334:1::0;11289:44:0::1;11344:9;:20:::0;;;11375::::1;11432:4;11398:31;::::0;::::1;1885:13;1823:1;1885:2;:13;:::i;:::-;1871:28;::::0;:10:::1;:28;:::i;:::-;11398:31;;;;:::i;:::-;:38;;;;:::i;:::-;:42;::::0;11439:1:::1;11398:42;:::i;:::-;11375:65;;11475:13;;11459:12;:29;;11451:56;;;::::0;-1:-1:-1;;;11451:56:0;;9330:2:1;11451:56:0::1;::::0;::::1;9312:21:1::0;9369:2;9349:18;;;9342:30;-1:-1:-1;;;9388:18:1;;;9381:44;9442:18;;11451:56:0::1;9128:338:1::0;11451:56:0::1;11518:13;:28:::0;-1:-1:-1;;;11118:436:0:o;10145:207::-;293:6;;-1:-1:-1;;;;;293:6:0;279:10;:20;271:57;;;;-1:-1:-1;;;271:57:0;;;;;;;:::i;:::-;10253:2:::1;10231:18;10241:8:::0;10231:7;:18:::1;:::i;:::-;:24;;;;10223:55;;;::::0;-1:-1:-1;;;10223:55:0;;9826:2:1;10223:55:0::1;::::0;::::1;9808:21:1::0;9865:2;9845:18;;;9838:30;-1:-1:-1;;;9884:18:1;;;9877:48;9942:18;;10223:55:0::1;9624:342:1::0;10223:55:0::1;10289:11;:21:::0;;-1:-1:-1;;;;10321:23:0;-1:-1:-1;;;10289:21:0::1;::::0;;::::1;;-1:-1:-1::0;;;;10321:23:0;;-1:-1:-1;;;10321:23:0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;10145:207::o;656:130::-;293:6;;-1:-1:-1;;;;;293:6:0;279:10;:20;271:57;;;;-1:-1:-1;;;271:57:0;;;;;;;:::i;:::-;733:1:::1;716:19:::0;;-1:-1:-1;;;;;;716:19:0::1;::::0;;751:32:::1;::::0;4217:51:1;;;751:32:0::1;::::0;4205:2:1;4190:18;751:32:0::1;;;;;;;656:130::o:0;11562:125::-;293:6;;-1:-1:-1;;;;;293:6:0;279:10;:20;271:57;;;;-1:-1:-1;;;271:57:0;;;;;;;:::i;:::-;1885:13:::1;1823:1;1885:2;:13;:::i;:::-;1871:28;::::0;:10:::1;:28;:::i;:::-;11616:9;:24:::0;1885:13:::1;1823:1;1885:2;:13;:::i;:::-;1871:28;::::0;:10:::1;:28;:::i;:::-;11651:13;:28:::0;11562:125::o;4690:218::-;4769:4;4794:29;4812:10;4794:17;:29::i;:::-;4786:58;;;;-1:-1:-1;;;4786:58:0;;8161:2:1;4786:58:0;;;8143:21:1;8200:2;8180:18;;;8173:30;-1:-1:-1;;;8219:18:1;;;8212:46;8275:18;;4786:58:0;7959:340:1;4786:58:0;4862:43;4876:10;4888:8;4898:6;4862:13;:43::i;:::-;4855:50;4690:218;-1:-1:-1;;;4690:218:0:o;10467:276::-;293:6;;-1:-1:-1;;;;;293:6:0;279:10;:20;271:57;;;;-1:-1:-1;;;271:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10559:19:0;::::1;;::::0;;;:5:::1;:19;::::0;;;;;::::1;;10558:20;10550:56;;;::::0;-1:-1:-1;;;10550:56:0;;10173:2:1;10550:56:0::1;::::0;::::1;10155:21:1::0;10212:2;10192:18;;;10185:30;10251:25;10231:18;;;10224:53;10294:18;;10550:56:0::1;9971:347:1::0;10550:56:0::1;10617:16;:40:::0;;-1:-1:-1;;;;;10617:40:0;;::::1;-1:-1:-1::0;;;;;;10617:40:0;;::::1;::::0;::::1;::::0;;:16:::1;10668:20:::0;;;:6:::1;:20;::::0;;;;;;;:27;;-1:-1:-1;;10668:27:0;;::::1;::::0;::::1;::::0;;;10706:8:::1;:22:::0;;;;;;:29;;;;::::1;;::::0;;10467:276::o;11695:325::-;293:6;;-1:-1:-1;;;;;293:6:0;279:10;:20;271:57;;;;-1:-1:-1;;;271:57:0;;;;;;;:::i;:::-;11833:30:::1;::::0;;::::1;::::0;:21;::::1;1885:13;1823:1;1885:2;:13;:::i;:::-;1871:28;::::0;:10:::1;:28;:::i;:::-;11833:21;;;;:::i;:::-;:30;;;;:::i;:::-;11822:8;:41:::0;11885:30:::1;::::0;;::::1;::::0;:21;::::1;1885:13;1823:1;1885:2;:13;:::i;:::-;1871:28;::::0;:10:::1;:28;:::i;:::-;11885:21;;;;:::i;:::-;:30;;;;:::i;:::-;11874:8;:41:::0;11941:16:::1;;::::0;::::1;11951:6;11941:16;:::i;:::-;11926:31;;:12;:31:::0;11986:8:::1;::::0;11976::::1;::::0;:18:::1;;11968:44;;;::::0;-1:-1:-1;;;11968:44:0;;10785:2:1;11968:44:0::1;::::0;::::1;10767:21:1::0;10824:2;10804:18;;;10797:30;-1:-1:-1;;;10843:18:1;;;10836:43;10896:18;;11968:44:0::1;10583:337:1::0;11968:44:0::1;11695:325:::0;;;;;:::o;5547:697::-;293:6;;-1:-1:-1;;;;;293:6:0;279:10;:20;271:57;;;;-1:-1:-1;;;271:57:0;;;;;;;:::i;:::-;3164:7:::1;:14:::0;;-1:-1:-1;;3164:14:0::1;;;::::0;;5629:10:::2;::::0;-1:-1:-1;;;;;5629:10:0::2;:24:::0;5621:47:::2;;;::::0;-1:-1:-1;;;5621:47:0;;11127:2:1;5621:47:0::2;::::0;::::2;11109:21:1::0;11166:2;11146:18;;;11139:30;-1:-1:-1;;;11185:18:1;;;11178:40;11235:18;;5621:47:0::2;10925:334:1::0;5621:47:0::2;5688:12;::::0;::::2;;5687:13;5679:38;;;::::0;-1:-1:-1;;;5679:38:0;;11466:2:1;5679:38:0::2;::::0;::::2;11448:21:1::0;11505:2;11485:18;;;11478:30;-1:-1:-1;;;11524:18:1;;;11517:42;11576:18;;5679:38:0::2;11264:336:1::0;5679:38:0::2;5748:1;5736:9;:13;:40;;;;5775:1;5753:21;:23;5736:40;5728:59;;;::::0;-1:-1:-1;;;5728:59:0;;11807:2:1;5728:59:0::2;::::0;::::2;11789:21:1::0;11846:1;11826:18;;;11819:29;-1:-1:-1;;;11864:18:1;;;11857:36;11910:18;;5728:59:0::2;11605:329:1::0;5728:59:0::2;5824:4;5831:1;5806:24:::0;;;:9:::2;:24;::::0;;;;;5798:48:::2;;;::::0;-1:-1:-1;;;5798:48:0;;12141:2:1;5798:48:0::2;::::0;::::2;12123:21:1::0;12180:1;12160:18;;;12153:29;-1:-1:-1;;;12198:18:1;;;12191:39;12247:18;;5798:48:0::2;11939:332:1::0;5798:48:0::2;5888:18;;;;;;;;;-1:-1:-1::0;;;;;5888:18:0::2;-1:-1:-1::0;;;;;5888:26:0::2;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5870:79;::::0;-1:-1:-1;;;5870:79:0;;5937:4:::2;5870:79;::::0;::::2;12744:34:1::0;-1:-1:-1;;;;;5944:4:0::2;12814:15:1::0;;12794:18;;;12787:43;5870:58:0;;;::::2;::::0;::::2;::::0;12679:18:1;;5870:79:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5857:10;:92:::0;;-1:-1:-1;;;;;;5857:92:0::2;-1:-1:-1::0;;;;;5857:92:0;;;::::2;::::0;;;::::2;::::0;;5992:4:::2;-1:-1:-1::0;5974:24:0;;;:9:::2;:24;::::0;;;;;5960:62:::2;::::0;6000:21:::2;5960:13;:62::i;:::-;6058:11;::::0;6043:10:::2;::::0;-1:-1:-1;;;;;6043:10:0::2;6033:21;::::0;;;:9:::2;:21;::::0;;;;:36;;:21;;;:36:::2;::::0;6058:11;;6033:36:::2;:::i;:::-;::::0;;;-1:-1:-1;;6103:10:0::2;::::0;6119:33:::2;::::0;;;;;::::2;::::0;::::2;::::0;;::::2;::::0;::::2;::::0;;-1:-1:-1;;;;;6119:33:0::2;-1:-1:-1::0;;;;;;6119:33:0::2;::::0;;6103:51;;-1:-1:-1;;;;;6103:10:0;;::::2;::::0;:51:::2;::::0;6119:33;6103:51:::2;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;6087:10:0::2;::::0;;-1:-1:-1;;;;;6087:10:0;;::::2;6081:17;::::0;;;:5:::2;:17;::::0;;;;;6080:74;;-1:-1:-1;;6080:74:0::2;::::0;::::2;;::::0;;;::::2;::::0;;;6179:10;;::::2;6173:17:::0;;;;6080:74:::2;6173:17;6165:46;;;::::0;-1:-1:-1;;;6165:46:0;;13335:2:1;6165:46:0::2;::::0;::::2;13317:21:1::0;13374:2;13354:18;;;13347:30;-1:-1:-1;;;13393:18:1;;;13386:46;13449:18;;6165:46:0::2;13133:340:1::0;6165:46:0::2;6222:14;:12;:14::i;:::-;3193:7:::1;:15:::0;;-1:-1:-1;;3193:15:0::1;::::0;;5547:697::o;499:151::-;293:6;;-1:-1:-1;;;;;293:6:0;279:10;:20;271:57;;;;-1:-1:-1;;;271:57:0;;;;;;;:::i;:::-;583:6:::1;:17:::0;;-1:-1:-1;;;;;;583:17:0::1;-1:-1:-1::0;;;;;583:17:0;::::1;::::0;;::::1;::::0;;;617:30:::1;::::0;4217:51:1;;;617:30:0::1;::::0;4205:2:1;4190:18;617:30:0::1;;;;;;;499:151:::0;:::o;8792:289::-;8917:12;;8861:4;;;;8917:12;;8912:130;;;-1:-1:-1;8948:4:0;8912:130;;;-1:-1:-1;;;;;8975:18:0;;;;;;:6;:18;;;;;;;;:42;;;;-1:-1:-1;;;;;;8997:20:0;;;;;;:8;:20;;;;;;;;8975:42;8971:71;;;-1:-1:-1;9035:4:0;9062:11;8792:289;-1:-1:-1;;8792:289:0:o;7339:878::-;7430:4;-1:-1:-1;;;;;7455:20:0;;7447:59;;;;-1:-1:-1;;;7447:59:0;;13896:2:1;7447:59:0;;;13878:21:1;13935:2;13915:18;;;13908:30;13974:28;13954:18;;;13947:56;14020:18;;7447:59:0;13694:350:1;7447:59:0;7522:12;;;;7517:91;;-1:-1:-1;;;;;7546:14:0;;;;;;:6;:14;;;;;;;;:34;;;;-1:-1:-1;;;;;;7564:16:0;;;;;;:8;:16;;;;;;;;7546:34;7538:67;;;;-1:-1:-1;;;7538:67:0;;14251:2:1;7538:67:0;;;14233:21:1;14290:2;14270:18;;;14263:30;-1:-1:-1;;;14309:18:1;;;14302:50;14369:18;;7538:67:0;14049:344:1;7538:67:0;7624:7;;;;;;;7623:8;:27;;;;-1:-1:-1;;;;;;7635:15:0;;;;;;:5;:15;;;;;;;;7623:27;:49;;;;;7654:18;7665:6;7654:10;:18::i;:::-;7618:82;;;7677:20;:18;:20::i;:::-;-1:-1:-1;;;;;7717:23:0;;7735:4;7717:23;;;;:52;;-1:-1:-1;;;;;;7744:25:0;;7764:4;7744:25;;7717:52;:72;;;;-1:-1:-1;7783:6:0;;-1:-1:-1;;;;;7773:16:0;;;7783:6;;7773:16;;7717:72;7712:174;;;7816:38;7829:6;7837:8;7847:6;7816:12;:38::i;:::-;7808:65;;;;-1:-1:-1;;;7808:65:0;;14600:2:1;7808:65:0;;;14582:21:1;14639:2;14619:18;;;14612:30;-1:-1:-1;;;14658:18:1;;;14651:44;14712:18;;7808:65:0;14398:338:1;7808:65:0;7898:18;7919:39;7933:6;7941:8;7951:6;7919:13;:39::i;:::-;7898:60;-1:-1:-1;7969:23:0;7995:19;7898:60;7995:6;:19;:::i;:::-;-1:-1:-1;;;;;8025:17:0;;;;;;:9;:17;;;;;:27;;7969:45;;-1:-1:-1;8046:6:0;;8025:17;;;:27;;8046:6;;8025:27;:::i;:::-;;;;;;;;8078:10;8063:11;;:25;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;8099:19:0;;;;;;:9;:19;;;;;:38;;8122:15;;8099:19;:38;;8122:15;;8099:38;:::i;:::-;;;;;;;;8170:8;-1:-1:-1;;;;;8153:34:0;8162:6;-1:-1:-1;;;;;8153:34:0;;8180:6;8153:34;;;;1464:25:1;;1452:2;1437:18;;1318:177;8153:34:0;;;;;;;;-1:-1:-1;8205:4:0;;7339:878;-1:-1:-1;;;;;7339:878:0:o;6252:255::-;6340:28;6355:12;6340:14;:28::i;:::-;6379:18;;6473:7;;6379:120;;-1:-1:-1;;;6379:120:0;;6446:4;6379:120;;;15082:34:1;15132:18;;;15125:34;;;6379:18:0;15175::1;;;15168:34;;;15218:18;;;15211:34;-1:-1:-1;;;;;6473:7:0;;;15261:19:1;;;15254:44;6482:15:0;15314:19:1;;;15307:35;6379:18:0;;;:34;;6421:13;;15016:19:1;;6379:120:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;6515:170::-;6594:3;1885:13;1823:1;1885:2;:13;:::i;:::-;1871:28;;:10;:28;:::i;:::-;6575:16;;:1;:16;:::i;:::-;:22;;;;:::i;:::-;6559:9;:38;6644:3;1885:13;1823:1;1885:2;:13;:::i;:::-;1871:28;;:10;:28;:::i;:::-;6625:16;;:1;:16;:::i;:::-;:22;;;;:::i;:::-;6609:13;:38;6658:12;:19;;-1:-1:-1;;6658:19:0;6673:4;6658:19;;;6515:170::o;6693:636::-;6748:4;6765:11;6806:1;6791:12;;:16;6787:465;;;6851:10;;-1:-1:-1;;;;;6851:10:0;;;6825:13;6841:21;;;:9;:21;;;;;;;6894:34;;-1:-1:-1;;;6894:34:0;;;;;4217:51:1;;;;6841:21:0;6825:13;;6901:4;6894:22;;;;;;4190:18:1;;6894:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6877:51;-1:-1:-1;6944:16:0;6985:5;6964:17;6877:51;6964:8;:17;:::i;:::-;6963:27;;;;:::i;:::-;6944:46;;7021:12;;7009:8;:24;7005:208;;7070:12;7059:24;;;;:10;:24;;;;;;7086:1;7059:24;;;;:28;7055:143;;;7160:12;7149:24;;;;:10;:24;;;;;:29;;7121:4;;-1:-1:-1;7121:4:0;;7149:24;:29;;7121:4;;7149:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;7055:143;6809:419;;;6787:465;;;-1:-1:-1;7245:4:0;6787:465;7277:12;7266:24;;:10;:24;;7315:6;6693:636;-1:-1:-1;;6693:636:0:o;12030:738::-;3164:7;:14;;-1:-1:-1;;3164:14:0;;;;;12120:11:::1;::::0;12169:8:::1;::::0;12147:30;::::1;::::0;::::1;::::0;:46:::1;;-1:-1:-1::0;12181:12:0::1;::::0;::::1;;12147:46;12142:619;;;12238:8;;12216:18;:30;12211:72;;-1:-1:-1::0;12272:8:0::1;::::0;12211:72:::1;12336:18:::0;12395:13:::1;1823:1;12395:2;:13;:::i;:::-;12391:17;::::0;:1:::1;:17;:::i;:::-;12374:14;:34;12370:229;;;12448:4;12430:24;::::0;;;:9:::1;:24;::::0;;;;:46;;12458:18;;12430:24;:46:::1;::::0;12458:18;;12430:46:::1;:::i;:::-;::::0;;;-1:-1:-1;12495:36:0::1;::::0;-1:-1:-1;12516:14:0;12495:20:::1;:36::i;:::-;12565:18;12550:11;;:33;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;12370:229:0::1;12643:21;12682:23:::0;;12679:71:::1;;12709:38;12727:19;12709:17;:38::i;:::-;12196:565;;12142:619;-1:-1:-1::0;3193:7:0;:15;;-1:-1:-1;;3193:15:0;;;12030:738::o;8225:559::-;8393:12;;8332:4;;8373;;8393:12;;:37;;;;-1:-1:-1;;;;;;8410:20:0;;;;;;:8;:20;;;;;;;;8409:21;8393:37;:60;;;;-1:-1:-1;;;;;;8435:18:0;;;;;;:8;:18;;;;;;;;8434:19;8393:60;8388:355;;;8493:9;;8476:14;:26;8471:261;;;-1:-1:-1;8544:5:0;8471:261;;;-1:-1:-1;;;;;8609:15:0;;;;;;:5;:15;;;;;;;;8608:16;:74;;;;-1:-1:-1;8668:13:0;;-1:-1:-1;;;;;8629:19:0;;;;;;:9;:19;;;;;;:36;;8651:14;;8629:36;:::i;:::-;:52;8608:74;8585:147;;;-1:-1:-1;8724:5:0;8760:16;8225:559;-1:-1:-1;;;;8225:559:0:o;9089:498::-;9254:12;;9190:7;;;;9254:12;;9253:13;;:35;;-1:-1:-1;;;;;;9270:18:0;;;;;;:6;:18;;;;;;;;9253:35;:56;;;-1:-1:-1;;;;;;9292:17:0;;;;;;:6;:17;;;;;;;;9253:56;9248:303;;;-1:-1:-1;9340:1:0;9248:303;;;-1:-1:-1;;;;;9365:17:0;;;;;;:5;:17;;;;;;;;9360:191;;;9422:11;;9436:3;;9413:20;;-1:-1:-1;;;9422:11:0;;;;9413:6;:20;:::i;:::-;:26;;;;:::i;:::-;9401:38;;9360:191;;;-1:-1:-1;;;;;9464:16:0;;;;;;:5;:16;;;;;;;;9459:92;;;9520:12;;9535:3;;9511:21;;-1:-1:-1;;;9520:12:0;;;;9511:6;:21;:::i;:::-;:27;;;;:::i;:::-;9499:39;9089:498;-1:-1:-1;;;;;9089:498:0:o;5222:317::-;5313:4;5293:26;;;;:11;:26;;;;;;;;2794:42;5293:46;;;;;;;;:61;-1:-1:-1;5288:244:0;;;5392:4;5372:26;;;;:11;:26;;;;;;;;2794:42;5372:46;;;;;;;;;;-1:-1:-1;;5372:66:0;;;;5458:62;;1464:25:1;;;2794:42:0;;5392:4;5458:62;;1437:18:1;5458:62:0;;;;;;;5288:244;5222:317;:::o;12776:348::-;12846:27;12861:11;12846:14;:27::i;:::-;12908:16;;;12922:1;12908:16;;;;;;;;12884:21;;12908:16;;;;;;;;;;-1:-1:-1;12908:16:0;12884:40;;12954:4;12935;12940:1;12935:7;;;;;;;;:::i;:::-;;;;;;:25;-1:-1:-1;;;;;12935:25:0;;;-1:-1:-1;;;;;12935:25:0;;;;;12981:4;12971;12976:1;12971:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12971:14:0;;;:7;;;;;;;;;:14;12997:18;;:119;;-1:-1:-1;;;12997:119:0;;:18;;;:69;;:119;;13067:11;;12997:18;;13081:4;;13094;;13100:15;;12997:119;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12835:289;12776:348;:::o;13132:103::-;13194:16;;:33;;-1:-1:-1;;;;;13194:16:0;;;;:33;;;;;13220:6;;13194:16;:33;:16;:33;13220:6;13194:16;:33;;;;;;;;;;;;;;;;;;;;;13132:103;:::o;14:250:1:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:1;238:16;;231:27;14:250::o;269:396::-;418:2;407:9;400:21;381:4;450:6;444:13;493:6;488:2;477:9;473:18;466:34;509:79;581:6;576:2;565:9;561:18;556:2;548:6;544:15;509:79;:::i;:::-;649:2;628:15;-1:-1:-1;;624:29:1;609:45;;;;656:2;605:54;;269:396;-1:-1:-1;;269:396:1:o;670:131::-;-1:-1:-1;;;;;745:31:1;;735:42;;725:70;;791:1;788;781:12;806:315;874:6;882;935:2;923:9;914:7;910:23;906:32;903:52;;;951:1;948;941:12;903:52;990:9;977:23;1009:31;1034:5;1009:31;:::i;:::-;1059:5;1111:2;1096:18;;;;1083:32;;-1:-1:-1;;;806:315:1:o;1500:160::-;1565:20;;1621:13;;1614:21;1604:32;;1594:60;;1650:1;1647;1640:12;1594:60;1500:160;;;:::o;1665:383::-;1736:6;1744;1752;1805:2;1793:9;1784:7;1780:23;1776:32;1773:52;;;1821:1;1818;1811:12;1773:52;1860:9;1847:23;1879:31;1904:5;1879:31;:::i;:::-;1929:5;-1:-1:-1;1953:35:1;1984:2;1969:18;;1953:35;:::i;:::-;1943:45;;2007:35;2038:2;2027:9;2023:18;2007:35;:::i;:::-;1997:45;;1665:383;;;;;:::o;2053:456::-;2130:6;2138;2146;2199:2;2187:9;2178:7;2174:23;2170:32;2167:52;;;2215:1;2212;2205:12;2167:52;2254:9;2241:23;2273:31;2298:5;2273:31;:::i;:::-;2323:5;-1:-1:-1;2380:2:1;2365:18;;2352:32;2393:33;2352:32;2393:33;:::i;:::-;2053:456;;2445:7;;-1:-1:-1;;;2499:2:1;2484:18;;;;2471:32;;2053:456::o;2703:247::-;2762:6;2815:2;2803:9;2794:7;2790:23;2786:32;2783:52;;;2831:1;2828;2821:12;2783:52;2870:9;2857:23;2889:31;2914:5;2889:31;:::i;3228:159::-;3295:20;;3355:6;3344:18;;3334:29;;3324:57;;3377:1;3374;3367:12;3392:256;3458:6;3466;3519:2;3507:9;3498:7;3494:23;3490:32;3487:52;;;3535:1;3532;3525:12;3487:52;3558:28;3576:9;3558:28;:::i;:::-;3548:38;;3605:37;3638:2;3627:9;3623:18;3605:37;:::i;:::-;3595:47;;3392:256;;;;;:::o;3653:156::-;3719:20;;3779:4;3768:16;;3758:27;;3748:55;;3799:1;3796;3789:12;3814:252;3878:6;3886;3939:2;3927:9;3918:7;3914:23;3910:32;3907:52;;;3955:1;3952;3945:12;3907:52;3978:27;3995:9;3978:27;:::i;:::-;3968:37;;4024:36;4056:2;4045:9;4041:18;4024:36;:::i;4279:388::-;4347:6;4355;4408:2;4396:9;4387:7;4383:23;4379:32;4376:52;;;4424:1;4421;4414:12;4376:52;4463:9;4450:23;4482:31;4507:5;4482:31;:::i;:::-;4532:5;-1:-1:-1;4589:2:1;4574:18;;4561:32;4602:33;4561:32;4602:33;:::i;:::-;4654:7;4644:17;;;4279:388;;;;;:::o;4672:163::-;4739:20;;4799:10;4788:22;;4778:33;;4768:61;;4825:1;4822;4815:12;4840:474;4930:6;4938;4946;4954;4962;5015:3;5003:9;4994:7;4990:23;4986:33;4983:53;;;5032:1;5029;5022:12;4983:53;5055:28;5073:9;5055:28;:::i;:::-;5045:38;;5102:37;5135:2;5124:9;5120:18;5102:37;:::i;:::-;5092:47;;5158:37;5191:2;5180:9;5176:18;5158:37;:::i;:::-;5148:47;;5214:37;5247:2;5236:9;5232:18;5214:37;:::i;:::-;5204:47;;5270:38;5303:3;5292:9;5288:19;5270:38;:::i;:::-;5260:48;;4840:474;;;;;;;;:::o;5579:127::-;5640:10;5635:3;5631:20;5628:1;5621:31;5671:4;5668:1;5661:15;5695:4;5692:1;5685:15;5711:416;5800:1;5837:5;5800:1;5851:270;5872:7;5862:8;5859:21;5851:270;;;5931:4;5927:1;5923:6;5919:17;5913:4;5910:27;5907:53;;;5940:18;;:::i;:::-;5990:7;5980:8;5976:22;5973:55;;;6010:16;;;;5973:55;6089:22;;;;6049:15;;;;5851:270;;;5855:3;5711:416;;;;;:::o;6132:806::-;6181:5;6211:8;6201:80;;-1:-1:-1;6252:1:1;6266:5;;6201:80;6300:4;6290:76;;-1:-1:-1;6337:1:1;6351:5;;6290:76;6382:4;6400:1;6395:59;;;;6468:1;6463:130;;;;6375:218;;6395:59;6425:1;6416:10;;6439:5;;;6463:130;6500:3;6490:8;6487:17;6484:43;;;6507:18;;:::i;:::-;-1:-1:-1;;6563:1:1;6549:16;;6578:5;;6375:218;;6677:2;6667:8;6664:16;6658:3;6652:4;6649:13;6645:36;6639:2;6629:8;6626:16;6621:2;6615:4;6612:12;6608:35;6605:77;6602:159;;;-1:-1:-1;6714:19:1;;;6746:5;;6602:159;6793:34;6818:8;6812:4;6793:34;:::i;:::-;6863:6;6859:1;6855:6;6851:19;6842:7;6839:32;6836:58;;;6874:18;;:::i;:::-;6912:20;;6132:806;-1:-1:-1;;;6132:806:1:o;6943:140::-;7001:5;7030:47;7071:4;7061:8;7057:19;7051:4;7030:47;:::i;7088:168::-;7161:9;;;7192;;7209:15;;;7203:22;;7189:37;7179:71;;7230:18;;:::i;7261:348::-;7463:2;7445:21;;;7502:2;7482:18;;;7475:30;7541:26;7536:2;7521:18;;7514:54;7600:2;7585:18;;7261:348::o;8304:128::-;8371:9;;;8392:11;;;8389:37;;;8406:18;;:::i;8437:217::-;8477:1;8503;8493:132;;8547:10;8542:3;8538:20;8535:1;8528:31;8582:4;8579:1;8572:15;8610:4;8607:1;8600:15;8493:132;-1:-1:-1;8639:9:1;;8437:217::o;8659:125::-;8724:9;;;8745:10;;;8742:36;;;8758:18;;:::i;9471:148::-;9559:4;9538:12;;;9552;;;9534:31;;9577:13;;9574:39;;;9593:18;;:::i;10323:255::-;10394:16;10442:10;;;10454;;;10438:27;10485:20;;;;10394:16;10524:24;;;10514:58;;10552:18;;:::i;:::-;10514:58;;10323:255;;;;:::o;12276:251::-;12346:6;12399:2;12387:9;12378:7;12374:23;12370:32;12367:52;;;12415:1;12412;12405:12;12367:52;12447:9;12441:16;12466:31;12491:5;12466:31;:::i;12841:287::-;12970:3;13008:6;13002:13;13024:66;13083:6;13078:3;13071:4;13063:6;13059:17;13024:66;:::i;:::-;13106:16;;;;;12841:287;-1:-1:-1;;12841:287:1:o;15353:306::-;15441:6;15449;15457;15510:2;15498:9;15489:7;15485:23;15481:32;15478:52;;;15526:1;15523;15516:12;15478:52;15555:9;15549:16;15539:26;;15605:2;15594:9;15590:18;15584:25;15574:35;;15649:2;15638:9;15634:18;15628:25;15618:35;;15353:306;;;;;:::o;15664:184::-;15734:6;15787:2;15775:9;15766:7;15762:23;15758:32;15755:52;;;15803:1;15800;15793:12;15755:52;-1:-1:-1;15826:16:1;;15664:184;-1:-1:-1;15664:184:1:o;15985:127::-;16046:10;16041:3;16037:20;16034:1;16027:31;16077:4;16074:1;16067:15;16101:4;16098:1;16091:15;16117:980;16379:4;16427:3;16416:9;16412:19;16458:6;16447:9;16440:25;16484:2;16522:6;16517:2;16506:9;16502:18;16495:34;16565:3;16560:2;16549:9;16545:18;16538:31;16589:6;16624;16618:13;16655:6;16647;16640:22;16693:3;16682:9;16678:19;16671:26;;16732:2;16724:6;16720:15;16706:29;;16753:1;16763:195;16777:6;16774:1;16771:13;16763:195;;;16842:13;;-1:-1:-1;;;;;16838:39:1;16826:52;;16933:15;;;;16898:12;;;;16874:1;16792:9;16763:195;;;-1:-1:-1;;;;;;;17014:32:1;;;;17009:2;16994:18;;16987:60;-1:-1:-1;;;17078:3:1;17063:19;17056:35;16975:3;16117:980;-1:-1:-1;;;16117:980:1:o

Swarm Source

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