ETH Price: $2,350.93 (+0.43%)

Token

Spooky Halloween Floki (SHF)
 

Overview

Max Total Supply

10,000,000,000 SHF

Holders

345

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
4,438,795.357586221 SHF

Value
$0.00
0x748fe645d3f9d82b52baeb31349c4608f813d9cf
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:
SPOOKYHALLOWEENFLOKI

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: UNLICENSED

pragma solidity 0.8.15;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

interface BEP20 {
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

abstract contract Auth {
    address internal owner;
    address internal potentialOwner;
    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) external onlyOwner {
        authorizations[adr] = true;
        emit Authorize_Wallet(adr,true);
    }

    function unauthorize(address adr) external onlyOwner {
        require(adr != owner, "OWNER cant be unauthorized");
        authorizations[adr] = false;
        emit Authorize_Wallet(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) external onlyOwner {
        require(adr != owner, "Already the owner");
        require(adr != address(0), "Can not be zero address.");
        potentialOwner = adr;
        emit OwnershipNominated(adr);
    }

    function acceptOwnership() external {
        require(msg.sender == potentialOwner, "You must be nominated as potential owner before you can accept the role.");
        authorizations[owner] = false;
        authorizations[potentialOwner] = true;

        emit Authorize_Wallet(owner,false);
        emit Authorize_Wallet(potentialOwner,true);
        
        owner = potentialOwner;
        potentialOwner = address(0);
        emit OwnershipTransferred(owner);
    }

    event OwnershipTransferred(address owner);
    event OwnershipNominated(address potentialOwner);
    event Authorize_Wallet(address Wallet, bool Status);
}

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;

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

contract SPOOKYHALLOWEENFLOKI is BEP20, Auth {
    using SafeMath for uint256;

    address immutable WETH;
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;

    string public constant name = "Spooky Halloween Floki";
    string public constant symbol = "SHF";
    uint8 public constant decimals = 9;

    uint256 public constant totalSupply = 10 * 10**9 * 10**decimals;

    uint256 public _maxTxAmount = totalSupply / 100;
    uint256 public _maxWalletToken = totalSupply * 2 / 100;

    mapping (address => uint256) public balanceOf;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isWalletLimitExempt;

    uint256 public liquidityFee = 0;
    uint256 public marketingFee = 60;
    uint256 public teamFee = 10;
    uint256 public developmentFee = 0;
    uint256 public burnFee = 0;
    uint256 public totalFee = marketingFee + liquidityFee + teamFee + burnFee + developmentFee;
    uint256 public constant feeDenominator = 1000;
    
    uint256 buyMultiplier = 100;
    uint256 sellMultiplier = 100;
    uint256 transferMultiplier = 100;

    address public marketingFeeReceiver;
    address public teamFeeReceiver;
    address public developmentFeeReceiver;

    IDEXRouter public router;
    address public immutable pair;

    bool public tradingOpen = false;

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

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();

        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        marketingFeeReceiver = 0xc9550CF5389697c28d04e9A6ed3F0eF2838d749c;
        developmentFeeReceiver = 0xc9550CF5389697c28d04e9A6ed3F0eF2838d749c;
        teamFeeReceiver = 0x993Aeb30CB24F4664D0C8872e2dF03f18a07BFbd;

        isFeeExempt[msg.sender] = true;

        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[DEAD] = true;
        isTxLimitExempt[ZERO] = true;

        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[DEAD] = true;

        balanceOf[msg.sender] = totalSupply;
        emit Transfer(address(0), msg.sender, totalSupply);
    }

    receive() external payable { }

    function getOwner() external view override returns (address) { return owner; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external onlyOwner {
        require(maxWallPercent_base1000 >= 5,"Cannot set max wallet less than 0.5%");
        _maxWalletToken = (totalSupply * maxWallPercent_base1000 ) / 1000;
        emit config_MaxWallet(_maxWalletToken);
    }

    function setMaxTxPercent_base1000(uint256 maxTXPercentage_base1000) external onlyOwner {
        require(maxTXPercentage_base1000 >= 5,"Cannot set max transaction less than 0.5%");
        _maxTxAmount = (totalSupply * maxTXPercentage_base1000 ) / 1000;
        emit config_MaxTransaction(_maxTxAmount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(tradingOpen,"Trading not open yet");
        }

        if (!authorizations[sender] && !isWalletLimitExempt[sender] && !isWalletLimitExempt[recipient] && recipient != pair) {
            require((balanceOf[recipient] + amount) <= _maxWalletToken,"max wallet limit reached");
        }
    
        require((amount <= _maxTxAmount) || isTxLimitExempt[sender] || isTxLimitExempt[recipient], "Max TX Limit Exceeded");

        if(shouldSwapBack()){ swapBack(); }

        balanceOf[sender] = balanceOf[sender].sub(amount, "Insufficient Balance");

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

        balanceOf[recipient] = balanceOf[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        balanceOf[sender] = balanceOf[sender].sub(amount, "Insufficient Balance");
        balanceOf[recipient] = balanceOf[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        if(amount == 0 || totalFee == 0){
            return amount;
        }

        uint256 multiplier = transferMultiplier;

        if(recipient == pair) {
            multiplier = sellMultiplier;
        } else if(sender == pair) {
            multiplier = buyMultiplier;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);
        uint256 burnTokens = feeAmount.mul(burnFee).div(totalFee);
        uint256 contractTokens = feeAmount.sub(burnTokens);

        if(contractTokens > 0){
            balanceOf[address(this)] = balanceOf[address(this)].add(contractTokens);
            emit Transfer(sender, address(this), contractTokens);
        }
        
        if(burnTokens > 0){
            balanceOf[DEAD] = balanceOf[DEAD].add(burnTokens);
            emit Transfer(sender, DEAD, burnTokens);    
        }

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && balanceOf[address(this)] >= swapThreshold;
    }

    function clearStuckBalance(uint256 amountPercentage) external onlyOwner {
        require(amountPercentage < 101, "Max 100%");
        uint256 amountETH = address(this).balance;
        uint256 amountToClear = ( amountETH * amountPercentage ) / 100;
        payable(msg.sender).transfer(amountToClear);
        emit BalanceClear(amountToClear);
    }

    function clearStuckToken(address tokenAddress, uint256 tokens) external onlyOwner returns (bool success) {
        if(tokens == 0){
            tokens = BEP20(tokenAddress).balanceOf(address(this));
        }

        emit clearToken(tokenAddress, tokens);

        return BEP20(tokenAddress).transfer(msg.sender, tokens);
    }

    function tradingOpem() external onlyOwner {
        tradingOpen = true;
        emit config_TradingStatus(tradingOpen);
    }

    function swapBack() internal swapping {

        uint256 totalETHFee = totalFee - burnFee;

        uint256 amountToLiquify = (swapThreshold * liquidityFee)/(totalETHFee * 2);
        uint256 amountToSwap = swapThreshold - amountToLiquify;

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

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

        uint256 amountETH = address(this).balance;

        totalETHFee = totalETHFee - (liquidityFee / 2);
        
        uint256 amountETHLiquidity = (amountETH * liquidityFee) / (totalETHFee * 2);
        uint256 amountETHMarketing = (amountETH * marketingFee) / totalETHFee;
        uint256 amountETHTeam = (amountETH * teamFee) / totalETHFee;
        uint256 amountETHDevelopment = (amountETH * developmentFee) / totalETHFee;

        payable(marketingFeeReceiver).transfer(amountETHMarketing);
        payable(teamFeeReceiver).transfer(amountETHTeam);
        payable(developmentFeeReceiver).transfer(amountETHDevelopment);


        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                address(this),
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

    function manage_FeeExempt(address[] calldata addresses, bool status) external authorized {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i=0; i < addresses.length; ++i) {
            isFeeExempt[addresses[i]] = status;
            emit Wallet_feeExempt(addresses[i], status);
        }
    }

    function manage_TxLimitExempt(address[] calldata addresses, bool status) external authorized {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i=0; i < addresses.length; ++i) {
            isTxLimitExempt[addresses[i]] = status;
            emit Wallet_txExempt(addresses[i], status);
        }
    }

    function manage_WalletLimitExempt(address[] calldata addresses, bool status) external authorized {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i=0; i < addresses.length; ++i) {
            isWalletLimitExempt[addresses[i]] = status;
            emit Wallet_holdingExempt(addresses[i], status);
        }
    }

    function update_fees() internal {
        require(totalFee.mul(buyMultiplier).div(100) <= 120, "Buy tax cannot be more than 12%");
        require(totalFee.mul(sellMultiplier).div(100) <= 120, "Sell tax cannot be more than 12%");
        require(totalFee.mul(transferMultiplier).div(100) <= 100, "Transfer Tax cannot be more than 10%");

        emit UpdateFee( uint8(totalFee.mul(buyMultiplier).div(100)),
            uint8(totalFee.mul(sellMultiplier).div(100)),
            uint8(totalFee.mul(transferMultiplier).div(100))
            );
    }

    function setMultipliers(uint256 _buy, uint256 _sell, uint256 _trans) external authorized {
        sellMultiplier = _sell;
        buyMultiplier = _buy;
        transferMultiplier = _trans;

        update_fees();
    }

    function setFees_base1000(uint256 _liquidityFee,  uint256 _marketingFee, uint256 _teamFee, uint256 _developmentFee, uint256 _burnFee) external onlyOwner {
        liquidityFee = _liquidityFee;
        marketingFee = _marketingFee;
        teamFee = _teamFee;
        developmentFee = _developmentFee;
        burnFee = _burnFee;
        totalFee = _liquidityFee + _marketingFee + _teamFee + _burnFee + _developmentFee;
        
        update_fees();
    }

    function setFeeReceivers(address _marketingFeeReceiver, address _teamFeeReceiver, address _developmentFeeReceiver ) external onlyOwner {
        require(_marketingFeeReceiver != address(0),"Marketing fee address cannot be zero address");
        require(_teamFeeReceiver != address(0),"Team fee address cannot be zero address");
        require(_developmentFeeReceiver != address(0),"Development fee address cannot be zero address");

        marketingFeeReceiver = _marketingFeeReceiver;
        teamFeeReceiver = _teamFeeReceiver;
        developmentFeeReceiver = _developmentFeeReceiver;

        emit Set_Wallets(marketingFeeReceiver, teamFeeReceiver, developmentFeeReceiver);
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external onlyOwner {
        require(_amount < (totalSupply/10), "Amount too high");

        swapEnabled = _enabled;
        swapThreshold = _amount;

        emit config_SwapSettings(swapThreshold, swapEnabled);
    }

    function getCirculatingSupply() public view returns (uint256) {
        return (totalSupply - balanceOf[DEAD] - balanceOf[ZERO]);
    }

    function distribute(address[] calldata addresses, uint256[] calldata tokens) external onlyOwner {
        address from = msg.sender;

        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        require(addresses.length == tokens.length,"Mismatch between address and token count");

        uint256 SCCC = 0;

        for(uint i=0; i < addresses.length; i++){
            SCCC = SCCC + tokens[i];
        }

        require(balanceOf[from] >= SCCC, "Not enough tokens in wallet");

        for(uint i=0; i < addresses.length; i++){
            _basicTransfer(from,addresses[i],tokens[i]);
        }

    }

event AutoLiquify(uint256 amountETH, uint256 amountTokens);
event UpdateFee(uint8 Buy, uint8 Sell, uint8 Transfer);
event Wallet_feeExempt(address Wallet, bool Status);
event Wallet_txExempt(address Wallet, bool Status);
event Wallet_holdingExempt(address Wallet, bool Status);

event BalanceClear(uint256 amount);
event clearToken(address TokenAddressCleared, uint256 Amount);

event Set_Wallets(address MarketingWallet, address TeamWallet, address DevelopmentWallet);

event config_MaxWallet(uint256 maxWallet);
event config_MaxTransaction(uint256 maxWallet);
event config_TradingStatus(bool Status);
event config_SwapSettings(uint256 Amount, bool Enabled);

}

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":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"Authorize_Wallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BalanceClear","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"potentialOwner","type":"address"}],"name":"OwnershipNominated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"MarketingWallet","type":"address"},{"indexed":false,"internalType":"address","name":"TeamWallet","type":"address"},{"indexed":false,"internalType":"address","name":"DevelopmentWallet","type":"address"}],"name":"Set_Wallets","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"Buy","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"Sell","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"Transfer","type":"uint8"}],"name":"UpdateFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"Wallet_feeExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"Wallet_holdingExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"Wallet_txExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"TokenAddressCleared","type":"address"},{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"clearToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"config_MaxTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"config_MaxWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"Enabled","type":"bool"}],"name":"config_SwapSettings","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"config_TradingStatus","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":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","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":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"developmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"developmentFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"distribute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","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":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_FeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_TxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_WalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_teamFeeReceiver","type":"address"},{"internalType":"address","name":"_developmentFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_teamFee","type":"uint256"},{"internalType":"uint256","name":"_developmentFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"setFees_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base1000","type":"uint256"}],"name":"setMaxTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setMultipliers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","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":"view","type":"function"},{"inputs":[],"name":"teamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpem","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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"}]

60c06040526064620000146009600a620005b4565b62000025906402540be400620005cc565b620000319190620005ee565b6003556064620000446009600a620005b4565b62000055906402540be400620005cc565b62000062906002620005cc565b6200006e9190620005ee565b6004556000600a55603c600b55600a600c556000600d556000600e55600d54600e54600c54600a54600b54620000a5919062000611565b620000b1919062000611565b620000bd919062000611565b620000c9919062000611565b600f556064601081905560118190556012556016805461ffff60a01b19169055611388620000fa6009600a620005b4565b6200010b906402540be400620005cc565b620001179190620005ee565b6017553480156200012757600080fd5b5060008054336001600160a01b031991821681178355825260026020908152604092839020805460ff1916600117905560168054737a250d5630b4cf539739df2c5dacb4c659f2488d93168317905582516315ab88c960e31b81529251919263ad5c464892600480830193928290030181865afa158015620001ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d391906200062c565b6001600160a01b039081166080526016546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa15801562000224573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024a91906200062c565b6080516040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af11580156200029c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c291906200062c565b6001600160a01b0390811660a05230600081815260066020908152604080832060165490951683529381528382206000199055601380546001600160a01b031990811673c9550cf5389697c28d04e9a6ed3f0ef2838d749c9081179092556015805482169092179091556014805490911673993aeb30cb24f4664d0c8872e2df03f18a07bfbd17905533825260078152838220805460ff1990811660019081179092556008835285842080548216831790557f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd0933429980548216831790557f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c780548216831790556009928390528584208054821683179055938352938220805484168517905561dead9091527f960b1051749987b45b5679007fff577a1c2f763ec21c15a6c5eb193075003785805490921690921790556200042390600a620005b4565b62000434906402540be400620005cc565b33600081815260056020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620004776009600a620005b4565b62000488906402540be400620005cc565b60405190815260200160405180910390a362000657565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004f6578160001904821115620004da57620004da6200049f565b80851615620004e857918102915b93841c9390800290620004ba565b509250929050565b6000826200050f57506001620005ae565b816200051e57506000620005ae565b8160018114620005375760028114620005425762000562565b6001915050620005ae565b60ff8411156200055657620005566200049f565b50506001821b620005ae565b5060208310610133831016604e8410600b841016171562000587575081810a620005ae565b620005938383620004b5565b8060001904821115620005aa57620005aa6200049f565b0290505b92915050565b6000620005c560ff841683620004fe565b9392505050565b6000816000190483118215151615620005e957620005e96200049f565b500290565b6000826200060c57634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156200062757620006276200049f565b500190565b6000602082840312156200063f57600080fd5b81516001600160a01b0381168114620005c557600080fd5b60805160a051613225620006996000396000818161078501528181611e68015281816123bc015281816127de0152612812015260006124d801526132256000f3fe6080604052600436106102e65760003560e01c806377b54bad11610190578063c867d60b116100dc578063f0b37c0411610095578063f9fdac111161006f578063f9fdac1114610953578063fce589d814610973578063fe9fbb8014610989578063ffb54a99146109a957600080fd5b8063f0b37c04146108f3578063f2fde38b14610913578063f887ea401461093357600080fd5b8063c867d60b14610807578063d7c0103214610837578063d7c94efd14610857578063dd62ed3e1461086d578063df20fd49146108b3578063e96fada2146108d357600080fd5b806395d89b4111610149578063a8aa1b3111610123578063a8aa1b3114610773578063a9059cbb146107a7578063b6a5d7de146107c7578063bd9ab537146107e757600080fd5b806395d89b411461071857806398118cb414610747578063a5f3d0031461075d57600080fd5b806377b54bad1461066957806378109e541461068957806379ba50971461069f5780637d1db4a5146106b4578063893d20e8146106ca5780638b42507f146106e857600080fd5b80632929abe61161024f5780634be9d869116102085780636ce46bc3116101e25780636ce46bc3146105db5780636ddd1713146105fb5780636ec518b81461061c57806370a082311461063c57600080fd5b80634be9d86914610585578063571ac8b0146105a55780636b67c4df146105c557600080fd5b80632929abe6146104925780632b112e49146104b25780632f54bf6e146104c7578063313ce567146104f65780633f4218e01461051d578063402911431461054d57600080fd5b8063180b0d7e116102a1578063180b0d7e146103fc57806318160ddd146104125780631da1db5e146104275780631df4ccfc1461044757806323b872dd1461045d578063254f83071461047d57600080fd5b8062108683146102f2578062bff446146103145780630445b6671461033457806306fdde031461035d57806309302dc6146103ac578063095ea7b3146103cc57600080fd5b366102ed57005b600080fd5b3480156102fe57600080fd5b5061031261030d366004612bbf565b6109ca565b005b34801561032057600080fd5b5061031261032f366004612bbf565b610aed565b34801561034057600080fd5b5061034a60175481565b6040519081526020015b60405180910390f35b34801561036957600080fd5b5061039f6040518060400160405280601681526020017553706f6f6b792048616c6c6f7765656e20466c6f6b6960501b81525081565b6040516103549190612c16565b3480156103b857600080fd5b506103126103c7366004612c6b565b610c01565b3480156103d857600080fd5b506103ec6103e7366004612c99565b610cf7565b6040519015158152602001610354565b34801561040857600080fd5b5061034a6103e881565b34801561041e57600080fd5b5061034a610d64565b34801561043357600080fd5b50610312610442366004612c6b565b610d82565b34801561045357600080fd5b5061034a600f5481565b34801561046957600080fd5b506103ec610478366004612cc5565b610e6a565b34801561048957600080fd5b50610312610f2c565b34801561049e57600080fd5b506103126104ad366004612d06565b610faf565b3480156104be57600080fd5b5061034a611178565b3480156104d357600080fd5b506103ec6104e2366004612d72565b6000546001600160a01b0391821691161490565b34801561050257600080fd5b5061050b600981565b60405160ff9091168152602001610354565b34801561052957600080fd5b506103ec610538366004612d72565b60076020526000908152604090205460ff1681565b34801561055957600080fd5b5060145461056d906001600160a01b031681565b6040516001600160a01b039091168152602001610354565b34801561059157600080fd5b506103126105a0366004612bbf565b611200565b3480156105b157600080fd5b506103ec6105c0366004612d72565b611314565b3480156105d157600080fd5b5061034a600b5481565b3480156105e757600080fd5b506103126105f6366004612d8f565b611322565b34801561060757600080fd5b506016546103ec90600160a81b900460ff1681565b34801561062857600080fd5b5060155461056d906001600160a01b031681565b34801561064857600080fd5b5061034a610657366004612d72565b60056020526000908152604090205481565b34801561067557600080fd5b506103ec610684366004612c99565b611363565b34801561069557600080fd5b5061034a60045481565b3480156106ab57600080fd5b506103126114b4565b3480156106c057600080fd5b5061034a60035481565b3480156106d657600080fd5b506000546001600160a01b031661056d565b3480156106f457600080fd5b506103ec610703366004612d72565b60086020526000908152604090205460ff1681565b34801561072457600080fd5b5061039f6040518060400160405280600381526020016229a42360e91b81525081565b34801561075357600080fd5b5061034a600a5481565b34801561076957600080fd5b5061034a600d5481565b34801561077f57600080fd5b5061056d7f000000000000000000000000000000000000000000000000000000000000000081565b3480156107b357600080fd5b506103ec6107c2366004612c99565b611634565b3480156107d357600080fd5b506103126107e2366004612d72565b611641565b3480156107f357600080fd5b50610312610802366004612c6b565b6116b1565b34801561081357600080fd5b506103ec610822366004612d72565b60096020526000908152604090205460ff1681565b34801561084357600080fd5b50610312610852366004612dbb565b6117a6565b34801561086357600080fd5b5061034a600c5481565b34801561087957600080fd5b5061034a610888366004612dfb565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156108bf57600080fd5b506103126108ce366004612e34565b61198a565b3480156108df57600080fd5b5060135461056d906001600160a01b031681565b3480156108ff57600080fd5b5061031261090e366004612d72565b611a83565b34801561091f57600080fd5b5061031261092e366004612d72565b611b49565b34801561093f57600080fd5b5060165461056d906001600160a01b031681565b34801561095f57600080fd5b5061031261096e366004612e52565b611c69565b34801561097f57600080fd5b5061034a600e5481565b34801561099557600080fd5b506103ec6109a4366004612d72565b611ce9565b3480156109b557600080fd5b506016546103ec90600160a01b900460ff1681565b6109d333611ce9565b6109f85760405162461bcd60e51b81526004016109ef90612e8d565b60405180910390fd5b6101f58210610a195760405162461bcd60e51b81526004016109ef90612eb2565b60005b82811015610ae7578160096000868685818110610a3b57610a3b612ef7565b9050602002016020810190610a509190612d72565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f566c2270277919680152b0734389ae919d95ff7e9024c03fc3c7c209ec8412c7848483818110610aab57610aab612ef7565b9050602002016020810190610ac09190612d72565b83604051610acf929190612f0d565b60405180910390a1610ae081612f3e565b9050610a1c565b50505050565b610af633611ce9565b610b125760405162461bcd60e51b81526004016109ef90612e8d565b6101f58210610b335760405162461bcd60e51b81526004016109ef90612eb2565b60005b82811015610ae7578160076000868685818110610b5557610b55612ef7565b9050602002016020810190610b6a9190612d72565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f9fbd25f95d342f2efc070b56d2fadd2341d264ef8c915dc268609b2ca1bb25de848483818110610bc557610bc5612ef7565b9050602002016020810190610bda9190612d72565b83604051610be9929190612f0d565b60405180910390a1610bfa81612f3e565b9050610b36565b6000546001600160a01b03163314610c2b5760405162461bcd60e51b81526004016109ef90612f57565b6005811015610c885760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e20604482015263302e352560e01b60648201526084016109ef565b6103e881610c986009600a61305b565b610ca7906402540be40061306a565b610cb1919061306a565b610cbb9190613089565b60048190556040519081527fa69fa556bf940aa0c695b9c8e1b229fdb1476830e2025e44da1028e0c1458d4a906020015b60405180910390a150565b3360008181526006602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610d529086815260200190565b60405180910390a35060015b92915050565b610d706009600a61305b565b610d7f906402540be40061306a565b81565b6000546001600160a01b03163314610dac5760405162461bcd60e51b81526004016109ef90612f57565b60658110610de75760405162461bcd60e51b81526020600482015260086024820152674d6178203130302560c01b60448201526064016109ef565b4760006064610df6848461306a565b610e009190613089565b604051909150339082156108fc029083906000818181858888f19350505050158015610e30573d6000803e3d6000fd5b506040518181527f377153983e64f72f80af47182763316780b9133be808b7082a16710202b8fbda906020015b60405180910390a1505050565b6001600160a01b038316600090815260066020908152604080832033845290915281205460001914610f17576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600682528381203382529091529190912054610ef2918490611d07565b6001600160a01b03851660009081526006602090815260408083203384529091529020555b610f22848484611d41565b90505b9392505050565b6000546001600160a01b03163314610f565760405162461bcd60e51b81526004016109ef90612f57565b6016805460ff60a01b1916600160a01b908117918290556040517ff865819dcfd8250cfaa23e1ab7129c1ec65c617bae1e716699dfe07dd7c489ee92610fa592900460ff161515815260200190565b60405180910390a1565b6000546001600160a01b03163314610fd95760405162461bcd60e51b81526004016109ef90612f57565b336101f58410610ffb5760405162461bcd60e51b81526004016109ef90612eb2565b83821461105b5760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e206164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b60648201526084016109ef565b6000805b8581101561109f5784848281811061107957611079612ef7565b905060200201358261108b91906130ab565b91508061109781612f3e565b91505061105f565b506001600160a01b0382166000908152600560205260409020548111156111085760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c6574000000000060448201526064016109ef565b60005b8581101561116f5761115c8388888481811061112957611129612ef7565b905060200201602081019061113e9190612d72565b87878581811061115057611150612ef7565b905060200201356120ec565b508061116781612f3e565b91505061110b565b50505050505050565b60056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461dead60009081527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba549091906111d86009600a61305b565b6111e7906402540be40061306a565b6111f191906130c3565b6111fb91906130c3565b905090565b61120933611ce9565b6112255760405162461bcd60e51b81526004016109ef90612e8d565b6101f582106112465760405162461bcd60e51b81526004016109ef90612eb2565b60005b82811015610ae757816008600086868581811061126857611268612ef7565b905060200201602081019061127d9190612d72565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f3c4f06d74861dea6c152189f2ac8853b6f789feb0e1182101b7ad9d1858f70e38484838181106112d8576112d8612ef7565b90506020020160208101906112ed9190612d72565b836040516112fc929190612f0d565b60405180910390a161130d81612f3e565b9050611249565b6000610d5e82600019610cf7565b61132b33611ce9565b6113475760405162461bcd60e51b81526004016109ef90612e8d565b60118290556010839055601281905561135e6121c0565b505050565b600080546001600160a01b0316331461138e5760405162461bcd60e51b81526004016109ef90612f57565b81600003611401576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa1580156113da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113fe91906130da565b91505b604080516001600160a01b0385168152602081018490527f960427a4fde284dcc8da2c51a43d210cfd7ed6f4328a24ba33eee49910db564b910160405180910390a160405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015611490573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2591906130f3565b6001546001600160a01b031633146115455760405162461bcd60e51b815260206004820152604860248201527f596f75206d757374206265206e6f6d696e6174656420617320706f74656e746960448201527f616c206f776e6572206265666f726520796f752063616e2061636365707420746064820152673432903937b6329760c11b608482015260a4016109ef565b600080546001600160a01b03908116825260026020526040808320805460ff1990811690915560018054841685528285208054909216179055825490516000805160206131d0833981519152936115a193929092169190612f0d565b60405180910390a1600180546040516000805160206131d0833981519152926115d3926001600160a01b031691612f0d565b60405180910390a160018054600080546001600160a01b0383166001600160a01b031991821681179092559091169091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616390602001610fa5565b6000610f25338484611d41565b6000546001600160a01b0316331461166b5760405162461bcd60e51b81526004016109ef90612f57565b6001600160a01b03811660009081526002602052604090819020805460ff1916600190811790915590516000805160206131d083398151915291610cec91849190612f0d565b6000546001600160a01b031633146116db5760405162461bcd60e51b81526004016109ef90612f57565b600581101561173e5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c657373206044820152687468616e20302e352560b81b60648201526084016109ef565b6103e88161174e6009600a61305b565b61175d906402540be40061306a565b611767919061306a565b6117719190613089565b60038190556040519081527f365a2bb07537fddd750e9ac8d56970e584f83a144bb5225e77491b83bccd118390602001610cec565b6000546001600160a01b031633146117d05760405162461bcd60e51b81526004016109ef90612f57565b6001600160a01b03831661183b5760405162461bcd60e51b815260206004820152602c60248201527f4d61726b6574696e672066656520616464726573732063616e6e6f742062652060448201526b7a65726f206164647265737360a01b60648201526084016109ef565b6001600160a01b0382166118a15760405162461bcd60e51b815260206004820152602760248201527f5465616d2066656520616464726573732063616e6e6f74206265207a65726f206044820152666164647265737360c81b60648201526084016109ef565b6001600160a01b03811661190e5760405162461bcd60e51b815260206004820152602e60248201527f446576656c6f706d656e742066656520616464726573732063616e6e6f74206260448201526d65207a65726f206164647265737360901b60648201526084016109ef565b601380546001600160a01b038581166001600160a01b0319928316811790935560148054868316908416811790915560158054928616929093168217909255604080519384526020840192909252908201527fb93b1ef445620c8661ebddddb575085ede7dfe08ccc6a91b933a6520249c3c7c90606001610e5d565b6000546001600160a01b031633146119b45760405162461bcd60e51b81526004016109ef90612f57565b600a6119c160098261305b565b6119d0906402540be40061306a565b6119da9190613089565b8110611a1a5760405162461bcd60e51b815260206004820152600f60248201526e082dadeeadce840e8dede40d0d2ced608b1b60448201526064016109ef565b6016805460ff60a81b1916600160a81b8415158102919091179182905560178390556040805184815260ff9290930491909116151560208301527f34c2d4c263b6f41223c6d30ae2e7bcb18629892587e0a4138f57ba2c523953d0910160405180910390a15050565b6000546001600160a01b03163314611aad5760405162461bcd60e51b81526004016109ef90612f57565b6000546001600160a01b0390811690821603611b0b5760405162461bcd60e51b815260206004820152601a60248201527f4f574e45522063616e7420626520756e617574686f72697a656400000000000060448201526064016109ef565b6001600160a01b038116600090815260026020526040808220805460ff19169055516000805160206131d083398151915291610cec91849190612f0d565b6000546001600160a01b03163314611b735760405162461bcd60e51b81526004016109ef90612f57565b6000546001600160a01b0390811690821603611bc55760405162461bcd60e51b815260206004820152601160248201527020b63932b0b23c903a34329037bbb732b960791b60448201526064016109ef565b6001600160a01b038116611c1b5760405162461bcd60e51b815260206004820152601860248201527f43616e206e6f74206265207a65726f20616464726573732e000000000000000060448201526064016109ef565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527fe235b3289f2e990914b334bf6827949c27f6ba58d3e5a1d6f8415037ca1ef22290602001610cec565b6000546001600160a01b03163314611c935760405162461bcd60e51b81526004016109ef90612f57565b600a859055600b849055600c839055600d829055600e819055818184611cb987896130ab565b611cc391906130ab565b611ccd91906130ab565b611cd791906130ab565b600f55611ce26121c0565b5050505050565b6001600160a01b031660009081526002602052604090205460ff1690565b60008184841115611d2b5760405162461bcd60e51b81526004016109ef9190612c16565b506000611d3884866130c3565b95945050505050565b60185460009060ff1615611d6157611d5a8484846120ec565b9050610f25565b6001600160a01b03841660009081526002602052604090205460ff16158015611da357506001600160a01b03831660009081526002602052604090205460ff16155b15611df857601654600160a01b900460ff16611df85760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016109ef565b6001600160a01b03841660009081526002602052604090205460ff16158015611e3a57506001600160a01b03841660009081526009602052604090205460ff16155b8015611e5f57506001600160a01b03831660009081526009602052604090205460ff16155b8015611e9d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b15611f17576004546001600160a01b038416600090815260056020526040902054611ec99084906130ab565b1115611f175760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d69742072656163686564000000000000000060448201526064016109ef565b60035482111580611f4057506001600160a01b03841660009081526008602052604090205460ff165b80611f6357506001600160a01b03831660009081526008602052604090205460ff165b611fa75760405162461bcd60e51b815260206004820152601560248201527413585e08151608131a5b5a5d08115e18d959591959605a1b60448201526064016109ef565b611faf6123af565b15611fbc57611fbc612422565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03871660009081526005909152919091205461200e918490611d07565b6001600160a01b038516600090815260056020908152604080832093909355600790529081205460ff168061205b57506001600160a01b03841660009081526007602052604090205460ff165b61206f5761206a8584866127b6565b612071565b825b6001600160a01b03851660009081526005602052604090205490915061209790826129cf565b6001600160a01b0380861660008181526005602052604090819020939093559151908716906000805160206131b0833981519152906120d99085815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260059091529182205461213d918490611d07565b6001600160a01b03808616600090815260056020526040808220939093559085168152205461216c90836129cf565b6001600160a01b0380851660008181526005602052604090819020939093559151908616906000805160206131b0833981519152906121ae9086815260200190565b60405180910390a35060019392505050565b60786121e460646121de601054600f54612a2e90919063ffffffff16565b90612ab0565b11156122325760405162461bcd60e51b815260206004820152601f60248201527f427579207461782063616e6e6f74206265206d6f7265207468616e203132250060448201526064016109ef565b607861225060646121de601154600f54612a2e90919063ffffffff16565b111561229e5760405162461bcd60e51b815260206004820181905260248201527f53656c6c207461782063616e6e6f74206265206d6f7265207468616e2031322560448201526064016109ef565b60646122bc60646121de601254600f54612a2e90919063ffffffff16565b11156123165760405162461bcd60e51b8152602060048201526024808201527f5472616e73666572205461782063616e6e6f74206265206d6f7265207468616e6044820152632031302560e01b60648201526084016109ef565b7f375884ed7f92283ee74d8884b39a803f4aee832b15766fe016b74fc791fc2ada61235360646121de601054600f54612a2e90919063ffffffff16565b61236f60646121de601154600f54612a2e90919063ffffffff16565b61238b60646121de601254600f54612a2e90919063ffffffff16565b6040805160ff94851681529284166020840152921691810191909152606001610fa5565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015906123ed575060185460ff16155b80156124025750601654600160a81b900460ff165b80156111fb57505060175430600090815260056020526040902054101590565b6018805460ff19166001179055600e54600f54600091612441916130c3565b9050600061245082600261306a565b600a54601754612460919061306a565b61246a9190613089565b905060008160175461247c91906130c3565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106124b6576124b6612ef7565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061250a5761250a612ef7565b6001600160a01b03928316602091820292909201015260165460405163791ac94760e01b815291169063791ac94790612550908590600090869030904290600401613110565b600060405180830381600087803b15801561256a57600080fd5b505af115801561257e573d6000803e3d6000fd5b5050600a544792506125939150600290613089565b61259d90866130c3565b945060006125ac86600261306a565b600a546125b9908461306a565b6125c39190613089565b9050600086600b54846125d6919061306a565b6125e09190613089565b9050600087600c54856125f3919061306a565b6125fd9190613089565b9050600088600d5486612610919061306a565b61261a9190613089565b6013546040519192506001600160a01b03169084156108fc029085906000818181858888f19350505050158015612655573d6000803e3d6000fd5b506014546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015612690573d6000803e3d6000fd5b506015546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156126cb573d6000803e3d6000fd5b5087156127a15760165460405163f305d71960e01b81523060048201819052602482018b9052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990869060c40160606040518083038185885af115801561273f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127649190613181565b505060408051868152602081018b90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506018805460ff1916905550505050505050565b60008215806127c55750600f54155b156127d1575081610f25565b6012546001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811690841603612810575060115461284e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b03160361284e57506010545b600061287f6128606103e8606461306a565b6121de84612879600f548a612a2e90919063ffffffff16565b90612a2e565b9050600061289e600f546121de600e5485612a2e90919063ffffffff16565b905060006128ac8383612af2565b9050801561291657306000908152600560205260409020546128ce90826129cf565b30600081815260056020526040908190209290925590516001600160a01b038a16906000805160206131b08339815191529061290d9085815260200190565b60405180910390a35b81156129b95761dead60005260056020527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba5461295390836129cf565b61dead600081905260056020527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba919091556040516001600160a01b038a16906000805160206131b0833981519152906129b09086815260200190565b60405180910390a35b6129c38784612af2565b98975050505050505050565b6000806129dc83856130ab565b905083811015610f255760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109ef565b600082600003612a4057506000610d5e565b6000612a4c838561306a565b905082612a598583613089565b14610f255760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016109ef565b6000610f2583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b34565b6000610f2583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d07565b60008183612b555760405162461bcd60e51b81526004016109ef9190612c16565b506000611d388486613089565b60008083601f840112612b7457600080fd5b50813567ffffffffffffffff811115612b8c57600080fd5b6020830191508360208260051b8501011115612ba757600080fd5b9250929050565b8015158114612bbc57600080fd5b50565b600080600060408486031215612bd457600080fd5b833567ffffffffffffffff811115612beb57600080fd5b612bf786828701612b62565b9094509250506020840135612c0b81612bae565b809150509250925092565b600060208083528351808285015260005b81811015612c4357858101830151858201604001528201612c27565b81811115612c55576000604083870101525b50601f01601f1916929092016040019392505050565b600060208284031215612c7d57600080fd5b5035919050565b6001600160a01b0381168114612bbc57600080fd5b60008060408385031215612cac57600080fd5b8235612cb781612c84565b946020939093013593505050565b600080600060608486031215612cda57600080fd5b8335612ce581612c84565b92506020840135612cf581612c84565b929592945050506040919091013590565b60008060008060408587031215612d1c57600080fd5b843567ffffffffffffffff80821115612d3457600080fd5b612d4088838901612b62565b90965094506020870135915080821115612d5957600080fd5b50612d6687828801612b62565b95989497509550505050565b600060208284031215612d8457600080fd5b8135610f2581612c84565b600080600060608486031215612da457600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215612dd057600080fd5b8335612ddb81612c84565b92506020840135612deb81612c84565b91506040840135612c0b81612c84565b60008060408385031215612e0e57600080fd5b8235612e1981612c84565b91506020830135612e2981612c84565b809150509250929050565b60008060408385031215612e4757600080fd5b8235612cb781612bae565b600080600080600060a08688031215612e6a57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b60208082526025908201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604082015264657373657360d81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b039290921682521515602082015260400190565b634e487b7160e01b600052601160045260246000fd5b600060018201612f5057612f50612f28565b5060010190565b60208082526006908201526510a7aba722a960d11b604082015260600190565b600181815b80851115612fb2578160001904821115612f9857612f98612f28565b80851615612fa557918102915b93841c9390800290612f7c565b509250929050565b600082612fc957506001610d5e565b81612fd657506000610d5e565b8160018114612fec5760028114612ff657613012565b6001915050610d5e565b60ff84111561300757613007612f28565b50506001821b610d5e565b5060208310610133831016604e8410600b8410161715613035575081810a610d5e565b61303f8383612f77565b806000190482111561305357613053612f28565b029392505050565b6000610f2560ff841683612fba565b600081600019048311821515161561308457613084612f28565b500290565b6000826130a657634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156130be576130be612f28565b500190565b6000828210156130d5576130d5612f28565b500390565b6000602082840312156130ec57600080fd5b5051919050565b60006020828403121561310557600080fd5b8151610f2581612bae565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156131605784516001600160a01b03168352938301939183019160010161313b565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561319657600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efb6a1709218b158ea8591fc9269b88652f1c908dc68a79faa865c745a770b9505a2646970667358221220ba82eb92447a459395d2ee85104d2669ef5e5797b763a5f1856636f056cf593264736f6c634300080f0033

Deployed Bytecode

0x6080604052600436106102e65760003560e01c806377b54bad11610190578063c867d60b116100dc578063f0b37c0411610095578063f9fdac111161006f578063f9fdac1114610953578063fce589d814610973578063fe9fbb8014610989578063ffb54a99146109a957600080fd5b8063f0b37c04146108f3578063f2fde38b14610913578063f887ea401461093357600080fd5b8063c867d60b14610807578063d7c0103214610837578063d7c94efd14610857578063dd62ed3e1461086d578063df20fd49146108b3578063e96fada2146108d357600080fd5b806395d89b4111610149578063a8aa1b3111610123578063a8aa1b3114610773578063a9059cbb146107a7578063b6a5d7de146107c7578063bd9ab537146107e757600080fd5b806395d89b411461071857806398118cb414610747578063a5f3d0031461075d57600080fd5b806377b54bad1461066957806378109e541461068957806379ba50971461069f5780637d1db4a5146106b4578063893d20e8146106ca5780638b42507f146106e857600080fd5b80632929abe61161024f5780634be9d869116102085780636ce46bc3116101e25780636ce46bc3146105db5780636ddd1713146105fb5780636ec518b81461061c57806370a082311461063c57600080fd5b80634be9d86914610585578063571ac8b0146105a55780636b67c4df146105c557600080fd5b80632929abe6146104925780632b112e49146104b25780632f54bf6e146104c7578063313ce567146104f65780633f4218e01461051d578063402911431461054d57600080fd5b8063180b0d7e116102a1578063180b0d7e146103fc57806318160ddd146104125780631da1db5e146104275780631df4ccfc1461044757806323b872dd1461045d578063254f83071461047d57600080fd5b8062108683146102f2578062bff446146103145780630445b6671461033457806306fdde031461035d57806309302dc6146103ac578063095ea7b3146103cc57600080fd5b366102ed57005b600080fd5b3480156102fe57600080fd5b5061031261030d366004612bbf565b6109ca565b005b34801561032057600080fd5b5061031261032f366004612bbf565b610aed565b34801561034057600080fd5b5061034a60175481565b6040519081526020015b60405180910390f35b34801561036957600080fd5b5061039f6040518060400160405280601681526020017553706f6f6b792048616c6c6f7765656e20466c6f6b6960501b81525081565b6040516103549190612c16565b3480156103b857600080fd5b506103126103c7366004612c6b565b610c01565b3480156103d857600080fd5b506103ec6103e7366004612c99565b610cf7565b6040519015158152602001610354565b34801561040857600080fd5b5061034a6103e881565b34801561041e57600080fd5b5061034a610d64565b34801561043357600080fd5b50610312610442366004612c6b565b610d82565b34801561045357600080fd5b5061034a600f5481565b34801561046957600080fd5b506103ec610478366004612cc5565b610e6a565b34801561048957600080fd5b50610312610f2c565b34801561049e57600080fd5b506103126104ad366004612d06565b610faf565b3480156104be57600080fd5b5061034a611178565b3480156104d357600080fd5b506103ec6104e2366004612d72565b6000546001600160a01b0391821691161490565b34801561050257600080fd5b5061050b600981565b60405160ff9091168152602001610354565b34801561052957600080fd5b506103ec610538366004612d72565b60076020526000908152604090205460ff1681565b34801561055957600080fd5b5060145461056d906001600160a01b031681565b6040516001600160a01b039091168152602001610354565b34801561059157600080fd5b506103126105a0366004612bbf565b611200565b3480156105b157600080fd5b506103ec6105c0366004612d72565b611314565b3480156105d157600080fd5b5061034a600b5481565b3480156105e757600080fd5b506103126105f6366004612d8f565b611322565b34801561060757600080fd5b506016546103ec90600160a81b900460ff1681565b34801561062857600080fd5b5060155461056d906001600160a01b031681565b34801561064857600080fd5b5061034a610657366004612d72565b60056020526000908152604090205481565b34801561067557600080fd5b506103ec610684366004612c99565b611363565b34801561069557600080fd5b5061034a60045481565b3480156106ab57600080fd5b506103126114b4565b3480156106c057600080fd5b5061034a60035481565b3480156106d657600080fd5b506000546001600160a01b031661056d565b3480156106f457600080fd5b506103ec610703366004612d72565b60086020526000908152604090205460ff1681565b34801561072457600080fd5b5061039f6040518060400160405280600381526020016229a42360e91b81525081565b34801561075357600080fd5b5061034a600a5481565b34801561076957600080fd5b5061034a600d5481565b34801561077f57600080fd5b5061056d7f000000000000000000000000c33becce25b54a67b2f348185c373d3479ff443281565b3480156107b357600080fd5b506103ec6107c2366004612c99565b611634565b3480156107d357600080fd5b506103126107e2366004612d72565b611641565b3480156107f357600080fd5b50610312610802366004612c6b565b6116b1565b34801561081357600080fd5b506103ec610822366004612d72565b60096020526000908152604090205460ff1681565b34801561084357600080fd5b50610312610852366004612dbb565b6117a6565b34801561086357600080fd5b5061034a600c5481565b34801561087957600080fd5b5061034a610888366004612dfb565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156108bf57600080fd5b506103126108ce366004612e34565b61198a565b3480156108df57600080fd5b5060135461056d906001600160a01b031681565b3480156108ff57600080fd5b5061031261090e366004612d72565b611a83565b34801561091f57600080fd5b5061031261092e366004612d72565b611b49565b34801561093f57600080fd5b5060165461056d906001600160a01b031681565b34801561095f57600080fd5b5061031261096e366004612e52565b611c69565b34801561097f57600080fd5b5061034a600e5481565b34801561099557600080fd5b506103ec6109a4366004612d72565b611ce9565b3480156109b557600080fd5b506016546103ec90600160a01b900460ff1681565b6109d333611ce9565b6109f85760405162461bcd60e51b81526004016109ef90612e8d565b60405180910390fd5b6101f58210610a195760405162461bcd60e51b81526004016109ef90612eb2565b60005b82811015610ae7578160096000868685818110610a3b57610a3b612ef7565b9050602002016020810190610a509190612d72565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f566c2270277919680152b0734389ae919d95ff7e9024c03fc3c7c209ec8412c7848483818110610aab57610aab612ef7565b9050602002016020810190610ac09190612d72565b83604051610acf929190612f0d565b60405180910390a1610ae081612f3e565b9050610a1c565b50505050565b610af633611ce9565b610b125760405162461bcd60e51b81526004016109ef90612e8d565b6101f58210610b335760405162461bcd60e51b81526004016109ef90612eb2565b60005b82811015610ae7578160076000868685818110610b5557610b55612ef7565b9050602002016020810190610b6a9190612d72565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f9fbd25f95d342f2efc070b56d2fadd2341d264ef8c915dc268609b2ca1bb25de848483818110610bc557610bc5612ef7565b9050602002016020810190610bda9190612d72565b83604051610be9929190612f0d565b60405180910390a1610bfa81612f3e565b9050610b36565b6000546001600160a01b03163314610c2b5760405162461bcd60e51b81526004016109ef90612f57565b6005811015610c885760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e20604482015263302e352560e01b60648201526084016109ef565b6103e881610c986009600a61305b565b610ca7906402540be40061306a565b610cb1919061306a565b610cbb9190613089565b60048190556040519081527fa69fa556bf940aa0c695b9c8e1b229fdb1476830e2025e44da1028e0c1458d4a906020015b60405180910390a150565b3360008181526006602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610d529086815260200190565b60405180910390a35060015b92915050565b610d706009600a61305b565b610d7f906402540be40061306a565b81565b6000546001600160a01b03163314610dac5760405162461bcd60e51b81526004016109ef90612f57565b60658110610de75760405162461bcd60e51b81526020600482015260086024820152674d6178203130302560c01b60448201526064016109ef565b4760006064610df6848461306a565b610e009190613089565b604051909150339082156108fc029083906000818181858888f19350505050158015610e30573d6000803e3d6000fd5b506040518181527f377153983e64f72f80af47182763316780b9133be808b7082a16710202b8fbda906020015b60405180910390a1505050565b6001600160a01b038316600090815260066020908152604080832033845290915281205460001914610f17576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600682528381203382529091529190912054610ef2918490611d07565b6001600160a01b03851660009081526006602090815260408083203384529091529020555b610f22848484611d41565b90505b9392505050565b6000546001600160a01b03163314610f565760405162461bcd60e51b81526004016109ef90612f57565b6016805460ff60a01b1916600160a01b908117918290556040517ff865819dcfd8250cfaa23e1ab7129c1ec65c617bae1e716699dfe07dd7c489ee92610fa592900460ff161515815260200190565b60405180910390a1565b6000546001600160a01b03163314610fd95760405162461bcd60e51b81526004016109ef90612f57565b336101f58410610ffb5760405162461bcd60e51b81526004016109ef90612eb2565b83821461105b5760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e206164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b60648201526084016109ef565b6000805b8581101561109f5784848281811061107957611079612ef7565b905060200201358261108b91906130ab565b91508061109781612f3e565b91505061105f565b506001600160a01b0382166000908152600560205260409020548111156111085760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c6574000000000060448201526064016109ef565b60005b8581101561116f5761115c8388888481811061112957611129612ef7565b905060200201602081019061113e9190612d72565b87878581811061115057611150612ef7565b905060200201356120ec565b508061116781612f3e565b91505061110b565b50505050505050565b60056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461dead60009081527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba549091906111d86009600a61305b565b6111e7906402540be40061306a565b6111f191906130c3565b6111fb91906130c3565b905090565b61120933611ce9565b6112255760405162461bcd60e51b81526004016109ef90612e8d565b6101f582106112465760405162461bcd60e51b81526004016109ef90612eb2565b60005b82811015610ae757816008600086868581811061126857611268612ef7565b905060200201602081019061127d9190612d72565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f3c4f06d74861dea6c152189f2ac8853b6f789feb0e1182101b7ad9d1858f70e38484838181106112d8576112d8612ef7565b90506020020160208101906112ed9190612d72565b836040516112fc929190612f0d565b60405180910390a161130d81612f3e565b9050611249565b6000610d5e82600019610cf7565b61132b33611ce9565b6113475760405162461bcd60e51b81526004016109ef90612e8d565b60118290556010839055601281905561135e6121c0565b505050565b600080546001600160a01b0316331461138e5760405162461bcd60e51b81526004016109ef90612f57565b81600003611401576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa1580156113da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113fe91906130da565b91505b604080516001600160a01b0385168152602081018490527f960427a4fde284dcc8da2c51a43d210cfd7ed6f4328a24ba33eee49910db564b910160405180910390a160405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015611490573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2591906130f3565b6001546001600160a01b031633146115455760405162461bcd60e51b815260206004820152604860248201527f596f75206d757374206265206e6f6d696e6174656420617320706f74656e746960448201527f616c206f776e6572206265666f726520796f752063616e2061636365707420746064820152673432903937b6329760c11b608482015260a4016109ef565b600080546001600160a01b03908116825260026020526040808320805460ff1990811690915560018054841685528285208054909216179055825490516000805160206131d0833981519152936115a193929092169190612f0d565b60405180910390a1600180546040516000805160206131d0833981519152926115d3926001600160a01b031691612f0d565b60405180910390a160018054600080546001600160a01b0383166001600160a01b031991821681179092559091169091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616390602001610fa5565b6000610f25338484611d41565b6000546001600160a01b0316331461166b5760405162461bcd60e51b81526004016109ef90612f57565b6001600160a01b03811660009081526002602052604090819020805460ff1916600190811790915590516000805160206131d083398151915291610cec91849190612f0d565b6000546001600160a01b031633146116db5760405162461bcd60e51b81526004016109ef90612f57565b600581101561173e5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c657373206044820152687468616e20302e352560b81b60648201526084016109ef565b6103e88161174e6009600a61305b565b61175d906402540be40061306a565b611767919061306a565b6117719190613089565b60038190556040519081527f365a2bb07537fddd750e9ac8d56970e584f83a144bb5225e77491b83bccd118390602001610cec565b6000546001600160a01b031633146117d05760405162461bcd60e51b81526004016109ef90612f57565b6001600160a01b03831661183b5760405162461bcd60e51b815260206004820152602c60248201527f4d61726b6574696e672066656520616464726573732063616e6e6f742062652060448201526b7a65726f206164647265737360a01b60648201526084016109ef565b6001600160a01b0382166118a15760405162461bcd60e51b815260206004820152602760248201527f5465616d2066656520616464726573732063616e6e6f74206265207a65726f206044820152666164647265737360c81b60648201526084016109ef565b6001600160a01b03811661190e5760405162461bcd60e51b815260206004820152602e60248201527f446576656c6f706d656e742066656520616464726573732063616e6e6f74206260448201526d65207a65726f206164647265737360901b60648201526084016109ef565b601380546001600160a01b038581166001600160a01b0319928316811790935560148054868316908416811790915560158054928616929093168217909255604080519384526020840192909252908201527fb93b1ef445620c8661ebddddb575085ede7dfe08ccc6a91b933a6520249c3c7c90606001610e5d565b6000546001600160a01b031633146119b45760405162461bcd60e51b81526004016109ef90612f57565b600a6119c160098261305b565b6119d0906402540be40061306a565b6119da9190613089565b8110611a1a5760405162461bcd60e51b815260206004820152600f60248201526e082dadeeadce840e8dede40d0d2ced608b1b60448201526064016109ef565b6016805460ff60a81b1916600160a81b8415158102919091179182905560178390556040805184815260ff9290930491909116151560208301527f34c2d4c263b6f41223c6d30ae2e7bcb18629892587e0a4138f57ba2c523953d0910160405180910390a15050565b6000546001600160a01b03163314611aad5760405162461bcd60e51b81526004016109ef90612f57565b6000546001600160a01b0390811690821603611b0b5760405162461bcd60e51b815260206004820152601a60248201527f4f574e45522063616e7420626520756e617574686f72697a656400000000000060448201526064016109ef565b6001600160a01b038116600090815260026020526040808220805460ff19169055516000805160206131d083398151915291610cec91849190612f0d565b6000546001600160a01b03163314611b735760405162461bcd60e51b81526004016109ef90612f57565b6000546001600160a01b0390811690821603611bc55760405162461bcd60e51b815260206004820152601160248201527020b63932b0b23c903a34329037bbb732b960791b60448201526064016109ef565b6001600160a01b038116611c1b5760405162461bcd60e51b815260206004820152601860248201527f43616e206e6f74206265207a65726f20616464726573732e000000000000000060448201526064016109ef565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527fe235b3289f2e990914b334bf6827949c27f6ba58d3e5a1d6f8415037ca1ef22290602001610cec565b6000546001600160a01b03163314611c935760405162461bcd60e51b81526004016109ef90612f57565b600a859055600b849055600c839055600d829055600e819055818184611cb987896130ab565b611cc391906130ab565b611ccd91906130ab565b611cd791906130ab565b600f55611ce26121c0565b5050505050565b6001600160a01b031660009081526002602052604090205460ff1690565b60008184841115611d2b5760405162461bcd60e51b81526004016109ef9190612c16565b506000611d3884866130c3565b95945050505050565b60185460009060ff1615611d6157611d5a8484846120ec565b9050610f25565b6001600160a01b03841660009081526002602052604090205460ff16158015611da357506001600160a01b03831660009081526002602052604090205460ff16155b15611df857601654600160a01b900460ff16611df85760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016109ef565b6001600160a01b03841660009081526002602052604090205460ff16158015611e3a57506001600160a01b03841660009081526009602052604090205460ff16155b8015611e5f57506001600160a01b03831660009081526009602052604090205460ff16155b8015611e9d57507f000000000000000000000000c33becce25b54a67b2f348185c373d3479ff44326001600160a01b0316836001600160a01b031614155b15611f17576004546001600160a01b038416600090815260056020526040902054611ec99084906130ab565b1115611f175760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d69742072656163686564000000000000000060448201526064016109ef565b60035482111580611f4057506001600160a01b03841660009081526008602052604090205460ff165b80611f6357506001600160a01b03831660009081526008602052604090205460ff165b611fa75760405162461bcd60e51b815260206004820152601560248201527413585e08151608131a5b5a5d08115e18d959591959605a1b60448201526064016109ef565b611faf6123af565b15611fbc57611fbc612422565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03871660009081526005909152919091205461200e918490611d07565b6001600160a01b038516600090815260056020908152604080832093909355600790529081205460ff168061205b57506001600160a01b03841660009081526007602052604090205460ff165b61206f5761206a8584866127b6565b612071565b825b6001600160a01b03851660009081526005602052604090205490915061209790826129cf565b6001600160a01b0380861660008181526005602052604090819020939093559151908716906000805160206131b0833981519152906120d99085815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260059091529182205461213d918490611d07565b6001600160a01b03808616600090815260056020526040808220939093559085168152205461216c90836129cf565b6001600160a01b0380851660008181526005602052604090819020939093559151908616906000805160206131b0833981519152906121ae9086815260200190565b60405180910390a35060019392505050565b60786121e460646121de601054600f54612a2e90919063ffffffff16565b90612ab0565b11156122325760405162461bcd60e51b815260206004820152601f60248201527f427579207461782063616e6e6f74206265206d6f7265207468616e203132250060448201526064016109ef565b607861225060646121de601154600f54612a2e90919063ffffffff16565b111561229e5760405162461bcd60e51b815260206004820181905260248201527f53656c6c207461782063616e6e6f74206265206d6f7265207468616e2031322560448201526064016109ef565b60646122bc60646121de601254600f54612a2e90919063ffffffff16565b11156123165760405162461bcd60e51b8152602060048201526024808201527f5472616e73666572205461782063616e6e6f74206265206d6f7265207468616e6044820152632031302560e01b60648201526084016109ef565b7f375884ed7f92283ee74d8884b39a803f4aee832b15766fe016b74fc791fc2ada61235360646121de601054600f54612a2e90919063ffffffff16565b61236f60646121de601154600f54612a2e90919063ffffffff16565b61238b60646121de601254600f54612a2e90919063ffffffff16565b6040805160ff94851681529284166020840152921691810191909152606001610fa5565b6000336001600160a01b037f000000000000000000000000c33becce25b54a67b2f348185c373d3479ff443216148015906123ed575060185460ff16155b80156124025750601654600160a81b900460ff165b80156111fb57505060175430600090815260056020526040902054101590565b6018805460ff19166001179055600e54600f54600091612441916130c3565b9050600061245082600261306a565b600a54601754612460919061306a565b61246a9190613089565b905060008160175461247c91906130c3565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106124b6576124b6612ef7565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061250a5761250a612ef7565b6001600160a01b03928316602091820292909201015260165460405163791ac94760e01b815291169063791ac94790612550908590600090869030904290600401613110565b600060405180830381600087803b15801561256a57600080fd5b505af115801561257e573d6000803e3d6000fd5b5050600a544792506125939150600290613089565b61259d90866130c3565b945060006125ac86600261306a565b600a546125b9908461306a565b6125c39190613089565b9050600086600b54846125d6919061306a565b6125e09190613089565b9050600087600c54856125f3919061306a565b6125fd9190613089565b9050600088600d5486612610919061306a565b61261a9190613089565b6013546040519192506001600160a01b03169084156108fc029085906000818181858888f19350505050158015612655573d6000803e3d6000fd5b506014546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015612690573d6000803e3d6000fd5b506015546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156126cb573d6000803e3d6000fd5b5087156127a15760165460405163f305d71960e01b81523060048201819052602482018b9052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990869060c40160606040518083038185885af115801561273f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127649190613181565b505060408051868152602081018b90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506018805460ff1916905550505050505050565b60008215806127c55750600f54155b156127d1575081610f25565b6012546001600160a01b037f000000000000000000000000c33becce25b54a67b2f348185c373d3479ff4432811690841603612810575060115461284e565b7f000000000000000000000000c33becce25b54a67b2f348185c373d3479ff44326001600160a01b0316856001600160a01b03160361284e57506010545b600061287f6128606103e8606461306a565b6121de84612879600f548a612a2e90919063ffffffff16565b90612a2e565b9050600061289e600f546121de600e5485612a2e90919063ffffffff16565b905060006128ac8383612af2565b9050801561291657306000908152600560205260409020546128ce90826129cf565b30600081815260056020526040908190209290925590516001600160a01b038a16906000805160206131b08339815191529061290d9085815260200190565b60405180910390a35b81156129b95761dead60005260056020527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba5461295390836129cf565b61dead600081905260056020527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba919091556040516001600160a01b038a16906000805160206131b0833981519152906129b09086815260200190565b60405180910390a35b6129c38784612af2565b98975050505050505050565b6000806129dc83856130ab565b905083811015610f255760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109ef565b600082600003612a4057506000610d5e565b6000612a4c838561306a565b905082612a598583613089565b14610f255760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016109ef565b6000610f2583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b34565b6000610f2583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d07565b60008183612b555760405162461bcd60e51b81526004016109ef9190612c16565b506000611d388486613089565b60008083601f840112612b7457600080fd5b50813567ffffffffffffffff811115612b8c57600080fd5b6020830191508360208260051b8501011115612ba757600080fd5b9250929050565b8015158114612bbc57600080fd5b50565b600080600060408486031215612bd457600080fd5b833567ffffffffffffffff811115612beb57600080fd5b612bf786828701612b62565b9094509250506020840135612c0b81612bae565b809150509250925092565b600060208083528351808285015260005b81811015612c4357858101830151858201604001528201612c27565b81811115612c55576000604083870101525b50601f01601f1916929092016040019392505050565b600060208284031215612c7d57600080fd5b5035919050565b6001600160a01b0381168114612bbc57600080fd5b60008060408385031215612cac57600080fd5b8235612cb781612c84565b946020939093013593505050565b600080600060608486031215612cda57600080fd5b8335612ce581612c84565b92506020840135612cf581612c84565b929592945050506040919091013590565b60008060008060408587031215612d1c57600080fd5b843567ffffffffffffffff80821115612d3457600080fd5b612d4088838901612b62565b90965094506020870135915080821115612d5957600080fd5b50612d6687828801612b62565b95989497509550505050565b600060208284031215612d8457600080fd5b8135610f2581612c84565b600080600060608486031215612da457600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215612dd057600080fd5b8335612ddb81612c84565b92506020840135612deb81612c84565b91506040840135612c0b81612c84565b60008060408385031215612e0e57600080fd5b8235612e1981612c84565b91506020830135612e2981612c84565b809150509250929050565b60008060408385031215612e4757600080fd5b8235612cb781612bae565b600080600080600060a08688031215612e6a57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b60208082526025908201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604082015264657373657360d81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b039290921682521515602082015260400190565b634e487b7160e01b600052601160045260246000fd5b600060018201612f5057612f50612f28565b5060010190565b60208082526006908201526510a7aba722a960d11b604082015260600190565b600181815b80851115612fb2578160001904821115612f9857612f98612f28565b80851615612fa557918102915b93841c9390800290612f7c565b509250929050565b600082612fc957506001610d5e565b81612fd657506000610d5e565b8160018114612fec5760028114612ff657613012565b6001915050610d5e565b60ff84111561300757613007612f28565b50506001821b610d5e565b5060208310610133831016604e8410600b8410161715613035575081810a610d5e565b61303f8383612f77565b806000190482111561305357613053612f28565b029392505050565b6000610f2560ff841683612fba565b600081600019048311821515161561308457613084612f28565b500290565b6000826130a657634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156130be576130be612f28565b500190565b6000828210156130d5576130d5612f28565b500390565b6000602082840312156130ec57600080fd5b5051919050565b60006020828403121561310557600080fd5b8151610f2581612bae565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156131605784516001600160a01b03168352938301939183019160010161313b565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561319657600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efb6a1709218b158ea8591fc9269b88652f1c908dc68a79faa865c745a770b9505a2646970667358221220ba82eb92447a459395d2ee85104d2669ef5e5797b763a5f1856636f056cf593264736f6c634300080f0033

Deployed Bytecode Sourcemap

4793:14509:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15175:373;;;;;;;;;;-1:-1:-1;15175:373:0;;;;;:::i;:::-;;:::i;:::-;;14446:353;;;;;;;;;;-1:-1:-1;14446:353:0;;;;;:::i;:::-;;:::i;6404:49::-;;;;;;;;;;;;;;;;;;;1226:25:1;;;1214:2;1199:18;6404:49:0;;;;;;;;5057:54;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5057:54:0;;;;;;;;;;;;:::i;8660:310::-;;;;;;;;;;-1:-1:-1;8660:310:0;;;;;:::i;:::-;;:::i;7764:216::-;;;;;;;;;;-1:-1:-1;7764:216:0;;;;;:::i;:::-;;:::i;:::-;;;2670:14:1;;2663:22;2645:41;;2633:2;2618:18;7764:216:0;2505:187:1;5964:45:0;;;;;;;;;;;;6005:4;5964:45;;5205:63;;;;;;;;;;;;;:::i;12016:356::-;;;;;;;;;;-1:-1:-1;12016:356:0;;;;;:::i;:::-;;:::i;5867:90::-;;;;;;;;;;;;;;;;8282:370;;;;;;;;;;-1:-1:-1;8282:370:0;;;;;:::i;:::-;;:::i;12724:128::-;;;;;;;;;;;;;:::i;17969:651::-;;;;;;;;;;-1:-1:-1;17969:651:0;;;;;:::i;:::-;;:::i;17824:137::-;;;;;;;;;;;;;:::i;2695:103::-;;;;;;;;;;-1:-1:-1;2695:103:0;;;;;:::i;:::-;2750:4;2785:5;-1:-1:-1;;;;;2774:16:0;;;2785:5;;2774:16;;2695:103;5162:34;;;;;;;;;;;;5195:1;5162:34;;;;;4360:4:1;4348:17;;;4330:36;;4318:2;4303:18;5162:34:0;4188:184:1;5516:44:0;;;;;;;;;;-1:-1:-1;5516:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6174:30;;;;;;;;;;-1:-1:-1;6174:30:0;;;;-1:-1:-1;;;;;6174:30:0;;;;;;-1:-1:-1;;;;;4541:32:1;;;4523:51;;4511:2;4496:18;6174:30:0;4377:203:1;14807:360:0;;;;;;;;;;-1:-1:-1;14807:360:0;;;;;:::i;:::-;;:::i;7988:122::-;;;;;;;;;;-1:-1:-1;7988:122:0;;;;;:::i;:::-;;:::i;5721:32::-;;;;;;;;;;;;;;;;16119:225;;;;;;;;;;-1:-1:-1;16119:225:0;;;;;:::i;:::-;;:::i;6366:31::-;;;;;;;;;;-1:-1:-1;6366:31:0;;;;-1:-1:-1;;;6366:31:0;;;;;;6211:37;;;;;;;;;;-1:-1:-1;6211:37:0;;;;-1:-1:-1;;;;;6211:37:0;;;5394:45;;;;;;;;;;-1:-1:-1;5394:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;12380:336;;;;;;;;;;-1:-1:-1;12380:336:0;;;;;:::i;:::-;;:::i;5331:54::-;;;;;;;;;;;;;;;;3192:480;;;;;;;;;;;;;:::i;5277:47::-;;;;;;;;;;;;;;;;7539:78;;;;;;;;;;-1:-1:-1;7591:7:0;7609:5;-1:-1:-1;;;;;7609:5:0;7539:78;;5567:48;;;;;;;;;;-1:-1:-1;5567:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5118:37;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5118:37:0;;;;;5683:31;;;;;;;;;;;;;;;;5794:33;;;;;;;;;;;;;;;;6288:29;;;;;;;;;;;;;;;8118:156;;;;;;;;;;-1:-1:-1;8118:156:0;;;;;:::i;:::-;;:::i;2337:138::-;;;;;;;;;;-1:-1:-1;2337:138:0;;;;;:::i;:::-;;:::i;8978:313::-;;;;;;;;;;-1:-1:-1;8978:313:0;;;;;:::i;:::-;;:::i;5622:52::-;;;;;;;;;;-1:-1:-1;5622:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16825:696;;;;;;;;;;-1:-1:-1;16825:696:0;;;;;:::i;:::-;;:::i;5760:27::-;;;;;;;;;;;;;;;;7623:133;;;;;;;;;;-1:-1:-1;7623:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;7725:19:0;;;7707:7;7725:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;7623:133;17529:287;;;;;;;;;;-1:-1:-1;17529:287:0;;;;;:::i;:::-;;:::i;6132:35::-;;;;;;;;;;-1:-1:-1;6132:35:0;;;;-1:-1:-1;;;;;6132:35:0;;;2483:204;;;;;;;;;;-1:-1:-1;2483:204:0;;;;;:::i;:::-;;:::i;2921:263::-;;;;;;;;;;-1:-1:-1;2921:263:0;;;;;:::i;:::-;;:::i;6257:24::-;;;;;;;;;;-1:-1:-1;6257:24:0;;;;-1:-1:-1;;;;;6257:24:0;;;16352:465;;;;;;;;;;-1:-1:-1;16352:465:0;;;;;:::i;:::-;;:::i;5834:26::-;;;;;;;;;;;;;;;;2806:107;;;;;;;;;;-1:-1:-1;2806:107:0;;;;;:::i;:::-;;:::i;6326:31::-;;;;;;;;;;-1:-1:-1;6326:31:0;;;;-1:-1:-1;;;6326:31:0;;;;;;15175:373;2278:24;2291:10;2278:12;:24::i;:::-;2270:48;;;;-1:-1:-1;;;2270:48:0;;;;;;;:::i;:::-;;;;;;;;;15310:3:::1;15291:22:::0;::::1;15283:71;;;;-1:-1:-1::0;;;15283:71:0::1;;;;;;;:::i;:::-;15370:9;15365:176;15383:20:::0;;::::1;15365:176;;;15461:6;15425:19;:33;15445:9;;15455:1;15445:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15425:33:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;15425:33:0;:42;;-1:-1:-1;;15425:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15487::::1;15508:9:::0;;15518:1;15508:12;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;15522:6;15487:42;;;;;;;:::i;:::-;;;;;;;;15405:3;::::0;::::1;:::i;:::-;;;15365:176;;;;15175:373:::0;;;:::o;14446:353::-;2278:24;2291:10;2278:12;:24::i;:::-;2270:48;;;;-1:-1:-1;;;2270:48:0;;;;;;;:::i;:::-;14573:3:::1;14554:22:::0;::::1;14546:71;;;;-1:-1:-1::0;;;14546:71:0::1;;;;;;;:::i;:::-;14633:9;14628:164;14646:20:::0;;::::1;14628:164;;;14716:6;14688:11;:25;14700:9;;14710:1;14700:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14688:25:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;14688:25:0;:34;;-1:-1:-1;;14688:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14742:38:::1;14759:9:::0;;14769:1;14759:12;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;14773:6;14742:38;;;;;;;:::i;:::-;;;;;;;;14668:3;::::0;::::1;:::i;:::-;;;14628:164;;8660:310:::0;2750:4;2785:5;-1:-1:-1;;;;;2785:5:0;2196:10;2774:16;2180:38;;;;-1:-1:-1;;;2180:38:0;;;;;;;:::i;:::-;8796:1:::1;8769:23;:28;;8761:76;;;::::0;-1:-1:-1;;;8761:76:0;;9067:2:1;8761:76:0::1;::::0;::::1;9049:21:1::0;9106:2;9086:18;;;9079:30;9145:34;9125:18;;;9118:62;-1:-1:-1;;;9196:18:1;;;9189:34;9240:19;;8761:76:0::1;8865:400:1::0;8761:76:0::1;8909:4;8881:23:::0;5256:12:::1;5195:1;5256:2;:12;:::i;:::-;5243:25;::::0;:10:::1;:25;:::i;:::-;8867:37;;;;:::i;:::-;8866:47;;;;:::i;:::-;8848:15;:65:::0;;;8929:33:::1;::::0;1226:25:1;;;8929:33:0::1;::::0;1214:2:1;1199:18;8929:33:0::1;;;;;;;;8660:310:::0;:::o;7764:216::-;7868:10;7839:4;7856:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;7856:32:0;;;;;;;;;;:41;;;7913:37;7839:4;;7856:32;;7913:37;;;;7891:6;1226:25:1;;1214:2;1199:18;;1080:177;7913:37:0;;;;;;;;-1:-1:-1;7968:4:0;7764:216;;;;;:::o;5205:63::-;5256:12;5195:1;5256:2;:12;:::i;:::-;5243:25;;:10;:25;:::i;:::-;5205:63;:::o;12016:356::-;2750:4;2785:5;-1:-1:-1;;;;;2785:5:0;2196:10;2774:16;2180:38;;;;-1:-1:-1;;;2180:38:0;;;;;;;:::i;:::-;12126:3:::1;12107:16;:22;12099:43;;;::::0;-1:-1:-1;;;12099:43:0;;11250:2:1;12099:43:0::1;::::0;::::1;11232:21:1::0;11289:1;11269:18;;;11262:29;-1:-1:-1;;;11307:18:1;;;11300:38;11355:18;;12099:43:0::1;11048:331:1::0;12099:43:0::1;12173:21;12153:17;12264:3;12231:28;12243:16:::0;12173:21;12231:28:::1;:::i;:::-;12229:38;;;;:::i;:::-;12278:43;::::0;12205:62;;-1:-1:-1;12286:10:0::1;::::0;12278:43;::::1;;;::::0;12205:62;;12278:43:::1;::::0;;;12205:62;12286:10;12278:43;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;12337:27:0::1;::::0;1226:25:1;;;12337:27:0::1;::::0;1214:2:1;1199:18;12337:27:0::1;;;;;;;;12088:284;;12016:356:::0;:::o;8282:370::-;-1:-1:-1;;;;;8402:19:0;;8382:4;8402:19;;;:11;:19;;;;;;;;8422:10;8402:31;;;;;;;;-1:-1:-1;;8402:52:0;8399:186;;8504:69;;;;;;;;;;;-1:-1:-1;;;8504:69:0;;;;;;;;-1:-1:-1;;;;;8504:19:0;;-1:-1:-1;8504:19:0;;;:11;:19;;;;;8524:10;8504:31;;;;;;;;;;:69;;8540:6;;8504:35;:69::i;:::-;-1:-1:-1;;;;;8470:19:0;;;;;;:11;:19;;;;;;;;8490:10;8470:31;;;;;;;:103;8399:186;8604:40;8618:6;8626:9;8637:6;8604:13;:40::i;:::-;8597:47;;8282:370;;;;;;:::o;12724:128::-;2750:4;2785:5;-1:-1:-1;;;;;2785:5:0;2196:10;2774:16;2180:38;;;;-1:-1:-1;;;2180:38:0;;;;;;;:::i;:::-;12777:11:::1;:18:::0;;-1:-1:-1;;;;12777:18:0::1;-1:-1:-1::0;;;12777:18:0;;::::1;::::0;;;;12811:33:::1;::::0;::::1;::::0;::::1;::::0;12832:11;::::1;12777:18;12832:11;2670:14:1::0;2663:22;2645:41;;2633:2;2618:18;;2505:187;12811:33:0::1;;;;;;;;12724:128::o:0;17969:651::-;2750:4;2785:5;-1:-1:-1;;;;;2785:5:0;2196:10;2774:16;2180:38;;;;-1:-1:-1;;;2180:38:0;;;;;;;:::i;:::-;18091:10:::1;18141:3;18122:22:::0;::::1;18114:71;;;;-1:-1:-1::0;;;18114:71:0::1;;;;;;;:::i;:::-;18204:33:::0;;::::1;18196:85;;;::::0;-1:-1:-1;;;18196:85:0;;11586:2:1;18196:85:0::1;::::0;::::1;11568:21:1::0;11625:2;11605:18;;;11598:30;11664:34;11644:18;;;11637:62;-1:-1:-1;;;11715:18:1;;;11708:38;11763:19;;18196:85:0::1;11384:404:1::0;18196:85:0::1;18294:12;18327:6:::0;18323:90:::1;18337:20:::0;;::::1;18323:90;;;18392:6;;18399:1;18392:9;;;;;;;:::i;:::-;;;;;;;18385:4;:16;;;;:::i;:::-;18378:23:::0;-1:-1:-1;18359:3:0;::::1;::::0;::::1;:::i;:::-;;;;18323:90;;;-1:-1:-1::0;;;;;;18433:15:0;::::1;;::::0;;;:9:::1;:15;::::0;;;;;:23;-1:-1:-1;18433:23:0::1;18425:63;;;::::0;-1:-1:-1;;;18425:63:0;;12128:2:1;18425:63:0::1;::::0;::::1;12110:21:1::0;12167:2;12147:18;;;12140:30;12206:29;12186:18;;;12179:57;12253:18;;18425:63:0::1;11926:351:1::0;18425:63:0::1;18505:6;18501:110;18515:20:::0;;::::1;18501:110;;;18556:43;18571:4;18576:9;;18586:1;18576:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;18589:6;;18596:1;18589:9;;;;;;;:::i;:::-;;;;;;;18556:14;:43::i;:::-;-1:-1:-1::0;18537:3:0;::::1;::::0;::::1;:::i;:::-;;;;18501:110;;;;18065:555;;17969:651:::0;;;;:::o;17824:137::-;17937:9;:15;;;;4933:42;17877:7;17919:15;;;;;17877:7;;17937:15;5256:12;5195:1;5256:2;:12;:::i;:::-;5243:25;;:10;:25;:::i;:::-;17905:29;;;;:::i;:::-;:47;;;;:::i;:::-;17897:56;;17824:137;:::o;14807:360::-;2278:24;2291:10;2278:12;:24::i;:::-;2270:48;;;;-1:-1:-1;;;2270:48:0;;;;;;;:::i;:::-;14938:3:::1;14919:22:::0;::::1;14911:71;;;;-1:-1:-1::0;;;14911:71:0::1;;;;;;;:::i;:::-;14998:9;14993:167;15011:20:::0;;::::1;14993:167;;;15085:6;15053:15;:29;15069:9;;15079:1;15069:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15053:29:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;15053:29:0;:38;;-1:-1:-1;;15053:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15111:37:::1;15127:9:::0;;15137:1;15127:12;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;15141:6;15111:37;;;;;;;:::i;:::-;;;;;;;;15033:3;::::0;::::1;:::i;:::-;;;14993:167;;7988:122:::0;8043:4;8067:35;8075:7;-1:-1:-1;;8067:7:0;:35::i;16119:225::-;2278:24;2291:10;2278:12;:24::i;:::-;2270:48;;;;-1:-1:-1;;;2270:48:0;;;;;;;:::i;:::-;16219:14:::1;:22:::0;;;16252:13:::1;:20:::0;;;16283:18:::1;:27:::0;;;16323:13:::1;:11;:13::i;:::-;16119:225:::0;;;:::o;12380:336::-;12471:12;2785:5;;-1:-1:-1;;;;;2785:5:0;2196:10;2774:16;2180:38;;;;-1:-1:-1;;;2180:38:0;;;;;;;:::i;:::-;12499:6:::1;12509:1;12499:11:::0;12496:95:::1;;12535:44;::::0;-1:-1:-1;;;12535:44:0;;12573:4:::1;12535:44;::::0;::::1;4523:51:1::0;-1:-1:-1;;;;;12535:29:0;::::1;::::0;::::1;::::0;4496:18:1;;12535:44:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12526:53;;12496:95;12608:32;::::0;;-1:-1:-1;;;;;12793:32:1;;12775:51;;12857:2;12842:18;;12835:34;;;12608:32:0::1;::::0;12748:18:1;12608:32:0::1;;;;;;;12660:48;::::0;-1:-1:-1;;;12660:48:0;;12689:10:::1;12660:48;::::0;::::1;12775:51:1::0;12842:18;;;12835:34;;;-1:-1:-1;;;;;12660:28:0;::::1;::::0;::::1;::::0;12748:18:1;;12660:48:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3192:480::-:0;3261:14;;-1:-1:-1;;;;;3261:14:0;3247:10;:28;3239:113;;;;-1:-1:-1;;;3239:113:0;;13332:2:1;3239:113:0;;;13314:21:1;13371:2;13351:18;;;13344:30;13410:34;13390:18;;;13383:62;13481:34;13461:18;;;13454:62;-1:-1:-1;;;13532:19:1;;;13525:39;13581:19;;3239:113:0;13130:476:1;3239:113:0;3387:5;3378;;-1:-1:-1;;;;;3378:5:0;;;3363:21;;:14;:21;;;;;;:29;;-1:-1:-1;;3363:29:0;;;;;;3378:5;3418:14;;;;3403:30;;;;;:37;;;;;;;;3475:5;;3458:29;;-1:-1:-1;;;;;;;;;;;3458:29:0;;;3475:5;;;;;3387;3458:29;:::i;:::-;;;;;;;;3520:14;;;3503:37;;-1:-1:-1;;;;;;;;;;;3503:37:0;;;-1:-1:-1;;;;;3520:14:0;;3503:37;:::i;:::-;;;;;;;;3569:14;;;;3561:22;;-1:-1:-1;;;;;3569:14:0;;-1:-1:-1;;;;;;3561:22:0;;;;;;;;3594:27;;;;;;3637;;4523:51:1;;;3637:27:0;;4511:2:1;4496:18;3637:27:0;4377:203:1;8118:156:0;8198:4;8222:44;8236:10;8248:9;8259:6;8222:13;:44::i;2337:138::-;2750:4;2785:5;-1:-1:-1;;;;;2785:5:0;2196:10;2774:16;2180:38;;;;-1:-1:-1;;;2180:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2399:19:0;::::1;;::::0;;;:14:::1;:19;::::0;;;;;;:26;;-1:-1:-1;;2399:26:0::1;2421:4;2399:26:::0;;::::1;::::0;;;2441;;-1:-1:-1;;;;;;;;;;;2441:26:0;::::1;::::0;2414:3;;2421:4;2441:26:::1;:::i;8978:313::-:0;2750:4;2785:5;-1:-1:-1;;;;;2785:5:0;2196:10;2774:16;2180:38;;;;-1:-1:-1;;;2180:38:0;;;;;;;:::i;:::-;9112:1:::1;9084:24;:29;;9076:82;;;::::0;-1:-1:-1;;;9076:82:0;;13813:2:1;9076:82:0::1;::::0;::::1;13795:21:1::0;13852:2;13832:18;;;13825:30;13891:34;13871:18;;;13864:62;-1:-1:-1;;;13942:18:1;;;13935:39;13991:19;;9076:82:0::1;13611:405:1::0;9076:82:0::1;9228:4;9199:24:::0;5256:12:::1;5195:1;5256:2;:12;:::i;:::-;5243:25;::::0;:10:::1;:25;:::i;:::-;9185:38;;;;:::i;:::-;9184:48;;;;:::i;:::-;9169:12;:63:::0;;;9248:35:::1;::::0;1226:25:1;;;9248:35:0::1;::::0;1214:2:1;1199:18;9248:35:0::1;1080:177:1::0;16825:696:0;2750:4;2785:5;-1:-1:-1;;;;;2785:5:0;2196:10;2774:16;2180:38;;;;-1:-1:-1;;;2180:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16979:35:0;::::1;16971:91;;;::::0;-1:-1:-1;;;16971:91:0;;14223:2:1;16971:91:0::1;::::0;::::1;14205:21:1::0;14262:2;14242:18;;;14235:30;14301:34;14281:18;;;14274:62;-1:-1:-1;;;14352:18:1;;;14345:42;14404:19;;16971:91:0::1;14021:408:1::0;16971:91:0::1;-1:-1:-1::0;;;;;17081:30:0;::::1;17073:81;;;::::0;-1:-1:-1;;;17073:81:0;;14636:2:1;17073:81:0::1;::::0;::::1;14618:21:1::0;14675:2;14655:18;;;14648:30;14714:34;14694:18;;;14687:62;-1:-1:-1;;;14765:18:1;;;14758:37;14812:19;;17073:81:0::1;14434:403:1::0;17073:81:0::1;-1:-1:-1::0;;;;;17173:37:0;::::1;17165:95;;;::::0;-1:-1:-1;;;17165:95:0;;15044:2:1;17165:95:0::1;::::0;::::1;15026:21:1::0;15083:2;15063:18;;;15056:30;15122:34;15102:18;;;15095:62;-1:-1:-1;;;15173:18:1;;;15166:44;15227:19;;17165:95:0::1;14842:410:1::0;17165:95:0::1;17273:20;:44:::0;;-1:-1:-1;;;;;17273:44:0;;::::1;-1:-1:-1::0;;;;;;17273:44:0;;::::1;::::0;::::1;::::0;;;17328:15:::1;:34:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;17373:22:::1;:48:::0;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;17439:74:::1;::::0;;15497:34:1;;;15562:2;15547:18;;15540:43;;;;15599:18;;;15592:43;17439:74:0::1;::::0;15447:2:1;15432:18;17439:74:0::1;15257:384:1::0;17529:287:0;2750:4;2785:5;-1:-1:-1;;;;;2785:5:0;2196:10;2774:16;2180:38;;;;-1:-1:-1;;;2180:38:0;;;;;;;:::i;:::-;17651:2:::1;5256:12;5195:1;17651:2:::0;5256:12:::1;:::i;:::-;5243:25;::::0;:10:::1;:25;:::i;:::-;17639:14;;;;:::i;:::-;17628:7;:26;17620:54;;;::::0;-1:-1:-1;;;17620:54:0;;15848:2:1;17620:54:0::1;::::0;::::1;15830:21:1::0;15887:2;15867:18;;;15860:30;-1:-1:-1;;;15906:18:1;;;15899:45;15961:18;;17620:54:0::1;15646:339:1::0;17620:54:0::1;17687:11;:22:::0;;-1:-1:-1;;;;17687:22:0::1;-1:-1:-1::0;;;17687:22:0;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;17720:13:::1;:23:::0;;;17761:47:::1;::::0;;16158:25:1;;;17687:22:0::1;17796:11:::0;;;::::1;::::0;;;::::1;16226:14:1::0;16219:22;16214:2;16199:18;;16192:50;17761:47:0::1;::::0;16131:18:1;17761:47:0::1;;;;;;;17529:287:::0;;:::o;2483:204::-;2750:4;2785:5;-1:-1:-1;;;;;2785:5:0;2196:10;2774:16;2180:38;;;;-1:-1:-1;;;2180:38:0;;;;;;;:::i;:::-;2562:5:::1;::::0;-1:-1:-1;;;;;2562:5:0;;::::1;2555:12:::0;;::::1;::::0;2547:51:::1;;;::::0;-1:-1:-1;;;2547:51:0;;16455:2:1;2547:51:0::1;::::0;::::1;16437:21:1::0;16494:2;16474:18;;;16467:30;16533:28;16513:18;;;16506:56;16579:18;;2547:51:0::1;16253:350:1::0;2547:51:0::1;-1:-1:-1::0;;;;;2609:19:0;::::1;2631:5;2609:19:::0;;;:14:::1;:19;::::0;;;;;:27;;-1:-1:-1;;2609:27:0::1;::::0;;2652;-1:-1:-1;;;;;;;;;;;2652:27:0;::::1;::::0;2624:3;;2631:5;2652:27:::1;:::i;2921:263::-:0;2750:4;2785:5;-1:-1:-1;;;;;2785:5:0;2196:10;2774:16;2180:38;;;;-1:-1:-1;;;2180:38:0;;;;;;;:::i;:::-;3014:5:::1;::::0;-1:-1:-1;;;;;3014:5:0;;::::1;3007:12:::0;;::::1;::::0;2999:42:::1;;;::::0;-1:-1:-1;;;2999:42:0;;16810:2:1;2999:42:0::1;::::0;::::1;16792:21:1::0;16849:2;16829:18;;;16822:30;-1:-1:-1;;;16868:18:1;;;16861:47;16925:18;;2999:42:0::1;16608:341:1::0;2999:42:0::1;-1:-1:-1::0;;;;;3060:17:0;::::1;3052:54;;;::::0;-1:-1:-1;;;3052:54:0;;17156:2:1;3052:54:0::1;::::0;::::1;17138:21:1::0;17195:2;17175:18;;;17168:30;17234:26;17214:18;;;17207:54;17278:18;;3052:54:0::1;16954:348:1::0;3052:54:0::1;3117:14;:20:::0;;-1:-1:-1;;;;;;3117:20:0::1;-1:-1:-1::0;;;;;3117:20:0;::::1;::::0;;::::1;::::0;;;3153:23:::1;::::0;4523:51:1;;;3153:23:0::1;::::0;4511:2:1;4496:18;3153:23:0::1;4377:203:1::0;16352:465:0;2750:4;2785:5;-1:-1:-1;;;;;2785:5:0;2196:10;2774:16;2180:38;;;;-1:-1:-1;;;2180:38:0;;;;;;;:::i;:::-;16516:12:::1;:28:::0;;;16555:12:::1;:28:::0;;;16594:7:::1;:18:::0;;;16623:14:::1;:32:::0;;;16666:7:::1;:18:::0;;;16640:15;16676:8;16604;16706:29:::1;16570:13:::0;16531;16706:29:::1;:::i;:::-;:40;;;;:::i;:::-;:51;;;;:::i;:::-;:69;;;;:::i;:::-;16695:8;:80:::0;16796:13:::1;:11;:13::i;:::-;16352:465:::0;;;;;:::o;2806:107::-;-1:-1:-1;;;;;2886:19:0;2862:4;2886:19;;;:14;:19;;;;;;;;;2806:107::o;422:192::-;508:7;544:12;536:6;;;;528:29;;;;-1:-1:-1;;;528:29:0;;;;;;;;:::i;:::-;-1:-1:-1;568:9:0;580:5;584:1;580;:5;:::i;:::-;568:17;422:192;-1:-1:-1;;;;;422:192:0:o;9299:1115::-;9411:6;;9391:4;;9411:6;;9408:63;;;9427:41;9442:6;9450:9;9461:6;9427:14;:41::i;:::-;9420:48;;;;9408:63;-1:-1:-1;;;;;9487:22:0;;;;;;:14;:22;;;;;;;;9486:23;:53;;;;-1:-1:-1;;;;;;9514:25:0;;;;;;:14;:25;;;;;;;;9513:26;9486:53;9483:127;;;9563:11;;-1:-1:-1;;;9563:11:0;;;;9555:43;;;;-1:-1:-1;;;9555:43:0;;17725:2:1;9555:43:0;;;17707:21:1;17764:2;17744:18;;;17737:30;-1:-1:-1;;;17783:18:1;;;17776:50;17843:18;;9555:43:0;17523:344:1;9555:43:0;-1:-1:-1;;;;;9627:22:0;;;;;;:14;:22;;;;;;;;9626:23;:55;;;;-1:-1:-1;;;;;;9654:27:0;;;;;;:19;:27;;;;;;;;9653:28;9626:55;:90;;;;-1:-1:-1;;;;;;9686:30:0;;;;;;:19;:30;;;;;;;;9685:31;9626:90;:111;;;;;9733:4;-1:-1:-1;;;;;9720:17:0;:9;-1:-1:-1;;;;;9720:17:0;;;9626:111;9622:230;;;9797:15;;-1:-1:-1;;;;;9763:20:0;;;;;;:9;:20;;;;;;:29;;9786:6;;9763:29;:::i;:::-;9762:50;;9754:86;;;;-1:-1:-1;;;9754:86:0;;18074:2:1;9754:86:0;;;18056:21:1;18113:2;18093:18;;;18086:30;18152:26;18132:18;;;18125:54;18196:18;;9754:86:0;17872:348:1;9754:86:0;9887:12;;9877:6;:22;;9876:51;;;-1:-1:-1;;;;;;9904:23:0;;;;;;:15;:23;;;;;;;;9876:51;:81;;;-1:-1:-1;;;;;;9931:26:0;;;;;;:15;:26;;;;;;;;9876:81;9868:115;;;;-1:-1:-1;;;9868:115:0;;18427:2:1;9868:115:0;;;18409:21:1;18466:2;18446:18;;;18439:30;-1:-1:-1;;;18485:18:1;;;18478:51;18546:18;;9868:115:0;18225:345:1;9868:115:0;9999:16;:14;:16::i;:::-;9996:35;;;10018:10;:8;:10::i;:::-;10063:53;;;;;;;;;;;-1:-1:-1;;;10063:53:0;;;;;;;;-1:-1:-1;;;;;10063:17:0;;-1:-1:-1;10063:17:0;;;:9;:17;;;;;;;;:53;;10085:6;;10063:21;:53::i;:::-;-1:-1:-1;;;;;10043:17:0;;;;;;:9;:17;;;;;;;;:73;;;;10155:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;10178:22:0;;;;;;:11;:22;;;;;;;;10155:45;10154:93;;10213:34;10221:6;10229;10237:9;10213:7;:34::i;:::-;10154:93;;;10204:6;10154:93;-1:-1:-1;;;;;10283:20:0;;;;;;:9;:20;;;;;;10129:118;;-1:-1:-1;10283:40:0;;10129:118;10283:24;:40::i;:::-;-1:-1:-1;;;;;10260:20:0;;;;;;;:9;:20;;;;;;;:63;;;;10341:43;;;;;;-1:-1:-1;;;;;;;;;;;10341:43:0;;;10369:14;1226:25:1;;1214:2;1199:18;;1080:177;10341:43:0;;;;;;;;-1:-1:-1;10402:4:0;;9299:1115;-1:-1:-1;;;;9299:1115:0:o;10426:330::-;10556:53;;;;;;;;;;;-1:-1:-1;;;10556:53:0;;;;;;;;-1:-1:-1;;;;;10556:17:0;;10519:4;10556:17;;;:9;:17;;;;;;;:53;;10578:6;;10556:21;:53::i;:::-;-1:-1:-1;;;;;10536:17:0;;;;;;;:9;:17;;;;;;:73;;;;10643:20;;;;;;;:32;;10668:6;10643:24;:32::i;:::-;-1:-1:-1;;;;;10620:20:0;;;;;;;:9;:20;;;;;;;:55;;;;10691:35;;;;;;-1:-1:-1;;;;;;;;;;;10691:35:0;;;10719:6;1226:25:1;;1214:2;1199:18;;1080:177;10691:35:0;;;;;;;;-1:-1:-1;10744:4:0;10426:330;;;;;:::o;15556:555::-;15647:3;15607:36;15639:3;15607:27;15620:13;;15607:8;;:12;;:27;;;;:::i;:::-;:31;;:36::i;:::-;:43;;15599:87;;;;-1:-1:-1;;;15599:87:0;;18777:2:1;15599:87:0;;;18759:21:1;18816:2;18796:18;;;18789:30;18855:33;18835:18;;;18828:61;18906:18;;15599:87:0;18575:355:1;15599:87:0;15746:3;15705:37;15738:3;15705:28;15718:14;;15705:8;;:12;;:28;;;;:::i;:37::-;:44;;15697:89;;;;-1:-1:-1;;;15697:89:0;;19137:2:1;15697:89:0;;;19119:21:1;;;19156:18;;;19149:30;19215:34;19195:18;;;19188:62;19267:18;;15697:89:0;18935:356:1;15697:89:0;15850:3;15805:41;15842:3;15805:32;15818:18;;15805:8;;:12;;:32;;;;:::i;:41::-;:48;;15797:97;;;;-1:-1:-1;;;15797:97:0;;19498:2:1;15797:97:0;;;19480:21:1;19537:2;19517:18;;;19510:30;19576:34;19556:18;;;19549:62;-1:-1:-1;;;19627:18:1;;;19620:34;19671:19;;15797:97:0;19296:400:1;15797:97:0;15912:191;15929:36;15961:3;15929:27;15942:13;;15929:8;;:12;;:27;;;;:::i;:36::-;15987:37;16020:3;15987:28;16000:14;;15987:8;;:12;;:28;;;;:::i;:37::-;16046:41;16083:3;16046:32;16059:18;;16046:8;;:12;;:32;;;;:::i;:41::-;15912:191;;;19921:4:1;19909:17;;;19891:36;;19963:17;;;19958:2;19943:18;;19936:45;20017:17;;19997:18;;;19990:45;;;;19879:2;19864:18;15912:191:0;19701:340:1;11811:197:0;11860:4;11884:10;-1:-1:-1;;;;;11898:4:0;11884:18;;;;;:38;;-1:-1:-1;11916:6:0;;;;11915:7;11884:38;:62;;;;-1:-1:-1;11935:11:0;;-1:-1:-1;;;11935:11:0;;;;11884:62;:116;;;;-1:-1:-1;;11987:13:0;;11977:4;11959:24;;;;:9;:24;;;;;;:41;;;11811:197::o;12860:1578::-;6500:6;:13;;-1:-1:-1;;6500:13:0;6509:4;6500:13;;;12944:7:::1;::::0;12933:8:::1;::::0;6500:6;;12933:18:::1;::::0;::::1;:::i;:::-;12911:40:::0;-1:-1:-1;12964:23:0::1;13022:15;12911:40:::0;13036:1:::1;13022:15;:::i;:::-;13007:12;;12991:13;;:28;;;;:::i;:::-;12990:48;;;;:::i;:::-;12964:74;;13049:20;13088:15;13072:13;;:31;;;;:::i;:::-;13140:16;::::0;;13154:1:::1;13140:16:::0;;;;;::::1;::::0;;13049:54;;-1:-1:-1;13116:21:0::1;::::0;13140:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;13140:16:0::1;13116:40;;13185:4;13167;13172:1;13167:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;13167:23:0::1;;;-1:-1:-1::0;;;;;13167:23:0::1;;;::::0;::::1;13211:4;13201;13206:1;13201:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13201:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;13228:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;13228:188:0;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;13300:12;;13228:6:::1;::::0;13343:4;;13370::::1;::::0;13390:15:::1;::::0;13228:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;13512:12:0::1;::::0;13449:21:::1;::::0;-1:-1:-1;13512:16:0::1;::::0;-1:-1:-1;13527:1:0::1;::::0;13512:16:::1;:::i;:::-;13497:32;::::0;:11;:32:::1;:::i;:::-;13483:46:::0;-1:-1:-1;13550:26:0::1;13609:15;13483:46:::0;13623:1:::1;13609:15;:::i;:::-;13592:12;::::0;13580:24:::1;::::0;:9;:24:::1;:::i;:::-;13579:46;;;;:::i;:::-;13550:75;;13636:26;13694:11;13678:12;;13666:9;:24;;;;:::i;:::-;13665:40;;;;:::i;:::-;13636:69;;13716:21;13764:11;13753:7;;13741:9;:19;;;;:::i;:::-;13740:35;;;;:::i;:::-;13716:59;;13786:28;13848:11;13830:14;;13818:9;:26;;;;:::i;:::-;13817:42;;;;:::i;:::-;13880:20;::::0;13872:58:::1;::::0;13786:73;;-1:-1:-1;;;;;;13880:20:0::1;::::0;13872:58;::::1;;;::::0;13911:18;;13880:20:::1;13872:58:::0;13880:20;13872:58;13911:18;13880:20;13872:58;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;13949:15:0::1;::::0;13941:48:::1;::::0;-1:-1:-1;;;;;13949:15:0;;::::1;::::0;13941:48;::::1;;;::::0;13975:13;;13949:15:::1;13941:48:::0;13949:15;13941:48;13975:13;13949:15;13941:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;14008:22:0::1;::::0;14000:62:::1;::::0;-1:-1:-1;;;;;14008:22:0;;::::1;::::0;14000:62;::::1;;;::::0;14041:20;;14008:22:::1;14000:62:::0;14008:22;14000:62;14041:20;14008:22;14000:62;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;14080:19:0;;14077:354:::1;;14115:6;::::0;:236:::1;::::0;-1:-1:-1;;;14115:236:0;;14191:4:::1;14115:236;::::0;::::1;21504:34:1::0;;;21554:18;;;21547:34;;;14115:6:0::1;21597:18:1::0;;;21590:34;;;21640:18;;;21633:34;21683:19;;;21676:44;14321:15:0::1;21736:19:1::0;;;21729:35;-1:-1:-1;;;;;14115:6:0;;::::1;::::0;:22:::1;::::0;14145:18;;21438:19:1;;14115:236:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;14371:48:0::1;::::0;;22260:25:1;;;22316:2;22301:18;;22294:34;;;14371:48:0::1;::::0;-1:-1:-1;22233:18:1;14371:48:0::1;;;;;;;14077:354;-1:-1:-1::0;;6518:6:0;:14;;-1:-1:-1;;6518:14:0;;;-1:-1:-1;;;;;;;12860:1578:0:o;10764:1039::-;10850:7;10873:11;;;:28;;-1:-1:-1;10888:8:0;;:13;10873:28;10870:72;;;-1:-1:-1;10924:6:0;10917:13;;10870:72;10975:18;;-1:-1:-1;;;;;11022:4:0;11009:17;;;;;;11006:154;;-1:-1:-1;11056:14:0;;11006:154;;;11101:4;-1:-1:-1;;;;;11091:14:0;:6;-1:-1:-1;;;;;11091:14:0;;11088:72;;-1:-1:-1;11135:13:0;;11088:72;11172:17;11192:62;11233:20;6005:4;11250:3;11233:20;:::i;:::-;11192:36;11217:10;11192:20;11203:8;;11192:6;:10;;:20;;;;:::i;:::-;:24;;:36::i;:62::-;11172:82;;11265:18;11286:36;11313:8;;11286:22;11300:7;;11286:9;:13;;:22;;;;:::i;:36::-;11265:57;-1:-1:-1;11333:22:0;11358:25;:9;11265:57;11358:13;:25::i;:::-;11333:50;-1:-1:-1;11399:18:0;;11396:187;;11478:4;11460:24;;;;:9;:24;;;;;;:44;;11489:14;11460:28;:44::i;:::-;11451:4;11433:24;;;;:9;:24;;;;;;;:71;;;;11524:47;;-1:-1:-1;;;;;11524:47:0;;;-1:-1:-1;;;;;;;;;;;11524:47:0;;;11556:14;1226:25:1;;1214:2;1199:18;;1080:177;11524:47:0;;;;;;;;11396:187;11606:14;;11603:152;;4933:42;11654:15;;:9;:15;;;;:31;;11674:10;11654:19;:31::i;:::-;4933:42;11636:15;;;;:9;:15;;;:49;;;;:15;11705:34;-1:-1:-1;;;;;11705:34:0;;;-1:-1:-1;;;;;;;;;;;11705:34:0;;;11728:10;1226:25:1;;1214:2;1199:18;;1080:177;11705:34:0;;;;;;;;11603:152;11774:21;:6;11785:9;11774:10;:21::i;:::-;11767:28;10764:1039;-1:-1:-1;;;;;;;;10764:1039:0:o;93:181::-;151:7;;183:5;187:1;183;:5;:::i;:::-;171:17;;212:1;207;:6;;199:46;;;;-1:-1:-1;;;199:46:0;;22541:2:1;199:46:0;;;22523:21:1;22580:2;22560:18;;;22553:30;22619:29;22599:18;;;22592:57;22666:18;;199:46:0;22339:351:1;620:250:0;678:7;702:1;707;702:6;698:47;;-1:-1:-1;732:1:0;725:8;;698:47;757:9;769:5;773:1;769;:5;:::i;:::-;757:17;-1:-1:-1;802:1:0;793:5;797:1;757:17;793:5;:::i;:::-;:10;785:56;;;;-1:-1:-1;;;785:56:0;;22897:2:1;785:56:0;;;22879:21:1;22936:2;22916:18;;;22909:30;22975:34;22955:18;;;22948:62;-1:-1:-1;;;23026:18:1;;;23019:31;23067:19;;785:56:0;22695:397:1;876:132:0;934:7;961:39;965:1;968;961:39;;;;;;;;;;;;;;;;;:3;:39::i;280:136::-;338:7;365:43;369:1;372;365:43;;;;;;;;;;;;;;;;;:3;:43::i;1014:189::-;1100:7;1135:12;1128:5;1120:28;;;;-1:-1:-1;;;1120:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1159:9:0;1171:5;1175:1;1171;:5;:::i;14:367:1:-;77:8;87:6;141:3;134:4;126:6;122:17;118:27;108:55;;159:1;156;149:12;108:55;-1:-1:-1;182:20:1;;225:18;214:30;;211:50;;;257:1;254;247:12;211:50;294:4;286:6;282:17;270:29;;354:3;347:4;337:6;334:1;330:14;322:6;318:27;314:38;311:47;308:67;;;371:1;368;361:12;308:67;14:367;;;;;:::o;386:118::-;472:5;465:13;458:21;451:5;448:32;438:60;;494:1;491;484:12;438:60;386:118;:::o;509:566::-;601:6;609;617;670:2;658:9;649:7;645:23;641:32;638:52;;;686:1;683;676:12;638:52;726:9;713:23;759:18;751:6;748:30;745:50;;;791:1;788;781:12;745:50;830:70;892:7;883:6;872:9;868:22;830:70;:::i;:::-;919:8;;-1:-1:-1;804:96:1;-1:-1:-1;;1004:2:1;989:18;;976:32;1017:28;976:32;1017:28;:::i;:::-;1064:5;1054:15;;;509:566;;;;;:::o;1262:597::-;1374:4;1403:2;1432;1421:9;1414:21;1464:6;1458:13;1507:6;1502:2;1491:9;1487:18;1480:34;1532:1;1542:140;1556:6;1553:1;1550:13;1542:140;;;1651:14;;;1647:23;;1641:30;1617:17;;;1636:2;1613:26;1606:66;1571:10;;1542:140;;;1700:6;1697:1;1694:13;1691:91;;;1770:1;1765:2;1756:6;1745:9;1741:22;1737:31;1730:42;1691:91;-1:-1:-1;1843:2:1;1822:15;-1:-1:-1;;1818:29:1;1803:45;;;;1850:2;1799:54;;1262:597;-1:-1:-1;;;1262:597:1:o;1864:180::-;1923:6;1976:2;1964:9;1955:7;1951:23;1947:32;1944:52;;;1992:1;1989;1982:12;1944:52;-1:-1:-1;2015:23:1;;1864:180;-1:-1:-1;1864:180:1:o;2049:131::-;-1:-1:-1;;;;;2124:31:1;;2114:42;;2104:70;;2170:1;2167;2160:12;2185:315;2253:6;2261;2314:2;2302:9;2293:7;2289:23;2285:32;2282:52;;;2330:1;2327;2320:12;2282:52;2369:9;2356:23;2388:31;2413:5;2388:31;:::i;:::-;2438:5;2490:2;2475:18;;;;2462:32;;-1:-1:-1;;;2185:315:1:o;2697:456::-;2774:6;2782;2790;2843:2;2831:9;2822:7;2818:23;2814:32;2811:52;;;2859:1;2856;2849:12;2811:52;2898:9;2885:23;2917:31;2942:5;2917:31;:::i;:::-;2967:5;-1:-1:-1;3024:2:1;3009:18;;2996:32;3037:33;2996:32;3037:33;:::i;:::-;2697:456;;3089:7;;-1:-1:-1;;;3143:2:1;3128:18;;;;3115:32;;2697:456::o;3158:773::-;3280:6;3288;3296;3304;3357:2;3345:9;3336:7;3332:23;3328:32;3325:52;;;3373:1;3370;3363:12;3325:52;3413:9;3400:23;3442:18;3483:2;3475:6;3472:14;3469:34;;;3499:1;3496;3489:12;3469:34;3538:70;3600:7;3591:6;3580:9;3576:22;3538:70;:::i;:::-;3627:8;;-1:-1:-1;3512:96:1;-1:-1:-1;3715:2:1;3700:18;;3687:32;;-1:-1:-1;3731:16:1;;;3728:36;;;3760:1;3757;3750:12;3728:36;;3799:72;3863:7;3852:8;3841:9;3837:24;3799:72;:::i;:::-;3158:773;;;;-1:-1:-1;3890:8:1;-1:-1:-1;;;;3158:773:1:o;3936:247::-;3995:6;4048:2;4036:9;4027:7;4023:23;4019:32;4016:52;;;4064:1;4061;4054:12;4016:52;4103:9;4090:23;4122:31;4147:5;4122:31;:::i;4585:316::-;4662:6;4670;4678;4731:2;4719:9;4710:7;4706:23;4702:32;4699:52;;;4747:1;4744;4737:12;4699:52;-1:-1:-1;;4770:23:1;;;4840:2;4825:18;;4812:32;;-1:-1:-1;4891:2:1;4876:18;;;4863:32;;4585:316;-1:-1:-1;4585:316:1:o;4906:529::-;4983:6;4991;4999;5052:2;5040:9;5031:7;5027:23;5023:32;5020:52;;;5068:1;5065;5058:12;5020:52;5107:9;5094:23;5126:31;5151:5;5126:31;:::i;:::-;5176:5;-1:-1:-1;5233:2:1;5218:18;;5205:32;5246:33;5205:32;5246:33;:::i;:::-;5298:7;-1:-1:-1;5357:2:1;5342:18;;5329:32;5370:33;5329:32;5370:33;:::i;5440:388::-;5508:6;5516;5569:2;5557:9;5548:7;5544:23;5540:32;5537:52;;;5585:1;5582;5575:12;5537:52;5624:9;5611:23;5643:31;5668:5;5643:31;:::i;:::-;5693:5;-1:-1:-1;5750:2:1;5735:18;;5722:32;5763:33;5722:32;5763:33;:::i;:::-;5815:7;5805:17;;;5440:388;;;;;:::o;5833:309::-;5898:6;5906;5959:2;5947:9;5938:7;5934:23;5930:32;5927:52;;;5975:1;5972;5965:12;5927:52;6014:9;6001:23;6033:28;6055:5;6033:28;:::i;6633:454::-;6728:6;6736;6744;6752;6760;6813:3;6801:9;6792:7;6788:23;6784:33;6781:53;;;6830:1;6827;6820:12;6781:53;-1:-1:-1;;6853:23:1;;;6923:2;6908:18;;6895:32;;-1:-1:-1;6974:2:1;6959:18;;6946:32;;7025:2;7010:18;;6997:32;;-1:-1:-1;7076:3:1;7061:19;7048:33;;-1:-1:-1;6633:454:1;-1:-1:-1;6633:454:1:o;7092:335::-;7294:2;7276:21;;;7333:2;7313:18;;;7306:30;-1:-1:-1;;;7367:2:1;7352:18;;7345:41;7418:2;7403:18;;7092:335::o;7432:401::-;7634:2;7616:21;;;7673:2;7653:18;;;7646:30;7712:34;7707:2;7692:18;;7685:62;-1:-1:-1;;;7778:2:1;7763:18;;7756:35;7823:3;7808:19;;7432:401::o;7838:127::-;7899:10;7894:3;7890:20;7887:1;7880:31;7930:4;7927:1;7920:15;7954:4;7951:1;7944:15;7970:284;-1:-1:-1;;;;;8156:32:1;;;;8138:51;;8232:14;8225:22;8220:2;8205:18;;8198:50;8126:2;8111:18;;7970:284::o;8259:127::-;8320:10;8315:3;8311:20;8308:1;8301:31;8351:4;8348:1;8341:15;8375:4;8372:1;8365:15;8391:135;8430:3;8451:17;;;8448:43;;8471:18;;:::i;:::-;-1:-1:-1;8518:1:1;8507:13;;8391:135::o;8531:329::-;8733:2;8715:21;;;8772:1;8752:18;;;8745:29;-1:-1:-1;;;8805:2:1;8790:18;;8783:36;8851:2;8836:18;;8531:329::o;9270:422::-;9359:1;9402:5;9359:1;9416:270;9437:7;9427:8;9424:21;9416:270;;;9496:4;9492:1;9488:6;9484:17;9478:4;9475:27;9472:53;;;9505:18;;:::i;:::-;9555:7;9545:8;9541:22;9538:55;;;9575:16;;;;9538:55;9654:22;;;;9614:15;;;;9416:270;;;9420:3;9270:422;;;;;:::o;9697:806::-;9746:5;9776:8;9766:80;;-1:-1:-1;9817:1:1;9831:5;;9766:80;9865:4;9855:76;;-1:-1:-1;9902:1:1;9916:5;;9855:76;9947:4;9965:1;9960:59;;;;10033:1;10028:130;;;;9940:218;;9960:59;9990:1;9981:10;;10004:5;;;10028:130;10065:3;10055:8;10052:17;10049:43;;;10072:18;;:::i;:::-;-1:-1:-1;;10128:1:1;10114:16;;10143:5;;9940:218;;10242:2;10232:8;10229:16;10223:3;10217:4;10214:13;10210:36;10204:2;10194:8;10191:16;10186:2;10180:4;10177:12;10173:35;10170:77;10167:159;;;-1:-1:-1;10279:19:1;;;10311:5;;10167:159;10358:34;10383:8;10377:4;10358:34;:::i;:::-;10428:6;10424:1;10420:6;10416:19;10407:7;10404:32;10401:58;;;10439:18;;:::i;:::-;10477:20;;9697:806;-1:-1:-1;;;9697:806:1:o;10508:140::-;10566:5;10595:47;10636:4;10626:8;10622:19;10616:4;10595:47;:::i;10653:168::-;10693:7;10759:1;10755;10751:6;10747:14;10744:1;10741:21;10736:1;10729:9;10722:17;10718:45;10715:71;;;10766:18;;:::i;:::-;-1:-1:-1;10806:9:1;;10653:168::o;10826:217::-;10866:1;10892;10882:132;;10936:10;10931:3;10927:20;10924:1;10917:31;10971:4;10968:1;10961:15;10999:4;10996:1;10989:15;10882:132;-1:-1:-1;11028:9:1;;10826:217::o;11793:128::-;11833:3;11864:1;11860:6;11857:1;11854:13;11851:39;;;11870:18;;:::i;:::-;-1:-1:-1;11906:9:1;;11793:128::o;12282:125::-;12322:4;12350:1;12347;12344:8;12341:34;;;12355:18;;:::i;:::-;-1:-1:-1;12392:9:1;;12282:125::o;12412:184::-;12482:6;12535:2;12523:9;12514:7;12510:23;12506:32;12503:52;;;12551:1;12548;12541:12;12503:52;-1:-1:-1;12574:16:1;;12412:184;-1:-1:-1;12412:184:1:o;12880:245::-;12947:6;13000:2;12988:9;12979:7;12975:23;12971:32;12968:52;;;13016:1;13013;13006:12;12968:52;13048:9;13042:16;13067:28;13089:5;13067:28;:::i;20178:980::-;20440:4;20488:3;20477:9;20473:19;20519:6;20508:9;20501:25;20545:2;20583:6;20578:2;20567:9;20563:18;20556:34;20626:3;20621:2;20610:9;20606:18;20599:31;20650:6;20685;20679:13;20716:6;20708;20701:22;20754:3;20743:9;20739:19;20732:26;;20793:2;20785:6;20781:15;20767:29;;20814:1;20824:195;20838:6;20835:1;20832:13;20824:195;;;20903:13;;-1:-1:-1;;;;;20899:39:1;20887:52;;20994:15;;;;20959:12;;;;20935:1;20853:9;20824:195;;;-1:-1:-1;;;;;;;21075:32:1;;;;21070:2;21055:18;;21048:60;-1:-1:-1;;;21139:3:1;21124:19;21117:35;21036:3;20178:980;-1:-1:-1;;;20178:980:1:o;21775:306::-;21863:6;21871;21879;21932:2;21920:9;21911:7;21907:23;21903:32;21900:52;;;21948:1;21945;21938:12;21900:52;21977:9;21971:16;21961:26;;22027:2;22016:9;22012:18;22006:25;21996:35;;22071:2;22060:9;22056:18;22050:25;22040:35;;21775:306;;;;;:::o

Swarm Source

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