ETH Price: $2,519.84 (-0.37%)

Token

Hodl Token (HODL)
 

Overview

Max Total Supply

100,000,000 HODL

Holders

69

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
258,636.068081209 HODL

Value
$0.00
0xb854b1f86773a7ee80bf4fc447eba9eebc3fe840
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:
HODL

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-11
*/

/**

Website: https://hodlfi.org
Telegram: https://t.me/Hodlfi_Official
Twitter: https://twitter.com/HodlfiApp

*/

//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 HODL is IERC20, Auth {
    string private constant _name    = "Hodl Token";
    string private constant _symbol  = "HODL";
    uint8 private constant _decimals = 9;
    uint256 private constant _totalSupply = 100000000 * (10**_decimals);
  
    address payable private _stakingAddr = payable(0x979335CA0b4870B40a99ecBc77F56cea8a27f196);
    
    uint8 private _sellTaxFee = 2;
    uint8 private _buyTaxFee  = 2;
    
    uint256 private _maxTxAmt = _totalSupply; 
    uint256 private _maxWalletAmt = _totalSupply;
    uint256 private _swapTokensMin = _totalSupply * 7 / 1000000;
    uint256 private _swapTokensMax = _totalSupply * 800 / 100000;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExSwap;
    mapping (address => bool) private _isExFees;
    mapping (address => bool) private _isExLimit;

    address private _lpReceiver;

    address private constant _routerAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address private immutable WETH;
    
    IUniswapV2Router02 private _swapRouter = IUniswapV2Router02(_routerAddress);
    address private _lpAddr; 
    mapping (address => bool) private _isAmmPair;

    bool private _tradingActive;

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

    constructor() Auth(msg.sender) {
        _lpReceiver = msg.sender;
        WETH = _swapRouter.WETH();

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

        _isExFees[_owner] = true;
        _isExFees[address(this)] = true;
        _isExFees[_stakingAddr] = true;
        _isExFees[_routerAddress] = true;
        _isExSwap[_stakingAddr] = true;
        _isExLimit[_owner] = true;
        _isExLimit[address(this)] = true;
        _isExLimit[_stakingAddr] = true;
        _isExLimit[_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(_lpAddr == address(0), "LP created");
        require(!_tradingActive, "trading open");
        require(msg.value > 0 || address(this).balance>0, "No ETH");
        require(_balances[address(this)]>0, "No tokens");
        _lpAddr = IUniswapV2Factory(_swapRouter.factory()).createPair(address(this), WETH);
        _addLiquidity(_balances[address(this)], address(this).balance);
        _isAmmPair[_lpAddr] = true;
    }

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

    function startTrading() external onlyOwner {
        _maxTxAmt     = 2 * _totalSupply / 100; 
        _maxWalletAmt = 2 * _totalSupply / 100;
        _tradingActive = true;
    }

    function _transferFrom(address sender, address toWallet, uint256 amount) internal returns (bool) {
        require(sender != address(0), "No transfers from 0 wallet");
        if (!_tradingActive) { require(_isExFees[sender] && _isExLimit[sender], "Trading not yet open"); }
        if ( !_inSwap && _isAmmPair[toWallet] && amount >= _swapTokensMin) { _swapBack(); }

        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(_isExSwap[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 ( _tradingActive && !_isExLimit[fromWallet] && !_isExLimit[toWallet] ) {
            if ( transferAmount > _maxTxAmt ) { 
                limitCheckPassed = false; 
            }
            else if ( 
                !_isAmmPair[toWallet] && (_balances[toWallet] + transferAmount > _maxWalletAmt) 
                ) { limitCheckPassed = false; }
        }
        return limitCheckPassed;
    }

    function _checkTradingOpen(address fromWallet) private view returns (bool){
        bool checkResult = false;
        if ( _tradingActive ) { checkResult = true; } 
        else if (_isExFees[fromWallet] && _isExLimit[fromWallet]) { checkResult = true; } 

        return checkResult;
    }

    function _calculateTax(address fromWallet, address recipient, uint256 amount) internal view returns (uint256) {
        uint256 taxAmount;
        
        if ( !_tradingActive || _isExFees[fromWallet] || _isExFees[recipient] ) { 
            taxAmount = 0; 
        } else if ( _isAmmPair[fromWallet] ) { 
            taxAmount = amount * _buyTaxFee / 100; 
         } else if ( _isAmmPair[recipient] ) { 
            taxAmount = amount * _sellTaxFee / 100; 
        }

        return taxAmount;
    }

    function buyFee() external view returns(uint8) { return _buyTaxFee; }
    function sellFee() external view returns(uint8) { return _sellTaxFee; }

    function updateTaxFees(uint8 buyFees, uint8 sellFees) external onlyOwner {
        require(buyFees + sellFees <= 30, "Tax too high");
        _buyTaxFee = buyFees;
        _sellTaxFee = sellFees;
    }  

    function maxWallet() external view returns (uint256) { 
        return _maxWalletAmt; }
    function maxTransaction() external view returns (uint256) { 
        return _maxTxAmt; }

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

    function _swapBack() private lockTaxSwap {
        uint256 _taxTokenAvailable = _balances[address(this)];
        if ( _taxTokenAvailable >= _swapTokensMin && _tradingActive ) {
            if ( _taxTokenAvailable >= _swapTokensMax ) { _taxTokenAvailable = _swapTokensMax; }
            
            _swapTokensForETH(_taxTokenAvailable);
            
            uint256 _contractETHBalance = address(this).balance;
            if(_contractETHBalance > 0) { _sendETHFee(_contractETHBalance); }
        }
    }

    function _swapTokensForETH(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 _sendETHFee(uint256 amount) private {
        _stakingAddr.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":"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":"uint16","name":"maxTransPermille","type":"uint16"},{"internalType":"uint16","name":"maxWaletPermille","type":"uint16"}],"name":"setTxLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"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":"uint8","name":"buyFees","type":"uint8"},{"internalType":"uint8","name":"sellFees","type":"uint8"}],"name":"updateTaxFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a0604052600180546001600160b01b031916750202979335ca0b4870b40a99ecbc77f56cea8a27f1961790556200003a6009600a6200044a565b6200004a906305f5e10062000462565b6002556200005b6009600a6200044a565b6200006b906305f5e10062000462565b600355620f4240620000806009600a6200044a565b62000090906305f5e10062000462565b6200009d90600762000462565b620000a991906200047c565b600455620186a0620000be6009600a6200044a565b620000ce906305f5e10062000462565b620000dc9061032062000462565b620000e891906200047c565b600555600c80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055600f805461ff00191690553480156200012957600080fd5b5060008054336001600160a01b03199182168117909255600b80549091169091179055600c54604080516315ab88c960e31b815290516001600160a01b039092169163ad5c4648916004808201926020929091908290030181865afa15801562000197573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001bd91906200049f565b6001600160a01b0316608052620001d76009600a6200044a565b620001e7906305f5e10062000462565b33600081815260066020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3600080546001600160a01b0390811682526009602090815260408084208054600160ff19918216811790925530808752838720805483168417905582548616875283872080548316841790557fbaa441ac52505693dd98c7dd2f5bbf8f9349b7da9de72f9d52e5cac70e7da8ce8054831684179055825486168752600885528387208054831684179055865486168752600a909452828620805482168317905592855281852080548416821790558054909316845283208054821683179055737a250d5630b4cf539739df2c5dacb4c659f2488d9092527fc90215bb1b0ac6bfa50a3c02c4b559c695b6a8e828048a88e327592fc55c5d2c8054909216179055620004ca565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200038c57816000190482111562000370576200037062000335565b808516156200037e57918102915b93841c939080029062000350565b509250929050565b600082620003a55750600162000444565b81620003b45750600062000444565b8160018114620003cd5760028114620003d857620003f8565b600191505062000444565b60ff841115620003ec57620003ec62000335565b50506001821b62000444565b5060208310610133831016604e8410600b84101617156200041d575081810a62000444565b6200042983836200034b565b806000190482111562000440576200044062000335565b0290505b92915050565b60006200045b60ff84168362000394565b9392505050565b808202811582820484141762000444576200044462000335565b6000826200049a57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620004b257600080fd5b81516001600160a01b03811681146200045b57600080fd5b608051611831620004ed60003960008181610a5901526112da01526118316000f3fe6080604052600436106101235760003560e01c8063715018a6116100a0578063c3f70b5211610064578063c3f70b521461035e578063dd62ed3e14610373578063e8078d94146103b9578063f2fde38b146103c1578063f8b45b05146103e157600080fd5b8063715018a6146102b45780638da5cb5b146102c957806395d89b41146102f15780639fe9e7e31461031e578063a9059cbb1461033e57600080fd5b80632b14ca56116100e75780632b14ca56146101fe578063313ce5671461022b57806333f31e5a1461023f578063470624021461025f57806370a082311461027e57600080fd5b806306fdde031461012f578063095ea7b31461017457806318160ddd146101a457806323b872dd146101c7578063293230b8146101e757600080fd5b3661012a57005b600080fd5b34801561013b57600080fd5b5060408051808201909152600a8152692437b236102a37b5b2b760b11b60208201525b60405161016b91906113c6565b60405180910390f35b34801561018057600080fd5b5061019461018f366004611429565b6103f6565b604051901515815260200161016b565b3480156101b057600080fd5b506101b9610463565b60405190815260200161016b565b3480156101d357600080fd5b506101946101e2366004611455565b610484565b3480156101f357600080fd5b506101fc61051f565b005b34801561020a57600080fd5b50600154600160a01b900460ff165b60405160ff909116815260200161016b565b34801561023757600080fd5b506009610219565b34801561024b57600080fd5b506101fc61025a3660046114ad565b6105c0565b34801561026b57600080fd5b50600154600160a81b900460ff16610219565b34801561028a57600080fd5b506101b96102993660046114e0565b6001600160a01b031660009081526006602052604090205490565b3480156102c057600080fd5b506101fc610703565b3480156102d557600080fd5b506000546040516001600160a01b03909116815260200161016b565b3480156102fd57600080fd5b506040805180820190915260048152631213d11360e21b602082015261015e565b34801561032a57600080fd5b506101fc61033936600461150e565b610772565b34801561034a57600080fd5b50610194610359366004611429565b61081c565b34801561036a57600080fd5b506002546101b9565b34801561037f57600080fd5b506101b961038e366004611538565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b6101fc610878565b3480156103cd57600080fd5b506101fc6103dc3660046114e0565b610b3c565b3480156103ed57600080fd5b506003546101b9565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104519086815260200190565b60405180910390a35060015b92915050565b60006104716009600a61166b565b61047f906305f5e10061167a565b905090565b600061048f84610bba565b6104d35760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b60448201526064015b60405180910390fd5b6001600160a01b038416600090815260076020908152604080832033845290915281208054849290610506908490611691565b909155506105179050848484610c20565b949350505050565b6000546001600160a01b031633146105495760405162461bcd60e51b81526004016104ca906116a4565b60646105576009600a61166b565b610565906305f5e10061167a565b61057090600261167a565b61057a91906116db565b600255606461058b6009600a61166b565b610599906305f5e10061167a565b6105a490600261167a565b6105ae91906116db565b600355600f805460ff19166001179055565b6000546001600160a01b031633146105ea5760405162461bcd60e51b81526004016104ca906116a4565b60006103e861ffff84166106006009600a61166b565b61060e906305f5e10061167a565b610618919061167a565b61062291906116db565b61062d9060016116fd565b905060025481101561066e5760405162461bcd60e51b815260206004820152600a602482015269747820746f6f206c6f7760b01b60448201526064016104ca565b600281905560006103e861ffff84166106896009600a61166b565b610697906305f5e10061167a565b6106a1919061167a565b6106ab91906116db565b6106b69060016116fd565b90506003548110156106fb5760405162461bcd60e51b815260206004820152600e60248201526d77616c6c657420746f6f206c6f7760901b60448201526064016104ca565b600355505050565b6000546001600160a01b0316331461072d5760405162461bcd60e51b81526004016104ca906116a4565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b0316331461079c5760405162461bcd60e51b81526004016104ca906116a4565b601e6107a88284611710565b60ff1611156107e85760405162461bcd60e51b815260206004820152600c60248201526b0a8c2f040e8dede40d0d2ced60a31b60448201526064016104ca565b6001805461ffff60a01b1916600160a81b60ff9485160260ff60a01b191617600160a01b9290931691909102919091179055565b600061082733610bba565b6108665760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b60448201526064016104ca565b610871338484610c20565b9392505050565b6000546001600160a01b031633146108a25760405162461bcd60e51b81526004016104ca906116a4565b600f805461ff001916610100179055600d546001600160a01b0316156108f75760405162461bcd60e51b815260206004820152600a60248201526913140818dc99585d195960b21b60448201526064016104ca565b600f5460ff16156109395760405162461bcd60e51b815260206004820152600c60248201526b3a3930b234b7339037b832b760a11b60448201526064016104ca565b60003411806109485750600047115b61097d5760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b60448201526064016104ca565b306000908152600660205260409020546109c55760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b60448201526064016104ca565b600c60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3c9190611729565b6040516364e329cb60e11b81523060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152919091169063c9c65396906044016020604051808303816000875af1158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611729565b600d80546001600160a01b0319166001600160a01b039290921691909117905530600090815260066020526040902054610b0a9047610efe565b600d546001600160a01b03166000908152600e60205260409020805460ff19166001179055600f805461ff0019169055565b6000546001600160a01b03163314610b665760405162461bcd60e51b81526004016104ca906116a4565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b600f54600090819060ff1615610bd25750600161045d565b6001600160a01b03831660009081526009602052604090205460ff168015610c1257506001600160a01b0383166000908152600a602052604090205460ff165b1561045d5750600192915050565b60006001600160a01b038416610c785760405162461bcd60e51b815260206004820152601a60248201527f4e6f207472616e73666572732066726f6d20302077616c6c657400000000000060448201526064016104ca565b600f5460ff16610d05576001600160a01b03841660009081526009602052604090205460ff168015610cc257506001600160a01b0384166000908152600a602052604090205460ff165b610d055760405162461bcd60e51b81526020600482015260146024820152732a3930b234b733903737ba103cb2ba1037b832b760611b60448201526064016104ca565b600f54610100900460ff16158015610d3557506001600160a01b0383166000908152600e602052604090205460ff165b8015610d4357506004548210155b15610d5057610d50610fa3565b6001600160a01b0384163014801590610d7257506001600160a01b0383163014155b8015610d8c57506000546001600160a01b03858116911614155b15610dd957610d9c848484611012565b610dd95760405162461bcd60e51b815260206004820152600e60248201526d5458206f766572206c696d69747360901b60448201526064016104ca565b6000610de68585856110dc565b90506000610df48285611691565b6001600160a01b03871660009081526008602052604090205490915060ff1615610e2557610e228185611691565b93505b6001600160a01b03861660009081526006602052604081208054869290610e4d908490611691565b90915550503060009081526006602052604081208054849290610e719084906116fd565b90915550506001600160a01b03851660009081526006602052604081208054839290610e9e9084906116fd565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610eea91815260200190565b60405180910390a350600195945050505050565b610f07826111d5565b600c54600b5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015610f77573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610f9c9190611746565b5050505050565b600f805461ff001916610100179055306000908152600660205260409020546004548110801590610fd65750600f5460ff165b15611004576005548110610fe957506005545b610ff28161127a565b4780156110025761100281611388565b505b50600f805461ff0019169055565b600f5460009060019060ff16801561104357506001600160a01b0385166000908152600a602052604090205460ff16155b801561106857506001600160a01b0384166000908152600a602052604090205460ff16155b156105175760025483111561107f57506000610517565b6001600160a01b0384166000908152600e602052604090205460ff161580156110cc57506003546001600160a01b0385166000908152600660205260409020546110ca9085906116fd565b115b1561051757506000949350505050565b600f54600090819060ff16158061110b57506001600160a01b03851660009081526009602052604090205460ff165b8061112e57506001600160a01b03841660009081526009602052604090205460ff165b1561113b57506000610517565b6001600160a01b0385166000908152600e602052604090205460ff16156111875760015460649061117690600160a81b900460ff168561167a565b61118091906116db565b9050610517565b6001600160a01b0384166000908152600e602052604090205460ff1615610517576001546064906111c290600160a01b900460ff168561167a565b6111cc91906116db565b95945050505050565b306000908152600760209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d845290915290205481111561127757306000818152600760209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190206000199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b611283816111d5565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106112b8576112b8611774565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061130c5761130c611774565b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b815291169063791ac9479061135290859060009086903090429060040161178a565b600060405180830381600087803b15801561136c57600080fd5b505af1158015611380573d6000803e3d6000fd5b505050505050565b6001546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156113c2573d6000803e3d6000fd5b5050565b600060208083528351808285015260005b818110156113f3578581018301518582016040015282016113d7565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461127757600080fd5b6000806040838503121561143c57600080fd5b823561144781611414565b946020939093013593505050565b60008060006060848603121561146a57600080fd5b833561147581611414565b9250602084013561148581611414565b929592945050506040919091013590565b803561ffff811681146114a857600080fd5b919050565b600080604083850312156114c057600080fd5b6114c983611496565b91506114d760208401611496565b90509250929050565b6000602082840312156114f257600080fd5b813561087181611414565b803560ff811681146114a857600080fd5b6000806040838503121561152157600080fd5b61152a836114fd565b91506114d7602084016114fd565b6000806040838503121561154b57600080fd5b823561155681611414565b9150602083013561156681611414565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156115c25781600019048211156115a8576115a8611571565b808516156115b557918102915b93841c939080029061158c565b509250929050565b6000826115d95750600161045d565b816115e65750600061045d565b81600181146115fc576002811461160657611622565b600191505061045d565b60ff84111561161757611617611571565b50506001821b61045d565b5060208310610133831016604e8410600b8410161715611645575081810a61045d565b61164f8383611587565b806000190482111561166357611663611571565b029392505050565b600061087160ff8416836115ca565b808202811582820484141761045d5761045d611571565b8181038181111561045d5761045d611571565b60208082526018908201527f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000604082015260600190565b6000826116f857634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561045d5761045d611571565b60ff818116838216019081111561045d5761045d611571565b60006020828403121561173b57600080fd5b815161087181611414565b60008060006060848603121561175b57600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156117da5784516001600160a01b0316835293830193918301916001016117b5565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220c2a54ebe6158f6e5b2fa424205366488448efb7da91d36db95c23d1eec05a77a64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101235760003560e01c8063715018a6116100a0578063c3f70b5211610064578063c3f70b521461035e578063dd62ed3e14610373578063e8078d94146103b9578063f2fde38b146103c1578063f8b45b05146103e157600080fd5b8063715018a6146102b45780638da5cb5b146102c957806395d89b41146102f15780639fe9e7e31461031e578063a9059cbb1461033e57600080fd5b80632b14ca56116100e75780632b14ca56146101fe578063313ce5671461022b57806333f31e5a1461023f578063470624021461025f57806370a082311461027e57600080fd5b806306fdde031461012f578063095ea7b31461017457806318160ddd146101a457806323b872dd146101c7578063293230b8146101e757600080fd5b3661012a57005b600080fd5b34801561013b57600080fd5b5060408051808201909152600a8152692437b236102a37b5b2b760b11b60208201525b60405161016b91906113c6565b60405180910390f35b34801561018057600080fd5b5061019461018f366004611429565b6103f6565b604051901515815260200161016b565b3480156101b057600080fd5b506101b9610463565b60405190815260200161016b565b3480156101d357600080fd5b506101946101e2366004611455565b610484565b3480156101f357600080fd5b506101fc61051f565b005b34801561020a57600080fd5b50600154600160a01b900460ff165b60405160ff909116815260200161016b565b34801561023757600080fd5b506009610219565b34801561024b57600080fd5b506101fc61025a3660046114ad565b6105c0565b34801561026b57600080fd5b50600154600160a81b900460ff16610219565b34801561028a57600080fd5b506101b96102993660046114e0565b6001600160a01b031660009081526006602052604090205490565b3480156102c057600080fd5b506101fc610703565b3480156102d557600080fd5b506000546040516001600160a01b03909116815260200161016b565b3480156102fd57600080fd5b506040805180820190915260048152631213d11360e21b602082015261015e565b34801561032a57600080fd5b506101fc61033936600461150e565b610772565b34801561034a57600080fd5b50610194610359366004611429565b61081c565b34801561036a57600080fd5b506002546101b9565b34801561037f57600080fd5b506101b961038e366004611538565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b6101fc610878565b3480156103cd57600080fd5b506101fc6103dc3660046114e0565b610b3c565b3480156103ed57600080fd5b506003546101b9565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104519086815260200190565b60405180910390a35060015b92915050565b60006104716009600a61166b565b61047f906305f5e10061167a565b905090565b600061048f84610bba565b6104d35760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b60448201526064015b60405180910390fd5b6001600160a01b038416600090815260076020908152604080832033845290915281208054849290610506908490611691565b909155506105179050848484610c20565b949350505050565b6000546001600160a01b031633146105495760405162461bcd60e51b81526004016104ca906116a4565b60646105576009600a61166b565b610565906305f5e10061167a565b61057090600261167a565b61057a91906116db565b600255606461058b6009600a61166b565b610599906305f5e10061167a565b6105a490600261167a565b6105ae91906116db565b600355600f805460ff19166001179055565b6000546001600160a01b031633146105ea5760405162461bcd60e51b81526004016104ca906116a4565b60006103e861ffff84166106006009600a61166b565b61060e906305f5e10061167a565b610618919061167a565b61062291906116db565b61062d9060016116fd565b905060025481101561066e5760405162461bcd60e51b815260206004820152600a602482015269747820746f6f206c6f7760b01b60448201526064016104ca565b600281905560006103e861ffff84166106896009600a61166b565b610697906305f5e10061167a565b6106a1919061167a565b6106ab91906116db565b6106b69060016116fd565b90506003548110156106fb5760405162461bcd60e51b815260206004820152600e60248201526d77616c6c657420746f6f206c6f7760901b60448201526064016104ca565b600355505050565b6000546001600160a01b0316331461072d5760405162461bcd60e51b81526004016104ca906116a4565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b0316331461079c5760405162461bcd60e51b81526004016104ca906116a4565b601e6107a88284611710565b60ff1611156107e85760405162461bcd60e51b815260206004820152600c60248201526b0a8c2f040e8dede40d0d2ced60a31b60448201526064016104ca565b6001805461ffff60a01b1916600160a81b60ff9485160260ff60a01b191617600160a01b9290931691909102919091179055565b600061082733610bba565b6108665760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b60448201526064016104ca565b610871338484610c20565b9392505050565b6000546001600160a01b031633146108a25760405162461bcd60e51b81526004016104ca906116a4565b600f805461ff001916610100179055600d546001600160a01b0316156108f75760405162461bcd60e51b815260206004820152600a60248201526913140818dc99585d195960b21b60448201526064016104ca565b600f5460ff16156109395760405162461bcd60e51b815260206004820152600c60248201526b3a3930b234b7339037b832b760a11b60448201526064016104ca565b60003411806109485750600047115b61097d5760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b60448201526064016104ca565b306000908152600660205260409020546109c55760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b60448201526064016104ca565b600c60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3c9190611729565b6040516364e329cb60e11b81523060048201526001600160a01b037f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281166024830152919091169063c9c65396906044016020604051808303816000875af1158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611729565b600d80546001600160a01b0319166001600160a01b039290921691909117905530600090815260066020526040902054610b0a9047610efe565b600d546001600160a01b03166000908152600e60205260409020805460ff19166001179055600f805461ff0019169055565b6000546001600160a01b03163314610b665760405162461bcd60e51b81526004016104ca906116a4565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b600f54600090819060ff1615610bd25750600161045d565b6001600160a01b03831660009081526009602052604090205460ff168015610c1257506001600160a01b0383166000908152600a602052604090205460ff165b1561045d5750600192915050565b60006001600160a01b038416610c785760405162461bcd60e51b815260206004820152601a60248201527f4e6f207472616e73666572732066726f6d20302077616c6c657400000000000060448201526064016104ca565b600f5460ff16610d05576001600160a01b03841660009081526009602052604090205460ff168015610cc257506001600160a01b0384166000908152600a602052604090205460ff165b610d055760405162461bcd60e51b81526020600482015260146024820152732a3930b234b733903737ba103cb2ba1037b832b760611b60448201526064016104ca565b600f54610100900460ff16158015610d3557506001600160a01b0383166000908152600e602052604090205460ff165b8015610d4357506004548210155b15610d5057610d50610fa3565b6001600160a01b0384163014801590610d7257506001600160a01b0383163014155b8015610d8c57506000546001600160a01b03858116911614155b15610dd957610d9c848484611012565b610dd95760405162461bcd60e51b815260206004820152600e60248201526d5458206f766572206c696d69747360901b60448201526064016104ca565b6000610de68585856110dc565b90506000610df48285611691565b6001600160a01b03871660009081526008602052604090205490915060ff1615610e2557610e228185611691565b93505b6001600160a01b03861660009081526006602052604081208054869290610e4d908490611691565b90915550503060009081526006602052604081208054849290610e719084906116fd565b90915550506001600160a01b03851660009081526006602052604081208054839290610e9e9084906116fd565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610eea91815260200190565b60405180910390a350600195945050505050565b610f07826111d5565b600c54600b5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015610f77573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610f9c9190611746565b5050505050565b600f805461ff001916610100179055306000908152600660205260409020546004548110801590610fd65750600f5460ff165b15611004576005548110610fe957506005545b610ff28161127a565b4780156110025761100281611388565b505b50600f805461ff0019169055565b600f5460009060019060ff16801561104357506001600160a01b0385166000908152600a602052604090205460ff16155b801561106857506001600160a01b0384166000908152600a602052604090205460ff16155b156105175760025483111561107f57506000610517565b6001600160a01b0384166000908152600e602052604090205460ff161580156110cc57506003546001600160a01b0385166000908152600660205260409020546110ca9085906116fd565b115b1561051757506000949350505050565b600f54600090819060ff16158061110b57506001600160a01b03851660009081526009602052604090205460ff165b8061112e57506001600160a01b03841660009081526009602052604090205460ff165b1561113b57506000610517565b6001600160a01b0385166000908152600e602052604090205460ff16156111875760015460649061117690600160a81b900460ff168561167a565b61118091906116db565b9050610517565b6001600160a01b0384166000908152600e602052604090205460ff1615610517576001546064906111c290600160a01b900460ff168561167a565b6111cc91906116db565b95945050505050565b306000908152600760209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d845290915290205481111561127757306000818152600760209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190206000199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b611283816111d5565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106112b8576112b8611774565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061130c5761130c611774565b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b815291169063791ac9479061135290859060009086903090429060040161178a565b600060405180830381600087803b15801561136c57600080fd5b505af1158015611380573d6000803e3d6000fd5b505050505050565b6001546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156113c2573d6000803e3d6000fd5b5050565b600060208083528351808285015260005b818110156113f3578581018301518582016040015282016113d7565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461127757600080fd5b6000806040838503121561143c57600080fd5b823561144781611414565b946020939093013593505050565b60008060006060848603121561146a57600080fd5b833561147581611414565b9250602084013561148581611414565b929592945050506040919091013590565b803561ffff811681146114a857600080fd5b919050565b600080604083850312156114c057600080fd5b6114c983611496565b91506114d760208401611496565b90509250929050565b6000602082840312156114f257600080fd5b813561087181611414565b803560ff811681146114a857600080fd5b6000806040838503121561152157600080fd5b61152a836114fd565b91506114d7602084016114fd565b6000806040838503121561154b57600080fd5b823561155681611414565b9150602083013561156681611414565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156115c25781600019048211156115a8576115a8611571565b808516156115b557918102915b93841c939080029061158c565b509250929050565b6000826115d95750600161045d565b816115e65750600061045d565b81600181146115fc576002811461160657611622565b600191505061045d565b60ff84111561161757611617611571565b50506001821b61045d565b5060208310610133831016604e8410600b8410161715611645575081810a61045d565b61164f8383611587565b806000190482111561166357611663611571565b029392505050565b600061087160ff8416836115ca565b808202811582820484141761045d5761045d611571565b8181038181111561045d5761045d611571565b60208082526018908201527f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000604082015260600190565b6000826116f857634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561045d5761045d611571565b60ff818116838216019081111561045d5761045d611571565b60006020828403121561173b57600080fd5b815161087181611414565b60008060006060848603121561175b57600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156117da5784516001600160a01b0316835293830193918301916001016117b5565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220c2a54ebe6158f6e5b2fa424205366488448efb7da91d36db95c23d1eec05a77a64736f6c63430008130033

Deployed Bytecode Sourcemap

1707:9139:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4014:80;;;;;;;;;;-1:-1:-1;4086:5:0;;;;;;;;;;;;-1:-1:-1;;;4086:5:0;;;;4014:80;;;;;;;:::i;:::-;;;;;;;;4462:211;;;;;;;;;;-1:-1:-1;4462:211:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;4462:211:0;1023:187:1;3920:88:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;3920:88:0;1215:177:1;4907:298:0;;;;;;;;;;-1:-1:-1;4907:298:0;;;;;:::i;:::-;;:::i;6303:182::-;;;;;;;;;;;;;:::i;:::-;;8945:71;;;;;;;;;;-1:-1:-1;9002:11:0;;-1:-1:-1;;;9002:11:0;;;;8945:71;;;2030:4:1;2018:17;;;2000:36;;1988:2;1973:18;8945:71:0;1858:184:1;3834:80:0;;;;;;;;;;-1:-1:-1;1881:1:0;3834:80;;9430:438;;;;;;;;;;-1:-1:-1;9430:438:0;;;;;:::i;:::-;;:::i;8870:69::-;;;;;;;;;;-1:-1:-1;8926:10:0;;-1:-1:-1;;;8926:10:0;;;;8870:69;;4190:115;;;;;;;;;;-1:-1:-1;4190:115:0;;;;;:::i;:::-;-1:-1:-1;;;;;4284:18:0;4256:7;4284:18;;;:9;:18;;;;;;;4190:115;711:130;;;;;;;;;;;;;:::i;483:65::-;;;;;;;;;;-1:-1:-1;521:7:0;539:6;483:65;;-1:-1:-1;;;;;539:6:0;;;2870:51:1;;2858:2;2843:18;483:65:0;2724:203:1;4100:84:0;;;;;;;;;;-1:-1:-1;4174:7:0;;;;;;;;;;;;-1:-1:-1;;;4174:7:0;;;;4100:84;;9024:205;;;;;;;;;;-1:-1:-1;9024:205:0;;;;;:::i;:::-;;:::i;4681:218::-;;;;;;;;;;-1:-1:-1;4681:218:0;;;;;:::i;:::-;;:::i;9333:89::-;;;;;;;;;;-1:-1:-1;9410:9:0;;9333:89;;4311:143;;;;;;;;;;-1:-1:-1;4311:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;4423:19:0;;;4395:7;4423:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;4311:143;5526:509;;;:::i;554:151::-;;;;;;;;;;-1:-1:-1;554:151:0;;;;;:::i;:::-;;:::i;9239:88::-;;;;;;;;;;-1:-1:-1;9311:13:0;;9239:88;;4462:211;4566:10;4537:4;4554:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;4554:32:0;;;;;;;;;;:41;;;4611:37;4537:4;;4554:32;;4611:37;;;;4589:6;1361:25:1;;1349:2;1334:18;;1215:177;4611:37:0;;;;;;;;-1:-1:-1;4666:4:0;4462:211;;;;;:::o;3920:88::-;3975:7;1942:13;1881:1;1942:2;:13;:::i;:::-;1929:27;;:9;:27;:::i;:::-;3986:19;;3920:88;:::o;4907:298::-;5010:4;5035:29;5053:10;5035:17;:29::i;:::-;5027:58;;;;-1:-1:-1;;;5027:58:0;;5893:2:1;5027:58:0;;;5875:21:1;5932:2;5912:18;;;5905:30;-1:-1:-1;;;5951:18:1;;;5944:46;6007:18;;5027:58:0;;;;;;;;;-1:-1:-1;;;;;5096:23:0;;;;;;:11;:23;;;;;;;;5120:10;5096:35;;;;;;;:45;;5135:6;;5096:23;:45;;5135:6;;5096:45;:::i;:::-;;;;-1:-1:-1;5159:43:0;;-1:-1:-1;5173:10:0;5185:8;5195:6;5159:13;:43::i;:::-;5152:50;4907:298;-1:-1:-1;;;;4907:298:0:o;6303:182::-;348:6;;-1:-1:-1;;;;;348:6:0;334:10;:20;326:57;;;;-1:-1:-1;;;326:57:0;;;;;;;:::i;:::-;6392:3:::1;1942:13;1881:1;1942:2;:13;:::i;:::-;1929:27;::::0;:9:::1;:27;:::i;:::-;6373:16;::::0;:1:::1;:16;:::i;:::-;:22;;;;:::i;:::-;6357:9;:38:::0;6442:3:::1;1942:13;1881:1;1942:2;:13;:::i;:::-;1929:27;::::0;:9:::1;:27;:::i;:::-;6423:16;::::0;:1:::1;:16;:::i;:::-;:22;;;;:::i;:::-;6407:13;:38:::0;6456:14:::1;:21:::0;;-1:-1:-1;;6456:21:0::1;6473:4;6456:21;::::0;;6303:182::o;9430:438::-;348:6;;-1:-1:-1;;;;;348:6:0;334:10;:20;326:57;;;;-1:-1:-1;;;326:57:0;;;;;;;:::i;:::-;9531:16:::1;9584:4;9550:31;::::0;::::1;1942:13;1881:1;1942:2;:13;:::i;:::-;1929:27;::::0;:9:::1;:27;:::i;:::-;9550:31;;;;:::i;:::-;:38;;;;:::i;:::-;:42;::::0;9591:1:::1;9550:42;:::i;:::-;9531:61;;9623:9;;9611:8;:21;;9603:44;;;::::0;-1:-1:-1;;;9603:44:0;;7076:2:1;9603:44:0::1;::::0;::::1;7058:21:1::0;7115:2;7095:18;;;7088:30;-1:-1:-1;;;7134:18:1;;;7127:40;7184:18;;9603:44:0::1;6874:334:1::0;9603:44:0::1;9658:9;:20:::0;;;9689::::1;9746:4;9712:31;::::0;::::1;1942:13;1881:1;1942:2;:13;:::i;:::-;1929:27;::::0;:9:::1;:27;:::i;:::-;9712:31;;;;:::i;:::-;:38;;;;:::i;:::-;:42;::::0;9753:1:::1;9712:42;:::i;:::-;9689:65;;9789:13;;9773:12;:29;;9765:56;;;::::0;-1:-1:-1;;;9765:56:0;;7415:2:1;9765:56:0::1;::::0;::::1;7397:21:1::0;7454:2;7434:18;;;7427:30;-1:-1:-1;;;7473:18:1;;;7466:44;7527:18;;9765:56:0::1;7213:338:1::0;9765:56:0::1;9832:13;:28:::0;-1:-1:-1;;;9430:438:0: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;2870:51:1;;;806:32:0::1;::::0;2858:2:1;2843:18;806:32:0::1;;;;;;;711:130::o:0;9024:205::-;348:6;;-1:-1:-1;;;;;348:6:0;334:10;:20;326:57;;;;-1:-1:-1;;;326:57:0;;;;;;;:::i;:::-;9138:2:::1;9116:18;9126:8:::0;9116:7;:18:::1;:::i;:::-;:24;;;;9108:49;;;::::0;-1:-1:-1;;;9108:49:0;;7911:2:1;9108:49:0::1;::::0;::::1;7893:21:1::0;7950:2;7930:18;;;7923:30;-1:-1:-1;;;7969:18:1;;;7962:42;8021:18;;9108:49:0::1;7709:336:1::0;9108:49:0::1;9168:10;:20:::0;;-1:-1:-1;;;;9199:22:0;-1:-1:-1;;;9168:20:0::1;::::0;;::::1;;-1:-1:-1::0;;;;9199:22:0;;-1:-1:-1;;;9199:22:0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;9024:205::o;4681:218::-;4760:4;4785:29;4803:10;4785:17;:29::i;:::-;4777:58;;;;-1:-1:-1;;;4777:58:0;;5893:2:1;4777:58:0;;;5875:21:1;5932:2;5912:18;;;5905:30;-1:-1:-1;;;5951:18:1;;;5944:46;6007:18;;4777:58:0;5691:340:1;4777:58:0;4853:43;4867:10;4879:8;4889:6;4853:13;:43::i;:::-;4846:50;4681:218;-1:-1:-1;;;4681:218:0:o;5526:509::-;348:6;;-1:-1:-1;;;;;348:6:0;334:10;:20;326:57;;;;-1:-1:-1;;;326:57:0;;;;;;;:::i;:::-;3113:7:::1;:14:::0;;-1:-1:-1;;3113:14:0::1;;;::::0;;5608:7:::2;::::0;-1:-1:-1;;;;;5608:7:0::2;:21:::0;5600:44:::2;;;::::0;-1:-1:-1;;;5600:44:0;;8252:2:1;5600:44:0::2;::::0;::::2;8234:21:1::0;8291:2;8271:18;;;8264:30;-1:-1:-1;;;8310:18:1;;;8303:40;8360:18;;5600:44:0::2;8050:334:1::0;5600:44:0::2;5664:14;::::0;::::2;;5663:15;5655:40;;;::::0;-1:-1:-1;;;5655:40:0;;8591:2:1;5655:40:0::2;::::0;::::2;8573:21:1::0;8630:2;8610:18;;;8603:30;-1:-1:-1;;;8649:18:1;;;8642:42;8701:18;;5655:40:0::2;8389:336:1::0;5655:40:0::2;5726:1;5714:9;:13;:40;;;;5753:1;5731:21;:23;5714:40;5706:59;;;::::0;-1:-1:-1;;;5706:59:0;;8932:2:1;5706:59:0::2;::::0;::::2;8914:21:1::0;8971:1;8951:18;;;8944:29;-1:-1:-1;;;8989:18:1;;;8982:36;9035:18;;5706:59:0::2;8730:329:1::0;5706:59:0::2;5802:4;5809:1;5784:24:::0;;;:9:::2;:24;::::0;;;;;5776:48:::2;;;::::0;-1:-1:-1;;;5776:48:0;;9266:2:1;5776:48:0::2;::::0;::::2;9248:21:1::0;9305:1;9285:18;;;9278:29;-1:-1:-1;;;9323:18:1;;;9316:39;9372:18;;5776:48:0::2;9064:332:1::0;5776:48:0::2;5863:11;;;;;;;;;-1:-1:-1::0;;;;;5863:11:0::2;-1:-1:-1::0;;;;;5863:19:0::2;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5845:72;::::0;-1:-1:-1;;;5845:72:0;;5905:4:::2;5845:72;::::0;::::2;9869:34:1::0;-1:-1:-1;;;;;5912:4:0::2;9939:15:1::0;;9919:18;;;9912:43;5845:51:0;;;::::2;::::0;::::2;::::0;9804:18:1;;5845:72:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5835:7;:82:::0;;-1:-1:-1;;;;;;5835:82:0::2;-1:-1:-1::0;;;;;5835:82:0;;;::::2;::::0;;;::::2;::::0;;5960:4:::2;-1:-1:-1::0;5942:24:0;;;:9:::2;:24;::::0;;;;;5928:62:::2;::::0;5968:21:::2;5928:13;:62::i;:::-;6012:7;::::0;-1:-1:-1;;;;;6012:7:0::2;6001:19;::::0;;;:10:::2;:19;::::0;;;;:26;;-1:-1:-1;;6001:26:0::2;6023:4;6001:26;::::0;;3142:7:::1;:15:::0;;-1:-1:-1;;3142:15:0::1;::::0;;5526:509::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;2870:51:1;;;672:30:0::1;::::0;2858:2:1;2843:18;672:30:0::1;;;;;;;554:151:::0;:::o;8044:296::-;8169:14;;8113:4;;;;8169:14;;8164:137;;;-1:-1:-1;8202:4:0;8164:137;;;-1:-1:-1;;;;;8229:21:0;;;;;;:9;:21;;;;;;;;:47;;;;-1:-1:-1;;;;;;8254:22:0;;;;;;:10;:22;;;;;;;;8229:47;8225:76;;;-1:-1:-1;8294:4:0;8321:11;8044:296;-1:-1:-1;;8044:296:0:o;6493:965::-;6584:4;-1:-1:-1;;;;;6609:20:0;;6601:59;;;;-1:-1:-1;;;6601:59:0;;10384:2:1;6601:59:0;;;10366:21:1;10423:2;10403:18;;;10396:30;10462:28;10442:18;;;10435:56;10508:18;;6601:59:0;10182:350:1;6601:59:0;6676:14;;;;6671:98;;-1:-1:-1;;;;;6702:17:0;;;;;;:9;:17;;;;;;;;:39;;;;-1:-1:-1;;;;;;6723:18:0;;;;;;:10;:18;;;;;;;;6702:39;6694:72;;;;-1:-1:-1;;;6694:72:0;;10739:2:1;6694:72:0;;;10721:21:1;10778:2;10758:18;;;10751:30;-1:-1:-1;;;10797:18:1;;;10790:50;10857:18;;6694:72:0;10537:344:1;6694:72:0;6785:7;;;;;;;6784:8;:32;;;;-1:-1:-1;;;;;;6796:20:0;;;;;;:10;:20;;;;;;;;6784:32;:60;;;;;6830:14;;6820:6;:24;;6784:60;6779:83;;;6848:11;:9;:11::i;:::-;-1:-1:-1;;;;;6879:23:0;;6897:4;6879:23;;;;:52;;-1:-1:-1;;;;;;6906:25:0;;6926:4;6906:25;;6879:52;:72;;;;-1:-1:-1;6945:6:0;;-1:-1:-1;;;;;6935:16:0;;;6945:6;;6935:16;;6879:72;6874:174;;;6978:38;6991:6;6999:8;7009:6;6978:12;:38::i;:::-;6970:65;;;;-1:-1:-1;;;6970:65:0;;11088:2:1;6970:65:0;;;11070:21:1;11127:2;11107:18;;;11100:30;-1:-1:-1;;;11146:18:1;;;11139:44;11200:18;;6970:65:0;10886:338:1;6970:65:0;7060:18;7081:39;7095:6;7103:8;7113:6;7081:13;:39::i;:::-;7060:60;-1:-1:-1;7131:23:0;7157:19;7060:60;7157:6;:19;:::i;:::-;-1:-1:-1;;;;;7190:17:0;;;;;;:9;:17;;;;;;7131:45;;-1:-1:-1;7190:17:0;;7187:55;;;7218:24;7227:15;7218:6;:24;:::i;:::-;7209:33;;7187:55;-1:-1:-1;;;;;7253:17:0;;;;;;:9;:17;;;;;:27;;7274:6;;7253:17;:27;;7274:6;;7253:27;:::i;:::-;;;;-1:-1:-1;;7309:4:0;7291:24;;;;:9;:24;;;;;:38;;7319:10;;7291:24;:38;;7319:10;;7291:38;:::i;:::-;;;;-1:-1:-1;;;;;;;7340:19:0;;;;;;:9;:19;;;;;:38;;7363:15;;7340:19;:38;;7363:15;;7340:38;:::i;:::-;;;;;;;;7411:8;-1:-1:-1;;;;;7394:34:0;7403:6;-1:-1:-1;;;;;7394:34:0;;7421:6;7394:34;;;;1361:25:1;;1349:2;1334:18;;1215:177;7394:34:0;;;;;;;;-1:-1:-1;7446:4:0;;6493:965;-1:-1:-1;;;;;6493:965:0:o;6043:252::-;6131:28;6146:12;6131:14;:28::i;:::-;6170:11;;6257;;6170:117;;-1:-1:-1;;;6170:117:0;;6230:4;6170:117;;;11570:34:1;11620:18;;;11613:34;;;6170:11:0;11663:18:1;;;11656:34;;;11706:18;;;11699:34;-1:-1:-1;;;;;6257:11:0;;;11749:19:1;;;11742:44;6270:15:0;11802:19:1;;;11795:35;6170:11:0;;;:27;;6205:13;;11504:19:1;;6170:117:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;6043:252;;:::o;9876:520::-;3113:7;:14;;-1:-1:-1;;3113:14:0;;;;;9975:4:::1;3113:14:::0;9957:24;;;:9:::1;:24;::::0;;;;;10019:14:::1;::::0;9997:36;::::1;::::0;::::1;::::0;:54:::1;;-1:-1:-1::0;10037:14:0::1;::::0;::::1;;9997:54;9992:397;;;10096:14;;10074:18;:36;10069:84;;-1:-1:-1::0;10136:14:0::1;::::0;10069:84:::1;10181:37;10199:18;10181:17;:37::i;:::-;10277:21;10316:23:::0;;10313:65:::1;;10343:32;10355:19;10343:11;:32::i;:::-;10054:335;9992:397;-1:-1:-1::0;3142:7:0;:15;;-1:-1:-1;;3142:15:0;;;9876:520::o;7466:570::-;7634:14;;7573:4;;7614;;7634:14;;:41;;;;-1:-1:-1;;;;;;7653:22:0;;;;;;:10;:22;;;;;;;;7652:23;7634:41;:66;;;;-1:-1:-1;;;;;;7680:20:0;;;;;;:10;:20;;;;;;;;7679:21;7634:66;7629:366;;;7740:9;;7723:14;:26;7718:266;;;-1:-1:-1;7791:5:0;7718:266;;;-1:-1:-1;;;;;7856:20:0;;;;;;:10;:20;;;;;;;;7855:21;:79;;;;-1:-1:-1;7920:13:0;;-1:-1:-1;;;;;7881:19:0;;;;;;:9;:19;;;;;;:36;;7903:14;;7881:36;:::i;:::-;:52;7855:79;7832:152;;;-1:-1:-1;7976:5:0;8012:16;7466:570;-1:-1:-1;;;;7466:570:0:o;8348:514::-;8513:14;;8449:7;;;;8513:14;;8512:15;;:40;;-1:-1:-1;;;;;;8531:21:0;;;;;;:9;:21;;;;;;;;8512:40;:64;;;-1:-1:-1;;;;;;8556:20:0;;;;;;:9;:20;;;;;;;;8512:64;8507:319;;;-1:-1:-1;8607:1:0;8507:319;;;-1:-1:-1;;;;;8632:22:0;;;;;;:10;:22;;;;;;;;8627:199;;;8694:10;;8707:3;;8685:19;;-1:-1:-1;;;8694:10:0;;;;8685:6;:19;:::i;:::-;:25;;;;:::i;:::-;8673:37;;8627:199;;;-1:-1:-1;;;;;8735:21:0;;;;;;:10;:21;;;;;;;;8730:96;;;8796:11;;8810:3;;8787:20;;-1:-1:-1;;;8796:11:0;;;;8787:6;:20;:::i;:::-;:26;;;;:::i;:::-;8775:38;8348:514;-1:-1:-1;;;;;8348:514:0:o;5213:305::-;5304:4;5284:26;;;;:11;:26;;;;;;;;2750:42;5284;;;;;;;;:57;-1:-1:-1;5279:232:0;;;5379:4;5359:26;;;;:11;:26;;;;;;;;2750:42;5359;;;;;;;;;;-1:-1:-1;;5359:62:0;;;;5441:58;;1361:25:1;;;2750:42:0;;5379:4;5441:58;;1334:18:1;5441:58:0;;;;;;;5279:232;5213:305;:::o;10404:338::-;10471:27;10486:11;10471:14;:27::i;:::-;10533:16;;;10547:1;10533:16;;;;;;;;10509:21;;10533:16;;;;;;;;;;-1:-1:-1;10533:16:0;10509:40;;10579:4;10560;10565:1;10560:7;;;;;;;;:::i;:::-;;;;;;:25;-1:-1:-1;;;;;10560:25:0;;;-1:-1:-1;;;;;10560:25:0;;;;;10606:4;10596;10601:1;10596:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10596:14:0;;;:7;;;;;;;;;:14;10622:11;;:112;;-1:-1:-1;;;10622:112:0;;:11;;;:62;;:112;;10685:11;;10622;;10699:4;;10712;;10718:15;;10622:112;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10460:282;10404:338;:::o;10750:93::-;10806:12;;:29;;-1:-1:-1;;;;;10806:12:0;;;;:29;;;;;10828:6;;10806:12;:29;:12;:29;10828:6;10806:12;:29;;;;;;;;;;;;;;;;;;;;;10750:93;:::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:247::-;2531:6;2584:2;2572:9;2563:7;2559:23;2555:32;2552:52;;;2600:1;2597;2590:12;2552:52;2639:9;2626:23;2658:31;2683:5;2658:31;:::i;2932:156::-;2998:20;;3058:4;3047:16;;3037:27;;3027:55;;3078:1;3075;3068:12;3093:252;3157:6;3165;3218:2;3206:9;3197:7;3193:23;3189:32;3186:52;;;3234:1;3231;3224:12;3186:52;3257:27;3274:9;3257:27;:::i;:::-;3247:37;;3303:36;3335:2;3324:9;3320:18;3303:36;:::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;9401:251::-;9471:6;9524:2;9512:9;9503:7;9499:23;9495:32;9492:52;;;9540:1;9537;9530:12;9492:52;9572:9;9566:16;9591:31;9616:5;9591:31;:::i;11841:306::-;11929:6;11937;11945;11998:2;11986:9;11977:7;11973:23;11969:32;11966:52;;;12014:1;12011;12004:12;11966:52;12043:9;12037:16;12027:26;;12093:2;12082:9;12078:18;12072:25;12062:35;;12137:2;12126:9;12122:18;12116:25;12106:35;;11841:306;;;;;:::o;12284:127::-;12345:10;12340:3;12336:20;12333:1;12326:31;12376:4;12373:1;12366:15;12400:4;12397:1;12390:15;12416:980;12678:4;12726:3;12715:9;12711:19;12757:6;12746:9;12739:25;12783:2;12821:6;12816:2;12805:9;12801:18;12794:34;12864:3;12859:2;12848:9;12844:18;12837:31;12888:6;12923;12917:13;12954:6;12946;12939:22;12992:3;12981:9;12977:19;12970:26;;13031:2;13023:6;13019:15;13005:29;;13052:1;13062:195;13076:6;13073:1;13070:13;13062:195;;;13141:13;;-1:-1:-1;;;;;13137:39:1;13125:52;;13232:15;;;;13197:12;;;;13173:1;13091:9;13062:195;;;-1:-1:-1;;;;;;;13313:32:1;;;;13308:2;13293:18;;13286:60;-1:-1:-1;;;13377:3:1;13362:19;13355:35;13274:3;12416:980;-1:-1:-1;;;12416:980:1:o

Swarm Source

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