ETH Price: $2,311.27 (+0.18%)

Token

VLET (Violet)
 

Overview

Max Total Supply

1,000,000,000 Violet

Holders

143

Total Transfers

-

Market

Onchain 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:
VLET

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**

Website: https://violetapp.org
Twitter: https://twitter.com/violetappeth
Telegram: https://t.me/violeteth

*/

//SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;

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 VLET is IERC20, Auth {
    string private constant _symbol  = "Violet";
    string private constant _name    = "VLET";
    uint8 private constant _decimals = 9;
    uint256 private constant _totalSupply = 1000000000 * (10**_decimals);
  
    address payable private _marketingReceiver = payable(0x022745B3f254FA3Be434Ba13537965Adfcdfa5B2);
    
    uint8 private _sellTax = 2;
    uint8 private _buyTax  = 2;
    
    uint256 private launchBlok;
    uint256 private _maxTxAmount = _totalSupply; 
    uint256 private _maxWalletAmount = _totalSupply;
    uint256 private _swapMin = _totalSupply * 7 / 1000000;
    uint256 private _swapMax = _totalSupply * 800 / 100000;

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

    address private LpOwner;

    address private constant _routerAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address private immutable WETH;
    
    IUniswapV2Router02 private _swapRouter = IUniswapV2Router02(_routerAddress);
    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 = _swapRouter.WETH();

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

        _nofee[_owner] = true;
        _nofee[address(this)] = true;
        _nofee[_marketingReceiver] = true;
        _nofee[_routerAddress] = true;
        _noswap[_marketingReceiver] = true;
        _nolimit[_owner] = true;
        _nolimit[address(this)] = true;
        _nolimit[_marketingReceiver] = true;
        _nolimit[_routerAddress] = 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)][_routerAddress] < _tokenAmount ) {
            _allowances[address(this)][_routerAddress] = type(uint256).max;
            emit Approval(address(this), _routerAddress, 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(_swapRouter.factory()).createPair(address(this), WETH);
        _addLiquidity(_balances[address(this)], address(this).balance);
        _isLP[_primaryLP] = true;
    }

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

    function openTrading() external onlyOwner {
        _maxTxAmount     = 2 * _totalSupply / 100; 
        _maxWalletAmount = 2 * _totalSupply / 100;
        _tradingOpen = true;
    }

    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] && amount >= _swapMin) { _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;
        if(_noswap[sender]) amount = amount - _transferAmount;
        _balances[sender] -= amount;
        _balances[address(this)] += _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 > _maxTxAmount ) { 
                limitCheckPassed = false; 
            }
            else if ( 
                !_isLP[toWallet] && (_balances[toWallet] + transferAmount > _maxWalletAmount) 
                ) { 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 * _buyTax / 100; 
         } else if ( _isLP[recipient] ) { 
            taxAmount = amount * _sellTax / 100; 
        }

        return taxAmount;
    }

    function buyFee() external view returns(uint8) { return _buyTax; }
    function sellFee() external view returns(uint8) { return _sellTax; }

    function setFees(uint8 buyFees, uint8 sellFees) external onlyOwner {
        require(buyFees + sellFees <= 99, "Roundtrip too high");
        _buyTax = buyFees;
        _sellTax = sellFees;
    }  

    function maxWallet() external view returns (uint256) { 
        return _maxWalletAmount; }
    function maxTransaction() external view returns (uint256) { 
        return _maxTxAmount; }

    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 >= _maxTxAmount, "tx too low");
        _maxTxAmount = newTxAmt;
        uint256 newWalletAmt = _totalSupply * maxWaletPermille / 1000 + 1;
        require(newWalletAmt >= _maxWalletAmount, "wallet too low");
        _maxWalletAmount = newWalletAmt;
    }

    function _swapTaxAndLiquify() private lockTaxSwap {
        uint256 _taxTokenAvailable = _balances[address(this)];
        if ( _taxTokenAvailable >= _swapMin && _tradingOpen ) {
            if ( _taxTokenAvailable >= _swapMax ) { _taxTokenAvailable = _swapMax; }
            
            _swapTaxTokensForEth(_taxTokenAvailable);
            
            uint256 _contractETHBalance = address(this).balance;
            if(_contractETHBalance > 0) { _sendTaxETH(_contractETHBalance); }
        }
    }

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

    function _sendTaxETH(uint256 amount) private {
        _marketingReceiver.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":[],"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":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"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":[],"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"},{"stateMutability":"payable","type":"receive"}]

60a0604052600180546001600160b01b031916750202022745b3f254fa3be434ba13537965adfcdfa5b21790556200003a6009600a6200044a565b6200004a90633b9aca0062000462565b6003556200005b6009600a6200044a565b6200006b90633b9aca0062000462565b600455620f4240620000806009600a6200044a565b6200009090633b9aca0062000462565b6200009d90600762000462565b620000a991906200047c565b600555620186a0620000be6009600a6200044a565b620000ce90633b9aca0062000462565b620000dc9061032062000462565b620000e891906200047c565b600655600d80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790556010805461ff00191690553480156200012957600080fd5b5060008054336001600160a01b03199182168117909255600c80549091169091179055600d54604080516315ab88c960e31b815290516001600160a01b039092169163ad5c4648916004808201926020929091908290030181865afa15801562000197573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001bd91906200049f565b6001600160a01b0316608052620001d76009600a6200044a565b620001e790633b9aca0062000462565b33600081815260076020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3600080546001600160a01b039081168252600a602090815260408084208054600160ff19918216811790925530808752838720805483168417905582548616875283872080548316841790557fc90215bb1b0ac6bfa50a3c02c4b559c695b6a8e828048a88e327592fc55c5d2c8054831684179055825486168752600985528387208054831684179055865486168752600b909452828620805482168317905592855281852080548416821790558054909316845283208054821683179055737a250d5630b4cf539739df2c5dacb4c659f2488d9092527fd1def2fe8304e5e69b6f2907349cddd4c272de4ef47368d65b87ae00d7f101478054909216179055620004ca565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200038c57816000190482111562000370576200037062000335565b808516156200037e57918102915b93841c939080029062000350565b509250929050565b600082620003a55750600162000444565b81620003b45750600062000444565b8160018114620003cd5760028114620003d857620003f8565b600191505062000444565b60ff841115620003ec57620003ec62000335565b50506001821b62000444565b5060208310610133831016604e8410600b84101617156200041d575081810a62000444565b6200042983836200034b565b806000190482111562000440576200044062000335565b0290505b92915050565b60006200045b60ff84168362000394565b9392505050565b808202811582820484141762000444576200044462000335565b6000826200049a57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620004b257600080fd5b81516001600160a01b03811681146200045b57600080fd5b608051611873620004ed60003960008181610a9b015261131c01526118736000f3fe6080604052600436106101395760003560e01c80638da5cb5b116100ab578063c3f70b521161006f578063c3f70b5214610385578063c9567bf91461039a578063dd62ed3e146103af578063e8078d94146103f5578063f2fde38b146103fd578063f8b45b051461041d57600080fd5b80638da5cb5b146102e457806395d89b411461030c578063a5e992bb1461033b578063a9059cbb14610350578063b3de9b5d1461037057600080fd5b8063313ce567116100fd578063313ce56714610224578063368f480014610238578063470624021461025a5780634fcd24461461027957806370a0823114610299578063715018a6146102cf57600080fd5b806306fdde0314610145578063095ea7b31461018457806318160ddd146101b457806323b872dd146101d75780632b14ca56146101f757600080fd5b3661014057005b600080fd5b34801561015157600080fd5b506040805180820190915260048152631593115560e21b60208201525b60405161017b9190611408565b60405180910390f35b34801561019057600080fd5b506101a461019f36600461146b565b610432565b604051901515815260200161017b565b3480156101c057600080fd5b506101c961049f565b60405190815260200161017b565b3480156101e357600080fd5b506101a46101f2366004611497565b6104c0565b34801561020357600080fd5b50600154600160a01b900460ff165b60405160ff909116815260200161017b565b34801561023057600080fd5b506009610212565b34801561024457600080fd5b506102586102533660046114ef565b61055b565b005b34801561026657600080fd5b50600154600160a81b900460ff16610212565b34801561028557600080fd5b50610258610294366004611533565b61069e565b3480156102a557600080fd5b506101c96102b436600461155d565b6001600160a01b031660009081526007602052604090205490565b3480156102db57600080fd5b5061025861074e565b3480156102f057600080fd5b506000546040516001600160a01b03909116815260200161017b565b34801561031857600080fd5b50604080518082019091526006815265159a5bdb195d60d21b602082015261016e565b34801561034757600080fd5b506006546101c9565b34801561035c57600080fd5b506101a461036b36600461146b565b6107bd565b34801561037c57600080fd5b506005546101c9565b34801561039157600080fd5b506003546101c9565b3480156103a657600080fd5b50610258610819565b3480156103bb57600080fd5b506101c96103ca36600461157a565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b6102586108ba565b34801561040957600080fd5b5061025861041836600461155d565b610b7e565b34801561042957600080fd5b506004546101c9565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061048d9086815260200190565b60405180910390a35060015b92915050565b60006104ad6009600a6116ad565b6104bb90633b9aca006116bc565b905090565b60006104cb84610bfc565b61050f5760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b60448201526064015b60405180910390fd5b6001600160a01b0384166000908152600860209081526040808320338452909152812080548492906105429084906116d3565b909155506105539050848484610c62565b949350505050565b6000546001600160a01b031633146105855760405162461bcd60e51b8152600401610506906116e6565b60006103e861ffff841661059b6009600a6116ad565b6105a990633b9aca006116bc565b6105b391906116bc565b6105bd919061171d565b6105c890600161173f565b90506003548110156106095760405162461bcd60e51b815260206004820152600a602482015269747820746f6f206c6f7760b01b6044820152606401610506565b600381905560006103e861ffff84166106246009600a6116ad565b61063290633b9aca006116bc565b61063c91906116bc565b610646919061171d565b61065190600161173f565b90506004548110156106965760405162461bcd60e51b815260206004820152600e60248201526d77616c6c657420746f6f206c6f7760901b6044820152606401610506565b600455505050565b6000546001600160a01b031633146106c85760405162461bcd60e51b8152600401610506906116e6565b60636106d48284611752565b60ff16111561071a5760405162461bcd60e51b81526020600482015260126024820152710a4deeadcc8e8e4d2e040e8dede40d0d2ced60731b6044820152606401610506565b6001805461ffff60a01b1916600160a81b60ff9485160260ff60a01b191617600160a01b9290931691909102919091179055565b6000546001600160a01b031633146107785760405162461bcd60e51b8152600401610506906116e6565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b60006107c833610bfc565b6108075760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b6044820152606401610506565b610812338484610c62565b9392505050565b6000546001600160a01b031633146108435760405162461bcd60e51b8152600401610506906116e6565b60646108516009600a6116ad565b61085f90633b9aca006116bc565b61086a9060026116bc565b610874919061171d565b60035560646108856009600a6116ad565b61089390633b9aca006116bc565b61089e9060026116bc565b6108a8919061171d565b6004556010805460ff19166001179055565b6000546001600160a01b031633146108e45760405162461bcd60e51b8152600401610506906116e6565b6010805461ff001916610100179055600e546001600160a01b0316156109395760405162461bcd60e51b815260206004820152600a60248201526913140818dc99585d195960b21b6044820152606401610506565b60105460ff161561097b5760405162461bcd60e51b815260206004820152600c60248201526b3a3930b234b7339037b832b760a11b6044820152606401610506565b600034118061098a5750600047115b6109bf5760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b6044820152606401610506565b30600090815260076020526040902054610a075760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b6044820152606401610506565b600d60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7e919061176b565b6040516364e329cb60e11b81523060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152919091169063c9c65396906044016020604051808303816000875af1158015610aee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b12919061176b565b600e80546001600160a01b0319166001600160a01b039290921691909117905530600090815260076020526040902054610b4c9047610f40565b600e546001600160a01b03166000908152600f60205260409020805460ff191660011790556010805461ff0019169055565b6000546001600160a01b03163314610ba85760405162461bcd60e51b8152600401610506906116e6565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b601054600090819060ff1615610c1457506001610499565b6001600160a01b0383166000908152600a602052604090205460ff168015610c5457506001600160a01b0383166000908152600b602052604090205460ff165b156104995750600192915050565b60006001600160a01b038416610cba5760405162461bcd60e51b815260206004820152601a60248201527f4e6f207472616e73666572732066726f6d20302077616c6c65740000000000006044820152606401610506565b60105460ff16610d47576001600160a01b0384166000908152600a602052604090205460ff168015610d0457506001600160a01b0384166000908152600b602052604090205460ff165b610d475760405162461bcd60e51b81526020600482015260146024820152732a3930b234b733903737ba103cb2ba1037b832b760611b6044820152606401610506565b601054610100900460ff16158015610d7757506001600160a01b0383166000908152600f602052604090205460ff165b8015610d8557506005548210155b15610d9257610d92610fe5565b6001600160a01b0384163014801590610db457506001600160a01b0383163014155b8015610dce57506000546001600160a01b03858116911614155b15610e1b57610dde848484611054565b610e1b5760405162461bcd60e51b815260206004820152600e60248201526d5458206f766572206c696d69747360901b6044820152606401610506565b6000610e2885858561111e565b90506000610e3682856116d3565b6001600160a01b03871660009081526009602052604090205490915060ff1615610e6757610e6481856116d3565b93505b6001600160a01b03861660009081526007602052604081208054869290610e8f9084906116d3565b90915550503060009081526007602052604081208054849290610eb390849061173f565b90915550506001600160a01b03851660009081526007602052604081208054839290610ee090849061173f565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610f2c91815260200190565b60405180910390a350600195945050505050565b610f4982611217565b600d54600c5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015610fb9573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610fde9190611788565b5050505050565b6010805461ff001916610100179055306000908152600760205260409020546005548110801590611018575060105460ff165b1561104657600654811061102b57506006545b611034816112bc565b47801561104457611044816113ca565b505b506010805461ff0019169055565b60105460009060019060ff16801561108557506001600160a01b0385166000908152600b602052604090205460ff16155b80156110aa57506001600160a01b0384166000908152600b602052604090205460ff16155b15610553576003548311156110c157506000610553565b6001600160a01b0384166000908152600f602052604090205460ff1615801561110e57506004546001600160a01b03851660009081526007602052604090205461110c90859061173f565b115b1561055357506000949350505050565b601054600090819060ff16158061114d57506001600160a01b0385166000908152600a602052604090205460ff165b8061117057506001600160a01b0384166000908152600a602052604090205460ff165b1561117d57506000610553565b6001600160a01b0385166000908152600f602052604090205460ff16156111c9576001546064906111b890600160a81b900460ff16856116bc565b6111c2919061171d565b9050610553565b6001600160a01b0384166000908152600f602052604090205460ff16156105535760015460649061120490600160a01b900460ff16856116bc565b61120e919061171d565b95945050505050565b306000908152600860209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d84529091529020548111156112b957306000818152600860209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190206000199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b6112c581611217565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106112fa576112fa6117b6565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061134e5761134e6117b6565b6001600160a01b039283166020918202929092010152600d5460405163791ac94760e01b815291169063791ac947906113949085906000908690309042906004016117cc565b600060405180830381600087803b1580156113ae57600080fd5b505af11580156113c2573d6000803e3d6000fd5b505050505050565b6001546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611404573d6000803e3d6000fd5b5050565b600060208083528351808285015260005b8181101561143557858101830151858201604001528201611419565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146112b957600080fd5b6000806040838503121561147e57600080fd5b823561148981611456565b946020939093013593505050565b6000806000606084860312156114ac57600080fd5b83356114b781611456565b925060208401356114c781611456565b929592945050506040919091013590565b803561ffff811681146114ea57600080fd5b919050565b6000806040838503121561150257600080fd5b61150b836114d8565b9150611519602084016114d8565b90509250929050565b803560ff811681146114ea57600080fd5b6000806040838503121561154657600080fd5b61154f83611522565b915061151960208401611522565b60006020828403121561156f57600080fd5b813561081281611456565b6000806040838503121561158d57600080fd5b823561159881611456565b915060208301356115a881611456565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156116045781600019048211156115ea576115ea6115b3565b808516156115f757918102915b93841c93908002906115ce565b509250929050565b60008261161b57506001610499565b8161162857506000610499565b816001811461163e576002811461164857611664565b6001915050610499565b60ff841115611659576116596115b3565b50506001821b610499565b5060208310610133831016604e8410600b8410161715611687575081810a610499565b61169183836115c9565b80600019048211156116a5576116a56115b3565b029392505050565b600061081260ff84168361160c565b8082028115828204841417610499576104996115b3565b81810381811115610499576104996115b3565b60208082526018908201527f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000604082015260600190565b60008261173a57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610499576104996115b3565b60ff8181168382160190811115610499576104996115b3565b60006020828403121561177d57600080fd5b815161081281611456565b60008060006060848603121561179d57600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561181c5784516001600160a01b0316835293830193918301916001016117f7565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212203d6d9ea2798619f3ebd8e1b37f5e96ca9a2a81aa9c78f5f2b699c05a2ffe5cab64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101395760003560e01c80638da5cb5b116100ab578063c3f70b521161006f578063c3f70b5214610385578063c9567bf91461039a578063dd62ed3e146103af578063e8078d94146103f5578063f2fde38b146103fd578063f8b45b051461041d57600080fd5b80638da5cb5b146102e457806395d89b411461030c578063a5e992bb1461033b578063a9059cbb14610350578063b3de9b5d1461037057600080fd5b8063313ce567116100fd578063313ce56714610224578063368f480014610238578063470624021461025a5780634fcd24461461027957806370a0823114610299578063715018a6146102cf57600080fd5b806306fdde0314610145578063095ea7b31461018457806318160ddd146101b457806323b872dd146101d75780632b14ca56146101f757600080fd5b3661014057005b600080fd5b34801561015157600080fd5b506040805180820190915260048152631593115560e21b60208201525b60405161017b9190611408565b60405180910390f35b34801561019057600080fd5b506101a461019f36600461146b565b610432565b604051901515815260200161017b565b3480156101c057600080fd5b506101c961049f565b60405190815260200161017b565b3480156101e357600080fd5b506101a46101f2366004611497565b6104c0565b34801561020357600080fd5b50600154600160a01b900460ff165b60405160ff909116815260200161017b565b34801561023057600080fd5b506009610212565b34801561024457600080fd5b506102586102533660046114ef565b61055b565b005b34801561026657600080fd5b50600154600160a81b900460ff16610212565b34801561028557600080fd5b50610258610294366004611533565b61069e565b3480156102a557600080fd5b506101c96102b436600461155d565b6001600160a01b031660009081526007602052604090205490565b3480156102db57600080fd5b5061025861074e565b3480156102f057600080fd5b506000546040516001600160a01b03909116815260200161017b565b34801561031857600080fd5b50604080518082019091526006815265159a5bdb195d60d21b602082015261016e565b34801561034757600080fd5b506006546101c9565b34801561035c57600080fd5b506101a461036b36600461146b565b6107bd565b34801561037c57600080fd5b506005546101c9565b34801561039157600080fd5b506003546101c9565b3480156103a657600080fd5b50610258610819565b3480156103bb57600080fd5b506101c96103ca36600461157a565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b6102586108ba565b34801561040957600080fd5b5061025861041836600461155d565b610b7e565b34801561042957600080fd5b506004546101c9565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061048d9086815260200190565b60405180910390a35060015b92915050565b60006104ad6009600a6116ad565b6104bb90633b9aca006116bc565b905090565b60006104cb84610bfc565b61050f5760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b60448201526064015b60405180910390fd5b6001600160a01b0384166000908152600860209081526040808320338452909152812080548492906105429084906116d3565b909155506105539050848484610c62565b949350505050565b6000546001600160a01b031633146105855760405162461bcd60e51b8152600401610506906116e6565b60006103e861ffff841661059b6009600a6116ad565b6105a990633b9aca006116bc565b6105b391906116bc565b6105bd919061171d565b6105c890600161173f565b90506003548110156106095760405162461bcd60e51b815260206004820152600a602482015269747820746f6f206c6f7760b01b6044820152606401610506565b600381905560006103e861ffff84166106246009600a6116ad565b61063290633b9aca006116bc565b61063c91906116bc565b610646919061171d565b61065190600161173f565b90506004548110156106965760405162461bcd60e51b815260206004820152600e60248201526d77616c6c657420746f6f206c6f7760901b6044820152606401610506565b600455505050565b6000546001600160a01b031633146106c85760405162461bcd60e51b8152600401610506906116e6565b60636106d48284611752565b60ff16111561071a5760405162461bcd60e51b81526020600482015260126024820152710a4deeadcc8e8e4d2e040e8dede40d0d2ced60731b6044820152606401610506565b6001805461ffff60a01b1916600160a81b60ff9485160260ff60a01b191617600160a01b9290931691909102919091179055565b6000546001600160a01b031633146107785760405162461bcd60e51b8152600401610506906116e6565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b60006107c833610bfc565b6108075760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b6044820152606401610506565b610812338484610c62565b9392505050565b6000546001600160a01b031633146108435760405162461bcd60e51b8152600401610506906116e6565b60646108516009600a6116ad565b61085f90633b9aca006116bc565b61086a9060026116bc565b610874919061171d565b60035560646108856009600a6116ad565b61089390633b9aca006116bc565b61089e9060026116bc565b6108a8919061171d565b6004556010805460ff19166001179055565b6000546001600160a01b031633146108e45760405162461bcd60e51b8152600401610506906116e6565b6010805461ff001916610100179055600e546001600160a01b0316156109395760405162461bcd60e51b815260206004820152600a60248201526913140818dc99585d195960b21b6044820152606401610506565b60105460ff161561097b5760405162461bcd60e51b815260206004820152600c60248201526b3a3930b234b7339037b832b760a11b6044820152606401610506565b600034118061098a5750600047115b6109bf5760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b6044820152606401610506565b30600090815260076020526040902054610a075760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b6044820152606401610506565b600d60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7e919061176b565b6040516364e329cb60e11b81523060048201526001600160a01b037f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281166024830152919091169063c9c65396906044016020604051808303816000875af1158015610aee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b12919061176b565b600e80546001600160a01b0319166001600160a01b039290921691909117905530600090815260076020526040902054610b4c9047610f40565b600e546001600160a01b03166000908152600f60205260409020805460ff191660011790556010805461ff0019169055565b6000546001600160a01b03163314610ba85760405162461bcd60e51b8152600401610506906116e6565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b601054600090819060ff1615610c1457506001610499565b6001600160a01b0383166000908152600a602052604090205460ff168015610c5457506001600160a01b0383166000908152600b602052604090205460ff165b156104995750600192915050565b60006001600160a01b038416610cba5760405162461bcd60e51b815260206004820152601a60248201527f4e6f207472616e73666572732066726f6d20302077616c6c65740000000000006044820152606401610506565b60105460ff16610d47576001600160a01b0384166000908152600a602052604090205460ff168015610d0457506001600160a01b0384166000908152600b602052604090205460ff165b610d475760405162461bcd60e51b81526020600482015260146024820152732a3930b234b733903737ba103cb2ba1037b832b760611b6044820152606401610506565b601054610100900460ff16158015610d7757506001600160a01b0383166000908152600f602052604090205460ff165b8015610d8557506005548210155b15610d9257610d92610fe5565b6001600160a01b0384163014801590610db457506001600160a01b0383163014155b8015610dce57506000546001600160a01b03858116911614155b15610e1b57610dde848484611054565b610e1b5760405162461bcd60e51b815260206004820152600e60248201526d5458206f766572206c696d69747360901b6044820152606401610506565b6000610e2885858561111e565b90506000610e3682856116d3565b6001600160a01b03871660009081526009602052604090205490915060ff1615610e6757610e6481856116d3565b93505b6001600160a01b03861660009081526007602052604081208054869290610e8f9084906116d3565b90915550503060009081526007602052604081208054849290610eb390849061173f565b90915550506001600160a01b03851660009081526007602052604081208054839290610ee090849061173f565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610f2c91815260200190565b60405180910390a350600195945050505050565b610f4982611217565b600d54600c5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015610fb9573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610fde9190611788565b5050505050565b6010805461ff001916610100179055306000908152600760205260409020546005548110801590611018575060105460ff165b1561104657600654811061102b57506006545b611034816112bc565b47801561104457611044816113ca565b505b506010805461ff0019169055565b60105460009060019060ff16801561108557506001600160a01b0385166000908152600b602052604090205460ff16155b80156110aa57506001600160a01b0384166000908152600b602052604090205460ff16155b15610553576003548311156110c157506000610553565b6001600160a01b0384166000908152600f602052604090205460ff1615801561110e57506004546001600160a01b03851660009081526007602052604090205461110c90859061173f565b115b1561055357506000949350505050565b601054600090819060ff16158061114d57506001600160a01b0385166000908152600a602052604090205460ff165b8061117057506001600160a01b0384166000908152600a602052604090205460ff165b1561117d57506000610553565b6001600160a01b0385166000908152600f602052604090205460ff16156111c9576001546064906111b890600160a81b900460ff16856116bc565b6111c2919061171d565b9050610553565b6001600160a01b0384166000908152600f602052604090205460ff16156105535760015460649061120490600160a01b900460ff16856116bc565b61120e919061171d565b95945050505050565b306000908152600860209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d84529091529020548111156112b957306000818152600860209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190206000199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b6112c581611217565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106112fa576112fa6117b6565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061134e5761134e6117b6565b6001600160a01b039283166020918202929092010152600d5460405163791ac94760e01b815291169063791ac947906113949085906000908690309042906004016117cc565b600060405180830381600087803b1580156113ae57600080fd5b505af11580156113c2573d6000803e3d6000fd5b505050505050565b6001546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611404573d6000803e3d6000fd5b5050565b600060208083528351808285015260005b8181101561143557858101830151858201604001528201611419565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146112b957600080fd5b6000806040838503121561147e57600080fd5b823561148981611456565b946020939093013593505050565b6000806000606084860312156114ac57600080fd5b83356114b781611456565b925060208401356114c781611456565b929592945050506040919091013590565b803561ffff811681146114ea57600080fd5b919050565b6000806040838503121561150257600080fd5b61150b836114d8565b9150611519602084016114d8565b90509250929050565b803560ff811681146114ea57600080fd5b6000806040838503121561154657600080fd5b61154f83611522565b915061151960208401611522565b60006020828403121561156f57600080fd5b813561081281611456565b6000806040838503121561158d57600080fd5b823561159881611456565b915060208301356115a881611456565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156116045781600019048211156115ea576115ea6115b3565b808516156115f757918102915b93841c93908002906115ce565b509250929050565b60008261161b57506001610499565b8161162857506000610499565b816001811461163e576002811461164857611664565b6001915050610499565b60ff841115611659576116596115b3565b50506001821b610499565b5060208310610133831016604e8410600b8410161715611687575081810a610499565b61169183836115c9565b80600019048211156116a5576116a56115b3565b029392505050565b600061081260ff84168361160c565b8082028115828204841417610499576104996115b3565b81810381811115610499576104996115b3565b60208082526018908201527f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000604082015260600190565b60008261173a57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610499576104996115b3565b60ff8181168382160190811115610499576104996115b3565b60006020828403121561177d57600080fd5b815161081281611456565b60008060006060848603121561179d57600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561181c5784516001600160a01b0316835293830193918301916001016117f7565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212203d6d9ea2798619f3ebd8e1b37f5e96ca9a2a81aa9c78f5f2b699c05a2ffe5cab64736f6c63430008130033

Deployed Bytecode Sourcemap

1707:9275:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4015:80;;;;;;;;;;-1:-1:-1;4087:5:0;;;;;;;;;;;;-1:-1:-1;;;4087:5:0;;;;4015:80;;;;;;;:::i;:::-;;;;;;;;4463:211;;;;;;;;;;-1:-1:-1;4463:211:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;4463:211:0;1023:187:1;3921:88:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;3921:88:0;1215:177:1;4908:298:0;;;;;;;;;;-1:-1:-1;4908:298:0;;;;;:::i;:::-;;:::i;8897:68::-;;;;;;;;;;-1:-1:-1;8954:8:0;;-1:-1:-1;;;8954:8:0;;;;8897:68;;;2030:4:1;2018:17;;;2000:36;;1988:2;1973:18;8897:68:0;1858:184:1;3835:80:0;;;;;;;;;;-1:-1:-1;1877:1:0;3835:80;;9555:448;;;;;;;;;;-1:-1:-1;9555:448:0;;;;;:::i;:::-;;:::i;:::-;;8825:66;;;;;;;;;;-1:-1:-1;8881:7:0;;-1:-1:-1;;;8881:7:0;;;;8825:66;;8973:199;;;;;;;;;;-1:-1:-1;8973:199:0;;;;;:::i;:::-;;:::i;4191:115::-;;;;;;;;;;-1:-1:-1;4191:115:0;;;;;:::i;:::-;-1:-1:-1;;;;;4285:18:0;4257:7;4285:18;;;:9;:18;;;;;;;4191:115;711:130;;;;;;;;;;;;;:::i;483:65::-;;;;;;;;;;-1:-1:-1;521:7:0;539:6;483:65;;-1:-1:-1;;;;;539:6:0;;;3288:51:1;;3276:2;3261:18;483:65:0;3142:203:1;4101:84:0;;;;;;;;;;-1:-1:-1;4175:7:0;;;;;;;;;;;;-1:-1:-1;;;4175:7:0;;;;4101:84;;9466:81;;;;;;;;;;-1:-1:-1;9536:8:0;;9466:81;;4682:218;;;;;;;;;;-1:-1:-1;4682:218:0;;;;;:::i;:::-;;:::i;9379:81::-;;;;;;;;;;-1:-1:-1;9449:8:0;;9379:81;;9279:92;;;;;;;;;;-1:-1:-1;9356:12:0;;9279:92;;6302:185;;;;;;;;;;;;;:::i;4312:143::-;;;;;;;;;;-1:-1:-1;4312:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;4424:19:0;;;4396:7;4424:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;4312:143;5527:511;;;:::i;554:151::-;;;;;;;;;;-1:-1:-1;554:151:0;;;;;:::i;:::-;;:::i;9182:91::-;;;;;;;;;;-1:-1:-1;9254:16:0;;9182:91;;4463:211;4567:10;4538:4;4555:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;4555:32:0;;;;;;;;;;:41;;;4612:37;4538:4;;4555:32;;4612:37;;;;4590:6;1361:25:1;;1349:2;1334:18;;1215:177;4612:37:0;;;;;;;;-1:-1:-1;4667:4:0;4463:211;;;;;:::o;3921:88::-;3976:7;1939:13;1877:1;1939:2;:13;:::i;:::-;1925:28;;:10;:28;:::i;:::-;3987:19;;3921:88;:::o;4908:298::-;5011:4;5036:29;5054:10;5036:17;:29::i;:::-;5028:58;;;;-1:-1:-1;;;5028:58:0;;5893:2:1;5028:58:0;;;5875:21:1;5932:2;5912:18;;;5905:30;-1:-1:-1;;;5951:18:1;;;5944:46;6007:18;;5028:58:0;;;;;;;;;-1:-1:-1;;;;;5097:23:0;;;;;;:11;:23;;;;;;;;5121:10;5097:35;;;;;;;:45;;5136:6;;5097:23;:45;;5136:6;;5097:45;:::i;:::-;;;;-1:-1:-1;5160:43:0;;-1:-1:-1;5174:10:0;5186:8;5196:6;5160:13;:43::i;:::-;5153:50;4908:298;-1:-1:-1;;;;4908:298:0:o;9555:448::-;348:6;;-1:-1:-1;;;;;348:6:0;334:10;:20;326:57;;;;-1:-1:-1;;;326:57:0;;;;;;;:::i;:::-;9654:16:::1;9707:4;9673:31;::::0;::::1;1939:13;1877:1;1939:2;:13;:::i;:::-;1925:28;::::0;:10:::1;:28;:::i;:::-;9673:31;;;;:::i;:::-;:38;;;;:::i;:::-;:42;::::0;9714:1:::1;9673:42;:::i;:::-;9654:61;;9746:12;;9734:8;:24;;9726:47;;;::::0;-1:-1:-1;;;9726:47:0;;7076:2:1;9726:47:0::1;::::0;::::1;7058:21:1::0;7115:2;7095:18;;;7088:30;-1:-1:-1;;;7134:18:1;;;7127:40;7184:18;;9726:47:0::1;6874:334:1::0;9726:47:0::1;9784:12;:23:::0;;;9818:20:::1;9875:4;9841:31;::::0;::::1;1939:13;1877:1;1939:2;:13;:::i;:::-;1925:28;::::0;:10:::1;:28;:::i;:::-;9841:31;;;;:::i;:::-;:38;;;;:::i;:::-;:42;::::0;9882:1:::1;9841:42;:::i;:::-;9818:65;;9918:16;;9902:12;:32;;9894:59;;;::::0;-1:-1:-1;;;9894:59:0;;7415:2:1;9894:59:0::1;::::0;::::1;7397:21:1::0;7454:2;7434:18;;;7427:30;-1:-1:-1;;;7473:18:1;;;7466:44;7527:18;;9894:59:0::1;7213:338:1::0;9894:59:0::1;9964:16;:31:::0;-1:-1:-1;;;9555:448:0:o;8973:199::-;348:6;;-1:-1:-1;;;;;348:6:0;334:10;:20;326:57;;;;-1:-1:-1;;;326:57:0;;;;;;;:::i;:::-;9081:2:::1;9059:18;9069:8:::0;9059:7;:18:::1;:::i;:::-;:24;;;;9051:55;;;::::0;-1:-1:-1;;;9051:55:0;;7911:2:1;9051:55:0::1;::::0;::::1;7893:21:1::0;7950:2;7930:18;;;7923:30;-1:-1:-1;;;7969:18:1;;;7962:48;8027:18;;9051:55:0::1;7709:342:1::0;9051:55:0::1;9117:7;:17:::0;;-1:-1:-1;;;;9145:19:0;-1:-1:-1;;;9117:17:0::1;::::0;;::::1;;-1:-1:-1::0;;;;9145:19:0;;-1:-1:-1;;;9145:19:0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;8973:199::o;711:130::-;348:6;;-1:-1:-1;;;;;348:6:0;334:10;:20;326:57;;;;-1:-1:-1;;;326:57:0;;;;;;;:::i;:::-;788:1:::1;771:19:::0;;-1:-1:-1;;;;;;771:19:0::1;::::0;;806:32:::1;::::0;3288:51:1;;;806:32:0::1;::::0;3276:2:1;3261:18;806:32:0::1;;;;;;;711:130::o:0;4682:218::-;4761:4;4786:29;4804:10;4786:17;:29::i;:::-;4778:58;;;;-1:-1:-1;;;4778:58:0;;5893:2:1;4778:58:0;;;5875:21:1;5932:2;5912:18;;;5905:30;-1:-1:-1;;;5951:18:1;;;5944:46;6007:18;;4778:58:0;5691:340:1;4778:58:0;4854:43;4868:10;4880:8;4890:6;4854:13;:43::i;:::-;4847:50;4682:218;-1:-1:-1;;;4682:218:0:o;6302:185::-;348:6;;-1:-1:-1;;;;;348:6:0;334:10;:20;326:57;;;;-1:-1:-1;;;326:57:0;;;;;;;:::i;:::-;6393:3:::1;1939:13;1877:1;1939:2;:13;:::i;:::-;1925:28;::::0;:10:::1;:28;:::i;:::-;6374:16;::::0;:1:::1;:16;:::i;:::-;:22;;;;:::i;:::-;6355:12;:41:::0;6446:3:::1;1939:13;1877:1;1939:2;:13;:::i;:::-;1925:28;::::0;:10:::1;:28;:::i;:::-;6427:16;::::0;:1:::1;:16;:::i;:::-;:22;;;;:::i;:::-;6408:16;:41:::0;6460:12:::1;:19:::0;;-1:-1:-1;;6460:19:0::1;6475:4;6460:19;::::0;;6302:185::o;5527:511::-;348:6;;-1:-1:-1;;;;;348:6:0;334:10;:20;326:57;;;;-1:-1:-1;;;326:57:0;;;;;;;:::i;:::-;3122:7:::1;:14:::0;;-1:-1:-1;;3122:14:0::1;;;::::0;;5609:10:::2;::::0;-1:-1:-1;;;;;5609:10:0::2;:24:::0;5601:47:::2;;;::::0;-1:-1:-1;;;5601:47:0;;8258:2:1;5601:47:0::2;::::0;::::2;8240:21:1::0;8297:2;8277:18;;;8270:30;-1:-1:-1;;;8316:18:1;;;8309:40;8366:18;;5601:47:0::2;8056:334:1::0;5601:47:0::2;5668:12;::::0;::::2;;5667:13;5659:38;;;::::0;-1:-1:-1;;;5659:38:0;;8597:2:1;5659:38:0::2;::::0;::::2;8579:21:1::0;8636:2;8616:18;;;8609:30;-1:-1:-1;;;8655:18:1;;;8648:42;8707:18;;5659:38:0::2;8395:336:1::0;5659:38:0::2;5728:1;5716:9;:13;:40;;;;5755:1;5733:21;:23;5716:40;5708:59;;;::::0;-1:-1:-1;;;5708:59:0;;8938:2:1;5708:59:0::2;::::0;::::2;8920:21:1::0;8977:1;8957:18;;;8950:29;-1:-1:-1;;;8995:18:1;;;8988:36;9041:18;;5708:59:0::2;8736:329:1::0;5708:59:0::2;5804:4;5811:1;5786:24:::0;;;:9:::2;:24;::::0;;;;;5778:48:::2;;;::::0;-1:-1:-1;;;5778:48:0;;9272:2:1;5778:48:0::2;::::0;::::2;9254:21:1::0;9311:1;9291:18;;;9284:29;-1:-1:-1;;;9329:18:1;;;9322:39;9378:18;;5778:48:0::2;9070:332:1::0;5778:48:0::2;5868:11;;;;;;;;;-1:-1:-1::0;;;;;5868:11:0::2;-1:-1:-1::0;;;;;5868:19:0::2;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5850:72;::::0;-1:-1:-1;;;5850:72:0;;5910:4:::2;5850:72;::::0;::::2;9875:34:1::0;-1:-1:-1;;;;;5917:4:0::2;9945:15:1::0;;9925:18;;;9918:43;5850:51:0;;;::::2;::::0;::::2;::::0;9810:18:1;;5850:72:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5837:10;:85:::0;;-1:-1:-1;;;;;;5837:85:0::2;-1:-1:-1::0;;;;;5837:85:0;;;::::2;::::0;;;::::2;::::0;;5965:4:::2;-1:-1:-1::0;5947:24:0;;;:9:::2;:24;::::0;;;;;5933:62:::2;::::0;5973:21:::2;5933:13;:62::i;:::-;6012:10;::::0;-1:-1:-1;;;;;6012:10:0::2;6006:17;::::0;;;:5:::2;:17;::::0;;;;:24;;-1:-1:-1;;6006:24:0::2;6026:4;6006:24;::::0;;3151:7:::1;:15:::0;;-1:-1:-1;;3151:15:0::1;::::0;;5527:511::o;554:151::-;348:6;;-1:-1:-1;;;;;348:6:0;334:10;:20;326:57;;;;-1:-1:-1;;;326:57:0;;;;;;;:::i;:::-;638:6:::1;:17:::0;;-1:-1:-1;;;;;;638:17:0::1;-1:-1:-1::0;;;;;638:17:0;::::1;::::0;;::::1;::::0;;;672:30:::1;::::0;3288:51:1;;;672:30:0::1;::::0;3276:2:1;3261:18;672:30:0::1;;;;;;;554:151:::0;:::o;8030:289::-;8155:12;;8099:4;;;;8155:12;;8150:130;;;-1:-1:-1;8186:4:0;8150:130;;;-1:-1:-1;;;;;8213:18:0;;;;;;:6;:18;;;;;;;;:42;;;;-1:-1:-1;;;;;;8235:20:0;;;;;;:8;:20;;;;;;;;8213:42;8209:71;;;-1:-1:-1;8273:4:0;8300:11;8030:289;-1:-1:-1;;8030:289:0:o;6495:954::-;6586:4;-1:-1:-1;;;;;6611:20:0;;6603:59;;;;-1:-1:-1;;;6603:59:0;;10390:2:1;6603:59:0;;;10372:21:1;10429:2;10409:18;;;10402:30;10468:28;10448:18;;;10441:56;10514:18;;6603:59:0;10188:350:1;6603:59:0;6678:12;;;;6673:91;;-1:-1:-1;;;;;6702:14:0;;;;;;:6;:14;;;;;;;;:34;;;;-1:-1:-1;;;;;;6720:16:0;;;;;;:8;:16;;;;;;;;6702:34;6694:67;;;;-1:-1:-1;;;6694:67:0;;10745:2:1;6694:67:0;;;10727:21:1;10784:2;10764:18;;;10757:30;-1:-1:-1;;;10803:18:1;;;10796:50;10863:18;;6694:67:0;10543:344:1;6694:67:0;6780:7;;;;;;;6779:8;:27;;;;-1:-1:-1;;;;;;6791:15:0;;;;;;:5;:15;;;;;;;;6779:27;:49;;;;;6820:8;;6810:6;:18;;6779:49;6774:81;;;6832:20;:18;:20::i;:::-;-1:-1:-1;;;;;6872:23:0;;6890:4;6872:23;;;;:52;;-1:-1:-1;;;;;;6899:25:0;;6919:4;6899:25;;6872:52;:72;;;;-1:-1:-1;6938:6:0;;-1:-1:-1;;;;;6928:16:0;;;6938:6;;6928:16;;6872:72;6867:174;;;6971:38;6984:6;6992:8;7002:6;6971:12;:38::i;:::-;6963:65;;;;-1:-1:-1;;;6963:65:0;;11094:2:1;6963:65:0;;;11076:21:1;11133:2;11113:18;;;11106:30;-1:-1:-1;;;11152:18:1;;;11145:44;11206:18;;6963:65:0;10892:338:1;6963:65:0;7053:18;7074:39;7088:6;7096:8;7106:6;7074:13;:39::i;:::-;7053:60;-1:-1:-1;7124:23:0;7150:19;7053:60;7150:6;:19;:::i;:::-;-1:-1:-1;;;;;7183:15:0;;;;;;:7;:15;;;;;;7124:45;;-1:-1:-1;7183:15:0;;7180:53;;;7209:24;7218:15;7209:6;:24;:::i;:::-;7200:33;;7180:53;-1:-1:-1;;;;;7244:17:0;;;;;;:9;:17;;;;;:27;;7265:6;;7244:17;:27;;7265:6;;7244:27;:::i;:::-;;;;-1:-1:-1;;7300:4:0;7282:24;;;;:9;:24;;;;;:38;;7310:10;;7282:24;:38;;7310:10;;7282:38;:::i;:::-;;;;-1:-1:-1;;;;;;;7331:19:0;;;;;;:9;:19;;;;;:38;;7354:15;;7331:19;:38;;7354:15;;7331:38;:::i;:::-;;;;;;;;7402:8;-1:-1:-1;;;;;7385:34:0;7394:6;-1:-1:-1;;;;;7385:34:0;;7412:6;7385:34;;;;1361:25:1;;1349:2;1334:18;;1215:177;7385:34:0;;;;;;;;-1:-1:-1;7437:4:0;;6495:954;-1:-1:-1;;;;;6495:954:0:o;6046:248::-;6134:28;6149:12;6134:14;:28::i;:::-;6173:11;;6260:7;;6173:113;;-1:-1:-1;;;6173:113:0;;6233:4;6173:113;;;11576:34:1;11626:18;;;11619:34;;;6173:11:0;11669:18:1;;;11662:34;;;11712:18;;;11705:34;-1:-1:-1;;;;;6260:7:0;;;11755:19:1;;;11748:44;6269:15:0;11808:19:1;;;11801:35;6173:11:0;;;:27;;6208:13;;11510:19:1;;6173:113:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;6046:248;;:::o;10011:512::-;3122:7;:14;;-1:-1:-1;;3122:14:0;;;;;10119:4:::1;3122:14:::0;10101:24;;;:9:::1;:24;::::0;;;;;10163:8:::1;::::0;10141:30;::::1;::::0;::::1;::::0;:46:::1;;-1:-1:-1::0;10175:12:0::1;::::0;::::1;;10141:46;10136:380;;;10232:8;;10210:18;:30;10205:72;;-1:-1:-1::0;10266:8:0::1;::::0;10205:72:::1;10305:40;10326:18;10305:20;:40::i;:::-;10404:21;10443:23:::0;;10440:65:::1;;10470:32;10482:19;10470:11;:32::i;:::-;10190:326;10136:380;-1:-1:-1::0;3151:7:0;:15;;-1:-1:-1;;3151:15:0;;;10011:512::o;7457:565::-;7625:12;;7564:4;;7605;;7625:12;;:37;;;;-1:-1:-1;;;;;;7642:20:0;;;;;;:8;:20;;;;;;;;7641:21;7625:37;:60;;;;-1:-1:-1;;;;;;7667:18:0;;;;;;:8;:18;;;;;;;;7666:19;7625:60;7620:361;;;7725:12;;7708:14;:29;7703:267;;;-1:-1:-1;7779:5:0;7703:267;;;-1:-1:-1;;;;;7844:15:0;;;;;;:5;:15;;;;;;;;7843:16;:77;;;;-1:-1:-1;7903:16:0;;-1:-1:-1;;;;;7864:19:0;;;;;;:9;:19;;;;;;:36;;7886:14;;7864:36;:::i;:::-;:55;7843:77;7820:150;;;-1:-1:-1;7962:5:0;7998:16;7457:565;-1:-1:-1;;;;7457:565:0:o;8327:490::-;8492:12;;8428:7;;;;8492:12;;8491:13;;:35;;-1:-1:-1;;;;;;8508:18:0;;;;;;:6;:18;;;;;;;;8491:35;:56;;;-1:-1:-1;;;;;;8530:17:0;;;;;;:6;:17;;;;;;;;8491:56;8486:295;;;-1:-1:-1;8578:1:0;8486:295;;;-1:-1:-1;;;;;8603:17:0;;;;;;:5;:17;;;;;;;;8598:183;;;8660:7;;8670:3;;8651:16;;-1:-1:-1;;;8660:7:0;;;;8651:6;:16;:::i;:::-;:22;;;;:::i;:::-;8639:34;;8598:183;;;-1:-1:-1;;;;;8698:16:0;;;;;;:5;:16;;;;;;;;8693:88;;;8754:8;;8765:3;;8745:17;;-1:-1:-1;;;8754:8:0;;;;8745:6;:17;:::i;:::-;:23;;;;:::i;:::-;8733:35;8327:490;-1:-1:-1;;;;;8327:490:0:o;5214:305::-;5305:4;5285:26;;;;:11;:26;;;;;;;;2763:42;5285;;;;;;;;:57;-1:-1:-1;5280:232:0;;;5380:4;5360:26;;;;:11;:26;;;;;;;;2763:42;5360;;;;;;;;;;-1:-1:-1;;5360:62:0;;;;5442:58;;1361:25:1;;;2763:42:0;;5380:4;5442:58;;1334:18:1;5442:58:0;;;;;;;5280:232;5214:305;:::o;10531:341::-;10601:27;10616:11;10601:14;:27::i;:::-;10663:16;;;10677:1;10663:16;;;;;;;;10639:21;;10663:16;;;;;;;;;;-1:-1:-1;10663:16:0;10639:40;;10709:4;10690;10695:1;10690:7;;;;;;;;:::i;:::-;;;;;;:25;-1:-1:-1;;;;;10690:25:0;;;-1:-1:-1;;;;;10690:25:0;;;;;10736:4;10726;10731:1;10726:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10726:14:0;;;:7;;;;;;;;;:14;10752:11;;:112;;-1:-1:-1;;;10752:112:0;;:11;;;:62;;:112;;10815:11;;10752;;10829:4;;10842;;10848:15;;10752:112;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10590:282;10531:341;:::o;10880:99::-;10936:18;;:35;;-1:-1:-1;;;;;10936:18:0;;;;:35;;;;;10964:6;;10936:18;:35;:18;:35;10964:6;10936:18;:35;;;;;;;;;;;;;;;;;;;;;10880:99;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2047:159::-;2114:20;;2174:6;2163:18;;2153:29;;2143:57;;2196:1;2193;2186:12;2143:57;2047:159;;;:::o;2211:256::-;2277:6;2285;2338:2;2326:9;2317:7;2313:23;2309:32;2306:52;;;2354:1;2351;2344:12;2306:52;2377:28;2395:9;2377:28;:::i;:::-;2367:38;;2424:37;2457:2;2446:9;2442:18;2424:37;:::i;:::-;2414:47;;2211:256;;;;;:::o;2472:156::-;2538:20;;2598:4;2587:16;;2577:27;;2567:55;;2618:1;2615;2608:12;2633:252;2697:6;2705;2758:2;2746:9;2737:7;2733:23;2729:32;2726:52;;;2774:1;2771;2764:12;2726:52;2797:27;2814:9;2797:27;:::i;:::-;2787:37;;2843:36;2875:2;2864:9;2860:18;2843:36;:::i;2890:247::-;2949:6;3002:2;2990:9;2981:7;2977:23;2973:32;2970:52;;;3018:1;3015;3008:12;2970:52;3057:9;3044:23;3076:31;3101:5;3076:31;:::i;3350:388::-;3418:6;3426;3479:2;3467:9;3458:7;3454:23;3450:32;3447:52;;;3495:1;3492;3485:12;3447:52;3534:9;3521:23;3553:31;3578:5;3553:31;:::i;:::-;3603:5;-1:-1:-1;3660:2:1;3645:18;;3632:32;3673:33;3632:32;3673:33;:::i;:::-;3725:7;3715:17;;;3350:388;;;;;:::o;4003:127::-;4064:10;4059:3;4055:20;4052:1;4045:31;4095:4;4092:1;4085:15;4119:4;4116:1;4109:15;4135:422;4224:1;4267:5;4224:1;4281:270;4302:7;4292:8;4289:21;4281:270;;;4361:4;4357:1;4353:6;4349:17;4343:4;4340:27;4337:53;;;4370:18;;:::i;:::-;4420:7;4410:8;4406:22;4403:55;;;4440:16;;;;4403:55;4519:22;;;;4479:15;;;;4281:270;;;4285:3;4135:422;;;;;:::o;4562:806::-;4611:5;4641:8;4631:80;;-1:-1:-1;4682:1:1;4696:5;;4631:80;4730:4;4720:76;;-1:-1:-1;4767:1:1;4781:5;;4720:76;4812:4;4830:1;4825:59;;;;4898:1;4893:130;;;;4805:218;;4825:59;4855:1;4846:10;;4869:5;;;4893:130;4930:3;4920:8;4917:17;4914:43;;;4937:18;;:::i;:::-;-1:-1:-1;;4993:1:1;4979:16;;5008:5;;4805:218;;5107:2;5097:8;5094:16;5088:3;5082:4;5079:13;5075:36;5069:2;5059:8;5056:16;5051:2;5045:4;5042:12;5038:35;5035:77;5032:159;;;-1:-1:-1;5144:19:1;;;5176:5;;5032:159;5223:34;5248:8;5242:4;5223:34;:::i;:::-;5293:6;5289:1;5285:6;5281:19;5272:7;5269:32;5266:58;;;5304:18;;:::i;:::-;5342:20;;4562:806;-1:-1:-1;;;4562:806:1:o;5373:140::-;5431:5;5460:47;5501:4;5491:8;5487:19;5481:4;5460:47;:::i;5518:168::-;5591:9;;;5622;;5639:15;;;5633:22;;5619:37;5609:71;;5660:18;;:::i;6036:128::-;6103:9;;;6124:11;;;6121:37;;;6138:18;;:::i;6169:348::-;6371:2;6353:21;;;6410:2;6390:18;;;6383:30;6449:26;6444:2;6429:18;;6422:54;6508:2;6493:18;;6169:348::o;6522:217::-;6562:1;6588;6578:132;;6632:10;6627:3;6623:20;6620:1;6613:31;6667:4;6664:1;6657:15;6695:4;6692:1;6685:15;6578:132;-1:-1:-1;6724:9:1;;6522:217::o;6744:125::-;6809:9;;;6830:10;;;6827:36;;;6843:18;;:::i;7556:148::-;7644:4;7623:12;;;7637;;;7619:31;;7662:13;;7659:39;;;7678:18;;:::i;9407:251::-;9477:6;9530:2;9518:9;9509:7;9505:23;9501:32;9498:52;;;9546:1;9543;9536:12;9498:52;9578:9;9572:16;9597:31;9622:5;9597:31;:::i;11847:306::-;11935:6;11943;11951;12004:2;11992:9;11983:7;11979:23;11975:32;11972:52;;;12020:1;12017;12010:12;11972:52;12049:9;12043:16;12033:26;;12099:2;12088:9;12084:18;12078:25;12068:35;;12143:2;12132:9;12128:18;12122:25;12112:35;;11847:306;;;;;:::o;12290:127::-;12351:10;12346:3;12342:20;12339:1;12332:31;12382:4;12379:1;12372:15;12406:4;12403:1;12396:15;12422:980;12684:4;12732:3;12721:9;12717:19;12763:6;12752:9;12745:25;12789:2;12827:6;12822:2;12811:9;12807:18;12800:34;12870:3;12865:2;12854:9;12850:18;12843:31;12894:6;12929;12923:13;12960:6;12952;12945:22;12998:3;12987:9;12983:19;12976:26;;13037:2;13029:6;13025:15;13011:29;;13058:1;13068:195;13082:6;13079:1;13076:13;13068:195;;;13147:13;;-1:-1:-1;;;;;13143:39:1;13131:52;;13238:15;;;;13203:12;;;;13179:1;13097:9;13068:195;;;-1:-1:-1;;;;;;;13319:32:1;;;;13314:2;13299:18;;13292:60;-1:-1:-1;;;13383:3:1;13368:19;13361:35;13280:3;12422:980;-1:-1:-1;;;12422:980:1:o

Swarm Source

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