ETH Price: $3,401.69 (+2.58%)

Token

NO (NO)
 

Overview

Max Total Supply

1,000,000,000 NO

Holders

30

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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

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

Contract Source Code Verified (Exact Match)

Contract Name:
No_Token

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-03-02
*/

/**
// 
// https://www.notokeneth.com/
//
*/
//SPDX-License-Identifier: MIT
pragma solidity 0.8.18;
// Just the basic IERC20 interface
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 _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);
}

// We use the Auth contract mainly to have two devs able to interacet with the contract
abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

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 addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

contract No_Token is IERC20, Auth {
   
    // Constant addresses 
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;
    IDEXRouter public constant router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

    // Immutable vars
    address public immutable pair; // After we set the pair we don't have to change it again

    // Token info is constant
    string constant _name = "NO";
    string constant _symbol = "NO";
    uint8 constant _decimals = 18;

    // Total supply is 1 billion
    uint256 _totalSupply = 1 * (10**9) * (10 ** _decimals);

    // The tax divisor is also constant (and hence immutable)
    // 1000 so we can also use halves, like 2.5%
    uint256 constant taxDivisor = 1_000;
    
    // 10 / 1000 = 0.01 = 1%
    uint256 public _maxTxAmount = _totalSupply * 10 / taxDivisor; 
    uint256 public _maxWalletToken =  _totalSupply * 20 / taxDivisor; 

    // Keep track of wallet balances and approvals (allowance)
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;

    // Mapping to keep track of what wallets/contracts are exempt
    // from fees
    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt; // Both wallet + max TX

    // Also, to keep it organized, a seperate mapping to exclude the presale
    // and locker from limits
    mapping (address => bool) presaleOrlock;

    //fees are mulitplied by 10 to allow decimals, and therefore dividied by 1000 (see takefee)
    uint256 marketingBuyFee = 60;
    uint256 liquidityBuyFee = 0;
    uint256 developmentBuyFee = 60;
    uint256 public totalBuyFee = marketingBuyFee + liquidityBuyFee + developmentBuyFee;

    uint256 marketingSellFee = 100;
    uint256 liquiditySellFee = 0;
    uint256 developmentSellFee = 100;
    uint256 public totalSellFee = marketingSellFee + liquiditySellFee + developmentSellFee;

    // For the sniper friends
    uint256 private sniperTaxTill; 

    // In case anything would go wrong with fees we can just disable them
    bool feesEnabled = true;

    // Whether tx limits should apply or not 
    bool limits = true;

    // To keep track of the tokens collected to swap
    uint256 private tokensForMarketing;
    uint256 private tokensForLiquidity;
    uint256 private tokensForDev;

    // Wallets used to send the fees to
    address public liquidityWallet;
    address public marketingWallet;
    address public developmentWallet;

    // One time trade lock
    bool tradeBlock = true;
    bool lockUsed = false;

    // Contract cant be tricked into spam selling exploit
    uint256 lastSellTime;
    
    // When to swap contract tokens, and how many to swap
    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 10 / 100_000; // 0.01%
    event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity);

    // This will just check if the transferf is called from within 
    // the token -> ETH swap when processing the fees (and adding LP)
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }


    constructor () Auth(msg.sender) {
        // Create the lp pair
        pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this));

        // Exclude the contract
        isFeeExempt[address(this)] = true;
        isTxLimitExempt[address(this)] = true;

        // Exclude the owner
        isFeeExempt[msg.sender] = true;
        isTxLimitExempt[msg.sender] = true;
        
        // Exclude the pair
        isTxLimitExempt[address(pair)] = true; 

        // Exclude the router 
        isTxLimitExempt[address(router)] = true;

        // Set fee receivers
        liquidityWallet = 0x3411b6C32076AAbBAF6941819bbB4C1E65E46D0a;
        marketingWallet = 0x3411b6C32076AAbBAF6941819bbB4C1E65E46D0a;
        developmentWallet = 0x3411b6C32076AAbBAF6941819bbB4C1E65E46D0a;

        // Approve this contract & owner to interact with the 
        // router and pair contract (for swapping)
        _approve(address(this), address(router), _totalSupply);
        _approve(msg.sender, address(pair), _totalSupply);

        // Mint the tokens
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable { }

    function totalSupply() external view 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 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 getPair() external view returns (address){return pair;}

    // Internal approve 
    function _approve(address owner, address spender, uint256 amount) internal virtual {
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

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

    function approveMax(address spender) external returns (bool) {
        return approve(spender, _totalSupply);
    }

    // We actually only need to exempt any locks or presale addresses
    // we could use a feeexempt or authorize it, but this is a bit cleaner
    function excludeLockorPresale(address add) external authorized {
        // Exclude from fees
        isFeeExempt[add] = true;
        isTxLimitExempt[add] = true;
        // We want to allow transfers to locks and from the presale
        // address when trading is not yet enabled. 
        presaleOrlock[add] = true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        uint256 senderBalance = _balances[sender];
        // Check if the sender has sufficient balance
        require(senderBalance >= amount, "Insufficient Balance");
        // Update balances
        _balances[sender] = _balances[sender] - amount; 
        _balances[recipient] = _balances[recipient] + amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    // Set the buy fees, this can not exceed 15%, 150 / 1000 = 0.15 = 15%
    function setBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _developFee) external authorized{
        require(_marketingFee + _liquidityFee + _developFee <= 120); // max 12%
        marketingBuyFee = _marketingFee;
        liquidityBuyFee = _liquidityFee;
        developmentBuyFee = _developFee;
        totalBuyFee = _marketingFee + _liquidityFee + _developFee;
    }
    
    // Set the sell fees, this can not exceed 15%, 150 / 1000 = 0.15 = 15%
    function setSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _developFee) external authorized{
        require(_marketingFee + _liquidityFee + _developFee <= 200); // max 20%
        marketingSellFee = _marketingFee;
        liquiditySellFee = _liquidityFee;
        developmentSellFee = _developFee;
        totalSellFee = _marketingFee + _liquidityFee + _developFee;
    }

    // To change the tax receiving wallets
    function setWallets(address _marketingWallet, address _liquidityWallet, address _developWallet) external authorized {
        marketingWallet = _marketingWallet;
        liquidityWallet = _liquidityWallet;
        developmentWallet = _developWallet;
    }

    // To limit the number of tokens a wallet can buy, especially relevant at launch
    function setMaxWallet(uint256 percent) external authorized {
        require(percent >= 10); //should be at least 1% of the total supply (note divisor is 1000)
        _maxWalletToken = ( _totalSupply * percent ) / taxDivisor;
    }

    // To limit the number of tokens per transactions
    function setTxLimit(uint256 percent) external authorized {
        require(percent >= 10); //should be at least 1% of the total supply (note divisor is 1000)
        _maxTxAmount = ( _totalSupply * percent ) / taxDivisor;
    }
    
    function checkLimits(address sender,address recipient, uint256 amount) internal view {
        // If both sender and recipient are excluded we don't have to limit 
        if (isTxLimitExempt[sender] && isTxLimitExempt[recipient]){return;}

        // In any other case we will check whether this is a buy or sell
        // to determine the tx limit
        
        // buy
        if (sender == pair && !isTxLimitExempt[recipient]) {  
            require(amount <= _maxTxAmount, "Max tx limit");

        // sell
        } else if(recipient == pair && !isTxLimitExempt[sender] ) { 
            require(amount <= _maxTxAmount, "Max tx limit");
        }

        // Also check max wallet 
        if (!isTxLimitExempt[recipient]) {
            require(amount + balanceOf(recipient) <= _maxWalletToken, "Max wallet");
        }

    }

    // We will lift the transaction limits just after launch
    function liftLimits() external authorized {
        limits = false;
    }

    // This would make the token fee-less in case taking fees
    // would at any point block transfers. This is reversible
    function setFeeTaking(bool takeFees) external authorized {
        feesEnabled = takeFees;
    }

    // Enable trading - this can only be called once (by just the owner)
    function startTrading() external onlyOwner {
        require(lockUsed == false);
        tradeBlock = false;
        sniperTaxTill = block.number + 1; // (<sniperTaxTill, so first block)
        lockUsed = true;
    }
    
    // When and if to swap the tokens in the contract
    function setTokenSwapSettings(bool _enabled, uint256 _threshold) external authorized {
        swapEnabled = _enabled;
        swapThreshold = _threshold * (10 ** _decimals); 
    }
    
    // Check if the contract should swap tokens
    function shouldTokenSwap(address recipient) internal view returns (bool) {
        return recipient == pair // i.e. is sell
        && lastSellTime + 1 < block.timestamp // block contract spam sells
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function takeFee(address from, address to, uint256 amount) internal returns (uint256) {

        // If the sender or receiver is exempt from fees, skip fees
        if (isFeeExempt[from] || isFeeExempt[to]) {
            return amount;
        }

        // This does not charge for wallet-wallet transfers
        uint256 fees;

        // Sniper tax
        if (block.number < sniperTaxTill) {
            fees = amount * 98 / 100; // 98% tax
            tokensForLiquidity += (fees * 50) / 98;
            tokensForMarketing += (fees * 48) / 98;
        }

        // On sell
        else if (to == pair && totalSellFee > 0) {
            fees = amount * totalSellFee / taxDivisor;
            tokensForLiquidity += (fees * liquiditySellFee)   / totalSellFee;
            tokensForDev       += (fees * developmentSellFee) / totalSellFee;
            tokensForMarketing += (fees * marketingSellFee)   / totalSellFee;
        }

        // On buy
        else if (from == pair && totalBuyFee > 0) {
            fees = amount * totalBuyFee / taxDivisor;
            tokensForLiquidity += (fees * liquidityBuyFee)   / totalBuyFee ;
            tokensForDev       += (fees * developmentBuyFee) / totalBuyFee;
            tokensForMarketing += (fees * marketingBuyFee)   / totalBuyFee;
        }

        // If we collected fees, send them to the contract
        if (fees > 0) {
            _basicTransfer(from, address(this), fees);
            emit Transfer(from, address(this), fees);
        }

        // Return the taxed amount
        return amount -= fees;
    }

    
    function swapTokensForEth(uint256 tokenAmount) private {
        // Swap path token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        // Make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, 
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // Add liquidity from the contract. Now the LP tokens get send to the lP
        // wallet, but we could also change the LP receiver to the burn address leter
        router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, 
            0, 
            liquidityWallet,
            block.timestamp
        );
    }

    function swapBack() internal swapping {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev;
        bool success;

        if (contractBalance == 0 || totalTokensToSwap == 0) {return;}
  
        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = (contractBalance * tokensForLiquidity) / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance - liquidityTokens;

        uint256 initialETHBalance = address(this).balance;

        // Swap the tokens for ETH
        swapTokensForEth(amountToSwapForETH);

        uint256 ethBalance = address(this).balance - initialETHBalance;
        uint256 ethForMarketing = (ethBalance * tokensForMarketing) / totalTokensToSwap;
        uint256 ethForDev       = (ethBalance * tokensForDev)       / totalTokensToSwap;
        uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev;

        // Reset token fee counts
        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;

        // Send Dev fees
        (success, ) = address(developmentWallet).call{value: ethForDev}("");

        // Add liquidty
        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity);
        }

        // Whatever remains (this should be ~ethForMarketing) send to the marketing wallet
        (success, ) = address(marketingWallet).call{value: address(this).balance}("");

        lastSellTime = block.timestamp;
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        if (owner == msg.sender){
            return _basicTransfer(msg.sender, recipient, amount);
        }
        else {
            return _transferFrom(msg.sender, recipient, amount);
        }
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        if(_allowances[sender][msg.sender] != _totalSupply){
            // Get the current allowance
            uint256 curAllowance =  _allowances[sender][msg.sender];
            require(curAllowance >= amount, "Insufficient Allowance");
            _allowances[sender][msg.sender] -= amount;
        }
        return _transferFrom(sender, recipient, amount);
    }


    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        // These transfers are always feeless and limitless
        if ( authorizations[sender] || authorizations[recipient] || presaleOrlock[sender] || inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }

        // In any other case, check if trading is open already
        require(tradeBlock == false,"Trading not open yet");
            
        // If limits are enabled we check the max wallet and max tx.
        if (limits){checkLimits(sender, recipient, amount);}

        // Check how much fees are accumulated in the contract, if > threshold, swap
        if(shouldTokenSwap(recipient)){ swapBack();}

        // Charge transaction fees (only swaps) when enabled
        if(feesEnabled){
             amount = (recipient == pair || sender == pair) ? takeFee(sender, recipient, amount) : amount;
        } 

        // Send the remaining tokens, after fee
        _basicTransfer(sender, recipient, amount);

        emit Transfer(sender, recipient, amount);
        return true;
    }

    // In case anyone would send ETH to the contract directly
    // or when, for some reason, autoswap would fail. We 
    // send the contact ETH to the marketing wallet
    function clearStuckWETH(uint256 perc) external authorized {
        uint256 amountWETH = address(this).balance;
        payable(marketingWallet).transfer(amountWETH * perc / 100);
    }

}

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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"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":"uint256","name":"perc","type":"uint256"}],"name":"clearStuckWETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"add","type":"address"}],"name":"excludeLockorPresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liftLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_developFee","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"takeFees","type":"bool"}],"name":"setFeeTaking","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_developFee","type":"uint256"}],"name":"setSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_threshold","type":"uint256"}],"name":"setTokenSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_liquidityWallet","type":"address"},{"internalType":"address","name":"_developWallet","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","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":"totalBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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 payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526012600a62000014919062000a88565b633b9aca0062000025919062000ad9565b6002556103e8600a6002546200003c919062000ad9565b62000048919062000b53565b6003556103e860146002546200005f919062000ad9565b6200006b919062000b53565b600455603c600a556000600b55603c600c55600c54600b54600a5462000092919062000b8b565b6200009e919062000b8b565b600d556064600e556000600f556064601055601054600f54600e54620000c5919062000b8b565b620000d1919062000b8b565b6011556001601360006101000a81548160ff0219169083151502179055506001601360016101000a81548160ff0219169083151502179055506001601960146101000a81548160ff0219169083151502179055506000601960156101000a81548160ff0219169083151502179055506001601b60006101000a81548160ff021916908315150217905550620186a0600a60025462000170919062000ad9565b6200017c919062000b53565b601c553480156200018c57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000286573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ac919062000c30565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000327573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034d919062000c30565b306040518363ffffffff1660e01b81526004016200036d92919062000c73565b6020604051808303816000875af11580156200038d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b3919062000c30565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016008600060805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550733411b6c32076aabbaf6941819bbb4c1e65e46d0a601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550733411b6c32076aabbaf6941819bbb4c1e65e46d0a601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550733411b6c32076aabbaf6941819bbb4c1e65e46d0a601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200073430737a250d5630b4cf539739df2c5dacb4c659f2488d6002546200080160201b60201c565b6200074b336080516002546200080160201b60201c565b600254600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600254604051620007f3919062000cb1565b60405180910390a362000cce565b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051620008e1919062000cb1565b60405180910390a3505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200097c57808604811115620009545762000953620008ee565b5b6001851615620009645780820291505b808102905062000974856200091d565b945062000934565b94509492505050565b60008262000997576001905062000a6a565b81620009a7576000905062000a6a565b8160018114620009c05760028114620009cb5762000a01565b600191505062000a6a565b60ff841115620009e057620009df620008ee565b5b8360020a915084821115620009fa57620009f9620008ee565b5b5062000a6a565b5060208310610133831016604e8410600b841016171562000a3b5782820a90508381111562000a355762000a34620008ee565b5b62000a6a565b62000a4a84848460016200092a565b9250905081840481111562000a645762000a63620008ee565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000a958262000a71565b915062000aa28362000a7b565b925062000ad17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000985565b905092915050565b600062000ae68262000a71565b915062000af38362000a71565b925082820262000b038162000a71565b9150828204841483151762000b1d5762000b1c620008ee565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000b608262000a71565b915062000b6d8362000a71565b92508262000b805762000b7f62000b24565b5b828204905092915050565b600062000b988262000a71565b915062000ba58362000a71565b925082820190508082111562000bc05762000bbf620008ee565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000bf88262000bcb565b9050919050565b62000c0a8162000beb565b811462000c1657600080fd5b50565b60008151905062000c2a8162000bff565b92915050565b60006020828403121562000c495762000c4862000bc6565b5b600062000c598482850162000c19565b91505092915050565b62000c6d8162000beb565b82525050565b600060408201905062000c8a600083018562000c62565b62000c99602083018462000c62565b9392505050565b62000cab8162000a71565b82525050565b600060208201905062000cc8600083018462000ca0565b92915050565b608051613dad62000d2260003960008181611468015281816115d101528181611cc201528181611d17015281816120b8015281816121ac0152818161234f0152818161284c01526129690152613dad6000f3fe6080604052600436106102295760003560e01c806375f0a87411610123578063c1f1b1b5116100ab578063f2fde38b1161006f578063f2fde38b14610816578063f60b3d6d1461083f578063f887ea4014610856578063fe62367414610881578063fe9fbb80146108aa57610230565b8063c1f1b1b514610731578063d46980161461075c578063dd62ed3e14610787578063eb341040146107c4578063f0b37c04146107ed57610230565b80639d9241ec116100f25780639d9241ec1461064a578063a8aa1b3114610675578063a9059cbb146106a0578063b6a5d7de146106dd578063c04a54141461070657610230565b806375f0a8741461059e57806378109e54146105c95780637d1db4a5146105f457806395d89b411461061f57610230565b80632f54bf6e116101b15780635d0044ca116101755780635d0044ca146104bb5780636ddd1713146104e457806370a082311461050f57806372f2943a1461054c57806375cb1bd11461057557610230565b80632f54bf6e146103c2578063313ce567146103ff578063571ac8b01461042a57806359b107b9146104675780635c85974f1461049257610230565b80630d075d9c116101f85780630d075d9c146102f15780630f683e901461031a57806318160ddd1461034357806323b872dd1461036e578063293230b8146103ab57610230565b80630445b6671461023557806304fda8ff1461026057806306fdde0314610289578063095ea7b3146102b457610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a6108e7565b6040516102579190612def565b60405180910390f35b34801561026c57600080fd5b5061028760048036038101906102829190612e3b565b6108ed565b005b34801561029557600080fd5b5061029e6109be565b6040516102ab9190612ef8565b60405180910390f35b3480156102c057600080fd5b506102db60048036038101906102d69190612f78565b6109fb565b6040516102e89190612fd3565b60405180910390f35b3480156102fd57600080fd5b5061031860048036038101906103139190612fee565b610aed565b005b34801561032657600080fd5b50610341600480360381019061033c9190612fee565b610b90565b005b34801561034f57600080fd5b50610358610c33565b6040516103659190612def565b60405180910390f35b34801561037a57600080fd5b5061039560048036038101906103909190613041565b610c3d565b6040516103a29190612fd3565b60405180910390f35b3480156103b757600080fd5b506103c0610f0e565b005b3480156103ce57600080fd5b506103e960048036038101906103e49190613094565b610fc1565b6040516103f69190612fd3565b60405180910390f35b34801561040b57600080fd5b5061041461101a565b60405161042191906130dd565b60405180910390f35b34801561043657600080fd5b50610451600480360381019061044c9190613094565b611023565b60405161045e9190612fd3565b60405180910390f35b34801561047357600080fd5b5061047c611038565b6040516104899190612def565b60405180910390f35b34801561049e57600080fd5b506104b960048036038101906104b49190612e3b565b61103e565b005b3480156104c757600080fd5b506104e260048036038101906104dd9190612e3b565b6110b8565b005b3480156104f057600080fd5b506104f9611132565b6040516105069190612fd3565b60405180910390f35b34801561051b57600080fd5b5061053660048036038101906105319190613094565b611145565b6040516105439190612def565b60405180910390f35b34801561055857600080fd5b50610573600480360381019061056e9190613094565b61118e565b005b34801561058157600080fd5b5061059c600480360381019061059791906130f8565b6112e1565b005b3480156105aa57600080fd5b506105b36113f1565b6040516105c0919061315a565b60405180910390f35b3480156105d557600080fd5b506105de611417565b6040516105eb9190612def565b60405180910390f35b34801561060057600080fd5b5061060961141d565b6040516106169190612def565b60405180910390f35b34801561062b57600080fd5b50610634611423565b6040516106419190612ef8565b60405180910390f35b34801561065657600080fd5b5061065f611460565b60405161066c9190612def565b60405180910390f35b34801561068157600080fd5b5061068a611466565b604051610697919061315a565b60405180910390f35b3480156106ac57600080fd5b506106c760048036038101906106c29190612f78565b61148a565b6040516106d49190612fd3565b60405180910390f35b3480156106e957600080fd5b5061070460048036038101906106ff9190613094565b611505565b005b34801561071257600080fd5b5061071b6115a7565b604051610728919061315a565b60405180910390f35b34801561073d57600080fd5b506107466115cd565b604051610753919061315a565b60405180910390f35b34801561076857600080fd5b506107716115f5565b60405161077e919061315a565b60405180910390f35b34801561079357600080fd5b506107ae60048036038101906107a99190613175565b61161b565b6040516107bb9190612def565b60405180910390f35b3480156107d057600080fd5b506107eb60048036038101906107e691906131e1565b6116a2565b005b3480156107f957600080fd5b50610814600480360381019061080f9190613094565b611727565b005b34801561082257600080fd5b5061083d6004803603810190610838919061325f565b6117ca565b005b34801561084b57600080fd5b506108546118e3565b005b34801561086257600080fd5b5061086b611948565b60405161087891906132eb565b60405180910390f35b34801561088d57600080fd5b506108a860048036038101906108a39190613306565b611960565b005b3480156108b657600080fd5b506108d160048036038101906108cc9190613094565b6119c5565b6040516108de9190612fd3565b60405180910390f35b601c5481565b6108f6336119c5565b610935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092c9061337f565b60405180910390fd5b6000479050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064848461098491906133ce565b61098e919061343f565b9081150290604051600060405180830381858888f193505050501580156109b9573d6000803e3d6000fd5b505050565b60606040518060400160405280600281526020017f4e4f000000000000000000000000000000000000000000000000000000000000815250905090565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610adb9190612def565b60405180910390a36001905092915050565b610af6336119c5565b610b35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2c9061337f565b60405180910390fd5b6078818385610b449190613470565b610b4e9190613470565b1115610b5957600080fd5b82600a8190555081600b8190555080600c81905550808284610b7b9190613470565b610b859190613470565b600d81905550505050565b610b99336119c5565b610bd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcf9061337f565b60405180910390fd5b60c8818385610be79190613470565b610bf19190613470565b1115610bfc57600080fd5b82600e8190555081600f8190555080601081905550808284610c1e9190613470565b610c289190613470565b601181905550505050565b6000600254905090565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610cad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca490613516565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d13906135a8565b60405180910390fd5b600254600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610efa576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5c90613614565b60405180910390fd5b82600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ef19190613634565b92505081905550505b610f05848484611a1b565b90509392505050565b610f1733610fc1565b610f56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4d906136b4565b60405180910390fd5b60001515601960159054906101000a900460ff16151514610f7657600080fd5b6000601960146101000a81548160ff021916908315150217905550600143610f9e9190613470565b6012819055506001601960156101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006012905090565b6000611031826002546109fb565b9050919050565b600d5481565b611047336119c5565b611086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107d9061337f565b60405180910390fd5b600a81101561109457600080fd5b6103e8816002546110a591906133ce565b6110af919061343f565b60038190555050565b6110c1336119c5565b611100576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f79061337f565b60405180910390fd5b600a81101561110e57600080fd5b6103e88160025461111f91906133ce565b611129919061343f565b60048190555050565b601b60009054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611197336119c5565b6111d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cd9061337f565b60405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6112ea336119c5565b611329576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113209061337f565b60405180910390fd5b82601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b60035481565b60606040518060400160405280600281526020017f4e4f000000000000000000000000000000000000000000000000000000000000815250905090565b60115481565b7f000000000000000000000000000000000000000000000000000000000000000081565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036114f1576114ea338484611dfb565b90506114ff565b6114fc338484611a1b565b90505b92915050565b61150e33610fc1565b61154d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611544906136b4565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6116ab336119c5565b6116ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e19061337f565b60405180910390fd5b81601b60006101000a81548160ff0219169083151502179055506012600a6117129190613807565b8161171d91906133ce565b601c819055505050565b61173033610fc1565b61176f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611766906136b4565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6117d333610fc1565b611812576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611809906136b4565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516118d89190613873565b60405180910390a150565b6118ec336119c5565b61192b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119229061337f565b60405180910390fd5b6000601360016101000a81548160ff021916908315150217905550565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b611969336119c5565b6119a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199f9061337f565b60405180910390fd5b80601360006101000a81548160ff02191690831515021790555050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611a8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8290613516565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611afa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af1906135a8565b60405180910390fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611b9b5750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611bef5750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611c065750601d60009054906101000a900460ff165b15611c1d57611c16848484611dfb565b9050611df4565b60001515601960149054906101000a900460ff16151514611c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6a906138da565b60405180910390fd5b601360019054906101000a900460ff1615611c9457611c93848484612010565b5b611c9d8361234b565b15611cab57611caa61243a565b5b601360009054906101000a900460ff1615611d7e577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611d6557507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b611d6f5781611d7b565b611d7a84848461270c565b5b91505b611d89848484611dfb565b508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611de79190612def565b60405180910390a3600190505b9392505050565b600080600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611e83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7a90613946565b60405180910390fd5b82600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ece9190613634565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f5c9190613470565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611ffc9190612def565b60405180910390a360019150509392505050565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156120b25750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612346577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561215b5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121aa576003548111156121a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219c906139b2565b60405180910390fd5b61229b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614801561224f5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561229a57600354811115612299576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612290906139b2565b60405180910390fd5b5b5b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612345576004546122f883611145565b826123039190613470565b1115612344576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233b90613a1e565b60405180910390fd5b5b5b505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156123b55750426001601a546123b39190613470565b105b80156123ce5750601d60009054906101000a900460ff16155b80156123e65750601b60009054906101000a900460ff165b80156124335750601c54600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b9050919050565b6001601d60006101000a81548160ff021916908315150217905550600061246030611145565b905060006016546014546015546124779190613470565b6124819190613470565b90506000808314806124935750600082145b156124a0575050506126ef565b6000600283601554866124b391906133ce565b6124bd919061343f565b6124c7919061343f565b9050600081856124d79190613634565b905060004790506124e782612b17565b600081476124f59190613634565b90506000866014548361250891906133ce565b612512919061343f565b90506000876016548461252591906133ce565b61252f919061343f565b905060008183856125409190613634565b61254a9190613634565b9050600060158190555060006014819055506000601681905550601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516125aa90613a6f565b60006040518083038185875af1925050503d80600081146125e7576040519150601f19603f3d011682016040523d82523d6000602084013e6125ec565b606091505b5050809850506000871180156126025750600081115b1561264f576126118782612d11565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868260155460405161264693929190613a84565b60405180910390a15b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161269590613a6f565b60006040518083038185875af1925050503d80600081146126d2576040519150601f19603f3d011682016040523d82523d6000602084013e6126d7565b606091505b50508098505042601a81905550505050505050505050505b6000601d60006101000a81548160ff021916908315150217905550565b6000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127af5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156127bc57819050612b10565b600060125443101561284a5760646062846127d791906133ce565b6127e1919061343f565b905060626032826127f291906133ce565b6127fc919061343f565b6015600082825461280d9190613470565b92505081905550606260308261282391906133ce565b61282d919061343f565b6014600082825461283e9190613470565b92505081905550612a82565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156128a757506000601154115b15612967576103e8601154846128bd91906133ce565b6128c7919061343f565b9050601154600f54826128da91906133ce565b6128e4919061343f565b601560008282546128f59190613470565b925050819055506011546010548261290d91906133ce565b612917919061343f565b601660008282546129289190613470565b92505081905550601154600e548261294091906133ce565b61294a919061343f565b6014600082825461295b9190613470565b92505081905550612a81565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480156129c457506000600d54115b15612a80576103e8600d54846129da91906133ce565b6129e4919061343f565b9050600d54600b54826129f791906133ce565b612a01919061343f565b60156000828254612a129190613470565b92505081905550600d54600c5482612a2a91906133ce565b612a34919061343f565b60166000828254612a459190613470565b92505081905550600d54600a5482612a5d91906133ce565b612a67919061343f565b60146000828254612a789190613470565b925050819055505b5b5b6000811115612afd57612a96853083611dfb565b503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612af49190612def565b60405180910390a35b8083612b099190613634565b9250829150505b9392505050565b6000600267ffffffffffffffff811115612b3457612b33613abb565b5b604051908082528060200260200182016040528015612b625781602001602082028036833780820191505090505b5090503081600081518110612b7a57612b79613aea565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c379190613b2e565b81600181518110612c4b57612c4a613aea565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612cdb959493929190613c54565b600060405180830381600087803b158015612cf557600080fd5b505af1158015612d09573d6000803e3d6000fd5b505050505050565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612d8c96959493929190613cae565b60606040518083038185885af1158015612daa573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612dcf9190613d24565b5050505050565b6000819050919050565b612de981612dd6565b82525050565b6000602082019050612e046000830184612de0565b92915050565b600080fd5b612e1881612dd6565b8114612e2357600080fd5b50565b600081359050612e3581612e0f565b92915050565b600060208284031215612e5157612e50612e0a565b5b6000612e5f84828501612e26565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612ea2578082015181840152602081019050612e87565b60008484015250505050565b6000601f19601f8301169050919050565b6000612eca82612e68565b612ed48185612e73565b9350612ee4818560208601612e84565b612eed81612eae565b840191505092915050565b60006020820190508181036000830152612f128184612ebf565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f4582612f1a565b9050919050565b612f5581612f3a565b8114612f6057600080fd5b50565b600081359050612f7281612f4c565b92915050565b60008060408385031215612f8f57612f8e612e0a565b5b6000612f9d85828601612f63565b9250506020612fae85828601612e26565b9150509250929050565b60008115159050919050565b612fcd81612fb8565b82525050565b6000602082019050612fe86000830184612fc4565b92915050565b60008060006060848603121561300757613006612e0a565b5b600061301586828701612e26565b935050602061302686828701612e26565b925050604061303786828701612e26565b9150509250925092565b60008060006060848603121561305a57613059612e0a565b5b600061306886828701612f63565b935050602061307986828701612f63565b925050604061308a86828701612e26565b9150509250925092565b6000602082840312156130aa576130a9612e0a565b5b60006130b884828501612f63565b91505092915050565b600060ff82169050919050565b6130d7816130c1565b82525050565b60006020820190506130f260008301846130ce565b92915050565b60008060006060848603121561311157613110612e0a565b5b600061311f86828701612f63565b935050602061313086828701612f63565b925050604061314186828701612f63565b9150509250925092565b61315481612f3a565b82525050565b600060208201905061316f600083018461314b565b92915050565b6000806040838503121561318c5761318b612e0a565b5b600061319a85828601612f63565b92505060206131ab85828601612f63565b9150509250929050565b6131be81612fb8565b81146131c957600080fd5b50565b6000813590506131db816131b5565b92915050565b600080604083850312156131f8576131f7612e0a565b5b6000613206858286016131cc565b925050602061321785828601612e26565b9150509250929050565b600061322c82612f1a565b9050919050565b61323c81613221565b811461324757600080fd5b50565b60008135905061325981613233565b92915050565b60006020828403121561327557613274612e0a565b5b60006132838482850161324a565b91505092915050565b6000819050919050565b60006132b16132ac6132a784612f1a565b61328c565b612f1a565b9050919050565b60006132c382613296565b9050919050565b60006132d5826132b8565b9050919050565b6132e5816132ca565b82525050565b600060208201905061330060008301846132dc565b92915050565b60006020828403121561331c5761331b612e0a565b5b600061332a848285016131cc565b91505092915050565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b6000613369600b83612e73565b915061337482613333565b602082019050919050565b600060208201905081810360008301526133988161335c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006133d982612dd6565b91506133e483612dd6565b92508282026133f281612dd6565b915082820484148315176134095761340861339f565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061344a82612dd6565b915061345583612dd6565b92508261346557613464613410565b5b828204905092915050565b600061347b82612dd6565b915061348683612dd6565b925082820190508082111561349e5761349d61339f565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613500602583612e73565b915061350b826134a4565b604082019050919050565b6000602082019050818103600083015261352f816134f3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613592602383612e73565b915061359d82613536565b604082019050919050565b600060208201905081810360008301526135c181613585565b9050919050565b7f496e73756666696369656e7420416c6c6f77616e636500000000000000000000600082015250565b60006135fe601683612e73565b9150613609826135c8565b602082019050919050565b6000602082019050818103600083015261362d816135f1565b9050919050565b600061363f82612dd6565b915061364a83612dd6565b92508282039050818111156136625761366161339f565b5b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b600061369e600683612e73565b91506136a982613668565b602082019050919050565b600060208201905081810360008301526136cd81613691565b9050919050565b60008160011c9050919050565b6000808291508390505b600185111561372b578086048111156137075761370661339f565b5b60018516156137165780820291505b8081029050613724856136d4565b94506136eb565b94509492505050565b6000826137445760019050613800565b816137525760009050613800565b81600181146137685760028114613772576137a1565b6001915050613800565b60ff8411156137845761378361339f565b5b8360020a91508482111561379b5761379a61339f565b5b50613800565b5060208310610133831016604e8410600b84101617156137d65782820a9050838111156137d1576137d061339f565b5b613800565b6137e384848460016136e1565b925090508184048111156137fa576137f961339f565b5b81810290505b9392505050565b600061381282612dd6565b915061381d836130c1565b925061384a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613734565b905092915050565b600061385d826132b8565b9050919050565b61386d81613852565b82525050565b60006020820190506138886000830184613864565b92915050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b60006138c4601483612e73565b91506138cf8261388e565b602082019050919050565b600060208201905081810360008301526138f3816138b7565b9050919050565b7f496e73756666696369656e742042616c616e6365000000000000000000000000600082015250565b6000613930601483612e73565b915061393b826138fa565b602082019050919050565b6000602082019050818103600083015261395f81613923565b9050919050565b7f4d6178207478206c696d69740000000000000000000000000000000000000000600082015250565b600061399c600c83612e73565b91506139a782613966565b602082019050919050565b600060208201905081810360008301526139cb8161398f565b9050919050565b7f4d61782077616c6c657400000000000000000000000000000000000000000000600082015250565b6000613a08600a83612e73565b9150613a13826139d2565b602082019050919050565b60006020820190508181036000830152613a37816139fb565b9050919050565b600081905092915050565b50565b6000613a59600083613a3e565b9150613a6482613a49565b600082019050919050565b6000613a7a82613a4c565b9150819050919050565b6000606082019050613a996000830186612de0565b613aa66020830185612de0565b613ab36040830184612de0565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613b2881612f4c565b92915050565b600060208284031215613b4457613b43612e0a565b5b6000613b5284828501613b19565b91505092915050565b6000819050919050565b6000613b80613b7b613b7684613b5b565b61328c565b612dd6565b9050919050565b613b9081613b65565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613bcb81612f3a565b82525050565b6000613bdd8383613bc2565b60208301905092915050565b6000602082019050919050565b6000613c0182613b96565b613c0b8185613ba1565b9350613c1683613bb2565b8060005b83811015613c47578151613c2e8882613bd1565b9750613c3983613be9565b925050600181019050613c1a565b5085935050505092915050565b600060a082019050613c696000830188612de0565b613c766020830187613b87565b8181036040830152613c888186613bf6565b9050613c97606083018561314b565b613ca46080830184612de0565b9695505050505050565b600060c082019050613cc3600083018961314b565b613cd06020830188612de0565b613cdd6040830187613b87565b613cea6060830186613b87565b613cf7608083018561314b565b613d0460a0830184612de0565b979650505050505050565b600081519050613d1e81612e0f565b92915050565b600080600060608486031215613d3d57613d3c612e0a565b5b6000613d4b86828701613d0f565b9350506020613d5c86828701613d0f565b9250506040613d6d86828701613d0f565b915050925092509256fea2646970667358221220351d59b3fa64a23ed9bf03a1df68285f925f335bbed061cc4120781b6466c78e64736f6c63430008120033

Deployed Bytecode

0x6080604052600436106102295760003560e01c806375f0a87411610123578063c1f1b1b5116100ab578063f2fde38b1161006f578063f2fde38b14610816578063f60b3d6d1461083f578063f887ea4014610856578063fe62367414610881578063fe9fbb80146108aa57610230565b8063c1f1b1b514610731578063d46980161461075c578063dd62ed3e14610787578063eb341040146107c4578063f0b37c04146107ed57610230565b80639d9241ec116100f25780639d9241ec1461064a578063a8aa1b3114610675578063a9059cbb146106a0578063b6a5d7de146106dd578063c04a54141461070657610230565b806375f0a8741461059e57806378109e54146105c95780637d1db4a5146105f457806395d89b411461061f57610230565b80632f54bf6e116101b15780635d0044ca116101755780635d0044ca146104bb5780636ddd1713146104e457806370a082311461050f57806372f2943a1461054c57806375cb1bd11461057557610230565b80632f54bf6e146103c2578063313ce567146103ff578063571ac8b01461042a57806359b107b9146104675780635c85974f1461049257610230565b80630d075d9c116101f85780630d075d9c146102f15780630f683e901461031a57806318160ddd1461034357806323b872dd1461036e578063293230b8146103ab57610230565b80630445b6671461023557806304fda8ff1461026057806306fdde0314610289578063095ea7b3146102b457610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a6108e7565b6040516102579190612def565b60405180910390f35b34801561026c57600080fd5b5061028760048036038101906102829190612e3b565b6108ed565b005b34801561029557600080fd5b5061029e6109be565b6040516102ab9190612ef8565b60405180910390f35b3480156102c057600080fd5b506102db60048036038101906102d69190612f78565b6109fb565b6040516102e89190612fd3565b60405180910390f35b3480156102fd57600080fd5b5061031860048036038101906103139190612fee565b610aed565b005b34801561032657600080fd5b50610341600480360381019061033c9190612fee565b610b90565b005b34801561034f57600080fd5b50610358610c33565b6040516103659190612def565b60405180910390f35b34801561037a57600080fd5b5061039560048036038101906103909190613041565b610c3d565b6040516103a29190612fd3565b60405180910390f35b3480156103b757600080fd5b506103c0610f0e565b005b3480156103ce57600080fd5b506103e960048036038101906103e49190613094565b610fc1565b6040516103f69190612fd3565b60405180910390f35b34801561040b57600080fd5b5061041461101a565b60405161042191906130dd565b60405180910390f35b34801561043657600080fd5b50610451600480360381019061044c9190613094565b611023565b60405161045e9190612fd3565b60405180910390f35b34801561047357600080fd5b5061047c611038565b6040516104899190612def565b60405180910390f35b34801561049e57600080fd5b506104b960048036038101906104b49190612e3b565b61103e565b005b3480156104c757600080fd5b506104e260048036038101906104dd9190612e3b565b6110b8565b005b3480156104f057600080fd5b506104f9611132565b6040516105069190612fd3565b60405180910390f35b34801561051b57600080fd5b5061053660048036038101906105319190613094565b611145565b6040516105439190612def565b60405180910390f35b34801561055857600080fd5b50610573600480360381019061056e9190613094565b61118e565b005b34801561058157600080fd5b5061059c600480360381019061059791906130f8565b6112e1565b005b3480156105aa57600080fd5b506105b36113f1565b6040516105c0919061315a565b60405180910390f35b3480156105d557600080fd5b506105de611417565b6040516105eb9190612def565b60405180910390f35b34801561060057600080fd5b5061060961141d565b6040516106169190612def565b60405180910390f35b34801561062b57600080fd5b50610634611423565b6040516106419190612ef8565b60405180910390f35b34801561065657600080fd5b5061065f611460565b60405161066c9190612def565b60405180910390f35b34801561068157600080fd5b5061068a611466565b604051610697919061315a565b60405180910390f35b3480156106ac57600080fd5b506106c760048036038101906106c29190612f78565b61148a565b6040516106d49190612fd3565b60405180910390f35b3480156106e957600080fd5b5061070460048036038101906106ff9190613094565b611505565b005b34801561071257600080fd5b5061071b6115a7565b604051610728919061315a565b60405180910390f35b34801561073d57600080fd5b506107466115cd565b604051610753919061315a565b60405180910390f35b34801561076857600080fd5b506107716115f5565b60405161077e919061315a565b60405180910390f35b34801561079357600080fd5b506107ae60048036038101906107a99190613175565b61161b565b6040516107bb9190612def565b60405180910390f35b3480156107d057600080fd5b506107eb60048036038101906107e691906131e1565b6116a2565b005b3480156107f957600080fd5b50610814600480360381019061080f9190613094565b611727565b005b34801561082257600080fd5b5061083d6004803603810190610838919061325f565b6117ca565b005b34801561084b57600080fd5b506108546118e3565b005b34801561086257600080fd5b5061086b611948565b60405161087891906132eb565b60405180910390f35b34801561088d57600080fd5b506108a860048036038101906108a39190613306565b611960565b005b3480156108b657600080fd5b506108d160048036038101906108cc9190613094565b6119c5565b6040516108de9190612fd3565b60405180910390f35b601c5481565b6108f6336119c5565b610935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092c9061337f565b60405180910390fd5b6000479050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064848461098491906133ce565b61098e919061343f565b9081150290604051600060405180830381858888f193505050501580156109b9573d6000803e3d6000fd5b505050565b60606040518060400160405280600281526020017f4e4f000000000000000000000000000000000000000000000000000000000000815250905090565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610adb9190612def565b60405180910390a36001905092915050565b610af6336119c5565b610b35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2c9061337f565b60405180910390fd5b6078818385610b449190613470565b610b4e9190613470565b1115610b5957600080fd5b82600a8190555081600b8190555080600c81905550808284610b7b9190613470565b610b859190613470565b600d81905550505050565b610b99336119c5565b610bd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcf9061337f565b60405180910390fd5b60c8818385610be79190613470565b610bf19190613470565b1115610bfc57600080fd5b82600e8190555081600f8190555080601081905550808284610c1e9190613470565b610c289190613470565b601181905550505050565b6000600254905090565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610cad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca490613516565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d13906135a8565b60405180910390fd5b600254600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610efa576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5c90613614565b60405180910390fd5b82600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ef19190613634565b92505081905550505b610f05848484611a1b565b90509392505050565b610f1733610fc1565b610f56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4d906136b4565b60405180910390fd5b60001515601960159054906101000a900460ff16151514610f7657600080fd5b6000601960146101000a81548160ff021916908315150217905550600143610f9e9190613470565b6012819055506001601960156101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006012905090565b6000611031826002546109fb565b9050919050565b600d5481565b611047336119c5565b611086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107d9061337f565b60405180910390fd5b600a81101561109457600080fd5b6103e8816002546110a591906133ce565b6110af919061343f565b60038190555050565b6110c1336119c5565b611100576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f79061337f565b60405180910390fd5b600a81101561110e57600080fd5b6103e88160025461111f91906133ce565b611129919061343f565b60048190555050565b601b60009054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611197336119c5565b6111d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cd9061337f565b60405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6112ea336119c5565b611329576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113209061337f565b60405180910390fd5b82601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b60035481565b60606040518060400160405280600281526020017f4e4f000000000000000000000000000000000000000000000000000000000000815250905090565b60115481565b7f000000000000000000000000294be853978d5772ecd195ecdb176ef79e60cb7181565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036114f1576114ea338484611dfb565b90506114ff565b6114fc338484611a1b565b90505b92915050565b61150e33610fc1565b61154d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611544906136b4565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60007f000000000000000000000000294be853978d5772ecd195ecdb176ef79e60cb71905090565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6116ab336119c5565b6116ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e19061337f565b60405180910390fd5b81601b60006101000a81548160ff0219169083151502179055506012600a6117129190613807565b8161171d91906133ce565b601c819055505050565b61173033610fc1565b61176f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611766906136b4565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6117d333610fc1565b611812576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611809906136b4565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516118d89190613873565b60405180910390a150565b6118ec336119c5565b61192b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119229061337f565b60405180910390fd5b6000601360016101000a81548160ff021916908315150217905550565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b611969336119c5565b6119a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199f9061337f565b60405180910390fd5b80601360006101000a81548160ff02191690831515021790555050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611a8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8290613516565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611afa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af1906135a8565b60405180910390fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611b9b5750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611bef5750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611c065750601d60009054906101000a900460ff165b15611c1d57611c16848484611dfb565b9050611df4565b60001515601960149054906101000a900460ff16151514611c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6a906138da565b60405180910390fd5b601360019054906101000a900460ff1615611c9457611c93848484612010565b5b611c9d8361234b565b15611cab57611caa61243a565b5b601360009054906101000a900460ff1615611d7e577f000000000000000000000000294be853978d5772ecd195ecdb176ef79e60cb7173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611d6557507f000000000000000000000000294be853978d5772ecd195ecdb176ef79e60cb7173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b611d6f5781611d7b565b611d7a84848461270c565b5b91505b611d89848484611dfb565b508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611de79190612def565b60405180910390a3600190505b9392505050565b600080600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611e83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7a90613946565b60405180910390fd5b82600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ece9190613634565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f5c9190613470565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611ffc9190612def565b60405180910390a360019150509392505050565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156120b25750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612346577f000000000000000000000000294be853978d5772ecd195ecdb176ef79e60cb7173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561215b5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121aa576003548111156121a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219c906139b2565b60405180910390fd5b61229b565b7f000000000000000000000000294be853978d5772ecd195ecdb176ef79e60cb7173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614801561224f5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561229a57600354811115612299576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612290906139b2565b60405180910390fd5b5b5b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612345576004546122f883611145565b826123039190613470565b1115612344576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233b90613a1e565b60405180910390fd5b5b5b505050565b60007f000000000000000000000000294be853978d5772ecd195ecdb176ef79e60cb7173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156123b55750426001601a546123b39190613470565b105b80156123ce5750601d60009054906101000a900460ff16155b80156123e65750601b60009054906101000a900460ff165b80156124335750601c54600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b9050919050565b6001601d60006101000a81548160ff021916908315150217905550600061246030611145565b905060006016546014546015546124779190613470565b6124819190613470565b90506000808314806124935750600082145b156124a0575050506126ef565b6000600283601554866124b391906133ce565b6124bd919061343f565b6124c7919061343f565b9050600081856124d79190613634565b905060004790506124e782612b17565b600081476124f59190613634565b90506000866014548361250891906133ce565b612512919061343f565b90506000876016548461252591906133ce565b61252f919061343f565b905060008183856125409190613634565b61254a9190613634565b9050600060158190555060006014819055506000601681905550601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516125aa90613a6f565b60006040518083038185875af1925050503d80600081146125e7576040519150601f19603f3d011682016040523d82523d6000602084013e6125ec565b606091505b5050809850506000871180156126025750600081115b1561264f576126118782612d11565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868260155460405161264693929190613a84565b60405180910390a15b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161269590613a6f565b60006040518083038185875af1925050503d80600081146126d2576040519150601f19603f3d011682016040523d82523d6000602084013e6126d7565b606091505b50508098505042601a81905550505050505050505050505b6000601d60006101000a81548160ff021916908315150217905550565b6000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127af5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156127bc57819050612b10565b600060125443101561284a5760646062846127d791906133ce565b6127e1919061343f565b905060626032826127f291906133ce565b6127fc919061343f565b6015600082825461280d9190613470565b92505081905550606260308261282391906133ce565b61282d919061343f565b6014600082825461283e9190613470565b92505081905550612a82565b7f000000000000000000000000294be853978d5772ecd195ecdb176ef79e60cb7173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156128a757506000601154115b15612967576103e8601154846128bd91906133ce565b6128c7919061343f565b9050601154600f54826128da91906133ce565b6128e4919061343f565b601560008282546128f59190613470565b925050819055506011546010548261290d91906133ce565b612917919061343f565b601660008282546129289190613470565b92505081905550601154600e548261294091906133ce565b61294a919061343f565b6014600082825461295b9190613470565b92505081905550612a81565b7f000000000000000000000000294be853978d5772ecd195ecdb176ef79e60cb7173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480156129c457506000600d54115b15612a80576103e8600d54846129da91906133ce565b6129e4919061343f565b9050600d54600b54826129f791906133ce565b612a01919061343f565b60156000828254612a129190613470565b92505081905550600d54600c5482612a2a91906133ce565b612a34919061343f565b60166000828254612a459190613470565b92505081905550600d54600a5482612a5d91906133ce565b612a67919061343f565b60146000828254612a789190613470565b925050819055505b5b5b6000811115612afd57612a96853083611dfb565b503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612af49190612def565b60405180910390a35b8083612b099190613634565b9250829150505b9392505050565b6000600267ffffffffffffffff811115612b3457612b33613abb565b5b604051908082528060200260200182016040528015612b625781602001602082028036833780820191505090505b5090503081600081518110612b7a57612b79613aea565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c379190613b2e565b81600181518110612c4b57612c4a613aea565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612cdb959493929190613c54565b600060405180830381600087803b158015612cf557600080fd5b505af1158015612d09573d6000803e3d6000fd5b505050505050565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612d8c96959493929190613cae565b60606040518083038185885af1158015612daa573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612dcf9190613d24565b5050505050565b6000819050919050565b612de981612dd6565b82525050565b6000602082019050612e046000830184612de0565b92915050565b600080fd5b612e1881612dd6565b8114612e2357600080fd5b50565b600081359050612e3581612e0f565b92915050565b600060208284031215612e5157612e50612e0a565b5b6000612e5f84828501612e26565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612ea2578082015181840152602081019050612e87565b60008484015250505050565b6000601f19601f8301169050919050565b6000612eca82612e68565b612ed48185612e73565b9350612ee4818560208601612e84565b612eed81612eae565b840191505092915050565b60006020820190508181036000830152612f128184612ebf565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f4582612f1a565b9050919050565b612f5581612f3a565b8114612f6057600080fd5b50565b600081359050612f7281612f4c565b92915050565b60008060408385031215612f8f57612f8e612e0a565b5b6000612f9d85828601612f63565b9250506020612fae85828601612e26565b9150509250929050565b60008115159050919050565b612fcd81612fb8565b82525050565b6000602082019050612fe86000830184612fc4565b92915050565b60008060006060848603121561300757613006612e0a565b5b600061301586828701612e26565b935050602061302686828701612e26565b925050604061303786828701612e26565b9150509250925092565b60008060006060848603121561305a57613059612e0a565b5b600061306886828701612f63565b935050602061307986828701612f63565b925050604061308a86828701612e26565b9150509250925092565b6000602082840312156130aa576130a9612e0a565b5b60006130b884828501612f63565b91505092915050565b600060ff82169050919050565b6130d7816130c1565b82525050565b60006020820190506130f260008301846130ce565b92915050565b60008060006060848603121561311157613110612e0a565b5b600061311f86828701612f63565b935050602061313086828701612f63565b925050604061314186828701612f63565b9150509250925092565b61315481612f3a565b82525050565b600060208201905061316f600083018461314b565b92915050565b6000806040838503121561318c5761318b612e0a565b5b600061319a85828601612f63565b92505060206131ab85828601612f63565b9150509250929050565b6131be81612fb8565b81146131c957600080fd5b50565b6000813590506131db816131b5565b92915050565b600080604083850312156131f8576131f7612e0a565b5b6000613206858286016131cc565b925050602061321785828601612e26565b9150509250929050565b600061322c82612f1a565b9050919050565b61323c81613221565b811461324757600080fd5b50565b60008135905061325981613233565b92915050565b60006020828403121561327557613274612e0a565b5b60006132838482850161324a565b91505092915050565b6000819050919050565b60006132b16132ac6132a784612f1a565b61328c565b612f1a565b9050919050565b60006132c382613296565b9050919050565b60006132d5826132b8565b9050919050565b6132e5816132ca565b82525050565b600060208201905061330060008301846132dc565b92915050565b60006020828403121561331c5761331b612e0a565b5b600061332a848285016131cc565b91505092915050565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b6000613369600b83612e73565b915061337482613333565b602082019050919050565b600060208201905081810360008301526133988161335c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006133d982612dd6565b91506133e483612dd6565b92508282026133f281612dd6565b915082820484148315176134095761340861339f565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061344a82612dd6565b915061345583612dd6565b92508261346557613464613410565b5b828204905092915050565b600061347b82612dd6565b915061348683612dd6565b925082820190508082111561349e5761349d61339f565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613500602583612e73565b915061350b826134a4565b604082019050919050565b6000602082019050818103600083015261352f816134f3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613592602383612e73565b915061359d82613536565b604082019050919050565b600060208201905081810360008301526135c181613585565b9050919050565b7f496e73756666696369656e7420416c6c6f77616e636500000000000000000000600082015250565b60006135fe601683612e73565b9150613609826135c8565b602082019050919050565b6000602082019050818103600083015261362d816135f1565b9050919050565b600061363f82612dd6565b915061364a83612dd6565b92508282039050818111156136625761366161339f565b5b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b600061369e600683612e73565b91506136a982613668565b602082019050919050565b600060208201905081810360008301526136cd81613691565b9050919050565b60008160011c9050919050565b6000808291508390505b600185111561372b578086048111156137075761370661339f565b5b60018516156137165780820291505b8081029050613724856136d4565b94506136eb565b94509492505050565b6000826137445760019050613800565b816137525760009050613800565b81600181146137685760028114613772576137a1565b6001915050613800565b60ff8411156137845761378361339f565b5b8360020a91508482111561379b5761379a61339f565b5b50613800565b5060208310610133831016604e8410600b84101617156137d65782820a9050838111156137d1576137d061339f565b5b613800565b6137e384848460016136e1565b925090508184048111156137fa576137f961339f565b5b81810290505b9392505050565b600061381282612dd6565b915061381d836130c1565b925061384a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613734565b905092915050565b600061385d826132b8565b9050919050565b61386d81613852565b82525050565b60006020820190506138886000830184613864565b92915050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b60006138c4601483612e73565b91506138cf8261388e565b602082019050919050565b600060208201905081810360008301526138f3816138b7565b9050919050565b7f496e73756666696369656e742042616c616e6365000000000000000000000000600082015250565b6000613930601483612e73565b915061393b826138fa565b602082019050919050565b6000602082019050818103600083015261395f81613923565b9050919050565b7f4d6178207478206c696d69740000000000000000000000000000000000000000600082015250565b600061399c600c83612e73565b91506139a782613966565b602082019050919050565b600060208201905081810360008301526139cb8161398f565b9050919050565b7f4d61782077616c6c657400000000000000000000000000000000000000000000600082015250565b6000613a08600a83612e73565b9150613a13826139d2565b602082019050919050565b60006020820190508181036000830152613a37816139fb565b9050919050565b600081905092915050565b50565b6000613a59600083613a3e565b9150613a6482613a49565b600082019050919050565b6000613a7a82613a4c565b9150819050919050565b6000606082019050613a996000830186612de0565b613aa66020830185612de0565b613ab36040830184612de0565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613b2881612f4c565b92915050565b600060208284031215613b4457613b43612e0a565b5b6000613b5284828501613b19565b91505092915050565b6000819050919050565b6000613b80613b7b613b7684613b5b565b61328c565b612dd6565b9050919050565b613b9081613b65565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613bcb81612f3a565b82525050565b6000613bdd8383613bc2565b60208301905092915050565b6000602082019050919050565b6000613c0182613b96565b613c0b8185613ba1565b9350613c1683613bb2565b8060005b83811015613c47578151613c2e8882613bd1565b9750613c3983613be9565b925050600181019050613c1a565b5085935050505092915050565b600060a082019050613c696000830188612de0565b613c766020830187613b87565b8181036040830152613c888186613bf6565b9050613c97606083018561314b565b613ca46080830184612de0565b9695505050505050565b600060c082019050613cc3600083018961314b565b613cd06020830188612de0565b613cdd6040830187613b87565b613cea6060830186613b87565b613cf7608083018561314b565b613d0460a0830184612de0565b979650505050505050565b600081519050613d1e81612e0f565b92915050565b600080600060608486031215613d3d57613d3c612e0a565b5b6000613d4b86828701613d0f565b9350506020613d5c86828701613d0f565b9250506040613d6d86828701613d0f565b915050925092509256fea2646970667358221220351d59b3fa64a23ed9bf03a1df68285f925f335bbed061cc4120781b6466c78e64736f6c63430008120033

Deployed Bytecode Sourcemap

2918:17812:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5821:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20537:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7743:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8408:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9834:389;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10311:394;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7473:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18380:648;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12965:222;;;;;;;;;;;;;:::i;:::-;;1710:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7567:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8632:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4669:82;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11408:230;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11110:235;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5784:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7829:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8904:332;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10757:259;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5468:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3853:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3785:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7653:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4871:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3260:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18072:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1503:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5505:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8079:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5431:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7940:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13254:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1605:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1936:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12576:75;;;;;;;;;;;;;:::i;:::-;;3138:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12785:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1821:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5821:58;;;;:::o;20537:188::-;1444:24;1457:10;1444:12;:24::i;:::-;1436:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;20606:18:::1;20627:21;20606:42;;20667:15;;;;;;;;;;;20659:33;;:58;20713:3;20706:4;20693:10;:17;;;;:::i;:::-;:23;;;;:::i;:::-;20659:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;20595:130;20537:188:::0;:::o;7743:80::-;7791:13;7815:5;;;;;;;;;;;;;;;;;7808:12;;7743:80;:::o;8408:216::-;8483:4;8535:6;8500:11;:23;8512:10;8500:23;;;;;;;;;;;;;;;:32;8524:7;8500:32;;;;;;;;;;;;;;;:41;;;;8578:7;8557:37;;8566:10;8557:37;;;8587:6;8557:37;;;;;;:::i;:::-;;;;;;;;8612:4;8605:11;;8408:216;;;;:::o;9834:389::-;1444:24;1457:10;1444:12;:24::i;:::-;1436:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;10006:3:::1;9991:11;9975:13;9959;:29;;;;:::i;:::-;:43;;;;:::i;:::-;:50;;9951:59;;;::::0;::::1;;10050:13;10032:15;:31;;;;10092:13;10074:15;:31;;;;10136:11;10116:17;:31;;;;10204:11;10188:13;10172;:29;;;;:::i;:::-;:43;;;;:::i;:::-;10158:11;:57;;;;9834:389:::0;;;:::o;10311:394::-;1444:24;1457:10;1444:12;:24::i;:::-;1436:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;10484:3:::1;10469:11;10453:13;10437;:29;;;;:::i;:::-;:43;;;;:::i;:::-;:50;;10429:59;;;::::0;::::1;;10529:13;10510:16;:32;;;;10572:13;10553:16;:32;;;;10617:11;10596:18;:32;;;;10686:11;10670:13;10654;:29;;;;:::i;:::-;:43;;;;:::i;:::-;10639:12;:58;;;;10311:394:::0;;;:::o;7473:88::-;7528:7;7546:12;;7539:19;;7473:88;:::o;18380:648::-;18480:4;18523:1;18505:20;;:6;:20;;;18497:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;18607:1;18586:23;;:9;:23;;;18578:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;18698:12;;18663:11;:19;18675:6;18663:19;;;;;;;;;;;;;;;:31;18683:10;18663:31;;;;;;;;;;;;;;;;:47;18660:303;;18768:20;18792:11;:19;18804:6;18792:19;;;;;;;;;;;;;;;:31;18812:10;18792:31;;;;;;;;;;;;;;;;18768:55;;18862:6;18846:12;:22;;18838:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;18945:6;18910:11;:19;18922:6;18910:19;;;;;;;;;;;;;;;:31;18930:10;18910:31;;;;;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;;;;;18711:252;18660:303;18980:40;18994:6;19002:9;19013:6;18980:13;:40::i;:::-;18973:47;;18380:648;;;;;:::o;12965:222::-;1354:19;1362:10;1354:7;:19::i;:::-;1346:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13039:5:::1;13027:17;;:8;;;;;;;;;;;:17;;;13019:26;;;::::0;::::1;;13069:5;13056:10;;:18;;;;;;;;;;;;;;;;;;13116:1;13101:12;:16;;;;:::i;:::-;13085:13;:32;;;;13175:4;13164:8;;:15;;;;;;;;;;;;;;;;;;12965:222::o:0;1710:103::-;1765:4;1800:5;;;;;;;;;;;1789:16;;:7;:16;;;1782:23;;1710:103;;;:::o;7567:80::-;7619:5;3486:2;7628:16;;7567:80;:::o;8632:117::-;8687:4;8711:30;8719:7;8728:12;;8711:7;:30::i;:::-;8704:37;;8632:117;;;:::o;4669:82::-;;;;:::o;11408:230::-;1444:24;1457:10;1444:12;:24::i;:::-;1436:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;11495:2:::1;11484:7;:13;;11476:22;;;::::0;::::1;;3737:5;11608:7;11593:12;;:22;;;;:::i;:::-;11591:39;;;;:::i;:::-;11576:12;:54;;;;11408:230:::0;:::o;11110:235::-;1444:24;1457:10;1444:12;:24::i;:::-;1436:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;11199:2:::1;11188:7;:13;;11180:22;;;::::0;::::1;;3737:5;11315:7;11300:12;;:22;;;;:::i;:::-;11298:39;;;;:::i;:::-;11280:15;:57;;;;11110:235:::0;:::o;5784:30::-;;;;;;;;;;;;;:::o;7829:105::-;7895:7;7913:9;:18;7923:7;7913:18;;;;;;;;;;;;;;;;7906:25;;7829:105;;;:::o;8904:332::-;1444:24;1457:10;1444:12;:24::i;:::-;1436:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;9027:4:::1;9008:11;:16;9020:3;9008:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;9065:4;9042:15;:20;9058:3;9042:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;9224:4;9203:13;:18;9217:3;9203:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;8904:332:::0;:::o;10757:259::-;1444:24;1457:10;1444:12;:24::i;:::-;1436:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;10902:16:::1;10884:15;;:34;;;;;;;;;;;;;;;;;;10947:16;10929:15;;:34;;;;;;;;;;;;;;;;;;10994:14;10974:17;;:34;;;;;;;;;;;;;;;;;;10757:259:::0;;;:::o;5468:30::-;;;;;;;;;;;;;:::o;3853:64::-;;;;:::o;3785:60::-;;;;:::o;7653:84::-;7703:13;7727:7;;;;;;;;;;;;;;;;;7720:14;;7653:84;:::o;4871:86::-;;;;:::o;3260:29::-;;;:::o;18072:300::-;18152:4;18182:10;18173:19;;:5;;;;;;;;;;:19;;;18169:196;;18215:45;18230:10;18242:9;18253:6;18215:14;:45::i;:::-;18208:52;;;;18169:196;18309:44;18323:10;18335:9;18346:6;18309:13;:44::i;:::-;18302:51;;18072:300;;;;;:::o;1503:94::-;1354:19;1362:10;1354:7;:19::i;:::-;1346:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;1585:4:::1;1563:14:::0;:19:::1;1578:3;1563:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;1503:94:::0;:::o;5505:32::-;;;;;;;;;;;;;:::o;8079:64::-;8121:7;8137:4;8130:11;;8079:64;:::o;5431:30::-;;;;;;;;;;;;;:::o;7940:133::-;8024:7;8042:11;:19;8054:6;8042:19;;;;;;;;;;;;;;;:28;8062:7;8042:28;;;;;;;;;;;;;;;;8035:35;;7940:133;;;;:::o;13254:184::-;1444:24;1457:10;1444:12;:24::i;:::-;1436:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;13364:8:::1;13350:11;;:22;;;;;;;;;;;;;;;;;;3486:2;13413;:15;;;;:::i;:::-;13399:10;:30;;;;:::i;:::-;13383:13;:46;;;;13254:184:::0;;:::o;1605:97::-;1354:19;1362:10;1354:7;:19::i;:::-;1346:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;1689:5:::1;1667:14;:19;1682:3;1667:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;1605:97:::0;:::o;1936:173::-;1354:19;1362:10;1354:7;:19::i;:::-;1346:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2020:3:::1;2012:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;2056:4;2034:14:::0;:19:::1;2049:3;2034:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;2076:25;2097:3;2076:25;;;;;;:::i;:::-;;;;;;;;1936:173:::0;:::o;12576:75::-;1444:24;1457:10;1444:12;:24::i;:::-;1436:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;12638:5:::1;12629:6;;:14;;;;;;;;;;;;;;;;;;12576:75::o:0;3138:90::-;3185:42;3138:90;:::o;12785:98::-;1444:24;1457:10;1444:12;:24::i;:::-;1436:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;12867:8:::1;12853:11;;:22;;;;;;;;;;;;;;;;;;12785:98:::0;:::o;1821:107::-;1877:4;1901:14;:19;1916:3;1901:19;;;;;;;;;;;;;;;;;;;;;;;;;1894:26;;1821:107;;;:::o;19038:1316::-;19130:4;19175:1;19157:20;;:6;:20;;;19149:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;19259:1;19238:23;;:9;:23;;;19230:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;19380:14;:22;19395:6;19380:22;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;19406:14;:25;19421:9;19406:25;;;;;;;;;;;;;;;;;;;;;;;;;19380:51;:76;;;;19435:13;:21;19449:6;19435:21;;;;;;;;;;;;;;;;;;;;;;;;;19380:76;:86;;;;19460:6;;;;;;;;;;;19380:86;19375:168;;;19490:41;19505:6;19513:9;19524:6;19490:14;:41::i;:::-;19483:48;;;;19375:168;19641:5;19627:19;;:10;;;;;;;;;;;:19;;;19619:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;19769:6;;;;;;;;;;;19765:52;;;19777:38;19789:6;19797:9;19808:6;19777:11;:38::i;:::-;19765:52;19918:26;19934:9;19918:15;:26::i;:::-;19915:44;;;19947:10;:8;:10::i;:::-;19915:44;20036:11;;;;;;;;;;;20033:135;;;20087:4;20074:17;;:9;:17;;;:35;;;;20105:4;20095:14;;:6;:14;;;20074:35;20073:83;;20150:6;20073:83;;;20113:34;20121:6;20129:9;20140:6;20113:7;:34::i;:::-;20073:83;20064:92;;20033:135;20230:41;20245:6;20253:9;20264:6;20230:14;:41::i;:::-;;20306:9;20289:35;;20298:6;20289:35;;;20317:6;20289:35;;;;;;:::i;:::-;;;;;;;;20342:4;20335:11;;19038:1316;;;;;;:::o;9248:503::-;9341:4;9358:21;9382:9;:17;9392:6;9382:17;;;;;;;;;;;;;;;;9358:41;;9490:6;9473:13;:23;;9465:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;9600:6;9580:9;:17;9590:6;9580:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;9560:9;:17;9570:6;9560:17;;;;;;;;;;;;;;;:46;;;;9664:6;9641:9;:20;9651:9;9641:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;9618:9;:20;9628:9;9618:20;;;;;;;;;;;;;;;:52;;;;9703:9;9686:35;;9695:6;9686:35;;;9714:6;9686:35;;;;;;:::i;:::-;;;;;;;;9739:4;9732:11;;;9248:503;;;;;:::o;11650:856::-;11828:15;:23;11844:6;11828:23;;;;;;;;;;;;;;;;;;;;;;;;;:53;;;;;11855:15;:26;11871:9;11855:26;;;;;;;;;;;;;;;;;;;;;;;;;11828:53;11883:7;11824:67;12055:4;12045:14;;:6;:14;;;:45;;;;;12064:15;:26;12080:9;12064:26;;;;;;;;;;;;;;;;;;;;;;;;;12063:27;12045:45;12041:278;;;12127:12;;12117:6;:22;;12109:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;12041:278;;;12209:4;12196:17;;:9;:17;;;:45;;;;;12218:15;:23;12234:6;12218:23;;;;;;;;;;;;;;;;;;;;;;;;;12217:24;12196:45;12193:126;;;12278:12;;12268:6;:22;;12260:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;12193:126;12041:278;12371:15;:26;12387:9;12371:26;;;;;;;;;;;;;;;;;;;;;;;;;12366:131;;12455:15;;12431:20;12441:9;12431;:20::i;:::-;12422:6;:29;;;;:::i;:::-;:48;;12414:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12366:131;11650:856;;;;:::o;13499:306::-;13566:4;13603;13590:17;;:9;:17;;;:80;;;;;13655:15;13651:1;13636:12;;:16;;;;:::i;:::-;:34;13590:80;:129;;;;;13713:6;;;;;;;;;;;13712:7;13590:129;:153;;;;;13732:11;;;;;;;;;;;13590:153;:207;;;;;13784:13;;13756:9;:24;13774:4;13756:24;;;;;;;;;;;;;;;;:41;;13590:207;13583:214;;13499:306;;;:::o;16354:1710::-;6186:4;6177:6;;:13;;;;;;;;;;;;;;;;;;16403:23:::1;16429:24;16447:4;16429:9;:24::i;:::-;16403:50;;16464:25;16534:12;;16513:18;;16492;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;16464:82;;16557:12;16605:1:::0;16586:15:::1;:20;:46;;;;16631:1;16610:17;:22;16586:46;16582:61;;;16635:7;;;;;16582:61;16706:23;16793:1;16773:17;16751:18;;16733:15;:36;;;;:::i;:::-;16732:58;;;;:::i;:::-;:62;;;;:::i;:::-;16706:88;;16805:26;16852:15;16834;:33;;;;:::i;:::-;16805:62;;16880:25;16908:21;16880:49;;16978:36;16995:18;16978:16;:36::i;:::-;17027:18;17072:17;17048:21;:41;;;;:::i;:::-;17027:62;;17100:23;17162:17;17140:18;;17127:10;:31;;;;:::i;:::-;17126:53;;;;:::i;:::-;17100:79;;17190:17;17252;17230:12;;17217:10;:25;;;;:::i;:::-;17216:53;;;;:::i;:::-;17190:79;;17280:23;17337:9;17319:15;17306:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;17280:66;;17415:1;17394:18;:22;;;;17448:1;17427:18;:22;;;;17475:1;17460:12;:16;;;;17537:17;;;;;;;;;;;17529:31;;17568:9;17529:53;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17515:67;;;;;17642:1;17624:15;:19;:42;;;;;17665:1;17647:15;:19;17624:42;17620:212;;;17683:46;17696:15;17713;17683:12;:46::i;:::-;17749:71;17764:18;17784:15;17801:18;;17749:71;;;;;;;;:::i;:::-;;;;;;;;17620:212;17958:15;;;;;;;;;;;17950:29;;17987:21;17950:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17936:77;;;;;18041:15;18026:12;:30;;;;16392:1672;;;;;;;;;;6192:1;6204:5:::0;6195:6;;:14;;;;;;;;;;;;;;;;;;16354:1710::o;13813:1609::-;13890:7;13985:11;:17;13997:4;13985:17;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;14006:11;:15;14018:2;14006:15;;;;;;;;;;;;;;;;;;;;;;;;;13985:36;13981:82;;;14045:6;14038:13;;;;13981:82;14136:12;14203:13;;14188:12;:28;14184:952;;;14254:3;14249:2;14240:6;:11;;;;:::i;:::-;:17;;;;:::i;:::-;14233:24;;14319:2;14313;14306:4;:9;;;;:::i;:::-;14305:16;;;;:::i;:::-;14283:18;;:38;;;;;;;:::i;:::-;;;;;;;;14372:2;14366;14359:4;:9;;;;:::i;:::-;14358:16;;;;:::i;:::-;14336:18;;:38;;;;;;;:::i;:::-;;;;;;;;14184:952;;;14433:4;14427:10;;:2;:10;;;:30;;;;;14456:1;14441:12;;:16;14427:30;14423:713;;;3737:5;14490:12;;14481:6;:21;;;;:::i;:::-;:34;;;;:::i;:::-;14474:41;;14582:12;;14560:16;;14553:4;:23;;;;:::i;:::-;14552:42;;;;:::i;:::-;14530:18;;:64;;;;;;;:::i;:::-;;;;;;;;14661:12;;14639:18;;14632:4;:25;;;;:::i;:::-;14631:42;;;;:::i;:::-;14609:12;;:64;;;;;;;:::i;:::-;;;;;;;;14740:12;;14718:16;;14711:4;:23;;;;:::i;:::-;14710:42;;;;:::i;:::-;14688:18;;:64;;;;;;;:::i;:::-;;;;;;;;14423:713;;;14812:4;14804:12;;:4;:12;;;:31;;;;;14834:1;14820:11;;:15;14804:31;14800:336;;;3737:5;14868:11;;14859:6;:20;;;;:::i;:::-;:33;;;;:::i;:::-;14852:40;;14958:11;;14937:15;;14930:4;:22;;;;:::i;:::-;14929:40;;;;:::i;:::-;14907:18;;:62;;;;;;;:::i;:::-;;;;;;;;15036:11;;15015:17;;15008:4;:24;;;;:::i;:::-;15007:40;;;;:::i;:::-;14985:12;;:62;;;;;;;:::i;:::-;;;;;;;;15113:11;;15092:15;;15085:4;:22;;;;:::i;:::-;15084:40;;;;:::i;:::-;15062:18;;:62;;;;;;;:::i;:::-;;;;;;;;14800:336;14423:713;14184:952;15219:1;15212:4;:8;15208:137;;;15237:41;15252:4;15266;15273;15237:14;:41::i;:::-;;15321:4;15298:35;;15307:4;15298:35;;;15328:4;15298:35;;;;;;:::i;:::-;;;;;;;;15208:137;15410:4;15400:14;;;;;:::i;:::-;;;;15393:21;;;13813:1609;;;;;;:::o;15436:445::-;15538:21;15576:1;15562:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15538:40;;15607:4;15589;15594:1;15589:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;3185:42;15633:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15623:4;15628:1;15623:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;3185:42;15685:57;;;15757:11;15783:1;15800:4;15827;15847:15;15685:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15491:390;15436:445;:::o;15889:457::-;3185:42;16139:22;;;16169:9;16202:4;16222:11;16248:1;16265;16282:15;;;;;;;;;;;16312;16139:199;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15889:457;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;523:117::-;632:1;629;622:12;769:122;842:24;860:5;842:24;:::i;:::-;835:5;832:35;822:63;;881:1;878;871:12;822:63;769:122;:::o;897:139::-;943:5;981:6;968:20;959:29;;997:33;1024:5;997:33;:::i;:::-;897:139;;;;:::o;1042:329::-;1101:6;1150:2;1138:9;1129:7;1125:23;1121:32;1118:119;;;1156:79;;:::i;:::-;1118:119;1276:1;1301:53;1346:7;1337:6;1326:9;1322:22;1301:53;:::i;:::-;1291:63;;1247:117;1042:329;;;;:::o;1377:99::-;1429:6;1463:5;1457:12;1447:22;;1377:99;;;:::o;1482:169::-;1566:11;1600:6;1595:3;1588:19;1640:4;1635:3;1631:14;1616:29;;1482:169;;;;:::o;1657:246::-;1738:1;1748:113;1762:6;1759:1;1756:13;1748:113;;;1847:1;1842:3;1838:11;1832:18;1828:1;1823:3;1819:11;1812:39;1784:2;1781:1;1777:10;1772:15;;1748:113;;;1895:1;1886:6;1881:3;1877:16;1870:27;1719:184;1657:246;;;:::o;1909:102::-;1950:6;2001:2;1997:7;1992:2;1985:5;1981:14;1977:28;1967:38;;1909:102;;;:::o;2017:377::-;2105:3;2133:39;2166:5;2133:39;:::i;:::-;2188:71;2252:6;2247:3;2188:71;:::i;:::-;2181:78;;2268:65;2326:6;2321:3;2314:4;2307:5;2303:16;2268:65;:::i;:::-;2358:29;2380:6;2358:29;:::i;:::-;2353:3;2349:39;2342:46;;2109:285;2017:377;;;;:::o;2400:313::-;2513:4;2551:2;2540:9;2536:18;2528:26;;2600:9;2594:4;2590:20;2586:1;2575:9;2571:17;2564:47;2628:78;2701:4;2692:6;2628:78;:::i;:::-;2620:86;;2400:313;;;;:::o;2719:126::-;2756:7;2796:42;2789:5;2785:54;2774:65;;2719:126;;;:::o;2851:96::-;2888:7;2917:24;2935:5;2917:24;:::i;:::-;2906:35;;2851:96;;;:::o;2953:122::-;3026:24;3044:5;3026:24;:::i;:::-;3019:5;3016:35;3006:63;;3065:1;3062;3055:12;3006:63;2953:122;:::o;3081:139::-;3127:5;3165:6;3152:20;3143:29;;3181:33;3208:5;3181:33;:::i;:::-;3081:139;;;;:::o;3226:474::-;3294:6;3302;3351:2;3339:9;3330:7;3326:23;3322:32;3319:119;;;3357:79;;:::i;:::-;3319:119;3477:1;3502:53;3547:7;3538:6;3527:9;3523:22;3502:53;:::i;:::-;3492:63;;3448:117;3604:2;3630:53;3675:7;3666:6;3655:9;3651:22;3630:53;:::i;:::-;3620:63;;3575:118;3226:474;;;;;:::o;3706:90::-;3740:7;3783:5;3776:13;3769:21;3758:32;;3706:90;;;:::o;3802:109::-;3883:21;3898:5;3883:21;:::i;:::-;3878:3;3871:34;3802:109;;:::o;3917:210::-;4004:4;4042:2;4031:9;4027:18;4019:26;;4055:65;4117:1;4106:9;4102:17;4093:6;4055:65;:::i;:::-;3917:210;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:::-;4835:6;4843;4851;4900:2;4888:9;4879:7;4875:23;4871:32;4868:119;;;4906:79;;:::i;:::-;4868:119;5026:1;5051:53;5096:7;5087:6;5076:9;5072:22;5051:53;:::i;:::-;5041:63;;4997:117;5153:2;5179:53;5224:7;5215:6;5204:9;5200:22;5179:53;:::i;:::-;5169:63;;5124:118;5281:2;5307:53;5352:7;5343:6;5332:9;5328:22;5307:53;:::i;:::-;5297:63;;5252:118;4758:619;;;;;:::o;5383:329::-;5442:6;5491:2;5479:9;5470:7;5466:23;5462:32;5459:119;;;5497:79;;:::i;:::-;5459:119;5617:1;5642:53;5687:7;5678:6;5667:9;5663:22;5642:53;:::i;:::-;5632:63;;5588:117;5383:329;;;;:::o;5718:86::-;5753:7;5793:4;5786:5;5782:16;5771:27;;5718:86;;;:::o;5810:112::-;5893:22;5909:5;5893:22;:::i;:::-;5888:3;5881:35;5810:112;;:::o;5928:214::-;6017:4;6055:2;6044:9;6040:18;6032:26;;6068:67;6132:1;6121:9;6117:17;6108:6;6068:67;:::i;:::-;5928:214;;;;:::o;6148:619::-;6225:6;6233;6241;6290:2;6278:9;6269:7;6265:23;6261:32;6258:119;;;6296:79;;:::i;:::-;6258:119;6416:1;6441:53;6486:7;6477:6;6466:9;6462:22;6441:53;:::i;:::-;6431:63;;6387:117;6543:2;6569:53;6614:7;6605:6;6594:9;6590:22;6569:53;:::i;:::-;6559:63;;6514:118;6671:2;6697:53;6742:7;6733:6;6722:9;6718:22;6697:53;:::i;:::-;6687:63;;6642:118;6148:619;;;;;:::o;6773:118::-;6860:24;6878:5;6860:24;:::i;:::-;6855:3;6848:37;6773:118;;:::o;6897:222::-;6990:4;7028:2;7017:9;7013:18;7005:26;;7041:71;7109:1;7098:9;7094:17;7085:6;7041:71;:::i;:::-;6897:222;;;;:::o;7125:474::-;7193:6;7201;7250:2;7238:9;7229:7;7225:23;7221:32;7218:119;;;7256:79;;:::i;:::-;7218:119;7376:1;7401:53;7446:7;7437:6;7426:9;7422:22;7401:53;:::i;:::-;7391:63;;7347:117;7503:2;7529:53;7574:7;7565:6;7554:9;7550:22;7529:53;:::i;:::-;7519:63;;7474:118;7125:474;;;;;:::o;7605:116::-;7675:21;7690:5;7675:21;:::i;:::-;7668:5;7665:32;7655:60;;7711:1;7708;7701:12;7655:60;7605:116;:::o;7727:133::-;7770:5;7808:6;7795:20;7786:29;;7824:30;7848:5;7824:30;:::i;:::-;7727:133;;;;:::o;7866:468::-;7931:6;7939;7988:2;7976:9;7967:7;7963:23;7959:32;7956:119;;;7994:79;;:::i;:::-;7956:119;8114:1;8139:50;8181:7;8172:6;8161:9;8157:22;8139:50;:::i;:::-;8129:60;;8085:114;8238:2;8264:53;8309:7;8300:6;8289:9;8285:22;8264:53;:::i;:::-;8254:63;;8209:118;7866:468;;;;;:::o;8340:104::-;8385:7;8414:24;8432:5;8414:24;:::i;:::-;8403:35;;8340:104;;;:::o;8450:138::-;8531:32;8557:5;8531:32;:::i;:::-;8524:5;8521:43;8511:71;;8578:1;8575;8568:12;8511:71;8450:138;:::o;8594:155::-;8648:5;8686:6;8673:20;8664:29;;8702:41;8737:5;8702:41;:::i;:::-;8594:155;;;;:::o;8755:345::-;8822:6;8871:2;8859:9;8850:7;8846:23;8842:32;8839:119;;;8877:79;;:::i;:::-;8839:119;8997:1;9022:61;9075:7;9066:6;9055:9;9051:22;9022:61;:::i;:::-;9012:71;;8968:125;8755:345;;;;:::o;9106:60::-;9134:3;9155:5;9148:12;;9106:60;;;:::o;9172:142::-;9222:9;9255:53;9273:34;9282:24;9300:5;9282:24;:::i;:::-;9273:34;:::i;:::-;9255:53;:::i;:::-;9242:66;;9172:142;;;:::o;9320:126::-;9370:9;9403:37;9434:5;9403:37;:::i;:::-;9390:50;;9320:126;;;:::o;9452:144::-;9520:9;9553:37;9584:5;9553:37;:::i;:::-;9540:50;;9452:144;;;:::o;9602:167::-;9707:55;9756:5;9707:55;:::i;:::-;9702:3;9695:68;9602:167;;:::o;9775:258::-;9886:4;9924:2;9913:9;9909:18;9901:26;;9937:89;10023:1;10012:9;10008:17;9999:6;9937:89;:::i;:::-;9775:258;;;;:::o;10039:323::-;10095:6;10144:2;10132:9;10123:7;10119:23;10115:32;10112:119;;;10150:79;;:::i;:::-;10112:119;10270:1;10295:50;10337:7;10328:6;10317:9;10313:22;10295:50;:::i;:::-;10285:60;;10241:114;10039:323;;;;:::o;10368:161::-;10508:13;10504:1;10496:6;10492:14;10485:37;10368:161;:::o;10535:366::-;10677:3;10698:67;10762:2;10757:3;10698:67;:::i;:::-;10691:74;;10774:93;10863:3;10774:93;:::i;:::-;10892:2;10887:3;10883:12;10876:19;;10535:366;;;:::o;10907:419::-;11073:4;11111:2;11100:9;11096:18;11088:26;;11160:9;11154:4;11150:20;11146:1;11135:9;11131:17;11124:47;11188:131;11314:4;11188:131;:::i;:::-;11180:139;;10907:419;;;:::o;11332:180::-;11380:77;11377:1;11370:88;11477:4;11474:1;11467:15;11501:4;11498:1;11491:15;11518:410;11558:7;11581:20;11599:1;11581:20;:::i;:::-;11576:25;;11615:20;11633:1;11615:20;:::i;:::-;11610:25;;11670:1;11667;11663:9;11692:30;11710:11;11692:30;:::i;:::-;11681:41;;11871:1;11862:7;11858:15;11855:1;11852:22;11832:1;11825:9;11805:83;11782:139;;11901:18;;:::i;:::-;11782:139;11566:362;11518:410;;;;:::o;11934:180::-;11982:77;11979:1;11972:88;12079:4;12076:1;12069:15;12103:4;12100:1;12093:15;12120:185;12160:1;12177:20;12195:1;12177:20;:::i;:::-;12172:25;;12211:20;12229:1;12211:20;:::i;:::-;12206:25;;12250:1;12240:35;;12255:18;;:::i;:::-;12240:35;12297:1;12294;12290:9;12285:14;;12120:185;;;;:::o;12311:191::-;12351:3;12370:20;12388:1;12370:20;:::i;:::-;12365:25;;12404:20;12422:1;12404:20;:::i;:::-;12399:25;;12447:1;12444;12440:9;12433:16;;12468:3;12465:1;12462:10;12459:36;;;12475:18;;:::i;:::-;12459:36;12311:191;;;;:::o;12508:224::-;12648:34;12644:1;12636:6;12632:14;12625:58;12717:7;12712:2;12704:6;12700:15;12693:32;12508:224;:::o;12738:366::-;12880:3;12901:67;12965:2;12960:3;12901:67;:::i;:::-;12894:74;;12977:93;13066:3;12977:93;:::i;:::-;13095:2;13090:3;13086:12;13079:19;;12738:366;;;:::o;13110:419::-;13276:4;13314:2;13303:9;13299:18;13291:26;;13363:9;13357:4;13353:20;13349:1;13338:9;13334:17;13327:47;13391:131;13517:4;13391:131;:::i;:::-;13383:139;;13110:419;;;:::o;13535:222::-;13675:34;13671:1;13663:6;13659:14;13652:58;13744:5;13739:2;13731:6;13727:15;13720:30;13535:222;:::o;13763:366::-;13905:3;13926:67;13990:2;13985:3;13926:67;:::i;:::-;13919:74;;14002:93;14091:3;14002:93;:::i;:::-;14120:2;14115:3;14111:12;14104:19;;13763:366;;;:::o;14135:419::-;14301:4;14339:2;14328:9;14324:18;14316:26;;14388:9;14382:4;14378:20;14374:1;14363:9;14359:17;14352:47;14416:131;14542:4;14416:131;:::i;:::-;14408:139;;14135:419;;;:::o;14560:172::-;14700:24;14696:1;14688:6;14684:14;14677:48;14560:172;:::o;14738:366::-;14880:3;14901:67;14965:2;14960:3;14901:67;:::i;:::-;14894:74;;14977:93;15066:3;14977:93;:::i;:::-;15095:2;15090:3;15086:12;15079:19;;14738:366;;;:::o;15110:419::-;15276:4;15314:2;15303:9;15299:18;15291:26;;15363:9;15357:4;15353:20;15349:1;15338:9;15334:17;15327:47;15391:131;15517:4;15391:131;:::i;:::-;15383:139;;15110:419;;;:::o;15535:194::-;15575:4;15595:20;15613:1;15595:20;:::i;:::-;15590:25;;15629:20;15647:1;15629:20;:::i;:::-;15624:25;;15673:1;15670;15666:9;15658:17;;15697:1;15691:4;15688:11;15685:37;;;15702:18;;:::i;:::-;15685:37;15535:194;;;;:::o;15735:156::-;15875:8;15871:1;15863:6;15859:14;15852:32;15735:156;:::o;15897:365::-;16039:3;16060:66;16124:1;16119:3;16060:66;:::i;:::-;16053:73;;16135:93;16224:3;16135:93;:::i;:::-;16253:2;16248:3;16244:12;16237:19;;15897:365;;;:::o;16268:419::-;16434:4;16472:2;16461:9;16457:18;16449:26;;16521:9;16515:4;16511:20;16507:1;16496:9;16492:17;16485:47;16549:131;16675:4;16549:131;:::i;:::-;16541:139;;16268:419;;;:::o;16693:102::-;16735:8;16782:5;16779:1;16775:13;16754:34;;16693:102;;;:::o;16801:848::-;16862:5;16869:4;16893:6;16884:15;;16917:5;16908:14;;16931:712;16952:1;16942:8;16939:15;16931:712;;;17047:4;17042:3;17038:14;17032:4;17029:24;17026:50;;;17056:18;;:::i;:::-;17026:50;17106:1;17096:8;17092:16;17089:451;;;17521:4;17514:5;17510:16;17501:25;;17089:451;17571:4;17565;17561:15;17553:23;;17601:32;17624:8;17601:32;:::i;:::-;17589:44;;16931:712;;;16801:848;;;;;;;:::o;17655:1073::-;17709:5;17900:8;17890:40;;17921:1;17912:10;;17923:5;;17890:40;17949:4;17939:36;;17966:1;17957:10;;17968:5;;17939:36;18035:4;18083:1;18078:27;;;;18119:1;18114:191;;;;18028:277;;18078:27;18096:1;18087:10;;18098:5;;;18114:191;18159:3;18149:8;18146:17;18143:43;;;18166:18;;:::i;:::-;18143:43;18215:8;18212:1;18208:16;18199:25;;18250:3;18243:5;18240:14;18237:40;;;18257:18;;:::i;:::-;18237:40;18290:5;;;18028:277;;18414:2;18404:8;18401:16;18395:3;18389:4;18386:13;18382:36;18364:2;18354:8;18351:16;18346:2;18340:4;18337:12;18333:35;18317:111;18314:246;;;18470:8;18464:4;18460:19;18451:28;;18505:3;18498:5;18495:14;18492:40;;;18512:18;;:::i;:::-;18492:40;18545:5;;18314:246;18585:42;18623:3;18613:8;18607:4;18604:1;18585:42;:::i;:::-;18570:57;;;;18659:4;18654:3;18650:14;18643:5;18640:25;18637:51;;;18668:18;;:::i;:::-;18637:51;18717:4;18710:5;18706:16;18697:25;;17655:1073;;;;;;:::o;18734:281::-;18792:5;18816:23;18834:4;18816:23;:::i;:::-;18808:31;;18860:25;18876:8;18860:25;:::i;:::-;18848:37;;18904:104;18941:66;18931:8;18925:4;18904:104;:::i;:::-;18895:113;;18734:281;;;;:::o;19021:134::-;19079:9;19112:37;19143:5;19112:37;:::i;:::-;19099:50;;19021:134;;;:::o;19161:147::-;19256:45;19295:5;19256:45;:::i;:::-;19251:3;19244:58;19161:147;;:::o;19314:238::-;19415:4;19453:2;19442:9;19438:18;19430:26;;19466:79;19542:1;19531:9;19527:17;19518:6;19466:79;:::i;:::-;19314:238;;;;:::o;19558:170::-;19698:22;19694:1;19686:6;19682:14;19675:46;19558:170;:::o;19734:366::-;19876:3;19897:67;19961:2;19956:3;19897:67;:::i;:::-;19890:74;;19973:93;20062:3;19973:93;:::i;:::-;20091:2;20086:3;20082:12;20075:19;;19734:366;;;:::o;20106:419::-;20272:4;20310:2;20299:9;20295:18;20287:26;;20359:9;20353:4;20349:20;20345:1;20334:9;20330:17;20323:47;20387:131;20513:4;20387:131;:::i;:::-;20379:139;;20106:419;;;:::o;20531:170::-;20671:22;20667:1;20659:6;20655:14;20648:46;20531:170;:::o;20707:366::-;20849:3;20870:67;20934:2;20929:3;20870:67;:::i;:::-;20863:74;;20946:93;21035:3;20946:93;:::i;:::-;21064:2;21059:3;21055:12;21048:19;;20707:366;;;:::o;21079:419::-;21245:4;21283:2;21272:9;21268:18;21260:26;;21332:9;21326:4;21322:20;21318:1;21307:9;21303:17;21296:47;21360:131;21486:4;21360:131;:::i;:::-;21352:139;;21079:419;;;:::o;21504:162::-;21644:14;21640:1;21632:6;21628:14;21621:38;21504:162;:::o;21672:366::-;21814:3;21835:67;21899:2;21894:3;21835:67;:::i;:::-;21828:74;;21911:93;22000:3;21911:93;:::i;:::-;22029:2;22024:3;22020:12;22013:19;;21672:366;;;:::o;22044:419::-;22210:4;22248:2;22237:9;22233:18;22225:26;;22297:9;22291:4;22287:20;22283:1;22272:9;22268:17;22261:47;22325:131;22451:4;22325:131;:::i;:::-;22317:139;;22044:419;;;:::o;22469:160::-;22609:12;22605:1;22597:6;22593:14;22586:36;22469:160;:::o;22635:366::-;22777:3;22798:67;22862:2;22857:3;22798:67;:::i;:::-;22791:74;;22874:93;22963:3;22874:93;:::i;:::-;22992:2;22987:3;22983:12;22976:19;;22635:366;;;:::o;23007:419::-;23173:4;23211:2;23200:9;23196:18;23188:26;;23260:9;23254:4;23250:20;23246:1;23235:9;23231:17;23224:47;23288:131;23414:4;23288:131;:::i;:::-;23280:139;;23007:419;;;:::o;23432:147::-;23533:11;23570:3;23555:18;;23432:147;;;;:::o;23585:114::-;;:::o;23705:398::-;23864:3;23885:83;23966:1;23961:3;23885:83;:::i;:::-;23878:90;;23977:93;24066:3;23977:93;:::i;:::-;24095:1;24090:3;24086:11;24079:18;;23705:398;;;:::o;24109:379::-;24293:3;24315:147;24458:3;24315:147;:::i;:::-;24308:154;;24479:3;24472:10;;24109:379;;;:::o;24494:442::-;24643:4;24681:2;24670:9;24666:18;24658:26;;24694:71;24762:1;24751:9;24747:17;24738:6;24694:71;:::i;:::-;24775:72;24843:2;24832:9;24828:18;24819:6;24775:72;:::i;:::-;24857;24925:2;24914:9;24910:18;24901:6;24857:72;:::i;:::-;24494:442;;;;;;:::o;24942:180::-;24990:77;24987:1;24980:88;25087:4;25084:1;25077:15;25111:4;25108:1;25101:15;25128:180;25176:77;25173:1;25166:88;25273:4;25270:1;25263:15;25297:4;25294:1;25287:15;25314:143;25371:5;25402:6;25396:13;25387:22;;25418:33;25445:5;25418:33;:::i;:::-;25314:143;;;;:::o;25463:351::-;25533:6;25582:2;25570:9;25561:7;25557:23;25553:32;25550:119;;;25588:79;;:::i;:::-;25550:119;25708:1;25733:64;25789:7;25780:6;25769:9;25765:22;25733:64;:::i;:::-;25723:74;;25679:128;25463:351;;;;:::o;25820:85::-;25865:7;25894:5;25883:16;;25820:85;;;:::o;25911:158::-;25969:9;26002:61;26020:42;26029:32;26055:5;26029:32;:::i;:::-;26020:42;:::i;:::-;26002:61;:::i;:::-;25989:74;;25911:158;;;:::o;26075:147::-;26170:45;26209:5;26170:45;:::i;:::-;26165:3;26158:58;26075:147;;:::o;26228:114::-;26295:6;26329:5;26323:12;26313:22;;26228:114;;;:::o;26348:184::-;26447:11;26481:6;26476:3;26469:19;26521:4;26516:3;26512:14;26497:29;;26348:184;;;;:::o;26538:132::-;26605:4;26628:3;26620:11;;26658:4;26653:3;26649:14;26641:22;;26538:132;;;:::o;26676:108::-;26753:24;26771:5;26753:24;:::i;:::-;26748:3;26741:37;26676:108;;:::o;26790:179::-;26859:10;26880:46;26922:3;26914:6;26880:46;:::i;:::-;26958:4;26953:3;26949:14;26935:28;;26790:179;;;;:::o;26975:113::-;27045:4;27077;27072:3;27068:14;27060:22;;26975:113;;;:::o;27124:732::-;27243:3;27272:54;27320:5;27272:54;:::i;:::-;27342:86;27421:6;27416:3;27342:86;:::i;:::-;27335:93;;27452:56;27502:5;27452:56;:::i;:::-;27531:7;27562:1;27547:284;27572:6;27569:1;27566:13;27547:284;;;27648:6;27642:13;27675:63;27734:3;27719:13;27675:63;:::i;:::-;27668:70;;27761:60;27814:6;27761:60;:::i;:::-;27751:70;;27607:224;27594:1;27591;27587:9;27582:14;;27547:284;;;27551:14;27847:3;27840:10;;27248:608;;;27124:732;;;;:::o;27862:831::-;28125:4;28163:3;28152:9;28148:19;28140:27;;28177:71;28245:1;28234:9;28230:17;28221:6;28177:71;:::i;:::-;28258:80;28334:2;28323:9;28319:18;28310:6;28258:80;:::i;:::-;28385:9;28379:4;28375:20;28370:2;28359:9;28355:18;28348:48;28413:108;28516:4;28507:6;28413:108;:::i;:::-;28405:116;;28531:72;28599:2;28588:9;28584:18;28575:6;28531:72;:::i;:::-;28613:73;28681:3;28670:9;28666:19;28657:6;28613:73;:::i;:::-;27862:831;;;;;;;;:::o;28699:807::-;28948:4;28986:3;28975:9;28971:19;28963:27;;29000:71;29068:1;29057:9;29053:17;29044:6;29000:71;:::i;:::-;29081:72;29149:2;29138:9;29134:18;29125:6;29081:72;:::i;:::-;29163:80;29239:2;29228:9;29224:18;29215:6;29163:80;:::i;:::-;29253;29329:2;29318:9;29314:18;29305:6;29253:80;:::i;:::-;29343:73;29411:3;29400:9;29396:19;29387:6;29343:73;:::i;:::-;29426;29494:3;29483:9;29479:19;29470:6;29426:73;:::i;:::-;28699:807;;;;;;;;;:::o;29512:143::-;29569:5;29600:6;29594:13;29585:22;;29616:33;29643:5;29616:33;:::i;:::-;29512:143;;;;:::o;29661:663::-;29749:6;29757;29765;29814:2;29802:9;29793:7;29789:23;29785:32;29782:119;;;29820:79;;:::i;:::-;29782:119;29940:1;29965:64;30021:7;30012:6;30001:9;29997:22;29965:64;:::i;:::-;29955:74;;29911:128;30078:2;30104:64;30160:7;30151:6;30140:9;30136:22;30104:64;:::i;:::-;30094:74;;30049:129;30217:2;30243:64;30299:7;30290:6;30279:9;30275:22;30243:64;:::i;:::-;30233:74;;30188:129;29661:663;;;;;:::o

Swarm Source

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