ETH Price: $3,676.21 (+1.58%)

Token

ERC-20: The GameHub (GHUB)
 

Overview

Max Total Supply

100,000,000 GHUB

Holders

400

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
100,506.987842038 GHUB

Value
$0.00
0xf7729002d046a4c6d09df94ac6a6bddd29742b4e
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:
TheGamehub

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-10-21
*/

/**

Join us on our mission to become the go-to hub for immersive and interactive crypto experiences. Play your favourite games against your friends or online with our unique crypto gaming Ecosystem.

Website: https://www.thegamehub.io
Twitter: https://x.com/TheGameHub_io
Telegram: https://t.me/TheGameHubIO
Linktree: https://linktr.ee/thegamehub.io

**/
// SPDX-License-Identifier: Unlicensed

pragma solidity 0.8.26;

interface ERC20 {
    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 getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

abstract contract Context {
    
    function _msgSender() internal view virtual returns (address payable) {
        return payable(msg.sender);
    }
}

contract Ownable is Context {
    address public _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() external virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

interface IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface InterfaceLP {
    function sync() external;
}

contract TheGamehub is Ownable, ERC20 {

    address immutable WETH;
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;

    string constant _name = "The GameHub";
    string constant _symbol = "GHUB";
    uint8 constant _decimals = 9; 
  

    uint256 constant _totalSupply = 100000000 * 10**_decimals;

    uint256 public _maxTxAmount = _totalSupply / 50;
    uint256 public _maxWalletAmount = _totalSupply / 50;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;

    
    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) private _isUnauthorized;

    uint256 private buyMarketingFee    = 15;
    uint256 private buyTeamFee         = 15;
    uint256 public  buyTotalFee        = buyTeamFee + buyMarketingFee;

    uint256 private sellMarketingFee   = 15;
    uint256 private sellTeamFee        = 15;
    uint256 public  sellTotalFee       = sellTeamFee + sellMarketingFee;

    uint256 constant transferFee        = 0;
    
    uint256 private lastSwap;
    address private marketingFeeReceiver;
    address private teamFeeReceiver;

    IDEXRouter public router;
    InterfaceLP private pairContract;
    address immutable public pair;
    
    bool public TradingOpen = false;    

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply / 100; 
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    event maxWalletUpdated(uint256 indexed maxWalletAmount);
    event maxTxUpdated(uint256 indexed maxTxAmount);
    event maxLimitsRemoved(uint256 indexed maxWalletToken, uint256 indexed maxTxAmount);
    event exemptFees(address indexed holder, bool indexed exempt);
    event exemptTxLimit(address indexed holder, bool indexed exempt);
    event buyFeesUpdated(uint256 indexed buyTeamFee, uint256 indexed buyMarketingFee);
    event sellFeesUpdated(uint256 indexed sellTeamFee, uint256 indexed sellMarketingFee);
    event feesWalletsUpdated(address indexed marketingFeeReceiver, address indexed teamFeeReceiver);
    event swapbackSettingsUpdated(bool indexed enabled, uint256 indexed amount);
    event tradingEnabled(bool indexed enabled, uint256 indexed startTime);
    
    constructor () {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        pairContract = InterfaceLP(pair);
       
        
        _allowances[address(this)][address(router)] = type(uint256).max;

        marketingFeeReceiver = 0x0Fc8cbD075cCc7eD5b829646Ab4fA72A2e393317;
        teamFeeReceiver = 0x97c424eeD2E86e1917E4ca9417E79acAc1d0723d;

        isFeeExempt[msg.sender] = true; 
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[pair] = true;
        isTxLimitExempt[marketingFeeReceiver] = true;
        isTxLimitExempt[address(this)] = true;
        

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

    }

    receive() external payable { }

    function totalSupply() external pure override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) {return owner();}
    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) {
        require(spender != address(0), "Spender is the zero address");
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveAll(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        require(recipient != address(0), "Recipient is the zero address");
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        require(sender != address(0), "Sender is the zero address");
        require(recipient != address(0), "Recipient is the zero address");
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if(currentAllowance != type(uint256).max){
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _allowances[sender][_msgSender()] = currentAllowance - amount;
            }
        }

        return _transferFrom(sender, recipient, amount);
    }

    function setMaxWallet(uint256 maxWalletPercent) external onlyOwner {
        require(maxWalletPercent >= 5);
        _maxWalletAmount = (_totalSupply * maxWalletPercent ) / 1000;
        emit maxWalletUpdated(_maxWalletAmount);       
    }

    function setMaxTx(uint256 maxTxPercent) external onlyOwner {
        require(maxTxPercent >= 5); 
        _maxTxAmount = (_totalSupply * maxTxPercent ) / 1000;
        emit maxTxUpdated(_maxTxAmount);
    }

   
  
    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(!_isUnauthorized[sender] && !_isUnauthorized[recipient], "You are a Unauthorized");

        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(sender != owner()){
            require(TradingOpen,"Trading not open yet");
        
        }
        
        checkTxLimit(sender, amount);
        
        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");

        uint256 amountReceived = (isFeeExempt[sender] || isFeeExempt[recipient]) ? amount : takeFee(sender, amount, recipient);

        if (sender != owner() && (recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != marketingFeeReceiver && !isTxLimitExempt[recipient])){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amountReceived) <= _maxWalletAmount,"Total Holding is currently limited, you can not buy that much.");}

        if(
            lastSwap != block.number &&
            _balances[address(this)] >= swapThreshold &&
            swapEnabled &&
            !inSwap &&
            recipient == pair
        ){ 
            swapBack();
            lastSwap = block.number;
        }

        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amountReceived;

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "Tx Limit Exceeded");
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        uint256 feeAmount = 0;

        if(recipient == pair) {
            feeAmount = (amount * sellTotalFee) / 100;
        } else if(sender == pair) {
            feeAmount = (amount * buyTotalFee) / 100;
        }else{
            feeAmount = (amount * transferFee) / 100;
        }

        _balances[address(this)] += feeAmount;
        emit Transfer(sender, address(this), feeAmount);
        uint256 notFeeAmount = amount - feeAmount;

        return notFeeAmount;
    }

    function removeMaxLimits() external onlyOwner { 
        _maxWalletAmount = _totalSupply;
        _maxTxAmount = _totalSupply;
        emit maxLimitsRemoved(_maxWalletAmount, _maxTxAmount);
    }

    function clearStuckToken(address tokenAddress, uint256 tokens) external returns (bool) {
        require(msg.sender == marketingFeeReceiver || msg.sender == teamFeeReceiver);
        require(address(tokenAddress) != address(this));
        if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }
        return ERC20(tokenAddress).transfer(msg.sender, tokens);
    }


    function StartTheGameHub() external onlyOwner {
        require(!TradingOpen,"Trading already Enabled.");
        TradingOpen = true;
        lastSwap = block.number;
        emit tradingEnabled(TradingOpen, lastSwap);
    }

    function swapBack() internal swapping {
        uint256 totalFee = buyTotalFee + sellTotalFee;
        uint256 teamFee = buyTeamFee + sellTeamFee;
        uint256 amountETHteam = 0;
        uint256 amountETHMarketing = 0;

        uint256 amountToSwap = swapThreshold;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 totalETHFee = address(this).balance;

        if(totalFee == 0) {
            amountETHteam = 0;
        } else {
            amountETHteam = (totalETHFee * teamFee) / totalFee;
        }

        amountETHMarketing = totalETHFee - amountETHteam;

        (bool tmpSuccess,) = payable(teamFeeReceiver).call{value: amountETHteam}("");
        require(tmpSuccess, "Failed to send ether to Team Fee Receiver.");
        
        (bool tmpSuccess1,) = payable(marketingFeeReceiver).call{value: amountETHMarketing}("");
        require(tmpSuccess1, "Failed to send ether to Marketing Fee Receiver.");

    }

    function exemptAll(address holder, bool exempt) external onlyOwner {
        require(holder != address(0), "Holder is the zero address");
        isFeeExempt[holder] = exempt;
        isTxLimitExempt[holder] = exempt;
        emit exemptFees(holder, exempt);
    }

    function setTxLimitExempt(address holder, bool exempt) external onlyOwner {
        require(holder != address(0), "Holder is the zero address");
        isTxLimitExempt[holder] = exempt;
        emit exemptTxLimit(holder, exempt);
    }


    function updateBuyFees(uint256 _teamFee, uint256 _marketingFee) external onlyOwner {
        require( _teamFee + _marketingFee <= 5, "Fees can not be more than 5%"); 
        buyTeamFee = _teamFee;
        buyMarketingFee = _marketingFee;
        buyTotalFee =_teamFee+ _marketingFee;
        emit buyFeesUpdated(buyTeamFee, buyMarketingFee);
    }

    function updateSellFees(uint256 _teamFee, uint256 _marketingFee) external onlyOwner {
        require(_teamFee + _marketingFee <= 5, "Fees can not be more than 5%"); 
        sellTeamFee = _teamFee;
        sellMarketingFee = _marketingFee;
        sellTotalFee =_teamFee+ _marketingFee;
        emit sellFeesUpdated(sellTeamFee, sellMarketingFee);
    }

    function updateReceiverWallets( address _marketingFeeReceiver, address _teamFeeReceiver) external onlyOwner {
        require(_marketingFeeReceiver != address(0) && _teamFeeReceiver != address(0) , "Fee receiver cannot be zero address");
        marketingFeeReceiver = _marketingFeeReceiver;
        teamFeeReceiver = _teamFeeReceiver;
        emit feesWalletsUpdated(marketingFeeReceiver, teamFeeReceiver);
    }

    function editSwapbackSettings(bool _enabled, uint256 _amount) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = _amount * 10**_decimals;
        emit swapbackSettingsUpdated(_enabled, _amount);
    }

     function updateIsUnauthorized(address account, bool state) external onlyOwner{
        _isUnauthorized[account] = state;
    }
    
    function bulkIsUnauthorized(address[] memory accounts, bool state) external onlyOwner{
        for(uint256 i =0; i < accounts.length; i++){
            _isUnauthorized[accounts[i]] = state;

        }
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply - balanceOf(DEAD);
    }

}

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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"buyTeamFee","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"buyMarketingFee","type":"uint256"}],"name":"buyFeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"},{"indexed":true,"internalType":"bool","name":"exempt","type":"bool"}],"name":"exemptFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"},{"indexed":true,"internalType":"bool","name":"exempt","type":"bool"}],"name":"exemptTxLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"marketingFeeReceiver","type":"address"},{"indexed":true,"internalType":"address","name":"teamFeeReceiver","type":"address"}],"name":"feesWalletsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxWalletToken","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"maxLimitsRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"maxTxUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxWalletAmount","type":"uint256"}],"name":"maxWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"sellTeamFee","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"sellMarketingFee","type":"uint256"}],"name":"sellFeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"enabled","type":"bool"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"swapbackSettingsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"enabled","type":"bool"},{"indexed":true,"internalType":"uint256","name":"startTime","type":"uint256"}],"name":"tradingEnabled","type":"event"},{"inputs":[],"name":"StartTheGameHub","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"spender","type":"address"}],"name":"approveAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkIsUnauthorized","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"editSwapbackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"exemptAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeMaxLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletPercent","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_teamFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateIsUnauthorized","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_teamFeeReceiver","type":"address"}],"name":"updateReceiverWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_teamFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c060405260326100126009600a6104cc565b610020906305f5e1006104e1565b61002a91906104f8565b600155603261003b6009600a6104cc565b610049906305f5e1006104e1565b61005391906104f8565b600255600f6008819055600981905561006c9080610517565b600a55600f600b819055600c8190556100859080610517565b600d556012805461ffff60a01b1916600160a81b17905560646100aa6009600a6104cc565b6100b8906305f5e1006104e1565b6100c291906104f8565b6013553480156100d0575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601180546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa158015610173573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610197919061052a565b6001600160a01b039081166080526011546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa1580156101e5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610209919061052a565b6080516040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303815f875af1158015610257573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061027b919061052a565b6001600160a01b0390811660a0819052601280546001600160a01b03199081168317909155305f8181526004602090815260408083206011548816845282528083205f199055600f80548616730fc8cbd075ccc7ed5b829646ab4fa72a2e393317178155601080549096167397c424eed2e86e1917e4ca9417e79acac1d0723d1790955533835260058252808320805460ff1990811660019081179092556006909352818420805484168217905595835280832080548316871790559354909516815282812080548616851790559081522080549092161790556103616009600a6104cc565b61036f906305f5e1006104e1565b335f81815260036020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6103af6009600a6104cc565b6103bd906305f5e1006104e1565b60405190815260200160405180910390a3610550565b634e487b7160e01b5f52601160045260245ffd5b6001815b600184111561042257808504811115610406576104066103d3565b600184161561041457908102905b60019390931c9280026103eb565b935093915050565b5f82610438575060016104c6565b8161044457505f6104c6565b816001811461045a576002811461046457610480565b60019150506104c6565b60ff841115610475576104756103d3565b50506001821b6104c6565b5060208310610133831016604e8410600b84101617156104a3575081810a6104c6565b6104af5f1984846103e7565b805f19048211156104c2576104c26103d3565b0290505b92915050565b5f6104da60ff84168361042a565b9392505050565b80820281158282048414176104c6576104c66103d3565b5f8261051257634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156104c6576104c66103d3565b5f6020828403121561053a575f80fd5b81516001600160a01b03811681146104da575f80fd5b60805160a0516123c361058d5f395f81816105bc015281816116dd0152818161183f01528181611a600152611aac01525f611c1701526123c35ff3fe60806040526004361061021f575f3560e01c806370a082311161011e578063a8aa1b31116100a8578063ccf8c0361161006d578063ccf8c0361461064e578063dd62ed3e1461066d578063f2fde38b146106b1578063f6a78e17146106d0578063f887ea40146106e4575f80fd5b8063a8aa1b31146105ab578063a9059cbb146105de578063b0069abb146105fd578063b2bdfa7b14610611578063bc3371821461062f575f80fd5b80637d1db4a5116100ee5780637d1db4a5146104ff578063893d20e8146105145780638d7a8ba7146105445780638da5cb5b1461056357806395d89b411461057f575f80fd5b806370a0823114610479578063715018a6146104ad57806377b54bad146104c15780637ca4b685146104e0575f80fd5b806318160ddd116101aa57806339854b921161016f57806339854b92146103e75780635d0044ca1461040657806366ca9b83146104255780636c0a24eb146104445780636ddd171314610459575f80fd5b806318160ddd1461037057806323b872dd146103845780632b112e49146103a3578063313ce567146103b75780633705b392146103d2575f80fd5b80630621472c116101f05780630621472c146102a757806306fdde03146102d657806308fd3d0514610312578063095ea7b314610332578063121555a614610351575f80fd5b8062afb3251461022a57806302dbd8f81461025257806304368f65146102735780630445b66714610292575f80fd5b3661022657005b5f80fd5b348015610235575f80fd5b5061023f600d5481565b6040519081526020015b60405180910390f35b34801561025d575f80fd5b5061027161026c366004611e74565b610703565b005b34801561027e575f80fd5b5061027161028d366004611eb4565b6107d8565b34801561029d575f80fd5b5061023f60135481565b3480156102b2575f80fd5b506102c66102c1366004611ef4565b610863565b6040519015158152602001610249565b3480156102e1575f80fd5b5060408051808201909152600b81526a2a34329023b0b6b2a43ab160a91b60208201525b6040516102499190611f0d565b34801561031d575f80fd5b506012546102c690600160a01b900460ff1681565b34801561033d575f80fd5b506102c661034c366004611f42565b610875565b34801561035c575f80fd5b5061027161036b366004611f5c565b61092f565b34801561037b575f80fd5b5061023f610a2d565b34801561038f575f80fd5b506102c661039e366004611f8d565b610a4d565b3480156103ae575f80fd5b5061023f610bc4565b3480156103c2575f80fd5b5060405160098152602001610249565b3480156103dd575f80fd5b5061023f600a5481565b3480156103f2575f80fd5b50610271610401366004611fdb565b610c16565b348015610411575f80fd5b506102716104203660046120af565b610c9e565b348015610430575f80fd5b5061027161043f366004611e74565b610d36565b34801561044f575f80fd5b5061023f60025481565b348015610464575f80fd5b506012546102c690600160a81b900460ff1681565b348015610484575f80fd5b5061023f610493366004611ef4565b6001600160a01b03165f9081526003602052604090205490565b3480156104b8575f80fd5b50610271610e02565b3480156104cc575f80fd5b506102c66104db366004611f42565b610e73565b3480156104eb575f80fd5b506102716104fa3660046120c6565b610f92565b34801561050a575f80fd5b5061023f60015481565b34801561051f575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610249565b34801561054f575f80fd5b5061027161055e3660046120c6565b610fe5565b34801561056e575f80fd5b505f546001600160a01b031661052c565b34801561058a575f80fd5b5060408051808201909152600481526323a42aa160e11b6020820152610305565b3480156105b6575f80fd5b5061052c7f000000000000000000000000000000000000000000000000000000000000000081565b3480156105e9575f80fd5b506102c66105f8366004611f42565b6110b7565b348015610608575f80fd5b50610271611119565b34801561061c575f80fd5b505f5461052c906001600160a01b031681565b34801561063a575f80fd5b506102716106493660046120af565b6111ef565b348015610659575f80fd5b506102716106683660046120c6565b611287565b348015610678575f80fd5b5061023f610687366004611f5c565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b3480156106bc575f80fd5b506102716106cb366004611ef4565b61136d565b3480156106db575f80fd5b50610271611454565b3480156106ef575f80fd5b5060115461052c906001600160a01b031681565b5f546001600160a01b031633146107355760405162461bcd60e51b815260040161072c906120fb565b60405180910390fd5b60056107418284612144565b111561078f5760405162461bcd60e51b815260206004820152601c60248201527f466565732063616e206e6f74206265206d6f7265207468616e20352500000000604482015260640161072c565b600c829055600b8190556107a38183612144565b600d55600b54600c546040517f1568ae12a48f94971e72d93f8f5846cfda77ba2ba927d867f64e498835788138905f90a35050565b5f546001600160a01b031633146108015760405162461bcd60e51b815260040161072c906120fb565b6012805460ff60a81b1916600160a81b841515021790556108246009600a61223a565b61082e9082612248565b6013556040518190831515907fd896c9007bf8dc883f6b125322395dddc87bf825aed2e302315071c66e0d5dd9905f90a35050565b5f61086f825f19610875565b92915050565b5f6001600160a01b0383166108cc5760405162461bcd60e51b815260206004820152601b60248201527f5370656e64657220697320746865207a65726f20616464726573730000000000604482015260640161072c565b335f8181526004602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350600192915050565b5f546001600160a01b031633146109585760405162461bcd60e51b815260040161072c906120fb565b6001600160a01b0382161580159061097857506001600160a01b03811615155b6109d05760405162461bcd60e51b815260206004820152602360248201527f4665652072656365697665722063616e6e6f74206265207a65726f206164647260448201526265737360e81b606482015260840161072c565b600f80546001600160a01b03199081166001600160a01b03858116918217909355601080549092169284169283179091556040517f5b1b7727e42d2f1e9652d0af0d3b4f580a270e5d7ff9a47120c8602d4ec2def5905f90a35050565b5f610a3a6009600a61223a565b610a48906305f5e100612248565b905090565b5f6001600160a01b038416610aa45760405162461bcd60e51b815260206004820152601a60248201527f53656e64657220697320746865207a65726f2061646472657373000000000000604482015260640161072c565b6001600160a01b038316610afa5760405162461bcd60e51b815260206004820152601d60248201527f526563697069656e7420697320746865207a65726f2061646472657373000000604482015260640161072c565b6001600160a01b0384165f9081526004602090815260408083203384529091529020545f198114610bae5782811015610b865760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161072c565b6001600160a01b0385165f908152600460209081526040808320338452909152902083820390555b610bb98585856114e6565b9150505b9392505050565b61dead5f90815260036020527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c54610bfe6009600a61223a565b610c0c906305f5e100612248565b610a48919061225f565b5f546001600160a01b03163314610c3f5760405162461bcd60e51b815260040161072c906120fb565b5f5b8251811015610c99578160075f858481518110610c6057610c60612272565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610c41565b505050565b5f546001600160a01b03163314610cc75760405162461bcd60e51b815260040161072c906120fb565b6005811015610cd4575f80fd5b6103e881610ce46009600a61223a565b610cf2906305f5e100612248565b610cfc9190612248565b610d069190612286565b60028190556040517ff8c5ab682312267665fe2e7afb06ce5e015dae6e8e8b89ebf47de5312c153c35905f90a250565b5f546001600160a01b03163314610d5f5760405162461bcd60e51b815260040161072c906120fb565b6005610d6b8284612144565b1115610db95760405162461bcd60e51b815260206004820152601c60248201527f466565732063616e206e6f74206265206d6f7265207468616e20352500000000604482015260640161072c565b60098290556008819055610dcd8183612144565b600a556008546009546040517f2816b76723f76e2768850694f4460c7c44a6592719ca811a201bd3087a872557905f90a35050565b5f546001600160a01b03163314610e2b5760405162461bcd60e51b815260040161072c906120fb565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b600f545f906001600160a01b0316331480610e9857506010546001600160a01b031633145b610ea0575f80fd5b306001600160a01b03841603610eb4575f80fd5b815f03610f24576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610efd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f2191906122a5565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303815f875af1158015610f6e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bbd91906122bc565b5f546001600160a01b03163314610fbb5760405162461bcd60e51b815260040161072c906120fb565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b5f546001600160a01b0316331461100e5760405162461bcd60e51b815260040161072c906120fb565b6001600160a01b0382166110645760405162461bcd60e51b815260206004820152601a60248201527f486f6c64657220697320746865207a65726f2061646472657373000000000000604482015260640161072c565b6001600160a01b0382165f81815260066020526040808220805460ff191685151590811790915590519092917f5422e85d9bcca047954218b93afb25e9bc2afe9bdc19e7297968b2c919c8377591a35050565b5f6001600160a01b03831661110e5760405162461bcd60e51b815260206004820152601d60248201527f526563697069656e7420697320746865207a65726f2061646472657373000000604482015260640161072c565b610bbd3384846114e6565b5f546001600160a01b031633146111425760405162461bcd60e51b815260040161072c906120fb565b601254600160a01b900460ff161561119c5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920456e61626c65642e0000000000000000604482015260640161072c565b6012805460ff60a01b1916600160a01b9081179182905543600e81905560405190929190910460ff161515907f07c24843b569ea20bd3c266fb17047bdd751e44ea3afa2150f231b90bc669f4d905f90a3565b5f546001600160a01b031633146112185760405162461bcd60e51b815260040161072c906120fb565b6005811015611225575f80fd5b6103e8816112356009600a61223a565b611243906305f5e100612248565b61124d9190612248565b6112579190612286565b60018190556040517f3e20d7489efd636786bf4e1e0eb2addeb10f5435dc95fff56528021af35c5041905f90a250565b5f546001600160a01b031633146112b05760405162461bcd60e51b815260040161072c906120fb565b6001600160a01b0382166113065760405162461bcd60e51b815260206004820152601a60248201527f486f6c64657220697320746865207a65726f2061646472657373000000000000604482015260640161072c565b6001600160a01b0382165f818152600560209081526040808320805486151560ff199182168117909255600690935281842080549093168117909255519092917f4aaa6e45cd52263caf7af003089cdf83d1751392e7edf53c1b5542d94f39734691a35050565b5f546001600160a01b031633146113965760405162461bcd60e51b815260040161072c906120fb565b6001600160a01b0381166113fb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161072c565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b0316331461147d5760405162461bcd60e51b815260040161072c906120fb565b6114896009600a61223a565b611497906305f5e100612248565b6002556114a66009600a61223a565b6114b4906305f5e100612248565b60018190556002546040517fe5ca8724fdb01105b3129a1959a63ecdb2638b93266579bbcca33b66c737faa9905f90a3565b6001600160a01b0383165f9081526007602052604081205460ff1615801561152657506001600160a01b0383165f9081526007602052604090205460ff16155b61156b5760405162461bcd60e51b8152602060048201526016602482015275165bdd48185c99481848155b985d5d1a1bdc9a5e995960521b604482015260640161072c565b60145460ff16156115885761158184848461191b565b9050610bbd565b5f546001600160a01b038581169116146115ec57601254600160a01b900460ff166115ec5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015260640161072c565b6115f684836119e8565b6001600160a01b0384165f908152600360205260409020548281101561162e5760405162461bcd60e51b815260040161072c906122d7565b6001600160a01b0385165f9081526005602052604081205460ff168061166b57506001600160a01b0385165f9081526005602052604090205460ff165b61167f5761167a868587611a54565b611681565b835b90506116945f546001600160a01b031690565b6001600160a01b0316866001600160a01b03161415801561175057506001600160a01b03851630148015906116d457506001600160a01b03851661dead14155b801561171257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b801561172c5750600f546001600160a01b03868116911614155b801561175057506001600160a01b0385165f9081526006602052604090205460ff16155b156117f0576001600160a01b0385165f9081526003602052604090205460025461177a8383612144565b11156117ee5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000606482015260840161072c565b505b43600e54141580156118125750601354305f9081526003602052604090205410155b80156118275750601254600160a81b900460ff165b8015611836575060145460ff16155b801561187357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316145b1561188557611880611b84565b43600e555b6001600160a01b038087165f908152600360205260408082208786039055918716815290812080548392906118bb908490612144565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161190791815260200190565b60405180910390a350600195945050505050565b6001600160a01b0383165f90815260036020526040812054828110156119535760405162461bcd60e51b815260040161072c906122d7565b6001600160a01b038086165f90815260036020526040808220868503905591861681529081208054859290611989908490612144565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516119d591815260200190565b60405180910390a3506001949350505050565b60015481111580611a1057506001600160a01b0382165f9081526006602052604090205460ff165b611a505760405162461bcd60e51b8152602060048201526011602482015270151e08131a5b5a5d08115e18d959591959607a1b604482015260640161072c565b5050565b5f806001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811690841603611aaa576064600d5485611a999190612248565b611aa39190612286565b9050611b0c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031603611af3576064600a5485611a999190612248565b6064611aff5f86612248565b611b099190612286565b90505b305f9081526003602052604081208054839290611b2a908490612144565b909155505060405181815230906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35f611b7a828661225f565b9695505050505050565b6014805460ff19166001179055600d54600a545f91611ba291612144565b90505f600c54600954611bb59190612144565b6013546040805160028082526060820183529394505f938493928492919060208301908036833701905050905030815f81518110611bf557611bf5612272565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110611c4957611c49612272565b6001600160a01b03928316602091820292909201015260115460405163791ac94760e01b815291169063791ac94790611c8e9085905f9086903090429060040161231d565b5f604051808303815f87803b158015611ca5575f80fd5b505af1158015611cb7573d5f803e3d5ffd5b5047925050505f879003611ccd575f9450611ce5565b86611cd88783612248565b611ce29190612286565b94505b611cef858261225f565b6010546040519195505f916001600160a01b039091169087908381818185875af1925050503d805f8114611d3e576040519150601f19603f3d011682016040523d82523d5f602084013e611d43565b606091505b5050905080611da75760405162461bcd60e51b815260206004820152602a60248201527f4661696c656420746f2073656e6420657468657220746f205465616d20466565604482015269102932b1b2b4bb32b91760b11b606482015260840161072c565b600f546040515f916001600160a01b03169087908381818185875af1925050503d805f8114611df1576040519150601f19603f3d011682016040523d82523d5f602084013e611df6565b606091505b5050905080611e5f5760405162461bcd60e51b815260206004820152602f60248201527f4661696c656420746f2073656e6420657468657220746f204d61726b6574696e60448201526e33902332b2902932b1b2b4bb32b91760891b606482015260840161072c565b50506014805460ff1916905550505050505050565b5f8060408385031215611e85575f80fd5b50508035926020909101359150565b8015158114611ea1575f80fd5b50565b8035611eaf81611e94565b919050565b5f8060408385031215611ec5575f80fd5b8235611ed081611e94565b946020939093013593505050565b80356001600160a01b0381168114611eaf575f80fd5b5f60208284031215611f04575f80fd5b610bbd82611ede565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f8060408385031215611f53575f80fd5b611ed083611ede565b5f8060408385031215611f6d575f80fd5b611f7683611ede565b9150611f8460208401611ede565b90509250929050565b5f805f60608486031215611f9f575f80fd5b611fa884611ede565b9250611fb660208501611ede565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b5f8060408385031215611fec575f80fd5b823567ffffffffffffffff811115612002575f80fd5b8301601f81018513612012575f80fd5b803567ffffffffffffffff81111561202c5761202c611fc7565b8060051b604051601f19603f830116810181811067ffffffffffffffff8211171561205957612059611fc7565b604052918252602081840181019290810188841115612076575f80fd5b6020850194505b8385101561209c5761208e85611ede565b81526020948501940161207d565b509450611f849250505060208401611ea4565b5f602082840312156120bf575f80fd5b5035919050565b5f80604083850312156120d7575f80fd5b6120e083611ede565b915060208301356120f081611e94565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561086f5761086f612130565b6001815b60018411156121925780850481111561217657612176612130565b600184161561218457908102905b60019390931c92800261215b565b935093915050565b5f826121a85750600161086f565b816121b457505f61086f565b81600181146121ca57600281146121d4576121f0565b600191505061086f565b60ff8411156121e5576121e5612130565b50506001821b61086f565b5060208310610133831016604e8410600b8410161715612213575081810a61086f565b61221f5f198484612157565b805f190482111561223257612232612130565b029392505050565b5f610bbd60ff84168361219a565b808202811582820484141761086f5761086f612130565b8181038181111561086f5761086f612130565b634e487b7160e01b5f52603260045260245ffd5b5f826122a057634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156122b5575f80fd5b5051919050565b5f602082840312156122cc575f80fd5b8151610bbd81611e94565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b8181101561236d5783516001600160a01b0316835260209384019390920191600101612346565b50506001600160a01b03959095166060840152505060800152939250505056fea2646970667358221220bb46356cacfa9abefa7a64b8289c8dc31155d6940d560a6f28e3455440163d3664736f6c634300081a0033

Deployed Bytecode

0x60806040526004361061021f575f3560e01c806370a082311161011e578063a8aa1b31116100a8578063ccf8c0361161006d578063ccf8c0361461064e578063dd62ed3e1461066d578063f2fde38b146106b1578063f6a78e17146106d0578063f887ea40146106e4575f80fd5b8063a8aa1b31146105ab578063a9059cbb146105de578063b0069abb146105fd578063b2bdfa7b14610611578063bc3371821461062f575f80fd5b80637d1db4a5116100ee5780637d1db4a5146104ff578063893d20e8146105145780638d7a8ba7146105445780638da5cb5b1461056357806395d89b411461057f575f80fd5b806370a0823114610479578063715018a6146104ad57806377b54bad146104c15780637ca4b685146104e0575f80fd5b806318160ddd116101aa57806339854b921161016f57806339854b92146103e75780635d0044ca1461040657806366ca9b83146104255780636c0a24eb146104445780636ddd171314610459575f80fd5b806318160ddd1461037057806323b872dd146103845780632b112e49146103a3578063313ce567146103b75780633705b392146103d2575f80fd5b80630621472c116101f05780630621472c146102a757806306fdde03146102d657806308fd3d0514610312578063095ea7b314610332578063121555a614610351575f80fd5b8062afb3251461022a57806302dbd8f81461025257806304368f65146102735780630445b66714610292575f80fd5b3661022657005b5f80fd5b348015610235575f80fd5b5061023f600d5481565b6040519081526020015b60405180910390f35b34801561025d575f80fd5b5061027161026c366004611e74565b610703565b005b34801561027e575f80fd5b5061027161028d366004611eb4565b6107d8565b34801561029d575f80fd5b5061023f60135481565b3480156102b2575f80fd5b506102c66102c1366004611ef4565b610863565b6040519015158152602001610249565b3480156102e1575f80fd5b5060408051808201909152600b81526a2a34329023b0b6b2a43ab160a91b60208201525b6040516102499190611f0d565b34801561031d575f80fd5b506012546102c690600160a01b900460ff1681565b34801561033d575f80fd5b506102c661034c366004611f42565b610875565b34801561035c575f80fd5b5061027161036b366004611f5c565b61092f565b34801561037b575f80fd5b5061023f610a2d565b34801561038f575f80fd5b506102c661039e366004611f8d565b610a4d565b3480156103ae575f80fd5b5061023f610bc4565b3480156103c2575f80fd5b5060405160098152602001610249565b3480156103dd575f80fd5b5061023f600a5481565b3480156103f2575f80fd5b50610271610401366004611fdb565b610c16565b348015610411575f80fd5b506102716104203660046120af565b610c9e565b348015610430575f80fd5b5061027161043f366004611e74565b610d36565b34801561044f575f80fd5b5061023f60025481565b348015610464575f80fd5b506012546102c690600160a81b900460ff1681565b348015610484575f80fd5b5061023f610493366004611ef4565b6001600160a01b03165f9081526003602052604090205490565b3480156104b8575f80fd5b50610271610e02565b3480156104cc575f80fd5b506102c66104db366004611f42565b610e73565b3480156104eb575f80fd5b506102716104fa3660046120c6565b610f92565b34801561050a575f80fd5b5061023f60015481565b34801561051f575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610249565b34801561054f575f80fd5b5061027161055e3660046120c6565b610fe5565b34801561056e575f80fd5b505f546001600160a01b031661052c565b34801561058a575f80fd5b5060408051808201909152600481526323a42aa160e11b6020820152610305565b3480156105b6575f80fd5b5061052c7f000000000000000000000000715720e04aa053bc737935cb296a956d400d141b81565b3480156105e9575f80fd5b506102c66105f8366004611f42565b6110b7565b348015610608575f80fd5b50610271611119565b34801561061c575f80fd5b505f5461052c906001600160a01b031681565b34801561063a575f80fd5b506102716106493660046120af565b6111ef565b348015610659575f80fd5b506102716106683660046120c6565b611287565b348015610678575f80fd5b5061023f610687366004611f5c565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b3480156106bc575f80fd5b506102716106cb366004611ef4565b61136d565b3480156106db575f80fd5b50610271611454565b3480156106ef575f80fd5b5060115461052c906001600160a01b031681565b5f546001600160a01b031633146107355760405162461bcd60e51b815260040161072c906120fb565b60405180910390fd5b60056107418284612144565b111561078f5760405162461bcd60e51b815260206004820152601c60248201527f466565732063616e206e6f74206265206d6f7265207468616e20352500000000604482015260640161072c565b600c829055600b8190556107a38183612144565b600d55600b54600c546040517f1568ae12a48f94971e72d93f8f5846cfda77ba2ba927d867f64e498835788138905f90a35050565b5f546001600160a01b031633146108015760405162461bcd60e51b815260040161072c906120fb565b6012805460ff60a81b1916600160a81b841515021790556108246009600a61223a565b61082e9082612248565b6013556040518190831515907fd896c9007bf8dc883f6b125322395dddc87bf825aed2e302315071c66e0d5dd9905f90a35050565b5f61086f825f19610875565b92915050565b5f6001600160a01b0383166108cc5760405162461bcd60e51b815260206004820152601b60248201527f5370656e64657220697320746865207a65726f20616464726573730000000000604482015260640161072c565b335f8181526004602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350600192915050565b5f546001600160a01b031633146109585760405162461bcd60e51b815260040161072c906120fb565b6001600160a01b0382161580159061097857506001600160a01b03811615155b6109d05760405162461bcd60e51b815260206004820152602360248201527f4665652072656365697665722063616e6e6f74206265207a65726f206164647260448201526265737360e81b606482015260840161072c565b600f80546001600160a01b03199081166001600160a01b03858116918217909355601080549092169284169283179091556040517f5b1b7727e42d2f1e9652d0af0d3b4f580a270e5d7ff9a47120c8602d4ec2def5905f90a35050565b5f610a3a6009600a61223a565b610a48906305f5e100612248565b905090565b5f6001600160a01b038416610aa45760405162461bcd60e51b815260206004820152601a60248201527f53656e64657220697320746865207a65726f2061646472657373000000000000604482015260640161072c565b6001600160a01b038316610afa5760405162461bcd60e51b815260206004820152601d60248201527f526563697069656e7420697320746865207a65726f2061646472657373000000604482015260640161072c565b6001600160a01b0384165f9081526004602090815260408083203384529091529020545f198114610bae5782811015610b865760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161072c565b6001600160a01b0385165f908152600460209081526040808320338452909152902083820390555b610bb98585856114e6565b9150505b9392505050565b61dead5f90815260036020527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c54610bfe6009600a61223a565b610c0c906305f5e100612248565b610a48919061225f565b5f546001600160a01b03163314610c3f5760405162461bcd60e51b815260040161072c906120fb565b5f5b8251811015610c99578160075f858481518110610c6057610c60612272565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610c41565b505050565b5f546001600160a01b03163314610cc75760405162461bcd60e51b815260040161072c906120fb565b6005811015610cd4575f80fd5b6103e881610ce46009600a61223a565b610cf2906305f5e100612248565b610cfc9190612248565b610d069190612286565b60028190556040517ff8c5ab682312267665fe2e7afb06ce5e015dae6e8e8b89ebf47de5312c153c35905f90a250565b5f546001600160a01b03163314610d5f5760405162461bcd60e51b815260040161072c906120fb565b6005610d6b8284612144565b1115610db95760405162461bcd60e51b815260206004820152601c60248201527f466565732063616e206e6f74206265206d6f7265207468616e20352500000000604482015260640161072c565b60098290556008819055610dcd8183612144565b600a556008546009546040517f2816b76723f76e2768850694f4460c7c44a6592719ca811a201bd3087a872557905f90a35050565b5f546001600160a01b03163314610e2b5760405162461bcd60e51b815260040161072c906120fb565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b600f545f906001600160a01b0316331480610e9857506010546001600160a01b031633145b610ea0575f80fd5b306001600160a01b03841603610eb4575f80fd5b815f03610f24576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610efd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f2191906122a5565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303815f875af1158015610f6e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bbd91906122bc565b5f546001600160a01b03163314610fbb5760405162461bcd60e51b815260040161072c906120fb565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b5f546001600160a01b0316331461100e5760405162461bcd60e51b815260040161072c906120fb565b6001600160a01b0382166110645760405162461bcd60e51b815260206004820152601a60248201527f486f6c64657220697320746865207a65726f2061646472657373000000000000604482015260640161072c565b6001600160a01b0382165f81815260066020526040808220805460ff191685151590811790915590519092917f5422e85d9bcca047954218b93afb25e9bc2afe9bdc19e7297968b2c919c8377591a35050565b5f6001600160a01b03831661110e5760405162461bcd60e51b815260206004820152601d60248201527f526563697069656e7420697320746865207a65726f2061646472657373000000604482015260640161072c565b610bbd3384846114e6565b5f546001600160a01b031633146111425760405162461bcd60e51b815260040161072c906120fb565b601254600160a01b900460ff161561119c5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920456e61626c65642e0000000000000000604482015260640161072c565b6012805460ff60a01b1916600160a01b9081179182905543600e81905560405190929190910460ff161515907f07c24843b569ea20bd3c266fb17047bdd751e44ea3afa2150f231b90bc669f4d905f90a3565b5f546001600160a01b031633146112185760405162461bcd60e51b815260040161072c906120fb565b6005811015611225575f80fd5b6103e8816112356009600a61223a565b611243906305f5e100612248565b61124d9190612248565b6112579190612286565b60018190556040517f3e20d7489efd636786bf4e1e0eb2addeb10f5435dc95fff56528021af35c5041905f90a250565b5f546001600160a01b031633146112b05760405162461bcd60e51b815260040161072c906120fb565b6001600160a01b0382166113065760405162461bcd60e51b815260206004820152601a60248201527f486f6c64657220697320746865207a65726f2061646472657373000000000000604482015260640161072c565b6001600160a01b0382165f818152600560209081526040808320805486151560ff199182168117909255600690935281842080549093168117909255519092917f4aaa6e45cd52263caf7af003089cdf83d1751392e7edf53c1b5542d94f39734691a35050565b5f546001600160a01b031633146113965760405162461bcd60e51b815260040161072c906120fb565b6001600160a01b0381166113fb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161072c565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b0316331461147d5760405162461bcd60e51b815260040161072c906120fb565b6114896009600a61223a565b611497906305f5e100612248565b6002556114a66009600a61223a565b6114b4906305f5e100612248565b60018190556002546040517fe5ca8724fdb01105b3129a1959a63ecdb2638b93266579bbcca33b66c737faa9905f90a3565b6001600160a01b0383165f9081526007602052604081205460ff1615801561152657506001600160a01b0383165f9081526007602052604090205460ff16155b61156b5760405162461bcd60e51b8152602060048201526016602482015275165bdd48185c99481848155b985d5d1a1bdc9a5e995960521b604482015260640161072c565b60145460ff16156115885761158184848461191b565b9050610bbd565b5f546001600160a01b038581169116146115ec57601254600160a01b900460ff166115ec5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015260640161072c565b6115f684836119e8565b6001600160a01b0384165f908152600360205260409020548281101561162e5760405162461bcd60e51b815260040161072c906122d7565b6001600160a01b0385165f9081526005602052604081205460ff168061166b57506001600160a01b0385165f9081526005602052604090205460ff165b61167f5761167a868587611a54565b611681565b835b90506116945f546001600160a01b031690565b6001600160a01b0316866001600160a01b03161415801561175057506001600160a01b03851630148015906116d457506001600160a01b03851661dead14155b801561171257507f000000000000000000000000715720e04aa053bc737935cb296a956d400d141b6001600160a01b0316856001600160a01b031614155b801561172c5750600f546001600160a01b03868116911614155b801561175057506001600160a01b0385165f9081526006602052604090205460ff16155b156117f0576001600160a01b0385165f9081526003602052604090205460025461177a8383612144565b11156117ee5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000606482015260840161072c565b505b43600e54141580156118125750601354305f9081526003602052604090205410155b80156118275750601254600160a81b900460ff165b8015611836575060145460ff16155b801561187357507f000000000000000000000000715720e04aa053bc737935cb296a956d400d141b6001600160a01b0316856001600160a01b0316145b1561188557611880611b84565b43600e555b6001600160a01b038087165f908152600360205260408082208786039055918716815290812080548392906118bb908490612144565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161190791815260200190565b60405180910390a350600195945050505050565b6001600160a01b0383165f90815260036020526040812054828110156119535760405162461bcd60e51b815260040161072c906122d7565b6001600160a01b038086165f90815260036020526040808220868503905591861681529081208054859290611989908490612144565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516119d591815260200190565b60405180910390a3506001949350505050565b60015481111580611a1057506001600160a01b0382165f9081526006602052604090205460ff165b611a505760405162461bcd60e51b8152602060048201526011602482015270151e08131a5b5a5d08115e18d959591959607a1b604482015260640161072c565b5050565b5f806001600160a01b037f000000000000000000000000715720e04aa053bc737935cb296a956d400d141b811690841603611aaa576064600d5485611a999190612248565b611aa39190612286565b9050611b0c565b7f000000000000000000000000715720e04aa053bc737935cb296a956d400d141b6001600160a01b0316856001600160a01b031603611af3576064600a5485611a999190612248565b6064611aff5f86612248565b611b099190612286565b90505b305f9081526003602052604081208054839290611b2a908490612144565b909155505060405181815230906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35f611b7a828661225f565b9695505050505050565b6014805460ff19166001179055600d54600a545f91611ba291612144565b90505f600c54600954611bb59190612144565b6013546040805160028082526060820183529394505f938493928492919060208301908036833701905050905030815f81518110611bf557611bf5612272565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110611c4957611c49612272565b6001600160a01b03928316602091820292909201015260115460405163791ac94760e01b815291169063791ac94790611c8e9085905f9086903090429060040161231d565b5f604051808303815f87803b158015611ca5575f80fd5b505af1158015611cb7573d5f803e3d5ffd5b5047925050505f879003611ccd575f9450611ce5565b86611cd88783612248565b611ce29190612286565b94505b611cef858261225f565b6010546040519195505f916001600160a01b039091169087908381818185875af1925050503d805f8114611d3e576040519150601f19603f3d011682016040523d82523d5f602084013e611d43565b606091505b5050905080611da75760405162461bcd60e51b815260206004820152602a60248201527f4661696c656420746f2073656e6420657468657220746f205465616d20466565604482015269102932b1b2b4bb32b91760b11b606482015260840161072c565b600f546040515f916001600160a01b03169087908381818185875af1925050503d805f8114611df1576040519150601f19603f3d011682016040523d82523d5f602084013e611df6565b606091505b5050905080611e5f5760405162461bcd60e51b815260206004820152602f60248201527f4661696c656420746f2073656e6420657468657220746f204d61726b6574696e60448201526e33902332b2902932b1b2b4bb32b91760891b606482015260840161072c565b50506014805460ff1916905550505050505050565b5f8060408385031215611e85575f80fd5b50508035926020909101359150565b8015158114611ea1575f80fd5b50565b8035611eaf81611e94565b919050565b5f8060408385031215611ec5575f80fd5b8235611ed081611e94565b946020939093013593505050565b80356001600160a01b0381168114611eaf575f80fd5b5f60208284031215611f04575f80fd5b610bbd82611ede565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f8060408385031215611f53575f80fd5b611ed083611ede565b5f8060408385031215611f6d575f80fd5b611f7683611ede565b9150611f8460208401611ede565b90509250929050565b5f805f60608486031215611f9f575f80fd5b611fa884611ede565b9250611fb660208501611ede565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b5f8060408385031215611fec575f80fd5b823567ffffffffffffffff811115612002575f80fd5b8301601f81018513612012575f80fd5b803567ffffffffffffffff81111561202c5761202c611fc7565b8060051b604051601f19603f830116810181811067ffffffffffffffff8211171561205957612059611fc7565b604052918252602081840181019290810188841115612076575f80fd5b6020850194505b8385101561209c5761208e85611ede565b81526020948501940161207d565b509450611f849250505060208401611ea4565b5f602082840312156120bf575f80fd5b5035919050565b5f80604083850312156120d7575f80fd5b6120e083611ede565b915060208301356120f081611e94565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561086f5761086f612130565b6001815b60018411156121925780850481111561217657612176612130565b600184161561218457908102905b60019390931c92800261215b565b935093915050565b5f826121a85750600161086f565b816121b457505f61086f565b81600181146121ca57600281146121d4576121f0565b600191505061086f565b60ff8411156121e5576121e5612130565b50506001821b61086f565b5060208310610133831016604e8410600b8410161715612213575081810a61086f565b61221f5f198484612157565b805f190482111561223257612232612130565b029392505050565b5f610bbd60ff84168361219a565b808202811582820484141761086f5761086f612130565b8181038181111561086f5761086f612130565b634e487b7160e01b5f52603260045260245ffd5b5f826122a057634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156122b5575f80fd5b5051919050565b5f602082840312156122cc575f80fd5b8151610bbd81611e94565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b8181101561236d5783516001600160a01b0316835260209384019390920191600101612346565b50506001600160a01b03959095166060840152505060800152939250505056fea2646970667358221220bb46356cacfa9abefa7a64b8289c8dc31155d6940d560a6f28e3455440163d3664736f6c634300081a0033

Deployed Bytecode Sourcemap

3987:13231:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4972:67;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;4972:67:0;;;;;;;;15703:360;;;;;;;;;;-1:-1:-1;15703:360:0;;;;;:::i;:::-;;:::i;:::-;;16497:230;;;;;;;;;;-1:-1:-1;16497:230:0;;;;;:::i;:::-;;:::i;5407:49::-;;;;;;;;;;;;;;;;8217:122;;;;;;;;;;-1:-1:-1;8217:122:0;;;;;:::i;:::-;;:::i;:::-;;;1703:14:1;;1696:22;1678:41;;1666:2;1651:18;8217:122:0;1538:187:1;7499:80:0;;;;;;;;;;-1:-1:-1;7571:5:0;;;;;;;;;;;;-1:-1:-1;;;7571:5:0;;;;7499:80;;;;;;;:::i;5326:31::-;;;;;;;;;;-1:-1:-1;5326:31:0;;;;-1:-1:-1;;;5326:31:0;;;;;;7921:288;;;;;;;;;;-1:-1:-1;7921:288:0;;;;;:::i;:::-;;:::i;16071:418::-;;;;;;;;;;-1:-1:-1;16071:418:0;;;;;:::i;:::-;;:::i;7229:88::-;;;;;;;;;;;;;:::i;8587:668::-;;;;;;;;;;-1:-1:-1;8587:668:0;;;;;:::i;:::-;;:::i;17095:118::-;;;;;;;;;;;;;:::i;7323:80::-;;;;;;;;;;-1:-1:-1;7323:80:0;;4248:1;3244:36:1;;3232:2;3217:18;7323:80:0;3102:184:1;4806:65:0;;;;;;;;;;;;;;;;16876:211;;;;;;;;;;-1:-1:-1;16876:211:0;;;;;:::i;:::-;;:::i;9263:244::-;;;;;;;;;;-1:-1:-1;9263:244:0;;;;;:::i;:::-;;:::i;15341:354::-;;;;;;;;;;-1:-1:-1;15341:354:0;;;;;:::i;:::-;;:::i;4383:51::-;;;;;;;;;;;;;;;;5370:30;;;;;;;;;;-1:-1:-1;5370:30:0;;;;-1:-1:-1;;;5370:30:0;;;;;;7669:105;;;;;;;;;;-1:-1:-1;7669:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;7753:18:0;7735:7;7753:18;;;:9;:18;;;;;;;7669:105;2042:150;;;;;;;;;;;;;:::i;12923:411::-;;;;;;;;;;-1:-1:-1;12923:411:0;;;;;:::i;:::-;;:::i;16736:128::-;;;;;;;;;;-1:-1:-1;16736:128:0;;;;;:::i;:::-;;:::i;4329:47::-;;;;;;;;;;;;;;;;7585:78;;;;;;;;;;-1:-1:-1;7637:7:0;1893:6;-1:-1:-1;;;;;1893:6:0;7585:78;;;-1:-1:-1;;;;;5350:32:1;;;5332:51;;5320:2;5305:18;7585:78:0;5186:203:1;15091:240:0;;;;;;;;;;-1:-1:-1;15091:240:0;;;;;:::i;:::-;;:::i;1828:79::-;;;;;;;;;;-1:-1:-1;1866:7:0;1893:6;-1:-1:-1;;;;;1893:6:0;1828:79;;7409:84;;;;;;;;;;-1:-1:-1;7483:7:0;;;;;;;;;;;;-1:-1:-1;;;7483:7:0;;;;7409:84;;5284:29;;;;;;;;;;;;;;;8347:232;;;;;;;;;;-1:-1:-1;8347:232:0;;;;;:::i;:::-;;:::i;13344:229::-;;;;;;;;;;;;;:::i;1544:21::-;;;;;;;;;;-1:-1:-1;1544:21:0;;;;-1:-1:-1;;;;;1544:21:0;;;9515:210;;;;;;;;;;-1:-1:-1;9515:210:0;;;;;:::i;:::-;;:::i;14814:269::-;;;;;;;;;;-1:-1:-1;14814:269:0;;;;;:::i;:::-;;:::i;7780:133::-;;;;;;;;;;-1:-1:-1;7780:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;7882:19:0;;;7864:7;7882:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;7780:133;2200:244;;;;;;;;;;-1:-1:-1;2200:244:0;;;;;:::i;:::-;;:::i;12716:199::-;;;;;;;;;;;;;:::i;5214:24::-;;;;;;;;;;-1:-1:-1;5214:24:0;;;;-1:-1:-1;;;;;5214:24:0;;;15703:360;1955:6;;-1:-1:-1;;;;;1955:6:0;1483:10;1955:22;1947:67;;;;-1:-1:-1;;;1947:67:0;;;;;;;:::i;:::-;;;;;;;;;15834:1:::1;15806:24;15817:13:::0;15806:8;:24:::1;:::i;:::-;:29;;15798:70;;;::::0;-1:-1:-1;;;15798:70:0;;6445:2:1;15798:70:0::1;::::0;::::1;6427:21:1::0;6484:2;6464:18;;;6457:30;6523;6503:18;;;6496:58;6571:18;;15798:70:0::1;6243:352:1::0;15798:70:0::1;15880:11;:22:::0;;;15913:16:::1;:32:::0;;;15970:23:::1;15932:13:::0;15894:8;15970:23:::1;:::i;:::-;15956:12;:37:::0;16038:16:::1;::::0;16025:11:::1;::::0;16009:46:::1;::::0;::::1;::::0;;;::::1;15703:360:::0;;:::o;16497:230::-;1955:6;;-1:-1:-1;;;;;1955:6:0;1483:10;1955:22;1947:67;;;;-1:-1:-1;;;1947:67:0;;;;;;;:::i;:::-;16589:11:::1;:22:::0;;-1:-1:-1;;;;16589:22:0::1;-1:-1:-1::0;;;16589:22:0;::::1;;;;::::0;;16648:13:::1;4248:1;16648:2;:13;:::i;:::-;16638:23;::::0;:7;:23:::1;:::i;:::-;16622:13;:39:::0;16677:42:::1;::::0;16711:7;;16677:42;::::1;;::::0;::::1;::::0;;;::::1;16497:230:::0;;:::o;8217:122::-;8272:4;8296:35;8304:7;-1:-1:-1;;8296:7:0;:35::i;:::-;8289:42;8217:122;-1:-1:-1;;8217:122:0:o;7921:288::-;7996:4;-1:-1:-1;;;;;8021:21:0;;8013:61;;;;-1:-1:-1;;;8013:61:0;;8407:2:1;8013:61:0;;;8389:21:1;8446:2;8426:18;;;8419:30;8485:29;8465:18;;;8458:57;8532:18;;8013:61:0;8205:351:1;8013:61:0;8097:10;8085:23;;;;:11;:23;;;;;;;;-1:-1:-1;;;;;8085:32:0;;;;;;;;;;;;:41;;;8142:37;160:25:1;;;8085:32:0;;8097:10;8142:37;;133:18:1;8142:37:0;;;;;;;-1:-1:-1;8197:4:0;7921:288;;;;:::o;16071:418::-;1955:6;;-1:-1:-1;;;;;1955:6:0;1483:10;1955:22;1947:67;;;;-1:-1:-1;;;1947:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16198:35:0;::::1;::::0;;::::1;::::0;:69:::1;;-1:-1:-1::0;;;;;;16237:30:0;::::1;::::0;::::1;16198:69;16190:118;;;::::0;-1:-1:-1;;;16190:118:0;;8763:2:1;16190:118:0::1;::::0;::::1;8745:21:1::0;8802:2;8782:18;;;8775:30;8841:34;8821:18;;;8814:62;-1:-1:-1;;;8892:18:1;;;8885:33;8935:19;;16190:118:0::1;8561:399:1::0;16190:118:0::1;16319:20;:44:::0;;-1:-1:-1;;;;;;16319:44:0;;::::1;-1:-1:-1::0;;;;;16319:44:0;;::::1;::::0;;::::1;::::0;;;16374:15:::1;:34:::0;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;16424:57:::1;::::0;::::1;::::0;-1:-1:-1;;16424:57:0::1;16071:418:::0;;:::o;7229:88::-;7284:7;4307:13;4248:1;4307:2;:13;:::i;:::-;4295:25;;:9;:25;:::i;:::-;7295:19;;7229:88;:::o;8587:668::-;8687:4;-1:-1:-1;;;;;8712:20:0;;8704:59;;;;-1:-1:-1;;;8704:59:0;;9167:2:1;8704:59:0;;;9149:21:1;9206:2;9186:18;;;9179:30;9245:28;9225:18;;;9218:56;9291:18;;8704:59:0;8965:350:1;8704:59:0;-1:-1:-1;;;;;8782:23:0;;8774:65;;;;-1:-1:-1;;;8774:65:0;;9522:2:1;8774:65:0;;;9504:21:1;9561:2;9541:18;;;9534:30;9600:31;9580:18;;;9573:59;9649:18;;8774:65:0;9320:353:1;8774:65:0;-1:-1:-1;;;;;8877:19:0;;8850:24;8877:19;;;:11;:19;;;;;;;;1483:10;8877:33;;;;;;;;-1:-1:-1;;8924:37:0;;8921:267;;9005:6;8985:16;:26;;8977:79;;;;-1:-1:-1;;;8977:79:0;;9880:2:1;8977:79:0;;;9862:21:1;9919:2;9899:18;;;9892:30;9958:34;9938:18;;;9931:62;-1:-1:-1;;;10009:18:1;;;10002:38;10057:19;;8977:79:0;9678:404:1;8977:79:0;-1:-1:-1;;;;;9100:19:0;;;;;;:11;:19;;;;;;;;1483:10;9100:33;;;;;;;9136:25;;;9100:61;;8921:267;9207:40;9221:6;9229:9;9240:6;9207:13;:40::i;:::-;9200:47;;;8587:668;;;;;;:::o;17095:118::-;4087:42;17148:7;7753:18;;;:9;:18;;;;4307:13;4248:1;4307:2;:13;:::i;:::-;4295:25;;:9;:25;:::i;:::-;17175:30;;;;:::i;16876:211::-;1955:6;;-1:-1:-1;;;;;1955:6:0;1483:10;1955:22;1947:67;;;;-1:-1:-1;;;1947:67:0;;;;;;;:::i;:::-;16976:9:::1;16972:108;16994:8;:15;16990:1;:19;16972:108;;;17061:5;17030:15;:28;17046:8;17055:1;17046:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;17030:28:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;17030:28:0;:36;;-1:-1:-1;;17030:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;17011:3:0::1;16972:108;;;;16876:211:::0;;:::o;9263:244::-;1955:6;;-1:-1:-1;;;;;1955:6:0;1483:10;1955:22;1947:67;;;;-1:-1:-1;;;1947:67:0;;;;;;;:::i;:::-;9369:1:::1;9349:16;:21;;9341:30;;;::::0;::::1;;9438:4;9417:16:::0;4307:13:::1;4248:1;4307:2;:13;:::i;:::-;4295:25;::::0;:9:::1;:25;:::i;:::-;9402:31;;;;:::i;:::-;9401:41;;;;:::i;:::-;9382:16;:60:::0;;;9458:34:::1;::::0;::::1;::::0;;;::::1;9263:244:::0;:::o;15341:354::-;1955:6;;-1:-1:-1;;;;;1955:6:0;1483:10;1955:22;1947:67;;;;-1:-1:-1;;;1947:67:0;;;;;;;:::i;:::-;15472:1:::1;15444:24;15455:13:::0;15444:8;:24:::1;:::i;:::-;:29;;15435:71;;;::::0;-1:-1:-1;;;15435:71:0;;6445:2:1;15435:71:0::1;::::0;::::1;6427:21:1::0;6484:2;6464:18;;;6457:30;6523;6503:18;;;6496:58;6571:18;;15435:71:0::1;6243:352:1::0;15435:71:0::1;15518:10;:21:::0;;;15550:15:::1;:31:::0;;;15605:23:::1;15568:13:::0;15531:8;15605:23:::1;:::i;:::-;15592:11;:36:::0;15671:15:::1;::::0;15659:10:::1;::::0;15644:43:::1;::::0;::::1;::::0;;;::::1;15341:354:::0;;:::o;2042:150::-;1955:6;;-1:-1:-1;;;;;1955:6:0;1483:10;1955:22;1947:67;;;;-1:-1:-1;;;1947:67:0;;;;;;;:::i;:::-;2151:1:::1;2135:6:::0;;2114:40:::1;::::0;-1:-1:-1;;;;;2135:6:0;;::::1;::::0;2114:40:::1;::::0;2151:1;;2114:40:::1;2182:1;2165:19:::0;;-1:-1:-1;;;;;;2165:19:0::1;::::0;;2042:150::o;12923:411::-;13043:20;;13004:4;;-1:-1:-1;;;;;13043:20:0;13029:10;:34;;:67;;-1:-1:-1;13081:15:0;;-1:-1:-1;;;;;13081:15:0;13067:10;:29;13029:67;13021:76;;;;;;13149:4;-1:-1:-1;;;;;13116:38:0;;;13108:47;;;;;;13169:6;13179:1;13169:11;13166:95;;13205:44;;-1:-1:-1;;;13205:44:0;;13243:4;13205:44;;;5332:51:1;-1:-1:-1;;;;;13205:29:0;;;;;5305:18:1;;13205:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13196:53;;13166:95;13278:48;;-1:-1:-1;;;13278:48:0;;13307:10;13278:48;;;10937:51:1;11004:18;;;10997:34;;;-1:-1:-1;;;;;13278:28:0;;;;;10910:18:1;;13278:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;16736:128::-;1955:6;;-1:-1:-1;;;;;1955:6:0;1483:10;1955:22;1947:67;;;;-1:-1:-1;;;1947:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16824:24:0;;;::::1;;::::0;;;:15:::1;:24;::::0;;;;:32;;-1:-1:-1;;16824:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16736:128::o;15091:240::-;1955:6;;-1:-1:-1;;;;;1955:6:0;1483:10;1955:22;1947:67;;;;-1:-1:-1;;;1947:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15184:20:0;::::1;15176:59;;;::::0;-1:-1:-1;;;15176:59:0;;11494:2:1;15176:59:0::1;::::0;::::1;11476:21:1::0;11533:2;11513:18;;;11506:30;11572:28;11552:18;;;11545:56;11618:18;;15176:59:0::1;11292:350:1::0;15176:59:0::1;-1:-1:-1::0;;;;;15246:23:0;::::1;;::::0;;;:15:::1;:23;::::0;;;;;:32;;-1:-1:-1;;15246:32:0::1;::::0;::::1;;::::0;;::::1;::::0;;;15294:29;;15246:32;;:23;15294:29:::1;::::0;::::1;15091:240:::0;;:::o;8347:232::-;8427:4;-1:-1:-1;;;;;8452:23:0;;8444:65;;;;-1:-1:-1;;;8444:65:0;;9522:2:1;8444:65:0;;;9504:21:1;9561:2;9541:18;;;9534:30;9600:31;9580:18;;;9573:59;9649:18;;8444:65:0;9320:353:1;8444:65:0;8527:44;8541:10;8553:9;8564:6;8527:13;:44::i;13344:229::-;1955:6;;-1:-1:-1;;;;;1955:6:0;1483:10;1955:22;1947:67;;;;-1:-1:-1;;;1947:67:0;;;;;;;:::i;:::-;13410:11:::1;::::0;-1:-1:-1;;;13410:11:0;::::1;;;13409:12;13401:48;;;::::0;-1:-1:-1;;;13401:48:0;;11849:2:1;13401:48:0::1;::::0;::::1;11831:21:1::0;11888:2;11868:18;;;11861:30;11927:26;11907:18;;;11900:54;11971:18;;13401:48:0::1;11647:348:1::0;13401:48:0::1;13460:11;:18:::0;;-1:-1:-1;;;;13460:18:0::1;-1:-1:-1::0;;;13460:18:0;;::::1;::::0;;;;13500:12:::1;13489:8;:23:::0;;;13528:37:::1;::::0;13500:12;;13543:11;;;::::1;13460:18;13543:11;13528:37;;::::0;::::1;::::0;13460:18;;13528:37:::1;13344:229::o:0;9515:210::-;1955:6;;-1:-1:-1;;;;;1955:6:0;1483:10;1955:22;1947:67;;;;-1:-1:-1;;;1947:67:0;;;;;;;:::i;:::-;9609:1:::1;9593:12;:17;;9585:26;;;::::0;::::1;;9671:4;9654:12:::0;4307:13:::1;4248:1;4307:2;:13;:::i;:::-;4295:25;::::0;:9:::1;:25;:::i;:::-;9639:27;;;;:::i;:::-;9638:37;;;;:::i;:::-;9623:12;:52:::0;;;9691:26:::1;::::0;::::1;::::0;;;::::1;9515:210:::0;:::o;14814:269::-;1955:6;;-1:-1:-1;;;;;1955:6:0;1483:10;1955:22;1947:67;;;;-1:-1:-1;;;1947:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14900:20:0;::::1;14892:59;;;::::0;-1:-1:-1;;;14892:59:0;;11494:2:1;14892:59:0::1;::::0;::::1;11476:21:1::0;11533:2;11513:18;;;11506:30;11572:28;11552:18;;;11545:56;11618:18;;14892:59:0::1;11292:350:1::0;14892:59:0::1;-1:-1:-1::0;;;;;14962:19:0;::::1;;::::0;;;:11:::1;:19;::::0;;;;;;;:28;;;::::1;;-1:-1:-1::0;;14962:28:0;;::::1;::::0;::::1;::::0;;;15001:15:::1;:23:::0;;;;;;:32;;;;::::1;::::0;::::1;::::0;;;15049:26;14962:28;;:19;15049:26:::1;::::0;::::1;14814:269:::0;;:::o;2200:244::-;1955:6;;-1:-1:-1;;;;;1955:6:0;1483:10;1955:22;1947:67;;;;-1:-1:-1;;;1947:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2289:22:0;::::1;2281:73;;;::::0;-1:-1:-1;;;2281:73:0;;12202:2:1;2281:73:0::1;::::0;::::1;12184:21:1::0;12241:2;12221:18;;;12214:30;12280:34;12260:18;;;12253:62;-1:-1:-1;;;12331:18:1;;;12324:36;12377:19;;2281:73:0::1;12000:402:1::0;2281:73:0::1;2391:6;::::0;;2370:38:::1;::::0;-1:-1:-1;;;;;2370:38:0;;::::1;::::0;2391:6;::::1;::::0;2370:38:::1;::::0;::::1;2419:6;:17:::0;;-1:-1:-1;;;;;;2419:17:0::1;-1:-1:-1::0;;;;;2419:17:0;;;::::1;::::0;;;::::1;::::0;;2200:244::o;12716:199::-;1955:6;;-1:-1:-1;;;;;1955:6:0;1483:10;1955:22;1947:67;;;;-1:-1:-1;;;1947:67:0;;;;;;;:::i;:::-;4307:13:::1;4248:1;4307:2;:13;:::i;:::-;4295:25;::::0;:9:::1;:25;:::i;:::-;12774:16;:31:::0;4307:13:::1;4248:1;4307:2;:13;:::i;:::-;4295:25;::::0;:9:::1;:25;:::i;:::-;12816:12;:27:::0;;;12876:16:::1;::::0;12859:48:::1;::::0;::::1;::::0;;;::::1;12716:199::o:0;9742:1611::-;-1:-1:-1;;;;;9860:23:0;;9834:4;9860:23;;;:15;:23;;;;;;;;9859:24;:55;;;;-1:-1:-1;;;;;;9888:26:0;;;;;;:15;:26;;;;;;;;9887:27;9859:55;9851:90;;;;-1:-1:-1;;;9851:90:0;;12609:2:1;9851:90:0;;;12591:21:1;12648:2;12628:18;;;12621:30;-1:-1:-1;;;12667:18:1;;;12660:52;12729:18;;9851:90:0;12407:346:1;9851:90:0;9957:6;;;;9954:63;;;9973:41;9988:6;9996:9;10007:6;9973:14;:41::i;:::-;9966:48;;;;9954:63;1866:7;1893:6;-1:-1:-1;;;;;10032:17:0;;;1893:6;;10032:17;10029:101;;10073:11;;-1:-1:-1;;;10073:11:0;;;;10065:43;;;;-1:-1:-1;;;10065:43:0;;12960:2:1;10065:43:0;;;12942:21:1;12999:2;12979:18;;;12972:30;-1:-1:-1;;;13018:18:1;;;13011:50;13078:18;;10065:43:0;12758:344:1;10065:43:0;10150:28;10163:6;10171;10150:12;:28::i;:::-;-1:-1:-1;;;;;10223:17:0;;10199:21;10223:17;;;:9;:17;;;;;;10259:23;;;;10251:74;;;;-1:-1:-1;;;10251:74:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10364:19:0;;10338:22;10364:19;;;:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;10387:22:0;;;;;;:11;:22;;;;;;;;10364:45;10363:93;;10422:34;10430:6;10438;10446:9;10422:7;:34::i;:::-;10363:93;;;10413:6;10363:93;10338:118;;10483:7;1866;1893:6;-1:-1:-1;;;;;1893:6:0;;1828:79;10483:7;-1:-1:-1;;;;;10473:17:0;:6;-1:-1:-1;;;;;10473:17:0;;;:169;;;;-1:-1:-1;;;;;;10495:26:0;;10516:4;10495:26;;;;:57;;-1:-1:-1;;;;;;10526:26:0;;4087:42;10526:26;;10495:57;:78;;;;;10569:4;-1:-1:-1;;;;;10556:17:0;:9;-1:-1:-1;;;;;10556:17:0;;;10495:78;:115;;;;-1:-1:-1;10590:20:0;;-1:-1:-1;;;;;10577:33:0;;;10590:20;;10577:33;;10495:115;:146;;;;-1:-1:-1;;;;;;10615:26:0;;;;;;:15;:26;;;;;;;;10614:27;10495:146;10469:370;;;-1:-1:-1;;;;;7753:18:0;;10658;7753;;;:9;:18;;;;;;10755:16;;10723:27;10736:14;7753:18;10723:27;:::i;:::-;10722:49;;10714:123;;;;-1:-1:-1;;;10714:123:0;;13716:2:1;10714:123:0;;;13698:21:1;13755:2;13735:18;;;13728:30;13794:34;13774:18;;;13767:62;13865:32;13845:18;;;13838:60;13915:19;;10714:123:0;13514:426:1;10714:123:0;10643:196;10469:370;10880:12;10868:8;;:24;;:82;;;;-1:-1:-1;10937:13:0;;10927:4;10909:24;;;;:9;:24;;;;;;:41;;10868:82;:110;;;;-1:-1:-1;10967:11:0;;-1:-1:-1;;;10967:11:0;;;;10868:110;:134;;;;-1:-1:-1;10996:6:0;;;;10995:7;10868:134;:168;;;;;11032:4;-1:-1:-1;;;;;11019:17:0;:9;-1:-1:-1;;;;;11019:17:0;;10868:168;10851:272;;;11063:10;:8;:10::i;:::-;11099:12;11088:8;:23;10851:272;-1:-1:-1;;;;;11160:17:0;;;;;;;:9;:17;;;;;;11180:22;;;11160:42;;11224:20;;;;;;;;:38;;11248:14;;11160:17;11224:38;;11248:14;;11224:38;:::i;:::-;;;;;;;;11297:9;-1:-1:-1;;;;;11280:43:0;11289:6;-1:-1:-1;;;;;11280:43:0;;11308:14;11280:43;;;;160:25:1;;148:2;133:18;;14:177;11280:43:0;;;;;;;;-1:-1:-1;11341:4:0;;9742:1611;-1:-1:-1;;;;;9742:1611:0:o;11365:447::-;-1:-1:-1;;;;;11499:17:0;;11458:4;11499:17;;;:9;:17;;;;;;11535:23;;;;11527:74;;;;-1:-1:-1;;;11527:74:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11637:17:0;;;;;;;:9;:17;;;;;;11657:22;;;11637:42;;11701:20;;;;;;;;:30;;11673:6;;11637:17;11701:30;;11673:6;;11701:30;:::i;:::-;;;;;;;;11764:9;-1:-1:-1;;;;;11747:35:0;11756:6;-1:-1:-1;;;;;11747:35:0;;11775:6;11747:35;;;;160:25:1;;148:2;133:18;;14:177;11747:35:0;;;;;;;;-1:-1:-1;11800:4:0;;11365:447;-1:-1:-1;;;;11365:447:0:o;11820:166::-;11917:12;;11907:6;:22;;:49;;;-1:-1:-1;;;;;;11933:23:0;;;;;;:15;:23;;;;;;;;11907:49;11899:79;;;;-1:-1:-1;;;11899:79:0;;14147:2:1;11899:79:0;;;14129:21:1;14186:2;14166:18;;;14159:30;-1:-1:-1;;;14205:18:1;;;14198:47;14262:18;;11899:79:0;13945:341:1;11899:79:0;11820:166;;:::o;12116:592::-;12202:7;;-1:-1:-1;;;;;12272:4:0;12259:17;;;;;;12256:253;;12331:3;12315:12;;12306:6;:21;;;;:::i;:::-;12305:29;;;;:::i;:::-;12293:41;;12256:253;;;12365:4;-1:-1:-1;;;;;12355:14:0;:6;-1:-1:-1;;;;;12355:14:0;;12352:157;;12423:3;12408:11;;12399:6;:20;;;;:::i;12352:157::-;12494:3;12470:20;5086:1;12470:6;:20;:::i;:::-;12469:28;;;;:::i;:::-;12457:40;;12352:157;12539:4;12521:24;;;;:9;:24;;;;;:37;;12549:9;;12521:24;:37;;12549:9;;12521:37;:::i;:::-;;;;-1:-1:-1;;12574:42:0;;160:25:1;;;12599:4:0;;-1:-1:-1;;;;;12574:42:0;;;;;148:2:1;133:18;12574:42:0;;;;;;;12627:20;12650:18;12659:9;12650:6;:18;:::i;:::-;12627:41;12116:592;-1:-1:-1;;;;;;12116:592:0:o;13581:1225::-;5504:6;:13;;-1:-1:-1;;5504:13:0;5513:4;5504:13;;;13663:12:::1;::::0;13649:11:::1;::::0;5504:6;;13649:26:::1;::::0;::::1;:::i;:::-;13630:45;;13686:15;13717:11;;13704:10;;:24;;;;:::i;:::-;13841:13;::::0;13891:16:::1;::::0;;13905:1:::1;13891:16:::0;;;;;::::1;::::0;;13686:42;;-1:-1:-1;13739:21:0::1;::::0;;;13841:13;13739:21;;13891:16;13905:1;13891:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;13891:16:0::1;13867:40;;13936:4;13918;13923:1;13918:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;13918:23:0::1;;;-1:-1:-1::0;;;;;13918:23:0::1;;;::::0;::::1;13962:4;13952;13957:1;13952:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13952:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;13979:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;13979:188:0;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;14051:12;;13979:6:::1;::::0;14094:4;;14121::::1;::::0;14141:15:::1;::::0;13979:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;14202:21:0::1;::::0;-1:-1:-1;;;14180:19:0::1;14239:13:::0;;;14236:145:::1;;14285:1;14269:17;;14236:145;;;14361:8:::0;14336:21:::1;14350:7:::0;14336:11;:21:::1;:::i;:::-;14335:34;;;;:::i;:::-;14319:50;;14236:145;14414:27;14428:13:::0;14414:11;:27:::1;:::i;:::-;14483:15;::::0;14475:55:::1;::::0;14393:48;;-1:-1:-1;14455:15:0::1;::::0;-1:-1:-1;;;;;14483:15:0;;::::1;::::0;14512:13;;14455:15;14475:55;14455:15;14475:55;14512:13;14483:15;14475:55:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14454:76;;;14549:10;14541:65;;;::::0;-1:-1:-1;;;14541:65:0;;15667:2:1;14541:65:0::1;::::0;::::1;15649:21:1::0;15706:2;15686:18;;;15679:30;15745:34;15725:18;;;15718:62;-1:-1:-1;;;15796:18:1;;;15789:40;15846:19;;14541:65:0::1;15465:406:1::0;14541:65:0::1;14657:20;::::0;14649:65:::1;::::0;14628:16:::1;::::0;-1:-1:-1;;;;;14657:20:0::1;::::0;14691:18;;14628:16;14649:65;14628:16;14649:65;14691:18;14657:20;14649:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14627:87;;;14733:11;14725:71;;;::::0;-1:-1:-1;;;14725:71:0;;16078:2:1;14725:71:0::1;::::0;::::1;16060:21:1::0;16117:2;16097:18;;;16090:30;16156:34;16136:18;;;16129:62;-1:-1:-1;;;16207:18:1;;;16200:45;16262:19;;14725:71:0::1;15876:411:1::0;14725:71:0::1;-1:-1:-1::0;;5522:6:0;:14;;-1:-1:-1;;5522:14:0;;;-1:-1:-1;;;;;;;13581:1225:0:o;196:346:1:-;264:6;272;325:2;313:9;304:7;300:23;296:32;293:52;;;341:1;338;331:12;293:52;-1:-1:-1;;386:23:1;;;506:2;491:18;;;478:32;;-1:-1:-1;196:346:1:o;547:118::-;633:5;626:13;619:21;612:5;609:32;599:60;;655:1;652;645:12;599:60;547:118;:::o;670:128::-;735:20;;764:28;735:20;764:28;:::i;:::-;670:128;;;:::o;803:361::-;868:6;876;929:2;917:9;908:7;904:23;900:32;897:52;;;945:1;942;935:12;897:52;984:9;971:23;1003:28;1025:5;1003:28;:::i;:::-;1050:5;1128:2;1113:18;;;;1100:32;;-1:-1:-1;;;803:361:1:o;1169:173::-;1237:20;;-1:-1:-1;;;;;1286:31:1;;1276:42;;1266:70;;1332:1;1329;1322:12;1347:186;1406:6;1459:2;1447:9;1438:7;1434:23;1430:32;1427:52;;;1475:1;1472;1465:12;1427:52;1498:29;1517:9;1498:29;:::i;1730:418::-;1879:2;1868:9;1861:21;1842:4;1911:6;1905:13;1954:6;1949:2;1938:9;1934:18;1927:34;2013:6;2008:2;2000:6;1996:15;1991:2;1980:9;1976:18;1970:50;2069:1;2064:2;2055:6;2044:9;2040:22;2036:31;2029:42;2139:2;2132;2128:7;2123:2;2115:6;2111:15;2107:29;2096:9;2092:45;2088:54;2080:62;;;1730:418;;;;:::o;2153:300::-;2221:6;2229;2282:2;2270:9;2261:7;2257:23;2253:32;2250:52;;;2298:1;2295;2288:12;2250:52;2321:29;2340:9;2321:29;:::i;2458:260::-;2526:6;2534;2587:2;2575:9;2566:7;2562:23;2558:32;2555:52;;;2603:1;2600;2593:12;2555:52;2626:29;2645:9;2626:29;:::i;:::-;2616:39;;2674:38;2708:2;2697:9;2693:18;2674:38;:::i;:::-;2664:48;;2458:260;;;;;:::o;2723:374::-;2800:6;2808;2816;2869:2;2857:9;2848:7;2844:23;2840:32;2837:52;;;2885:1;2882;2875:12;2837:52;2908:29;2927:9;2908:29;:::i;:::-;2898:39;;2956:38;2990:2;2979:9;2975:18;2956:38;:::i;:::-;2723:374;;2946:48;;-1:-1:-1;;;3063:2:1;3048:18;;;;3035:32;;2723:374::o;3291:127::-;3352:10;3347:3;3343:20;3340:1;3333:31;3383:4;3380:1;3373:15;3407:4;3404:1;3397:15;3423:1207;3513:6;3521;3574:2;3562:9;3553:7;3549:23;3545:32;3542:52;;;3590:1;3587;3580:12;3542:52;3630:9;3617:23;3663:18;3655:6;3652:30;3649:50;;;3695:1;3692;3685:12;3649:50;3718:22;;3771:4;3763:13;;3759:27;-1:-1:-1;3749:55:1;;3800:1;3797;3790:12;3749:55;3840:2;3827:16;3866:18;3858:6;3855:30;3852:56;;;3888:18;;:::i;:::-;3934:6;3931:1;3927:14;3970:2;3964:9;4033:2;4029:7;4024:2;4020;4016:11;4012:25;4004:6;4000:38;4104:6;4092:10;4089:22;4068:18;4056:10;4053:34;4050:62;4047:88;;;4115:18;;:::i;:::-;4151:2;4144:22;4201;;;4251:4;4283:11;;;4279:22;;;4201;4239:17;;4313:19;;;4310:39;;;4345:1;4342;4335:12;4310:39;4377:4;4373:2;4369:13;4358:24;;4391:152;4407:6;4402:3;4399:15;4391:152;;;4475:23;4494:3;4475:23;:::i;:::-;4463:36;;4528:4;4424:14;;;;4519;4391:152;;;-1:-1:-1;4562:6:1;-1:-1:-1;4587:37:1;;-1:-1:-1;;;4618:4:1;4603:20;;4587:37;:::i;4635:226::-;4694:6;4747:2;4735:9;4726:7;4722:23;4718:32;4715:52;;;4763:1;4760;4753:12;4715:52;-1:-1:-1;4808:23:1;;4635:226;-1:-1:-1;4635:226:1:o;4866:315::-;4931:6;4939;4992:2;4980:9;4971:7;4967:23;4963:32;4960:52;;;5008:1;5005;4998:12;4960:52;5031:29;5050:9;5031:29;:::i;:::-;5021:39;;5110:2;5099:9;5095:18;5082:32;5123:28;5145:5;5123:28;:::i;:::-;5170:5;5160:15;;;4866:315;;;;;:::o;5620:356::-;5822:2;5804:21;;;5841:18;;;5834:30;5900:34;5895:2;5880:18;;5873:62;5967:2;5952:18;;5620:356::o;5981:127::-;6042:10;6037:3;6033:20;6030:1;6023:31;6073:4;6070:1;6063:15;6097:4;6094:1;6087:15;6113:125;6178:9;;;6199:10;;;6196:36;;;6212:18;;:::i;6600:375::-;6688:1;6706:5;6720:249;6741:1;6731:8;6728:15;6720:249;;;6791:4;6786:3;6782:14;6776:4;6773:24;6770:50;;;6800:18;;:::i;:::-;6850:1;6840:8;6836:16;6833:49;;;6864:16;;;;6833:49;6947:1;6943:16;;;;;6903:15;;6720:249;;;6600:375;;;;;;:::o;6980:902::-;7029:5;7059:8;7049:80;;-1:-1:-1;7100:1:1;7114:5;;7049:80;7148:4;7138:76;;-1:-1:-1;7185:1:1;7199:5;;7138:76;7230:4;7248:1;7243:59;;;;7316:1;7311:174;;;;7223:262;;7243:59;7273:1;7264:10;;7287:5;;;7311:174;7348:3;7338:8;7335:17;7332:43;;;7355:18;;:::i;:::-;-1:-1:-1;;7411:1:1;7397:16;;7470:5;;7223:262;;7569:2;7559:8;7556:16;7550:3;7544:4;7541:13;7537:36;7531:2;7521:8;7518:16;7513:2;7507:4;7504:12;7500:35;7497:77;7494:203;;;-1:-1:-1;7606:19:1;;;7682:5;;7494:203;7729:42;-1:-1:-1;;7754:8:1;7748:4;7729:42;:::i;:::-;7807:6;7803:1;7799:6;7795:19;7786:7;7783:32;7780:58;;;7818:18;;:::i;:::-;7856:20;;6980:902;-1:-1:-1;;;6980:902:1:o;7887:140::-;7945:5;7974:47;8015:4;8005:8;8001:19;7995:4;7974:47;:::i;8032:168::-;8105:9;;;8136;;8153:15;;;8147:22;;8133:37;8123:71;;8174:18;;:::i;10087:128::-;10154:9;;;10175:11;;;10172:37;;;10189:18;;:::i;10220:127::-;10281:10;10276:3;10272:20;10269:1;10262:31;10312:4;10309:1;10302:15;10336:4;10333:1;10326:15;10352:217;10392:1;10418;10408:132;;10462:10;10457:3;10453:20;10450:1;10443:31;10497:4;10494:1;10487:15;10525:4;10522:1;10515:15;10408:132;-1:-1:-1;10554:9:1;;10352:217::o;10574:184::-;10644:6;10697:2;10685:9;10676:7;10672:23;10668:32;10665:52;;;10713:1;10710;10703:12;10665:52;-1:-1:-1;10736:16:1;;10574:184;-1:-1:-1;10574:184:1:o;11042:245::-;11109:6;11162:2;11150:9;11141:7;11137:23;11133:32;11130:52;;;11178:1;11175;11168:12;11130:52;11210:9;11204:16;11229:28;11251:5;11229:28;:::i;13107:402::-;13309:2;13291:21;;;13348:2;13328:18;;;13321:30;13387:34;13382:2;13367:18;;13360:62;-1:-1:-1;;;13453:2:1;13438:18;;13431:36;13499:3;13484:19;;13107:402::o;14291:959::-;14553:4;14601:3;14590:9;14586:19;14632:6;14621:9;14614:25;14675:6;14670:2;14659:9;14655:18;14648:34;14718:3;14713:2;14702:9;14698:18;14691:31;14742:6;14777;14771:13;14808:6;14800;14793:22;14846:3;14835:9;14831:19;14824:26;;14885:2;14877:6;14873:15;14859:29;;14906:1;14916:195;14930:6;14927:1;14924:13;14916:195;;;14995:13;;-1:-1:-1;;;;;14991:39:1;14979:52;;15060:2;15086:15;;;;15051:12;;;;15027:1;14945:9;14916:195;;;-1:-1:-1;;;;;;;15167:32:1;;;;15162:2;15147:18;;15140:60;-1:-1:-1;;15231:3:1;15216:19;15209:35;15128:3;14291:959;-1:-1:-1;;;14291:959:1:o

Swarm Source

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