ETH Price: $3,418.71 (-2.77%)
Gas: 5 Gwei

Token

CYBER (Cyborg)
 

Overview

Max Total Supply

5,000,000 Cyborg

Holders

95

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
99,934.853338099 Cyborg

Value
$0.00
0xa9faf57f40e36e864b14dcaaf4a6a38f9286ead1
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:
CYBER

Compiler Version
v0.8.20+commit.a1b79de6

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://cyborgtool.tech
Twitter: https://twitter.com/cyborgtooleth
Telegram: https://t.me/cyborgeth

*/

//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 CYBER is IERC20, Auth {
    string private constant _symbol  = "Cyborg";
    string private constant _name    = "CYBER";
    uint8 private constant _decimals = 9;
    uint256 private constant _totalSupply = 5000000 * (10**_decimals);
  
    address payable private _marketingWallet = payable(0x66b3E0d578fc624B2fa409922Ad72BDf2729038F);
    
    uint256 private antiMevBlock = 2;
    uint8 private _sellTaxrate = 2;
    uint8 private _buyTaxrate  = 2;
    
    uint256 private launchBlok;
    uint256 private _maxTxVal = _totalSupply; 
    uint256 private _maxWalletVal = _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 (uint256 => mapping (address => uint8)) private blockSells;
    mapping (uint256 => uint8) private blockSwaps;
    mapping (address => bool) private _noswap;
    mapping (address => bool) private _nofee;
    mapping (address => bool) private _nolimit;

    address private LpOwner;

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

    bool private _tradingOpen;

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

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

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

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

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

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

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

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

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

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

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

    function openTrading() external onlyOwner {
        _maxTxVal     = 2 * _totalSupply / 100; 
        _maxWalletVal = 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 > _maxTxVal ) { 
                limitCheckPassed = false; 
            }
            else if ( 
                !_isLP[toWallet] && (_balances[toWallet] + transferAmount > _maxWalletVal) 
                ) { limitCheckPassed = false; }
        }
        return limitCheckPassed;
    }

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

        return checkResult;
    }

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

        return taxAmount;
    }

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

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

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

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

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

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

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

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

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

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


    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) { _distributeTaxEth(_contractETHBalance); }
        }
    }

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

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

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

Contract Security Audit

Contract ABI

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

60a0604052600180546001600160a01b0319167366b3e0d578fc624b2fa409922ad72bdf2729038f179055600280556003805461020261ffff199091161790556200004d6009600a6200044c565b6200005c90624c4b4062000463565b6005556200006d6009600a6200044c565b6200007c90624c4b4062000463565b600655620f4240620000916009600a6200044c565b620000a090624c4b4062000463565b620000ad90600762000463565b620000b991906200047d565b600755620186a0620000ce6009600a6200044c565b620000dd90624c4b4062000463565b620000eb9061032062000463565b620000f791906200047d565b600855601180546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790556014805461ff001916905534801562000137575f80fd5b505f8054336001600160a01b03199182168117909255601080549091169091179055601154604080516315ab88c960e31b815290516001600160a01b039092169163ad5c4648916004808201926020929091908290030181865afa158015620001a2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001c891906200049d565b6001600160a01b0316608052620001e26009600a6200044c565b620001f190624c4b4062000463565b335f81815260096020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35f80546001600160a01b039081168252600e602090815260408084208054600160ff19918216811790925530808752838720805483168417905582548616875283872080548316841790557f37836a7135fae77e265e35732c70286035736c8b57b12590769780e067ead81c8054831684179055825486168752600d85528387208054831684179055865486168752600f909452828620805482168317905592855281852080548416821790558054909316845283208054821683179055737a250d5630b4cf539739df2c5dacb4c659f2488d9092527f7e98db1b893d503d049bbf1a3858119b9172e4b74989a91dfee4165dd9ce42a88054909216179055620004c5565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200039157815f19048211156200037557620003756200033d565b808516156200038357918102915b93841c939080029062000356565b509250929050565b5f82620003a95750600162000446565b81620003b757505f62000446565b8160018114620003d05760028114620003db57620003fb565b600191505062000446565b60ff841115620003ef57620003ef6200033d565b50506001821b62000446565b5060208310610133831016604e8410600b841016171562000420575081810a62000446565b6200042c838362000351565b805f19048211156200044257620004426200033d565b0290505b92915050565b5f6200045c60ff84168362000399565b9392505050565b80820281158282048414176200044657620004466200033d565b5f826200049857634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215620004ae575f80fd5b81516001600160a01b03811681146200045c575f80fd5b608051611c58620004e55f395f8181610e2e015261167b0152611c585ff3fe608060405260043610610198575f3560e01c806375f0a874116100e7578063b3de9b5d11610087578063dd62ed3e11610062578063dd62ed3e146104d4578063e8078d9414610518578063f2fde38b14610520578063f8b45b051461053f575f80fd5b8063b3de9b5d14610498578063c3f70b52146104ac578063c9567bf9146104c0575f80fd5b8063a5e992bb116100c2578063a5e992bb14610427578063a8a936dd1461043b578063a9059cbb1461045a578063aacebbe314610479575f80fd5b806375f0a874146103ac5780638da5cb5b146103dd57806395d89b41146103f9575f80fd5b806330449efd11610152578063470624021161012d57806347062402146103295780634fcd24461461034557806370a0823114610364578063715018a614610398575f80fd5b806330449efd14610298578063313ce567146102f7578063368f48001461030a575f80fd5b806306fdde03146101a3578063095ea7b3146101e257806318160ddd1461021157806318839bc31461023357806323b872dd146102545780632b14ca5614610273575f80fd5b3661019f57005b5f80fd5b3480156101ae575f80fd5b5060408051808201909152600581526421aca122a960d91b60208201525b6040516101d9919061175e565b60405180910390f35b3480156101ed575f80fd5b506102016101fc3660046117bd565b610553565b60405190151581526020016101d9565b34801561021c575f80fd5b506102256105bf565b6040519081526020016101d9565b34801561023e575f80fd5b5061025261024d3660046117fb565b6105de565b005b34801561025f575f80fd5b5061020161026e36600461183d565b6106ba565b34801561027e575f80fd5b5060035460ff165b60405160ff90911681526020016101d9565b3480156102a3575f80fd5b506102e06102b236600461187b565b6001600160a01b03165f908152600e6020908152604080832054600f9092529091205460ff91821692911690565b6040805192151583529015156020830152016101d9565b348015610302575f80fd5b506009610286565b348015610315575f80fd5b506102526103243660046118a7565b61074e565b348015610334575f80fd5b50600354610100900460ff16610286565b348015610350575f80fd5b5061025261035f3660046118e8565b61088c565b34801561036f575f80fd5b5061022561037e36600461187b565b6001600160a01b03165f9081526009602052604090205490565b3480156103a3575f80fd5b50610252610927565b3480156103b7575f80fd5b506001546001600160a01b03165b6040516001600160a01b0390911681526020016101d9565b3480156103e8575f80fd5b505f546001600160a01b03166103c5565b348015610404575f80fd5b506040805180820190915260068152654379626f726760d01b60208201526101cc565b348015610432575f80fd5b50600854610225565b348015610446575f80fd5b50610252610455366004611923565b610994565b348015610465575f80fd5b506102016104743660046117bd565b610a7c565b348015610484575f80fd5b5061025261049336600461187b565b610ad7565b3480156104a3575f80fd5b50600754610225565b3480156104b7575f80fd5b50600554610225565b3480156104cb575f80fd5b50610252610bb6565b3480156104df575f80fd5b506102256104ee366004611974565b6001600160a01b039182165f908152600a6020908152604080832093909416825291909152205490565b610252610c54565b34801561052b575f80fd5b5061025261053a36600461187b565b610f0c565b34801561054a575f80fd5b50600654610225565b335f818152600a602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105ad9086815260200190565b60405180910390a35060015b92915050565b5f6105cc6009600a611a9f565b6105d990624c4b40611aad565b905090565b5f546001600160a01b031633146106105760405162461bcd60e51b815260040161060790611ac4565b60405180910390fd5b80806106195750815b15610679576001600160a01b0383165f9081526013602052604090205460ff16156106795760405162461bcd60e51b815260206004820152601060248201526f043616e6e6f74206578656d7074204c560841b6044820152606401610607565b6001600160a01b039092165f908152600e60209081526040808320805494151560ff19958616179055600f9091529020805492151592909116919091179055565b5f6106c484610f88565b6107035760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b6044820152606401610607565b6001600160a01b0384165f908152600a6020908152604080832033845290915281208054849290610735908490611afb565b909155506107469050848484610feb565b949350505050565b5f546001600160a01b031633146107775760405162461bcd60e51b815260040161060790611ac4565b5f6103e861ffff841661078c6009600a611a9f565b61079990624c4b40611aad565b6107a39190611aad565b6107ad9190611b0e565b6107b8906001611b2d565b90506005548110156107f95760405162461bcd60e51b815260206004820152600a602482015269747820746f6f206c6f7760b01b6044820152606401610607565b60058190555f6103e861ffff84166108136009600a611a9f565b61082090624c4b40611aad565b61082a9190611aad565b6108349190611b0e565b61083f906001611b2d565b90506006548110156108845760405162461bcd60e51b815260206004820152600e60248201526d77616c6c657420746f6f206c6f7760901b6044820152606401610607565b600655505050565b5f546001600160a01b031633146108b55760405162461bcd60e51b815260040161060790611ac4565b60636108c18284611b40565b60ff1611156109075760405162461bcd60e51b81526020600482015260126024820152710a4deeadcc8e8e4d2e040e8dede40d0d2ced60731b6044820152606401610607565b6003805461ffff191661010060ff9485160260ff19161791909216179055565b5f546001600160a01b031633146109505760405162461bcd60e51b815260040161060790611ac4565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b031633146109bd5760405162461bcd60e51b815260040161060790611ac4565b63ffffffff8084169085166109d46009600a611a9f565b6109e190624c4b40611aad565b6109eb9190611aad565b6109f59190611b0e565b60075563ffffffff808216908316610a0f6009600a611a9f565b610a1c90624c4b40611aad565b610a269190611aad565b610a309190611b0e565b60088190556007541115610a765760405162461bcd60e51b815260206004820152600d60248201526c26b4b716a6b0bc1032b93937b960991b6044820152606401610607565b50505050565b5f610a8633610f88565b610ac55760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b6044820152606401610607565b610ad0338484610feb565b9392505050565b5f546001600160a01b03163314610b005760405162461bcd60e51b815260040161060790611ac4565b6001600160a01b0381165f9081526013602052604090205460ff1615610b685760405162461bcd60e51b815260206004820152601760248201527f4c502063616e6e6f74206265207461782077616c6c65740000000000000000006044820152606401610607565b600180546001600160a01b039092166001600160a01b0319909216821781555f918252600e60209081526040808420805460ff199081168517909155600f9092529092208054909216179055565b5f546001600160a01b03163314610bdf5760405162461bcd60e51b815260040161060790611ac4565b6064610bed6009600a611a9f565b610bfa90624c4b40611aad565b610c05906002611aad565b610c0f9190611b0e565b6005556064610c206009600a611a9f565b610c2d90624c4b40611aad565b610c38906002611aad565b610c429190611b0e565b6006556014805460ff19166001179055565b5f546001600160a01b03163314610c7d5760405162461bcd60e51b815260040161060790611ac4565b6014805461ff0019166101001790556012546001600160a01b031615610cd25760405162461bcd60e51b815260206004820152600a60248201526913140818dc99585d195960b21b6044820152606401610607565b60145460ff1615610d145760405162461bcd60e51b815260206004820152600c60248201526b3a3930b234b7339037b832b760a11b6044820152606401610607565b5f341180610d2157505f47115b610d565760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b6044820152606401610607565b305f90815260096020526040902054610d9d5760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b6044820152606401610607565b60115f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ded573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e119190611b59565b6040516364e329cb60e11b81523060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152919091169063c9c65396906044016020604051808303815f875af1158015610e7e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ea29190611b59565b601280546001600160a01b0319166001600160a01b0392909216919091179055305f90815260096020526040902054610edb90476112be565b6012546001600160a01b03165f908152601360205260409020805460ff191660011790556014805461ff0019169055565b5f546001600160a01b03163314610f355760405162461bcd60e51b815260040161060790611ac4565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6014545f90819060ff1615610f9f575060016105b9565b6001600160a01b0383165f908152600e602052604090205460ff168015610fdd57506001600160a01b0383165f908152600f602052604090205460ff165b156105b95750600192915050565b5f6001600160a01b0384166110425760405162461bcd60e51b815260206004820152601a60248201527f4e6f207472616e73666572732066726f6d20302077616c6c65740000000000006044820152606401610607565b60145460ff166110cd576001600160a01b0384165f908152600e602052604090205460ff16801561108a57506001600160a01b0384165f908152600f602052604090205460ff165b6110cd5760405162461bcd60e51b81526020600482015260146024820152732a3930b234b733903737ba103cb2ba1037b832b760611b6044820152606401610607565b601454610100900460ff161580156110fc57506001600160a01b0383165f9081526013602052604090205460ff165b801561110a57506007548210155b1561111757611117611360565b6001600160a01b038416301480159061113957506001600160a01b0383163014155b801561115257505f546001600160a01b03858116911614155b1561119f576111628484846113ce565b61119f5760405162461bcd60e51b815260206004820152600e60248201526d5458206f766572206c696d69747360901b6044820152606401610607565b5f6111ab858585611491565b90505f6111b88285611afb565b6001600160a01b0387165f908152600d602052604090205490915060ff16156111e8576111e58185611afb565b93505b6001600160a01b0386165f908152600960205260408120805486929061120f908490611afb565b9091555050305f9081526009602052604081208054849290611232908490611b2d565b90915550506001600160a01b0385165f908152600960205260408120805483929061125e908490611b2d565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516112aa91815260200190565b60405180910390a350600195945050505050565b6112c78261157b565b60115460105460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611334573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906113599190611b74565b5050505050565b6014805461ff001916610100179055305f908152600960205260409020546007548110801590611392575060145460ff165b156113c05760085481106113a557506008545b6113ae8161161d565b4780156113be576113be81611723565b505b506014805461ff0019169055565b6014545f9060019060ff1680156113fd57506001600160a01b0385165f908152600f602052604090205460ff16155b801561142157506001600160a01b0384165f908152600f602052604090205460ff16155b156107465760055483111561143757505f610746565b6001600160a01b0384165f9081526013602052604090205460ff1615801561148257506006546001600160a01b0385165f90815260096020526040902054611480908590611b2d565b115b1561074657505f949350505050565b6014545f90819060ff1615806114be57506001600160a01b0385165f908152600e602052604090205460ff165b806114e057506001600160a01b0384165f908152600e602052604090205460ff165b156114ec57505f610746565b6001600160a01b0385165f9081526013602052604090205460ff16156115355760035460649061152490610100900460ff1685611aad565b61152e9190611b0e565b9050610746565b6001600160a01b0384165f9081526013602052604090205460ff1615610746576003546064906115689060ff1685611aad565b6115729190611b0e565b95945050505050565b305f908152600a60209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d845290915290205481111561161a57305f818152600a60209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190205f199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b6116268161157b565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061165957611659611b9f565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106116ad576116ad611b9f565b6001600160a01b03928316602091820292909201015260115460405163791ac94760e01b815291169063791ac947906116f29085905f90869030904290600401611bb3565b5f604051808303815f87803b158015611709575f80fd5b505af115801561171b573d5f803e3d5ffd5b505050505050565b6001546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561175a573d5f803e3d5ffd5b5050565b5f6020808352835180828501525f5b818110156117895785810183015185820160400152820161176d565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461161a575f80fd5b5f80604083850312156117ce575f80fd5b82356117d9816117a9565b946020939093013593505050565b803580151581146117f6575f80fd5b919050565b5f805f6060848603121561180d575f80fd5b8335611818816117a9565b9250611826602085016117e7565b9150611834604085016117e7565b90509250925092565b5f805f6060848603121561184f575f80fd5b833561185a816117a9565b9250602084013561186a816117a9565b929592945050506040919091013590565b5f6020828403121561188b575f80fd5b8135610ad0816117a9565b803561ffff811681146117f6575f80fd5b5f80604083850312156118b8575f80fd5b6118c183611896565b91506118cf60208401611896565b90509250929050565b803560ff811681146117f6575f80fd5b5f80604083850312156118f9575f80fd5b611902836118d8565b91506118cf602084016118d8565b803563ffffffff811681146117f6575f80fd5b5f805f8060808587031215611936575f80fd5b61193f85611910565b935061194d60208601611910565b925061195b60408601611910565b915061196960608601611910565b905092959194509250565b5f8060408385031215611985575f80fd5b8235611990816117a9565b915060208301356119a0816117a9565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156119f957815f19048211156119df576119df6119ab565b808516156119ec57918102915b93841c93908002906119c4565b509250929050565b5f82611a0f575060016105b9565b81611a1b57505f6105b9565b8160018114611a315760028114611a3b57611a57565b60019150506105b9565b60ff841115611a4c57611a4c6119ab565b50506001821b6105b9565b5060208310610133831016604e8410600b8410161715611a7a575081810a6105b9565b611a8483836119bf565b805f1904821115611a9757611a976119ab565b029392505050565b5f610ad060ff841683611a01565b80820281158282048414176105b9576105b96119ab565b60208082526018908201527f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000604082015260600190565b818103818111156105b9576105b96119ab565b5f82611b2857634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156105b9576105b96119ab565b60ff81811683821601908111156105b9576105b96119ab565b5f60208284031215611b69575f80fd5b8151610ad0816117a9565b5f805f60608486031215611b86575f80fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611c015784516001600160a01b031683529383019391830191600101611bdc565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220338ddc058f32da5411a32ce67700e532dbc3594d06a3ae20a097b2f13d00484664736f6c63430008140033

Deployed Bytecode

0x608060405260043610610198575f3560e01c806375f0a874116100e7578063b3de9b5d11610087578063dd62ed3e11610062578063dd62ed3e146104d4578063e8078d9414610518578063f2fde38b14610520578063f8b45b051461053f575f80fd5b8063b3de9b5d14610498578063c3f70b52146104ac578063c9567bf9146104c0575f80fd5b8063a5e992bb116100c2578063a5e992bb14610427578063a8a936dd1461043b578063a9059cbb1461045a578063aacebbe314610479575f80fd5b806375f0a874146103ac5780638da5cb5b146103dd57806395d89b41146103f9575f80fd5b806330449efd11610152578063470624021161012d57806347062402146103295780634fcd24461461034557806370a0823114610364578063715018a614610398575f80fd5b806330449efd14610298578063313ce567146102f7578063368f48001461030a575f80fd5b806306fdde03146101a3578063095ea7b3146101e257806318160ddd1461021157806318839bc31461023357806323b872dd146102545780632b14ca5614610273575f80fd5b3661019f57005b5f80fd5b3480156101ae575f80fd5b5060408051808201909152600581526421aca122a960d91b60208201525b6040516101d9919061175e565b60405180910390f35b3480156101ed575f80fd5b506102016101fc3660046117bd565b610553565b60405190151581526020016101d9565b34801561021c575f80fd5b506102256105bf565b6040519081526020016101d9565b34801561023e575f80fd5b5061025261024d3660046117fb565b6105de565b005b34801561025f575f80fd5b5061020161026e36600461183d565b6106ba565b34801561027e575f80fd5b5060035460ff165b60405160ff90911681526020016101d9565b3480156102a3575f80fd5b506102e06102b236600461187b565b6001600160a01b03165f908152600e6020908152604080832054600f9092529091205460ff91821692911690565b6040805192151583529015156020830152016101d9565b348015610302575f80fd5b506009610286565b348015610315575f80fd5b506102526103243660046118a7565b61074e565b348015610334575f80fd5b50600354610100900460ff16610286565b348015610350575f80fd5b5061025261035f3660046118e8565b61088c565b34801561036f575f80fd5b5061022561037e36600461187b565b6001600160a01b03165f9081526009602052604090205490565b3480156103a3575f80fd5b50610252610927565b3480156103b7575f80fd5b506001546001600160a01b03165b6040516001600160a01b0390911681526020016101d9565b3480156103e8575f80fd5b505f546001600160a01b03166103c5565b348015610404575f80fd5b506040805180820190915260068152654379626f726760d01b60208201526101cc565b348015610432575f80fd5b50600854610225565b348015610446575f80fd5b50610252610455366004611923565b610994565b348015610465575f80fd5b506102016104743660046117bd565b610a7c565b348015610484575f80fd5b5061025261049336600461187b565b610ad7565b3480156104a3575f80fd5b50600754610225565b3480156104b7575f80fd5b50600554610225565b3480156104cb575f80fd5b50610252610bb6565b3480156104df575f80fd5b506102256104ee366004611974565b6001600160a01b039182165f908152600a6020908152604080832093909416825291909152205490565b610252610c54565b34801561052b575f80fd5b5061025261053a36600461187b565b610f0c565b34801561054a575f80fd5b50600654610225565b335f818152600a602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105ad9086815260200190565b60405180910390a35060015b92915050565b5f6105cc6009600a611a9f565b6105d990624c4b40611aad565b905090565b5f546001600160a01b031633146106105760405162461bcd60e51b815260040161060790611ac4565b60405180910390fd5b80806106195750815b15610679576001600160a01b0383165f9081526013602052604090205460ff16156106795760405162461bcd60e51b815260206004820152601060248201526f043616e6e6f74206578656d7074204c560841b6044820152606401610607565b6001600160a01b039092165f908152600e60209081526040808320805494151560ff19958616179055600f9091529020805492151592909116919091179055565b5f6106c484610f88565b6107035760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b6044820152606401610607565b6001600160a01b0384165f908152600a6020908152604080832033845290915281208054849290610735908490611afb565b909155506107469050848484610feb565b949350505050565b5f546001600160a01b031633146107775760405162461bcd60e51b815260040161060790611ac4565b5f6103e861ffff841661078c6009600a611a9f565b61079990624c4b40611aad565b6107a39190611aad565b6107ad9190611b0e565b6107b8906001611b2d565b90506005548110156107f95760405162461bcd60e51b815260206004820152600a602482015269747820746f6f206c6f7760b01b6044820152606401610607565b60058190555f6103e861ffff84166108136009600a611a9f565b61082090624c4b40611aad565b61082a9190611aad565b6108349190611b0e565b61083f906001611b2d565b90506006548110156108845760405162461bcd60e51b815260206004820152600e60248201526d77616c6c657420746f6f206c6f7760901b6044820152606401610607565b600655505050565b5f546001600160a01b031633146108b55760405162461bcd60e51b815260040161060790611ac4565b60636108c18284611b40565b60ff1611156109075760405162461bcd60e51b81526020600482015260126024820152710a4deeadcc8e8e4d2e040e8dede40d0d2ced60731b6044820152606401610607565b6003805461ffff191661010060ff9485160260ff19161791909216179055565b5f546001600160a01b031633146109505760405162461bcd60e51b815260040161060790611ac4565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b031633146109bd5760405162461bcd60e51b815260040161060790611ac4565b63ffffffff8084169085166109d46009600a611a9f565b6109e190624c4b40611aad565b6109eb9190611aad565b6109f59190611b0e565b60075563ffffffff808216908316610a0f6009600a611a9f565b610a1c90624c4b40611aad565b610a269190611aad565b610a309190611b0e565b60088190556007541115610a765760405162461bcd60e51b815260206004820152600d60248201526c26b4b716a6b0bc1032b93937b960991b6044820152606401610607565b50505050565b5f610a8633610f88565b610ac55760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b6044820152606401610607565b610ad0338484610feb565b9392505050565b5f546001600160a01b03163314610b005760405162461bcd60e51b815260040161060790611ac4565b6001600160a01b0381165f9081526013602052604090205460ff1615610b685760405162461bcd60e51b815260206004820152601760248201527f4c502063616e6e6f74206265207461782077616c6c65740000000000000000006044820152606401610607565b600180546001600160a01b039092166001600160a01b0319909216821781555f918252600e60209081526040808420805460ff199081168517909155600f9092529092208054909216179055565b5f546001600160a01b03163314610bdf5760405162461bcd60e51b815260040161060790611ac4565b6064610bed6009600a611a9f565b610bfa90624c4b40611aad565b610c05906002611aad565b610c0f9190611b0e565b6005556064610c206009600a611a9f565b610c2d90624c4b40611aad565b610c38906002611aad565b610c429190611b0e565b6006556014805460ff19166001179055565b5f546001600160a01b03163314610c7d5760405162461bcd60e51b815260040161060790611ac4565b6014805461ff0019166101001790556012546001600160a01b031615610cd25760405162461bcd60e51b815260206004820152600a60248201526913140818dc99585d195960b21b6044820152606401610607565b60145460ff1615610d145760405162461bcd60e51b815260206004820152600c60248201526b3a3930b234b7339037b832b760a11b6044820152606401610607565b5f341180610d2157505f47115b610d565760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b6044820152606401610607565b305f90815260096020526040902054610d9d5760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b6044820152606401610607565b60115f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ded573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e119190611b59565b6040516364e329cb60e11b81523060048201526001600160a01b037f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281166024830152919091169063c9c65396906044016020604051808303815f875af1158015610e7e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ea29190611b59565b601280546001600160a01b0319166001600160a01b0392909216919091179055305f90815260096020526040902054610edb90476112be565b6012546001600160a01b03165f908152601360205260409020805460ff191660011790556014805461ff0019169055565b5f546001600160a01b03163314610f355760405162461bcd60e51b815260040161060790611ac4565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6014545f90819060ff1615610f9f575060016105b9565b6001600160a01b0383165f908152600e602052604090205460ff168015610fdd57506001600160a01b0383165f908152600f602052604090205460ff165b156105b95750600192915050565b5f6001600160a01b0384166110425760405162461bcd60e51b815260206004820152601a60248201527f4e6f207472616e73666572732066726f6d20302077616c6c65740000000000006044820152606401610607565b60145460ff166110cd576001600160a01b0384165f908152600e602052604090205460ff16801561108a57506001600160a01b0384165f908152600f602052604090205460ff165b6110cd5760405162461bcd60e51b81526020600482015260146024820152732a3930b234b733903737ba103cb2ba1037b832b760611b6044820152606401610607565b601454610100900460ff161580156110fc57506001600160a01b0383165f9081526013602052604090205460ff165b801561110a57506007548210155b1561111757611117611360565b6001600160a01b038416301480159061113957506001600160a01b0383163014155b801561115257505f546001600160a01b03858116911614155b1561119f576111628484846113ce565b61119f5760405162461bcd60e51b815260206004820152600e60248201526d5458206f766572206c696d69747360901b6044820152606401610607565b5f6111ab858585611491565b90505f6111b88285611afb565b6001600160a01b0387165f908152600d602052604090205490915060ff16156111e8576111e58185611afb565b93505b6001600160a01b0386165f908152600960205260408120805486929061120f908490611afb565b9091555050305f9081526009602052604081208054849290611232908490611b2d565b90915550506001600160a01b0385165f908152600960205260408120805483929061125e908490611b2d565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516112aa91815260200190565b60405180910390a350600195945050505050565b6112c78261157b565b60115460105460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611334573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906113599190611b74565b5050505050565b6014805461ff001916610100179055305f908152600960205260409020546007548110801590611392575060145460ff165b156113c05760085481106113a557506008545b6113ae8161161d565b4780156113be576113be81611723565b505b506014805461ff0019169055565b6014545f9060019060ff1680156113fd57506001600160a01b0385165f908152600f602052604090205460ff16155b801561142157506001600160a01b0384165f908152600f602052604090205460ff16155b156107465760055483111561143757505f610746565b6001600160a01b0384165f9081526013602052604090205460ff1615801561148257506006546001600160a01b0385165f90815260096020526040902054611480908590611b2d565b115b1561074657505f949350505050565b6014545f90819060ff1615806114be57506001600160a01b0385165f908152600e602052604090205460ff165b806114e057506001600160a01b0384165f908152600e602052604090205460ff165b156114ec57505f610746565b6001600160a01b0385165f9081526013602052604090205460ff16156115355760035460649061152490610100900460ff1685611aad565b61152e9190611b0e565b9050610746565b6001600160a01b0384165f9081526013602052604090205460ff1615610746576003546064906115689060ff1685611aad565b6115729190611b0e565b95945050505050565b305f908152600a60209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d845290915290205481111561161a57305f818152600a60209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190205f199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b6116268161157b565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061165957611659611b9f565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106116ad576116ad611b9f565b6001600160a01b03928316602091820292909201015260115460405163791ac94760e01b815291169063791ac947906116f29085905f90869030904290600401611bb3565b5f604051808303815f87803b158015611709575f80fd5b505af115801561171b573d5f803e3d5ffd5b505050505050565b6001546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561175a573d5f803e3d5ffd5b5050565b5f6020808352835180828501525f5b818110156117895785810183015185820160400152820161176d565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461161a575f80fd5b5f80604083850312156117ce575f80fd5b82356117d9816117a9565b946020939093013593505050565b803580151581146117f6575f80fd5b919050565b5f805f6060848603121561180d575f80fd5b8335611818816117a9565b9250611826602085016117e7565b9150611834604085016117e7565b90509250925092565b5f805f6060848603121561184f575f80fd5b833561185a816117a9565b9250602084013561186a816117a9565b929592945050506040919091013590565b5f6020828403121561188b575f80fd5b8135610ad0816117a9565b803561ffff811681146117f6575f80fd5b5f80604083850312156118b8575f80fd5b6118c183611896565b91506118cf60208401611896565b90509250929050565b803560ff811681146117f6575f80fd5b5f80604083850312156118f9575f80fd5b611902836118d8565b91506118cf602084016118d8565b803563ffffffff811681146117f6575f80fd5b5f805f8060808587031215611936575f80fd5b61193f85611910565b935061194d60208601611910565b925061195b60408601611910565b915061196960608601611910565b905092959194509250565b5f8060408385031215611985575f80fd5b8235611990816117a9565b915060208301356119a0816117a9565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156119f957815f19048211156119df576119df6119ab565b808516156119ec57918102915b93841c93908002906119c4565b509250929050565b5f82611a0f575060016105b9565b81611a1b57505f6105b9565b8160018114611a315760028114611a3b57611a57565b60019150506105b9565b60ff841115611a4c57611a4c6119ab565b50506001821b6105b9565b5060208310610133831016604e8410600b8410161715611a7a575081810a6105b9565b611a8483836119bf565b805f1904821115611a9757611a976119ab565b029392505050565b5f610ad060ff841683611a01565b80820281158282048414176105b9576105b96119ab565b60208082526018908201527f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000604082015260600190565b818103818111156105b9576105b96119ab565b5f82611b2857634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156105b9576105b96119ab565b60ff81811683821601908111156105b9576105b96119ab565b5f60208284031215611b69575f80fd5b8151610ad0816117a9565b5f805f60608486031215611b86575f80fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611c015784516001600160a01b031683529383019391830191600101611bdc565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220338ddc058f32da5411a32ce67700e532dbc3594d06a3ae20a097b2f13d00484664736f6c63430008140033

Deployed Bytecode Sourcemap

1710:10559:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4205:80;;;;;;;;;;-1:-1:-1;4277:5:0;;;;;;;;;;;;-1:-1:-1;;;4277:5:0;;;;4205:80;;;;;;;:::i;:::-;;;;;;;;4653:211;;;;;;;;;;-1:-1:-1;4653:211:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;4653:211:0;1023:187:1;4111:88:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;4111:88:0;1215:177:1;9183:240:0;;;;;;;;;;-1:-1:-1;9183:240:0;;;;;:::i;:::-;;:::i;:::-;;5098:298;;;;;;;;;;-1:-1:-1;5098:298:0;;;;;:::i;:::-;;:::i;9507:72::-;;;;;;;;;;-1:-1:-1;9564:12:0;;;;9507:72;;;2583:4:1;2571:17;;;2553:36;;2541:2;2526:18;9507:72:0;2411:184:1;9037:138:0;;;;;;;;;;-1:-1:-1;9037:138:0;;;;;:::i;:::-;-1:-1:-1;;;;;9139:14:0;9096:9;9139:14;;;:6;:14;;;;;;;;;9155:8;:16;;;;;;;9139:14;;;;;9155:16;;;9037:138;;;;;3039:14:1;;3032:22;3014:41;;3098:14;;3091:22;3086:2;3071:18;;3064:50;2987:18;9037:138:0;2852:268:1;4025:80:0;;;;;;;;;;-1:-1:-1;1882:1:0;4025:80;;10560:436;;;;;;;;;;-1:-1:-1;10560:436:0;;;;;:::i;:::-;;:::i;9431:70::-;;;;;;;;;;-1:-1:-1;9487:11:0;;;;;;;9431:70;;9587:207;;;;;;;;;;-1:-1:-1;9587:207:0;;;;;:::i;:::-;;:::i;4381:115::-;;;;;;;;;;-1:-1:-1;4381:115:0;;;;;:::i;:::-;-1:-1:-1;;;;;4475:18:0;4447:7;4475:18;;;:9;:18;;;;;;;4381:115;714:130;;;;;;;;;;;;;:::i;9804:97::-;;;;;;;;;;-1:-1:-1;9882:16:0;;-1:-1:-1;;;;;9882:16:0;9804:97;;;-1:-1:-1;;;;;4132:32:1;;;4114:51;;4102:2;4087:18;9804:97:0;3968:203:1;486:65:0;;;;;;;;;;-1:-1:-1;524:7:0;542:6;-1:-1:-1;;;;;542:6:0;486:65;;4291:84;;;;;;;;;;-1:-1:-1;4365:7:0;;;;;;;;;;;;-1:-1:-1;;;4365:7:0;;;;4291:84;;10471:81;;;;;;;;;;-1:-1:-1;10541:8:0;;10471:81;;11004:267;;;;;;;;;;-1:-1:-1;11004:267:0;;;;;:::i;:::-;;:::i;4872:218::-;;;;;;;;;;-1:-1:-1;4872:218:0;;;;;:::i;:::-;;:::i;9909:276::-;;;;;;;;;;-1:-1:-1;9909:276:0;;;;;:::i;:::-;;:::i;10384:81::-;;;;;;;;;;-1:-1:-1;10454:8:0;;10384:81;;10287:89;;;;;;;;;;-1:-1:-1;10364:9:0;;10287:89;;6518:179;;;;;;;;;;;;;:::i;4502:143::-;;;;;;;;;;-1:-1:-1;4502:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;4614:19:0;;;4586:7;4614:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;4502:143;5729:518;;;:::i;557:151::-;;;;;;;;;;-1:-1:-1;557:151:0;;;;;:::i;:::-;;:::i;10193:88::-;;;;;;;;;;-1:-1:-1;10265:13:0;;10193:88;;4653:211;4757:10;4728:4;4745:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;4745:32:0;;;;;;;;;;:41;;;4802:37;4728:4;;4745:32;;4802:37;;;;4780:6;1361:25:1;;1349:2;1334:18;;1215:177;4802:37:0;;;;;;;;-1:-1:-1;4857:4:0;4653:211;;;;;:::o;4111:88::-;4166:7;1941:13;1882:1;1941:2;:13;:::i;:::-;1930:25;;:7;:25;:::i;:::-;4177:19;;4111:88;:::o;9183:240::-;351:6;;-1:-1:-1;;;;;351:6:0;337:10;:20;329:57;;;;-1:-1:-1;;;329:57:0;;;;;;;:::i;:::-;;;;;;;;;9281:8:::1;:18;;;;9293:6;9281:18;9277:69;;;-1:-1:-1::0;;;;;9312:10:0;::::1;;::::0;;;:5:::1;:10;::::0;;;;;::::1;;9311:11;9303:40;;;::::0;-1:-1:-1;;;9303:40:0;;7646:2:1;9303:40:0::1;::::0;::::1;7628:21:1::0;7685:2;7665:18;;;7658:30;-1:-1:-1;;;7704:18:1;;;7697:46;7760:18;;9303:40:0::1;7444:340:1::0;9303:40:0::1;-1:-1:-1::0;;;;;9356:13:0;;::::1;;::::0;;;:6:::1;:13;::::0;;;;;;;:22;;;::::1;;-1:-1:-1::0;;9356:22:0;;::::1;;::::0;;9389:8:::1;:15:::0;;;;;:26;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;9183:240::o;5098:298::-;5201:4;5226:29;5244:10;5226:17;:29::i;:::-;5218:58;;;;-1:-1:-1;;;5218:58:0;;7991:2:1;5218:58:0;;;7973:21:1;8030:2;8010:18;;;8003:30;-1:-1:-1;;;8049:18:1;;;8042:46;8105:18;;5218:58:0;7789:340:1;5218:58:0;-1:-1:-1;;;;;5287:23:0;;;;;;:11;:23;;;;;;;;5311:10;5287:35;;;;;;;:45;;5326:6;;5287:23;:45;;5326:6;;5287:45;:::i;:::-;;;;-1:-1:-1;5350:43:0;;-1:-1:-1;5364:10:0;5376:8;5386:6;5350:13;:43::i;:::-;5343:50;5098:298;-1:-1:-1;;;;5098:298:0:o;10560:436::-;351:6;;-1:-1:-1;;;;;351:6:0;337:10;:20;329:57;;;;-1:-1:-1;;;329:57:0;;;;;;;:::i;:::-;10659:16:::1;10712:4;10678:31;::::0;::::1;1941:13;1882:1;1941:2;:13;:::i;:::-;1930:25;::::0;:7:::1;:25;:::i;:::-;10678:31;;;;:::i;:::-;:38;;;;:::i;:::-;:42;::::0;10719:1:::1;10678:42;:::i;:::-;10659:61;;10751:9;;10739:8;:21;;10731:44;;;::::0;-1:-1:-1;;;10731:44:0;;8821:2:1;10731:44:0::1;::::0;::::1;8803:21:1::0;8860:2;8840:18;;;8833:30;-1:-1:-1;;;8879:18:1;;;8872:40;8929:18;;10731:44:0::1;8619:334:1::0;10731:44:0::1;10786:9;:20:::0;;;10817::::1;10874:4;10840:31;::::0;::::1;1941:13;1882:1;1941:2;:13;:::i;:::-;1930:25;::::0;:7:::1;:25;:::i;:::-;10840:31;;;;:::i;:::-;:38;;;;:::i;:::-;:42;::::0;10881:1:::1;10840:42;:::i;:::-;10817:65;;10917:13;;10901:12;:29;;10893:56;;;::::0;-1:-1:-1;;;10893:56:0;;9160:2:1;10893:56:0::1;::::0;::::1;9142:21:1::0;9199:2;9179:18;;;9172:30;-1:-1:-1;;;9218:18:1;;;9211:44;9272:18;;10893:56:0::1;8958:338:1::0;10893:56:0::1;10960:13;:28:::0;-1:-1:-1;;;10560:436:0:o;9587:207::-;351:6;;-1:-1:-1;;;;;351:6:0;337:10;:20;329:57;;;;-1:-1:-1;;;329:57:0;;;;;;;:::i;:::-;9695:2:::1;9673:18;9683:8:::0;9673:7;:18:::1;:::i;:::-;:24;;;;9665:55;;;::::0;-1:-1:-1;;;9665:55:0;;9656:2:1;9665:55:0::1;::::0;::::1;9638:21:1::0;9695:2;9675:18;;;9668:30;-1:-1:-1;;;9714:18:1;;;9707:48;9772:18;;9665:55:0::1;9454:342:1::0;9665:55:0::1;9731:11;:21:::0;;-1:-1:-1;;9763:23:0;9731:21:::1;;::::0;;::::1;;-1:-1:-1::0;;9763:23:0;;;;;::::1;;::::0;;9587:207::o;714:130::-;351:6;;-1:-1:-1;;;;;351:6:0;337:10;:20;329:57;;;;-1:-1:-1;;;329:57:0;;;;;;;:::i;:::-;791:1:::1;774:19:::0;;-1:-1:-1;;;;;;774:19:0::1;::::0;;809:32:::1;::::0;4114:51:1;;;809:32:0::1;::::0;4102:2:1;4087:18;809:32:0::1;;;;;;;714:130::o:0;11004:267::-;351:6;;-1:-1:-1;;;;;351:6:0;337:10;:20;329:57;;;;-1:-1:-1;;;329:57:0;;;;;;;:::i;:::-;11126:30:::1;::::0;;::::1;::::0;:21;::::1;1941:13;1882:1;1941:2;:13;:::i;:::-;1930:25;::::0;:7:::1;:25;:::i;:::-;11126:21;;;;:::i;:::-;:30;;;;:::i;:::-;11115:8;:41:::0;11178:30:::1;::::0;;::::1;::::0;:21;::::1;1941:13;1882:1;1941:2;:13;:::i;:::-;1930:25;::::0;:7:::1;:25;:::i;:::-;11178:21;;;;:::i;:::-;:30;;;;:::i;:::-;11167:8;:41:::0;;;11237:8:::1;::::0;-1:-1:-1;11227:18:0::1;11219:44;;;::::0;-1:-1:-1;;;11219:44:0;;10003:2:1;11219:44:0::1;::::0;::::1;9985:21:1::0;10042:2;10022:18;;;10015:30;-1:-1:-1;;;10061:18:1;;;10054:43;10114:18;;11219:44:0::1;9801:337:1::0;11219:44:0::1;11004:267:::0;;;;:::o;4872:218::-;4951:4;4976:29;4994:10;4976:17;:29::i;:::-;4968:58;;;;-1:-1:-1;;;4968:58:0;;7991:2:1;4968:58:0;;;7973:21:1;8030:2;8010:18;;;8003:30;-1:-1:-1;;;8049:18:1;;;8042:46;8105:18;;4968:58:0;7789:340:1;4968:58:0;5044:43;5058:10;5070:8;5080:6;5044:13;:43::i;:::-;5037:50;4872:218;-1:-1:-1;;;4872:218:0:o;9909:276::-;351:6;;-1:-1:-1;;;;;351:6:0;337:10;:20;329:57;;;;-1:-1:-1;;;329:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10001:19:0;::::1;;::::0;;;:5:::1;:19;::::0;;;;;::::1;;10000:20;9992:56;;;::::0;-1:-1:-1;;;9992:56:0;;10345:2:1;9992:56:0::1;::::0;::::1;10327:21:1::0;10384:2;10364:18;;;10357:30;10423:25;10403:18;;;10396:53;10466:18;;9992:56:0::1;10143:347:1::0;9992:56:0::1;10059:16;:40:::0;;-1:-1:-1;;;;;10059:40:0;;::::1;-1:-1:-1::0;;;;;;10059:40:0;;::::1;::::0;::::1;::::0;;:16:::1;10110:20:::0;;;:6:::1;:20;::::0;;;;;;;:27;;-1:-1:-1;;10110:27:0;;::::1;::::0;::::1;::::0;;;10148:8:::1;:22:::0;;;;;;:29;;;;::::1;;::::0;;9909:276::o;6518:179::-;351:6;;-1:-1:-1;;;;;351:6:0;337:10;:20;329:57;;;;-1:-1:-1;;;329:57:0;;;;;;;:::i;:::-;6606:3:::1;1941:13;1882:1;1941:2;:13;:::i;:::-;1930:25;::::0;:7:::1;:25;:::i;:::-;6587:16;::::0;:1:::1;:16;:::i;:::-;:22;;;;:::i;:::-;6571:9;:38:::0;6656:3:::1;1941:13;1882:1;1941:2;:13;:::i;:::-;1930:25;::::0;:7:::1;:25;:::i;:::-;6637:16;::::0;:1:::1;:16;:::i;:::-;:22;;;;:::i;:::-;6621:13;:38:::0;6670:12:::1;:19:::0;;-1:-1:-1;;6670:19:0::1;6685:4;6670:19;::::0;;6518:179::o;5729:518::-;351:6;;-1:-1:-1;;;;;351:6:0;337:10;:20;329:57;;;;-1:-1:-1;;;329:57:0;;;;;;;:::i;:::-;3303:7:::1;:14:::0;;-1:-1:-1;;3303:14:0::1;;;::::0;;5811:10:::2;::::0;-1:-1:-1;;;;;5811:10:0::2;:24:::0;5803:47:::2;;;::::0;-1:-1:-1;;;5803:47:0;;10697:2:1;5803:47:0::2;::::0;::::2;10679:21:1::0;10736:2;10716:18;;;10709:30;-1:-1:-1;;;10755:18:1;;;10748:40;10805:18;;5803:47:0::2;10495:334:1::0;5803:47:0::2;5870:12;::::0;::::2;;5869:13;5861:38;;;::::0;-1:-1:-1;;;5861:38:0;;11036:2:1;5861:38:0::2;::::0;::::2;11018:21:1::0;11075:2;11055:18;;;11048:30;-1:-1:-1;;;11094:18:1;;;11087:42;11146:18;;5861:38:0::2;10834:336:1::0;5861:38:0::2;5930:1;5918:9;:13;:40;;;;5957:1;5935:21;:23;5918:40;5910:59;;;::::0;-1:-1:-1;;;5910:59:0;;11377:2:1;5910:59:0::2;::::0;::::2;11359:21:1::0;11416:1;11396:18;;;11389:29;-1:-1:-1;;;11434:18:1;;;11427:36;11480:18;;5910:59:0::2;11175:329:1::0;5910:59:0::2;6006:4;6013:1;5988:24:::0;;;:9:::2;:24;::::0;;;;;5980:48:::2;;;::::0;-1:-1:-1;;;5980:48:0;;11711:2:1;5980:48:0::2;::::0;::::2;11693:21:1::0;11750:1;11730:18;;;11723:29;-1:-1:-1;;;11768:18:1;;;11761:39;11817:18;;5980:48:0::2;11509:332:1::0;5980:48:0::2;6070:18;;;;;;;;;-1:-1:-1::0;;;;;6070:18:0::2;-1:-1:-1::0;;;;;6070:26:0::2;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6052:79;::::0;-1:-1:-1;;;6052:79:0;;6119:4:::2;6052:79;::::0;::::2;12314:34:1::0;-1:-1:-1;;;;;6126:4:0::2;12384:15:1::0;;12364:18;;;12357:43;6052:58:0;;;::::2;::::0;::::2;::::0;12249:18:1;;6052:79:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6039:10;:92:::0;;-1:-1:-1;;;;;;6039:92:0::2;-1:-1:-1::0;;;;;6039:92:0;;;::::2;::::0;;;::::2;::::0;;6174:4:::2;-1:-1:-1::0;6156:24:0;;;:9:::2;:24;::::0;;;;;6142:62:::2;::::0;6182:21:::2;6142:13;:62::i;:::-;6221:10;::::0;-1:-1:-1;;;;;6221:10:0::2;6215:17;::::0;;;:5:::2;:17;::::0;;;;:24;;-1:-1:-1;;6215:24:0::2;6235:4;6215:24;::::0;;3332:7:::1;:15:::0;;-1:-1:-1;;3332:15:0::1;::::0;;5729:518::o;557:151::-;351:6;;-1:-1:-1;;;;;351:6:0;337:10;:20;329:57;;;;-1:-1:-1;;;329:57:0;;;;;;;:::i;:::-;641:6:::1;:17:::0;;-1:-1:-1;;;;;;641:17:0::1;-1:-1:-1::0;;;;;641:17:0;::::1;::::0;;::::1;::::0;;;675:30:::1;::::0;4114:51:1;;;675:30:0::1;::::0;4102:2:1;4087:18;675:30:0::1;;;;;;;557:151:::0;:::o;8234:289::-;8359:12;;8303:4;;;;8359:12;;8354:130;;;-1:-1:-1;8390:4:0;8354:130;;;-1:-1:-1;;;;;8417:18:0;;;;;;:6;:18;;;;;;;;:42;;;;-1:-1:-1;;;;;;8439:20:0;;;;;;:8;:20;;;;;;;;8417:42;8413:71;;;-1:-1:-1;8477:4:0;8504:11;8234:289;-1:-1:-1;;8234:289:0:o;6705:954::-;6796:4;-1:-1:-1;;;;;6821:20:0;;6813:59;;;;-1:-1:-1;;;6813:59:0;;12829:2:1;6813:59:0;;;12811:21:1;12868:2;12848:18;;;12841:30;12907:28;12887:18;;;12880:56;12953:18;;6813:59:0;12627:350:1;6813:59:0;6888:12;;;;6883:91;;-1:-1:-1;;;;;6912:14:0;;;;;;:6;:14;;;;;;;;:34;;;;-1:-1:-1;;;;;;6930:16:0;;;;;;:8;:16;;;;;;;;6912:34;6904:67;;;;-1:-1:-1;;;6904:67:0;;13184:2:1;6904:67:0;;;13166:21:1;13223:2;13203:18;;;13196:30;-1:-1:-1;;;13242:18:1;;;13235:50;13302:18;;6904:67:0;12982:344:1;6904:67:0;6990:7;;;;;;;6989:8;:27;;;;-1:-1:-1;;;;;;7001:15:0;;;;;;:5;:15;;;;;;;;6989:27;:49;;;;;7030:8;;7020:6;:18;;6989:49;6984:81;;;7042:20;:18;:20::i;:::-;-1:-1:-1;;;;;7082:23:0;;7100:4;7082:23;;;;:52;;-1:-1:-1;;;;;;7109:25:0;;7129:4;7109:25;;7082:52;:72;;;;-1:-1:-1;7148:6:0;;-1:-1:-1;;;;;7138:16:0;;;7148:6;;7138:16;;7082:72;7077:174;;;7181:38;7194:6;7202:8;7212:6;7181:12;:38::i;:::-;7173:65;;;;-1:-1:-1;;;7173:65:0;;13533:2:1;7173:65:0;;;13515:21:1;13572:2;13552:18;;;13545:30;-1:-1:-1;;;13591:18:1;;;13584:44;13645:18;;7173:65:0;13331:338:1;7173:65:0;7263:18;7284:39;7298:6;7306:8;7316:6;7284:13;:39::i;:::-;7263:60;-1:-1:-1;7334:23:0;7360:19;7263:60;7360:6;:19;:::i;:::-;-1:-1:-1;;;;;7393:15:0;;;;;;:7;:15;;;;;;7334:45;;-1:-1:-1;7393:15:0;;7390:53;;;7419:24;7428:15;7419:6;:24;:::i;:::-;7410:33;;7390:53;-1:-1:-1;;;;;7454:17:0;;;;;;:9;:17;;;;;:27;;7475:6;;7454:17;:27;;7475:6;;7454:27;:::i;:::-;;;;-1:-1:-1;;7510:4:0;7492:24;;;;:9;:24;;;;;:38;;7520:10;;7492:24;:38;;7520:10;;7492:38;:::i;:::-;;;;-1:-1:-1;;;;;;;7541:19:0;;;;;;:9;:19;;;;;:38;;7564:15;;7541:19;:38;;7564:15;;7541:38;:::i;:::-;;;;;;;;7612:8;-1:-1:-1;;;;;7595:34:0;7604:6;-1:-1:-1;;;;;7595:34:0;;7622:6;7595:34;;;;1361:25:1;;1349:2;1334:18;;1215:177;7595:34:0;;;;;;;;-1:-1:-1;7647:4:0;;6705:954;-1:-1:-1;;;;;6705:954:0:o;6255:255::-;6343:28;6358:12;6343:14;:28::i;:::-;6382:18;;6476:7;;6382:120;;-1:-1:-1;;;6382:120:0;;6449:4;6382:120;;;14015:34:1;14065:18;;;14058:34;;;6382:18:0;14108::1;;;14101:34;;;14151:18;;;14144:34;-1:-1:-1;;;;;6476:7:0;;;14194:19:1;;;14187:44;6485:15:0;14247:19:1;;;14240:35;6382:18:0;;;:34;;6424:13;;13949:19:1;;6382:120:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;6255:255;;:::o;11281:518::-;3303:7;:14;;-1:-1:-1;;3303:14:0;;;;;11389:4:::1;3303:14:::0;11371:24;;;:9:::1;:24;::::0;;;;;11433:8:::1;::::0;11411:30;::::1;::::0;::::1;::::0;:46:::1;;-1:-1:-1::0;11445:12:0::1;::::0;::::1;;11411:46;11406:386;;;11502:8;;11480:18;:30;11475:72;;-1:-1:-1::0;11536:8:0::1;::::0;11475:72:::1;11575:40;11596:18;11575:20;:40::i;:::-;11674:21;11713:23:::0;;11710:71:::1;;11740:38;11758:19;11740:17;:38::i;:::-;11460:332;11406:386;-1:-1:-1::0;3332:7:0;:15;;-1:-1:-1;;3332:15:0;;;11281:518::o;7667:559::-;7835:12;;7774:4;;7815;;7835:12;;:37;;;;-1:-1:-1;;;;;;7852:20:0;;;;;;:8;:20;;;;;;;;7851:21;7835:37;:60;;;;-1:-1:-1;;;;;;7877:18:0;;;;;;:8;:18;;;;;;;;7876:19;7835:60;7830:355;;;7935:9;;7918:14;:26;7913:261;;;-1:-1:-1;7986:5:0;7913:261;;;-1:-1:-1;;;;;8051:15:0;;;;;;:5;:15;;;;;;;;8050:16;:74;;;;-1:-1:-1;8110:13:0;;-1:-1:-1;;;;;8071:19:0;;;;;;:9;:19;;;;;;:36;;8093:14;;8071:36;:::i;:::-;:52;8050:74;8027:147;;;-1:-1:-1;8166:5:0;8202:16;7667:559;-1:-1:-1;;;;7667:559:0:o;8531:498::-;8696:12;;8632:7;;;;8696:12;;8695:13;;:35;;-1:-1:-1;;;;;;8712:18:0;;;;;;:6;:18;;;;;;;;8695:35;:56;;;-1:-1:-1;;;;;;8734:17:0;;;;;;:6;:17;;;;;;;;8695:56;8690:303;;;-1:-1:-1;8782:1:0;8690:303;;;-1:-1:-1;;;;;8807:17:0;;;;;;:5;:17;;;;;;;;8802:191;;;8864:11;;8878:3;;8855:20;;8864:11;;;;;8855:6;:20;:::i;:::-;:26;;;;:::i;:::-;8843:38;;8802:191;;;-1:-1:-1;;;;;8906:16:0;;;;;;:5;:16;;;;;;;;8901:92;;;8962:12;;8977:3;;8953:21;;8962:12;;8953:6;:21;:::i;:::-;:27;;;;:::i;:::-;8941:39;8531:498;-1:-1:-1;;;;;8531:498:0:o;5404:317::-;5495:4;5475:26;;;;:11;:26;;;;;;;;2933:42;5475:46;;;;;;;;:61;-1:-1:-1;5470:244:0;;;5574:4;5554:26;;;;:11;:26;;;;;;;;2933:42;5554:46;;;;;;;;;;-1:-1:-1;;5554:66:0;;;;5640:62;;1361:25:1;;;2933:42:0;;5574:4;5640:62;;1334:18:1;5640:62:0;;;;;;;5470:244;5404:317;:::o;11807:348::-;11877:27;11892:11;11877:14;:27::i;:::-;11939:16;;;11953:1;11939:16;;;;;;;;11915:21;;11939:16;;;;;;;;;;-1:-1:-1;11939:16:0;11915:40;;11985:4;11966;11971:1;11966:7;;;;;;;;:::i;:::-;;;;;;:25;-1:-1:-1;;;;;11966:25:0;;;-1:-1:-1;;;;;11966:25:0;;;;;12012:4;12002;12007:1;12002:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12002:14:0;;;:7;;;;;;;;;:14;12028:18;;:119;;-1:-1:-1;;;12028:119:0;;:18;;;:69;;:119;;12098:11;;12028:18;;12112:4;;12125;;12131:15;;12028:119;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11866:289;11807:348;:::o;12163:103::-;12225:16;;:33;;-1:-1:-1;;;;;12225:16:0;;;;:33;;;;;12251:6;;12225:16;:33;:16;:33;12251:6;12225:16;:33;;;;;;;;;;;;;;;;;;;;;12163:103;:::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:160::-;1462:20;;1518:13;;1511:21;1501:32;;1491:60;;1547:1;1544;1537:12;1491:60;1397:160;;;:::o;1562:383::-;1633:6;1641;1649;1702:2;1690:9;1681:7;1677:23;1673:32;1670:52;;;1718:1;1715;1708:12;1670:52;1757:9;1744:23;1776:31;1801:5;1776:31;:::i;:::-;1826:5;-1:-1:-1;1850:35:1;1881:2;1866:18;;1850:35;:::i;:::-;1840:45;;1904:35;1935:2;1924:9;1920:18;1904:35;:::i;:::-;1894:45;;1562:383;;;;;:::o;1950:456::-;2027:6;2035;2043;2096:2;2084:9;2075:7;2071:23;2067:32;2064:52;;;2112:1;2109;2102:12;2064:52;2151:9;2138:23;2170:31;2195:5;2170:31;:::i;:::-;2220:5;-1:-1:-1;2277:2:1;2262:18;;2249:32;2290:33;2249:32;2290:33;:::i;:::-;1950:456;;2342:7;;-1:-1:-1;;;2396:2:1;2381:18;;;;2368:32;;1950:456::o;2600:247::-;2659:6;2712:2;2700:9;2691:7;2687:23;2683:32;2680:52;;;2728:1;2725;2718:12;2680:52;2767:9;2754:23;2786:31;2811:5;2786:31;:::i;3125:159::-;3192:20;;3252:6;3241:18;;3231:29;;3221:57;;3274:1;3271;3264:12;3289:256;3355:6;3363;3416:2;3404:9;3395:7;3391:23;3387:32;3384:52;;;3432:1;3429;3422:12;3384:52;3455:28;3473:9;3455:28;:::i;:::-;3445:38;;3502:37;3535:2;3524:9;3520:18;3502:37;:::i;:::-;3492:47;;3289:256;;;;;:::o;3550:156::-;3616:20;;3676:4;3665:16;;3655:27;;3645:55;;3696:1;3693;3686:12;3711:252;3775:6;3783;3836:2;3824:9;3815:7;3811:23;3807:32;3804:52;;;3852:1;3849;3842:12;3804:52;3875:27;3892:9;3875:27;:::i;:::-;3865:37;;3921:36;3953:2;3942:9;3938:18;3921:36;:::i;4176:163::-;4243:20;;4303:10;4292:22;;4282:33;;4272:61;;4329:1;4326;4319:12;4344:401;4426:6;4434;4442;4450;4503:3;4491:9;4482:7;4478:23;4474:33;4471:53;;;4520:1;4517;4510:12;4471:53;4543:28;4561:9;4543:28;:::i;:::-;4533:38;;4590:37;4623:2;4612:9;4608:18;4590:37;:::i;:::-;4580:47;;4646:37;4679:2;4668:9;4664:18;4646:37;:::i;:::-;4636:47;;4702:37;4735:2;4724:9;4720:18;4702:37;:::i;:::-;4692:47;;4344:401;;;;;;;:::o;4750:388::-;4818:6;4826;4879:2;4867:9;4858:7;4854:23;4850:32;4847:52;;;4895:1;4892;4885:12;4847:52;4934:9;4921:23;4953:31;4978:5;4953:31;:::i;:::-;5003:5;-1:-1:-1;5060:2:1;5045:18;;5032:32;5073:33;5032:32;5073:33;:::i;:::-;5125:7;5115:17;;;4750:388;;;;;:::o;5403:127::-;5464:10;5459:3;5455:20;5452:1;5445:31;5495:4;5492:1;5485:15;5519:4;5516:1;5509:15;5535:422;5624:1;5667:5;5624:1;5681:270;5702:7;5692:8;5689:21;5681:270;;;5761:4;5757:1;5753:6;5749:17;5743:4;5740:27;5737:53;;;5770:18;;:::i;:::-;5820:7;5810:8;5806:22;5803:55;;;5840:16;;;;5803:55;5919:22;;;;5879:15;;;;5681:270;;;5685:3;5535:422;;;;;:::o;5962:806::-;6011:5;6041:8;6031:80;;-1:-1:-1;6082:1:1;6096:5;;6031:80;6130:4;6120:76;;-1:-1:-1;6167:1:1;6181:5;;6120:76;6212:4;6230:1;6225:59;;;;6298:1;6293:130;;;;6205:218;;6225:59;6255:1;6246:10;;6269:5;;;6293:130;6330:3;6320:8;6317:17;6314:43;;;6337:18;;:::i;:::-;-1:-1:-1;;6393:1:1;6379:16;;6408:5;;6205:218;;6507:2;6497:8;6494:16;6488:3;6482:4;6479:13;6475:36;6469:2;6459:8;6456:16;6451:2;6445:4;6442:12;6438:35;6435:77;6432:159;;;-1:-1:-1;6544:19:1;;;6576:5;;6432:159;6623:34;6648:8;6642:4;6623:34;:::i;:::-;6693:6;6689:1;6685:6;6681:19;6672:7;6669:32;6666:58;;;6704:18;;:::i;:::-;6742:20;;5962:806;-1:-1:-1;;;5962:806:1:o;6773:140::-;6831:5;6860:47;6901:4;6891:8;6887:19;6881:4;6860:47;:::i;6918:168::-;6991:9;;;7022;;7039:15;;;7033:22;;7019:37;7009:71;;7060:18;;:::i;7091:348::-;7293:2;7275:21;;;7332:2;7312:18;;;7305:30;7371:26;7366:2;7351:18;;7344:54;7430:2;7415:18;;7091:348::o;8134:128::-;8201:9;;;8222:11;;;8219:37;;;8236:18;;:::i;8267:217::-;8307:1;8333;8323:132;;8377:10;8372:3;8368:20;8365:1;8358:31;8412:4;8409:1;8402:15;8440:4;8437:1;8430:15;8323:132;-1:-1:-1;8469:9:1;;8267:217::o;8489:125::-;8554:9;;;8575:10;;;8572:36;;;8588:18;;:::i;9301:148::-;9389:4;9368:12;;;9382;;;9364:31;;9407:13;;9404:39;;;9423:18;;:::i;11846:251::-;11916:6;11969:2;11957:9;11948:7;11944:23;11940:32;11937:52;;;11985:1;11982;11975:12;11937:52;12017:9;12011:16;12036:31;12061:5;12036:31;:::i;14286:306::-;14374:6;14382;14390;14443:2;14431:9;14422:7;14418:23;14414:32;14411:52;;;14459:1;14456;14449:12;14411:52;14488:9;14482:16;14472:26;;14538:2;14527:9;14523:18;14517:25;14507:35;;14582:2;14571:9;14567:18;14561:25;14551:35;;14286:306;;;;;:::o;14729:127::-;14790:10;14785:3;14781:20;14778:1;14771:31;14821:4;14818:1;14811:15;14845:4;14842:1;14835:15;14861:980;15123:4;15171:3;15160:9;15156:19;15202:6;15191:9;15184:25;15228:2;15266:6;15261:2;15250:9;15246:18;15239:34;15309:3;15304:2;15293:9;15289:18;15282:31;15333:6;15368;15362:13;15399:6;15391;15384:22;15437:3;15426:9;15422:19;15415:26;;15476:2;15468:6;15464:15;15450:29;;15497:1;15507:195;15521:6;15518:1;15515:13;15507:195;;;15586:13;;-1:-1:-1;;;;;15582:39:1;15570:52;;15677:15;;;;15642:12;;;;15618:1;15536:9;15507:195;;;-1:-1:-1;;;;;;;15758:32:1;;;;15753:2;15738:18;;15731:60;-1:-1:-1;;;15822:3:1;15807:19;15800:35;15719:3;14861:980;-1:-1:-1;;;14861:980:1:o

Swarm Source

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