ETH Price: $2,521.65 (-5.28%)

Token

Algowave (ALGO)
 

Overview

Max Total Supply

1,000,000 ALGO

Holders

339 (0.00%)

Market

Price

$0.04 @ 0.000015 ETH

Onchain Market Cap

$36,981.09

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
jaredfromsubway: MEV Bot
Balance
7.976818579859479015 ALGO

Value
$0.29 ( ~0.000115004174591775 Eth) [0.0008%]
0x6b75d8af000000e20b7a7ddf000ba900b4009a80
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Algowave AI transforms crypto management with the Algo Wallet – a non-custodial multichain solution designed for modern traders.

Market

Volume (24H):$0.00
Market Capitalization:$0.00
Circulating Supply:0.00 ALGO
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Algowave

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: UNLICENSED

/*

TELEGRAM: 
https://t.me/algowaveai

WEBSITE: 
https://algowave.ai/

*/


pragma solidity 0.8.19;

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

abstract contract Auth {
    address internal owner;
//    address internal potentialOwner;
    mapping (address => bool) internal authorizations;

    event Authorize_Wallet(address Wallet, bool Status);

    event OwnershipRenounced(address indexed previousOwner);

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


    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 renounceOwnership() public onlyOwner {
        emit OwnershipRenounced(owner);
        owner = address(0);
    }

    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0));
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }
}

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

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

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

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

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

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

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

interface InterfaceLP {
    function sync() external;
}

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

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

    string constant _name = "Algowave";
    string constant _symbol = "ALGO";
    uint8 constant _decimals = 18;

    uint256 public _totalSupply = 1 * 10**6 * 10**_decimals;

    uint256 public _maxTxAmount = _totalSupply / 50; // 2%
    uint256 public _maxWalletToken = _totalSupply / 25; // 4%

    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 = 0;
    uint256 public buybackFee = 0;
    uint256 public burnFee = 0;
    uint256 public totalFee = marketingFee + liquidityFee + buybackFee + burnFee;
    uint256 public constant feeDenominator = 1000;

    uint256 sellMultiplier = 100;
    uint256 buyMultiplier = 100;
    uint256 transferMultiplier = 25;

    address public marketingFeeReceiver;
    address public buybackFeeReceiver;

    IDEXRouter public router;
    address public immutable pair;

    InterfaceLP public pairContract;
    uint256 public lastSync;

    bool public tradingOpen = false;
//    bool public burnEnabled = false;
    uint256 public launchedAt;

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

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

        pair = IDEXFactory(router.factory()).createPair(WBNB, address(this));
        pairContract = InterfaceLP(pair);
        lastSync = block.timestamp;

        _allowances[address(this)][address(router)] = type(uint256).max;

        marketingFeeReceiver = msg.sender;
        buybackFeeReceiver = msg.sender;

        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 totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }   function 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_base10000(uint256 maxWallPercent_base10000) external onlyOwner {
        require(maxWallPercent_base10000 >= 10,"Cannot set max wallet less than 0.1%");
        _maxWalletToken = (_totalSupply * maxWallPercent_base10000 ) / 10000;
        emit config_MaxWallet(_maxWalletToken);
    }
    function setMaxTxPercent_base10000(uint256 maxTXPercentage_base10000) external onlyOwner {
        require(maxTXPercentage_base10000 >= 10,"Cannot set max transaction less than 0.1%");
        _maxTxAmount = (_totalSupply * maxTXPercentage_base10000 ) / 10000;
        emit config_MaxTransaction(_maxTxAmount);
    }
*/
    function setUnlimitedTxWallet() external authorized {
        _maxWalletToken = _totalSupply;
        _maxTxAmount = _totalSupply;

        emit config_MaxWallet(_maxWalletToken);
        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");
        }
    
        // Checks max transaction limit
        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){
            _totalSupply = _totalSupply.sub(burnTokens);
            emit Transfer(sender, ZERO, burnTokens);  
        }

        return amount.sub(feeAmount);
    }

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

    function clearStuckToken(address tokenAddress, uint256 tokens) external authorized returns (bool success) {
        require(tokenAddress != address(this),"Cannot withdraw native token");
        if(tokenAddress == pair){
            require(block.timestamp > launchedAt + 500 days,"Locked for 1 year");
        }

        if(tokens == 0){
            tokens = BEP20(tokenAddress).balanceOf(address(this));
        }

        emit clearToken(tokenAddress, tokens);

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

    // switch Trading
    function tradingEnable() external onlyOwner {
        require(!tradingOpen,"Trading already open");
        tradingOpen = true;
        launchedAt = block.timestamp;
        emit config_TradingStatus(tradingOpen);
    }

/*
    function disableBurns() external onlyOwner {
        burnEnabled = false;
    }

    function enableBurns() external onlyOwner {
        burnEnabled = true;
    }
*/

    function swapBack() internal swapping {

        uint256 totalETHFee = totalFee - burnFee;

        if(totalETHFee == 0) {
            totalETHFee = 1;
        }

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

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

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

        uint256 amountBNB = address(this).balance;

         totalETHFee = totalETHFee - (liquidityFee / 2);

         if(totalETHFee == 0) {
            totalETHFee = 1;
        }

        uint256 amountBNBLiquidity = (amountBNB * liquidityFee) / (totalETHFee * 2);
        uint256 amountBNBMarketing = (amountBNB * marketingFee) / totalETHFee;
        uint256 amountBNBbuyback = (amountBNB * buybackFee) / totalETHFee;

        payable(marketingFeeReceiver).transfer(amountBNBMarketing);
        payable(buybackFeeReceiver).transfer(amountBNBbuyback);

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountBNBLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                address(this),
                block.timestamp
            );
            emit AutoLiquify(amountBNBLiquidity, 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) <= 150, "Buy tax cannot be more than 15%");
        require(totalFee.mul(sellMultiplier).div(100) <= 150, "Sell tax cannot be more than 15%");
        require(totalFee.mul(sellMultiplier + buyMultiplier).div(100) <= 200, "Buy+Sell tax cannot be more than 20%");
        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 _buybackFee, uint256 _burnFee) external onlyOwner {
        liquidityFee = _liquidityFee;
        marketingFee = _marketingFee;
        buybackFee = _buybackFee;
        burnFee = _burnFee;
        totalFee = _liquidityFee + _marketingFee + _buybackFee + _burnFee;
        
        update_fees();
    }

    function setFeeReceivers(address _marketingFeeReceiver, address _buybackFeeReceiver) external onlyOwner {
        require(_marketingFeeReceiver != address(0),"Marketing fee address cannot be zero address");
        require(_buybackFeeReceiver != address(0),"buyback fee address cannot be zero address");

        marketingFeeReceiver = _marketingFeeReceiver;
        buybackFeeReceiver = _buybackFeeReceiver;

        emit Set_Wallets(marketingFeeReceiver, buybackFeeReceiver);
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external onlyOwner {
        require(_amount >= 1 * 10**_decimals, "Amount is less than one token");
        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 LPBurn(uint256 percent_base10000) public authorized returns (bool){
        require(percent_base10000 <= 1000, "May not nuke more than 10% of tokens in LP");
        require(block.timestamp > lastSync + 5 minutes, "Too soon");
        require(burnEnabled,"Burns are disabled");

        uint256 lp_tokens = this.balanceOf(pair);
        uint256 lp_burn = lp_tokens.mul(percent_base10000).div(10_000);

        if (lp_burn > 0){
            _basicTransfer(pair,DEAD,lp_burn);
            pairContract.sync();
            return true;
        }

        return false;
    }   
*/

event AutoLiquify(uint256 amountBNB, 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 Wallet_blacklist(address Wallet, bool Status);

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

event Set_Wallets(address MarketingWallet, address buybackWallet);

event config_MaxWallet(uint256 maxWallet);
event config_MaxTransaction(uint256 maxWallet);
event config_TradingStatus(bool Status);
event config_LaunchMode(bool Status);
event config_BlacklistMode(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":"amountBNB","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":true,"internalType":"address","name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"MarketingWallet","type":"address"},{"indexed":false,"internalType":"address","name":"buybackWallet","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_blacklist","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":"bool","name":"Status","type":"bool"}],"name":"config_BlacklistMode","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"config_LaunchMode","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":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","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":[],"name":"buybackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buybackFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"pure","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":"lastSync","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairContract","outputs":[{"internalType":"contract InterfaceLP","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_buybackFeeReceiver","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":"_buybackFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"setFees_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":"setUnlimitedTxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"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":"tradingEnable","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","name":"newOwner","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"}]

60c0604052620000126012600a620004f4565b6200002190620f42406200050c565b600255603260025462000035919062000526565b600355601960025462000049919062000526565b6004556000600a819055600b819055600c819055600d819055806200006f818062000549565b6200007b919062000549565b62000087919062000549565b600e556064600f819055601055601960118190556017805460ff199081169091558154166001179055600254620000c2906103e89062000526565b601a55348015620000d257600080fd5b5060008054336001600160a01b031991821681178355825260016020818152604093849020805460ff191690921790915560148054737a250d5630b4cf539739df2c5dacb4c659f2488d93168317905582516315ab88c960e31b81529251919263ad5c464892600480830193928290030181865afa15801562000159573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200017f91906200055f565b6001600160a01b039081166080526014546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa158015620001d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f691906200055f565b6080516040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af115801562000248573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026e91906200055f565b6001600160a01b0390811660a0819052601580546001600160a01b0319908116909217905542601655306000818152600660209081526040808320601454909616835294815284822060001990556012805433908616811790915560138054909516811790945583825260078152848220805460ff1990811660019081179092556008835286842080548216831790557f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd0933429980548216831790557f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c7805482168317905560098352868420805482168317905593835285832080548516821790557f960b1051749987b45b5679007fff577a1c2f763ec21c15a6c5eb19307500378580549094161790925560025483825260058352848220819055935193845291927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36200058a565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004365781600019048211156200041a576200041a620003df565b808516156200042857918102915b93841c9390800290620003fa565b509250929050565b6000826200044f57506001620004ee565b816200045e57506000620004ee565b81600181146200047757600281146200048257620004a2565b6001915050620004ee565b60ff841115620004965762000496620003df565b50506001821b620004ee565b5060208310610133831016604e8410600b8410161715620004c7575081810a620004ee565b620004d38383620003f5565b8060001904821115620004ea57620004ea620003df565b0290505b92915050565b60006200050560ff8416836200043e565b9392505050565b8082028115828204841417620004ee57620004ee620003df565b6000826200054457634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620004ee57620004ee620003df565b6000602082840312156200057257600080fd5b81516001600160a01b03811681146200050557600080fd5b60805160a051612b75620005d36000396000818161072d0152818161104b015281816118ba01528181611ef9015281816122d401526123080152600061201a0152612b756000f3fe6080604052600436106102cb5760003560e01c806377b54bad11610175578063bf56b371116100dc578063efa5e34711610095578063f887ea401161006f578063f887ea40146108d0578063fce589d8146108f0578063fe9fbb8014610906578063ffb54a991461092657600080fd5b8063efa5e34714610870578063f0b37c0414610890578063f2fde38b146108b057600080fd5b8063bf56b3711461078f578063c867d60b146107a5578063d810212f146107d5578063dd62ed3e146107ea578063df20fd4914610830578063e96fada21461085057600080fd5b806395d89b411161012e57806395d89b41146106b857806398118cb4146106e5578063a4b45c00146106fb578063a8aa1b311461071b578063a9059cbb1461074f578063b6a5d7de1461076f57600080fd5b806377b54bad146105fe57806378109e541461061e5780637d1db4a51461063457806384b1d1ef1461064a578063893d20e81461066a5780638b42507f1461068857600080fd5b8063313ce56711610234578063571ac8b0116101ed5780636ce46bc3116101c75780636ce46bc3146105825780636ddd1713146105a257806370a08231146105bc578063715018a6146105e957600080fd5b8063571ac8b0146105365780636917516b146105565780636b67c4df1461056c57600080fd5b8063313ce567146104665780633b2d081c146104825780633eaaf86b146104985780633f4218e0146104ae5780634be9d869146104de5780634d709adf146104fe57600080fd5b8063180b0d7e11610286578063180b0d7e146103c157806318160ddd146103d75780631df4ccfc146103ec57806323b872dd146104025780632b112e49146104225780632f54bf6e1461043757600080fd5b8062108683146102d7578062bff446146102f95780630445b6671461031957806306fdde0314610342578063095ea7b31461037c5780631693e8d4146103ac57600080fd5b366102d257005b600080fd5b3480156102e357600080fd5b506102f76102f2366004612609565b610940565b005b34801561030557600080fd5b506102f7610314366004612609565b610a6e565b34801561032557600080fd5b5061032f601a5481565b6040519081526020015b60405180910390f35b34801561034e57600080fd5b50604080518082019091526008815267416c676f7761766560c01b60208201525b604051610339919061268f565b34801561038857600080fd5b5061039c6103973660046126f9565b610b8d565b6040519015158152602001610339565b3480156103b857600080fd5b506102f7610bfa565b3480156103cd57600080fd5b5061032f6103e881565b3480156103e357600080fd5b5060025461032f565b3480156103f857600080fd5b5061032f600e5481565b34801561040e57600080fd5b5061039c61041d366004612723565b610cb8565b34801561042e57600080fd5b5061032f610d7a565b34801561044357600080fd5b5061039c61045236600461275f565b6000546001600160a01b0391821691161490565b34801561047257600080fd5b5060405160128152602001610339565b34801561048e57600080fd5b5061032f600c5481565b3480156104a457600080fd5b5061032f60025481565b3480156104ba57600080fd5b5061039c6104c936600461275f565b60076020526000908152604090205460ff1681565b3480156104ea57600080fd5b506102f76104f9366004612609565b610dea565b34801561050a57600080fd5b5060155461051e906001600160a01b031681565b6040516001600160a01b039091168152602001610339565b34801561054257600080fd5b5061039c61055136600461275f565b610f09565b34801561056257600080fd5b5061032f60165481565b34801561057857600080fd5b5061032f600b5481565b34801561058e57600080fd5b506102f761059d36600461277a565b610f17565b3480156105ae57600080fd5b5060195461039c9060ff1681565b3480156105c857600080fd5b5061032f6105d736600461275f565b60056020526000908152604090205481565b3480156105f557600080fd5b506102f7610f58565b34801561060a57600080fd5b5061039c6106193660046126f9565b610fca565b34801561062a57600080fd5b5061032f60045481565b34801561064057600080fd5b5061032f60035481565b34801561065657600080fd5b5060135461051e906001600160a01b031681565b34801561067657600080fd5b506000546001600160a01b031661051e565b34801561069457600080fd5b5061039c6106a336600461275f565b60086020526000908152604090205460ff1681565b3480156106c457600080fd5b50604080518082019091526004815263414c474f60e01b602082015261036f565b3480156106f157600080fd5b5061032f600a5481565b34801561070757600080fd5b506102f76107163660046127a6565b6111fb565b34801561072757600080fd5b5061051e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561075b57600080fd5b5061039c61076a3660046126f9565b611368565b34801561077b57600080fd5b506102f761078a36600461275f565b611375565b34801561079b57600080fd5b5061032f60185481565b3480156107b157600080fd5b5061039c6107c036600461275f565b60096020526000908152604090205460ff1681565b3480156107e157600080fd5b506102f76113fc565b3480156107f657600080fd5b5061032f6108053660046127a6565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561083c57600080fd5b506102f761084b3660046127d9565b611494565b34801561085c57600080fd5b5060125461051e906001600160a01b031681565b34801561087c57600080fd5b506102f761088b3660046127f7565b6115c4565b34801561089c57600080fd5b506102f76108ab36600461275f565b61162d565b3480156108bc57600080fd5b506102f76108cb36600461275f565b61170c565b3480156108dc57600080fd5b5060145461051e906001600160a01b031681565b3480156108fc57600080fd5b5061032f600d5481565b34801561091257600080fd5b5061039c61092136600461275f565b611742565b34801561093257600080fd5b5060175461039c9060ff1681565b61094933611742565b61096e5760405162461bcd60e51b815260040161096590612829565b60405180910390fd5b6101f5821061098f5760405162461bcd60e51b81526004016109659061284e565b60005b82811015610a685781600960008686858181106109b1576109b1612893565b90506020020160208101906109c6919061275f565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f566c2270277919680152b0734389ae919d95ff7e9024c03fc3c7c209ec8412c7848483818110610a2157610a21612893565b9050602002016020810190610a36919061275f565b604080516001600160a01b03909216825284151560208301520160405180910390a1610a61816128bf565b9050610992565b50505050565b610a7733611742565b610a935760405162461bcd60e51b815260040161096590612829565b6101f58210610ab45760405162461bcd60e51b81526004016109659061284e565b60005b82811015610a68578160076000868685818110610ad657610ad6612893565b9050602002016020810190610aeb919061275f565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f9fbd25f95d342f2efc070b56d2fadd2341d264ef8c915dc268609b2ca1bb25de848483818110610b4657610b46612893565b9050602002016020810190610b5b919061275f565b604080516001600160a01b03909216825284151560208301520160405180910390a1610b86816128bf565b9050610ab7565b3360008181526006602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610be89086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610c245760405162461bcd60e51b8152600401610965906128d8565b60175460ff1615610c6e5760405162461bcd60e51b81526020600482015260146024820152732a3930b234b7339030b63932b0b23c9037b832b760611b6044820152606401610965565b6017805460ff19166001908117909155426018556040519081527ff865819dcfd8250cfaa23e1ab7129c1ec65c617bae1e716699dfe07dd7c489ee906020015b60405180910390a1565b6001600160a01b038316600090815260066020908152604080832033845290915281205460001914610d65576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600682528381203382529091529190912054610d40918490611760565b6001600160a01b03851660009081526006602090815260408083203384529091529020555b610d7084848461179a565b90505b9392505050565b60056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461dead60009081527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba54600254919291610ddb91906128f8565b610de591906128f8565b905090565b610df333611742565b610e0f5760405162461bcd60e51b815260040161096590612829565b6101f58210610e305760405162461bcd60e51b81526004016109659061284e565b60005b82811015610a68578160086000868685818110610e5257610e52612893565b9050602002016020810190610e67919061275f565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f3c4f06d74861dea6c152189f2ac8853b6f789feb0e1182101b7ad9d1858f70e3848483818110610ec257610ec2612893565b9050602002016020810190610ed7919061275f565b604080516001600160a01b03909216825284151560208301520160405180910390a1610f02816128bf565b9050610e33565b6000610bf482600019610b8d565b610f2033611742565b610f3c5760405162461bcd60e51b815260040161096590612829565b600f82905560108390556011819055610f53611b3e565b505050565b6000546001600160a01b03163314610f825760405162461bcd60e51b8152600401610965906128d8565b600080546040516001600160a01b03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a2600080546001600160a01b0319169055565b6000610fd533611742565b610ff15760405162461bcd60e51b815260040161096590612829565b306001600160a01b038416036110495760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f74207769746864726177206e617469766520746f6b656e000000006044820152606401610965565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316036110d557601854611093906302932e0061290b565b42116110d55760405162461bcd60e51b81526020600482015260116024820152702637b1b5b2b2103337b91018903cb2b0b960791b6044820152606401610965565b81600003611148576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611121573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611145919061291e565b91505b604080516001600160a01b0385168152602081018490527f960427a4fde284dcc8da2c51a43d210cfd7ed6f4328a24ba33eee49910db564b910160405180910390a160405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d739190612937565b6000546001600160a01b031633146112255760405162461bcd60e51b8152600401610965906128d8565b6001600160a01b0382166112905760405162461bcd60e51b815260206004820152602c60248201527f4d61726b6574696e672066656520616464726573732063616e6e6f742062652060448201526b7a65726f206164647265737360a01b6064820152608401610965565b6001600160a01b0381166112f95760405162461bcd60e51b815260206004820152602a60248201527f6275796261636b2066656520616464726573732063616e6e6f74206265207a65604482015269726f206164647265737360b01b6064820152608401610965565b601280546001600160a01b038481166001600160a01b03199283168117909355601380549185169190921681179091556040805192835260208301919091527ff3b718cd51f62e3836535bffd8f429a3f80d9d4442d89b72beee94069ed1fa3891015b60405180910390a15050565b6000610d7333848461179a565b6000546001600160a01b0316331461139f5760405162461bcd60e51b8152600401610965906128d8565b6001600160a01b038116600081815260016020818152604092839020805460ff19168317905582519384528301527fb6a1709218b158ea8591fc9269b88652f1c908dc68a79faa865c745a770b950591015b60405180910390a150565b61140533611742565b6114215760405162461bcd60e51b815260040161096590612829565b600254600481905560038190556040519081527fa69fa556bf940aa0c695b9c8e1b229fdb1476830e2025e44da1028e0c1458d4a9060200160405180910390a17f365a2bb07537fddd750e9ac8d56970e584f83a144bb5225e77491b83bccd1183600354604051610cae91815260200190565b6000546001600160a01b031633146114be5760405162461bcd60e51b8152600401610965906128d8565b6114ca6012600a612a38565b6114d5906001612a47565b8110156115245760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206973206c657373207468616e206f6e6520746f6b656e0000006044820152606401610965565b600a6002546115339190612a5e565b81106115735760405162461bcd60e51b815260206004820152600f60248201526e082dadeeadce840e8dede40d0d2ced608b1b6044820152606401610965565b6019805460ff1916831515908117909155601a8290556040805183815260ff909216151560208301527f34c2d4c263b6f41223c6d30ae2e7bcb18629892587e0a4138f57ba2c523953d0910161135c565b6000546001600160a01b031633146115ee5760405162461bcd60e51b8152600401610965906128d8565b600a849055600b839055600c829055600d819055808261160e858761290b565b611618919061290b565b611622919061290b565b600e55610a68611b3e565b6000546001600160a01b031633146116575760405162461bcd60e51b8152600401610965906128d8565b6000546001600160a01b03908116908216036116b55760405162461bcd60e51b815260206004820152601a60248201527f4f574e45522063616e7420626520756e617574686f72697a65640000000000006044820152606401610965565b6001600160a01b0381166000818152600160209081526040808320805460ff191690558051938452908301919091527fb6a1709218b158ea8591fc9269b88652f1c908dc68a79faa865c745a770b950591016113f1565b6000546001600160a01b031633146117365760405162461bcd60e51b8152600401610965906128d8565b61173f81611daa565b50565b6001600160a01b031660009081526001602052604090205460ff1690565b600081848411156117845760405162461bcd60e51b8152600401610965919061268f565b50600061179184866128f8565b95945050505050565b601b5460009060ff16156117ba576117b3848484611e18565b9050610d73565b6001600160a01b03841660009081526001602052604090205460ff161580156117fc57506001600160a01b03831660009081526001602052604090205460ff16155b1561184a5760175460ff1661184a5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610965565b6001600160a01b03841660009081526001602052604090205460ff1615801561188c57506001600160a01b03841660009081526009602052604090205460ff16155b80156118b157506001600160a01b03831660009081526009602052604090205460ff16155b80156118ef57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b15611969576004546001600160a01b03841660009081526005602052604090205461191b90849061290b565b11156119695760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d6974207265616368656400000000000000006044820152606401610965565b6003548211158061199257506001600160a01b03841660009081526008602052604090205460ff165b806119b557506001600160a01b03831660009081526008602052604090205460ff165b6119f95760405162461bcd60e51b815260206004820152601560248201527413585e08151608131a5b5a5d08115e18d959591959605a1b6044820152606401610965565b611a01611eec565b15611a0e57611a0e611f58565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260059091529190912054611a60918490611760565b6001600160a01b038516600090815260056020908152604080832093909355600790529081205460ff1680611aad57506001600160a01b03841660009081526007602052604090205460ff165b611ac157611abc8584866122ac565b611ac3565b825b6001600160a01b038516600090815260056020526040902054909150611ae99082612468565b6001600160a01b038086166000818152600560205260409081902093909355915190871690600080516020612b2083398151915290611b2b9085815260200190565b60405180910390a3506001949350505050565b6096611b626064611b5c601054600e546124c790919063ffffffff16565b90612549565b1115611bb05760405162461bcd60e51b815260206004820152601f60248201527f427579207461782063616e6e6f74206265206d6f7265207468616e20313525006044820152606401610965565b6096611bce6064611b5c600f54600e546124c790919063ffffffff16565b1115611c1c5760405162461bcd60e51b815260206004820181905260248201527f53656c6c207461782063616e6e6f74206265206d6f7265207468616e203135256044820152606401610965565b60c8611c3f6064611b5c601054600f54611c36919061290b565b600e54906124c7565b1115611c995760405162461bcd60e51b8152602060048201526024808201527f4275792b53656c6c207461782063616e6e6f74206265206d6f7265207468616e6044820152632032302560e01b6064820152608401610965565b6064611cb76064611b5c601154600e546124c790919063ffffffff16565b1115611d115760405162461bcd60e51b8152602060048201526024808201527f5472616e73666572205461782063616e6e6f74206265206d6f7265207468616e6044820152632031302560e01b6064820152608401610965565b7f375884ed7f92283ee74d8884b39a803f4aee832b15766fe016b74fc791fc2ada611d4e6064611b5c601054600e546124c790919063ffffffff16565b611d6a6064611b5c600f54600e546124c790919063ffffffff16565b611d866064611b5c601154600e546124c790919063ffffffff16565b6040805160ff94851681529284166020840152921691810191909152606001610cae565b6001600160a01b038116611dbd57600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600590915291822054611e69918490611760565b6001600160a01b038086166000908152600560205260408082209390935590851681522054611e989083612468565b6001600160a01b038085166000818152600560205260409081902093909355915190861690600080516020612b2083398151915290611eda9086815260200190565b60405180910390a35060019392505050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801590611f2a5750601b5460ff16155b8015611f38575060195460ff165b8015610de5575050601a5430600090815260056020526040902054101590565b601b805460ff19166001179055600d54600e54600091611f77916128f8565b905080600003611f85575060015b6000611f92826002612a47565b600a54601a54611fa29190612a47565b611fac9190612a5e565b9050600081601a54611fbe91906128f8565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611ff857611ff8612893565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061204c5761204c612893565b6001600160a01b03928316602091820292909201015260145460405163791ac94760e01b815291169063791ac94790612092908590600090869030904290600401612a80565b600060405180830381600087803b1580156120ac57600080fd5b505af11580156120c0573d6000803e3d6000fd5b5050600a544792506120d59150600290612a5e565b6120df90866128f8565b9450846000036120ee57600194505b60006120fb866002612a47565b600a546121089084612a47565b6121129190612a5e565b9050600086600b54846121259190612a47565b61212f9190612a5e565b9050600087600c54856121429190612a47565b61214c9190612a5e565b6012546040519192506001600160a01b03169083156108fc029084906000818181858888f19350505050158015612187573d6000803e3d6000fd5b506013546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156121c2573d6000803e3d6000fd5b5086156122985760145460405163f305d71960e01b81523060048201819052602482018a9052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990859060c40160606040518083038185885af1158015612236573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061225b9190612af1565b505060408051858152602081018a90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050601b805460ff19169055505050505050565b60008215806122bb5750600e54155b156122c7575081610d73565b6011546001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116908416036123065750600f54612344565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b03160361234457506010545b60006123756123566103e86064612a47565b611b5c8461236f600e548a6124c790919063ffffffff16565b906124c7565b90506000612394600e54611b5c600d54856124c790919063ffffffff16565b905060006123a2838361258b565b9050801561240c57306000908152600560205260409020546123c49082612468565b30600081815260056020526040908190209290925590516001600160a01b038a1690600080516020612b20833981519152906124039085815260200190565b60405180910390a35b81156124525760025461241f908361258b565b6002556040518281526000906001600160a01b038a1690600080516020612b208339815191529060200160405180910390a35b61245c878461258b565b98975050505050505050565b600080612475838561290b565b905083811015610d735760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610965565b6000826000036124d957506000610bf4565b60006124e58385612a47565b9050826124f28583612a5e565b14610d735760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610965565b6000610d7383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125cd565b6000610d7383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611760565b600081836125ee5760405162461bcd60e51b8152600401610965919061268f565b5060006117918486612a5e565b801515811461173f57600080fd5b60008060006040848603121561261e57600080fd5b833567ffffffffffffffff8082111561263657600080fd5b818601915086601f83011261264a57600080fd5b81358181111561265957600080fd5b8760208260051b850101111561266e57600080fd5b60209283019550935050840135612684816125fb565b809150509250925092565b600060208083528351808285015260005b818110156126bc578581018301518582016040015282016126a0565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146126f457600080fd5b919050565b6000806040838503121561270c57600080fd5b612715836126dd565b946020939093013593505050565b60008060006060848603121561273857600080fd5b612741846126dd565b925061274f602085016126dd565b9150604084013590509250925092565b60006020828403121561277157600080fd5b610d73826126dd565b60008060006060848603121561278f57600080fd5b505081359360208301359350604090920135919050565b600080604083850312156127b957600080fd5b6127c2836126dd565b91506127d0602084016126dd565b90509250929050565b600080604083850312156127ec57600080fd5b8235612715816125fb565b6000806000806080858703121561280d57600080fd5b5050823594602084013594506040840135936060013592509050565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b60208082526025908201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604082015264657373657360d81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016128d1576128d16128a9565b5060010190565b60208082526006908201526510a7aba722a960d11b604082015260600190565b81810381811115610bf457610bf46128a9565b80820180821115610bf457610bf46128a9565b60006020828403121561293057600080fd5b5051919050565b60006020828403121561294957600080fd5b8151610d73816125fb565b600181815b8085111561298f578160001904821115612975576129756128a9565b8085161561298257918102915b93841c9390800290612959565b509250929050565b6000826129a657506001610bf4565b816129b357506000610bf4565b81600181146129c957600281146129d3576129ef565b6001915050610bf4565b60ff8411156129e4576129e46128a9565b50506001821b610bf4565b5060208310610133831016604e8410600b8410161715612a12575081810a610bf4565b612a1c8383612954565b8060001904821115612a3057612a306128a9565b029392505050565b6000610d7360ff841683612997565b8082028115828204841417610bf457610bf46128a9565b600082612a7b57634e487b7160e01b600052601260045260246000fd5b500490565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612ad05784516001600160a01b031683529383019391830191600101612aab565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612b0657600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122048397c3ad20790e50b66fb05c6ce8bac952c9294327a25359de518943cb4f4ec64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102cb5760003560e01c806377b54bad11610175578063bf56b371116100dc578063efa5e34711610095578063f887ea401161006f578063f887ea40146108d0578063fce589d8146108f0578063fe9fbb8014610906578063ffb54a991461092657600080fd5b8063efa5e34714610870578063f0b37c0414610890578063f2fde38b146108b057600080fd5b8063bf56b3711461078f578063c867d60b146107a5578063d810212f146107d5578063dd62ed3e146107ea578063df20fd4914610830578063e96fada21461085057600080fd5b806395d89b411161012e57806395d89b41146106b857806398118cb4146106e5578063a4b45c00146106fb578063a8aa1b311461071b578063a9059cbb1461074f578063b6a5d7de1461076f57600080fd5b806377b54bad146105fe57806378109e541461061e5780637d1db4a51461063457806384b1d1ef1461064a578063893d20e81461066a5780638b42507f1461068857600080fd5b8063313ce56711610234578063571ac8b0116101ed5780636ce46bc3116101c75780636ce46bc3146105825780636ddd1713146105a257806370a08231146105bc578063715018a6146105e957600080fd5b8063571ac8b0146105365780636917516b146105565780636b67c4df1461056c57600080fd5b8063313ce567146104665780633b2d081c146104825780633eaaf86b146104985780633f4218e0146104ae5780634be9d869146104de5780634d709adf146104fe57600080fd5b8063180b0d7e11610286578063180b0d7e146103c157806318160ddd146103d75780631df4ccfc146103ec57806323b872dd146104025780632b112e49146104225780632f54bf6e1461043757600080fd5b8062108683146102d7578062bff446146102f95780630445b6671461031957806306fdde0314610342578063095ea7b31461037c5780631693e8d4146103ac57600080fd5b366102d257005b600080fd5b3480156102e357600080fd5b506102f76102f2366004612609565b610940565b005b34801561030557600080fd5b506102f7610314366004612609565b610a6e565b34801561032557600080fd5b5061032f601a5481565b6040519081526020015b60405180910390f35b34801561034e57600080fd5b50604080518082019091526008815267416c676f7761766560c01b60208201525b604051610339919061268f565b34801561038857600080fd5b5061039c6103973660046126f9565b610b8d565b6040519015158152602001610339565b3480156103b857600080fd5b506102f7610bfa565b3480156103cd57600080fd5b5061032f6103e881565b3480156103e357600080fd5b5060025461032f565b3480156103f857600080fd5b5061032f600e5481565b34801561040e57600080fd5b5061039c61041d366004612723565b610cb8565b34801561042e57600080fd5b5061032f610d7a565b34801561044357600080fd5b5061039c61045236600461275f565b6000546001600160a01b0391821691161490565b34801561047257600080fd5b5060405160128152602001610339565b34801561048e57600080fd5b5061032f600c5481565b3480156104a457600080fd5b5061032f60025481565b3480156104ba57600080fd5b5061039c6104c936600461275f565b60076020526000908152604090205460ff1681565b3480156104ea57600080fd5b506102f76104f9366004612609565b610dea565b34801561050a57600080fd5b5060155461051e906001600160a01b031681565b6040516001600160a01b039091168152602001610339565b34801561054257600080fd5b5061039c61055136600461275f565b610f09565b34801561056257600080fd5b5061032f60165481565b34801561057857600080fd5b5061032f600b5481565b34801561058e57600080fd5b506102f761059d36600461277a565b610f17565b3480156105ae57600080fd5b5060195461039c9060ff1681565b3480156105c857600080fd5b5061032f6105d736600461275f565b60056020526000908152604090205481565b3480156105f557600080fd5b506102f7610f58565b34801561060a57600080fd5b5061039c6106193660046126f9565b610fca565b34801561062a57600080fd5b5061032f60045481565b34801561064057600080fd5b5061032f60035481565b34801561065657600080fd5b5060135461051e906001600160a01b031681565b34801561067657600080fd5b506000546001600160a01b031661051e565b34801561069457600080fd5b5061039c6106a336600461275f565b60086020526000908152604090205460ff1681565b3480156106c457600080fd5b50604080518082019091526004815263414c474f60e01b602082015261036f565b3480156106f157600080fd5b5061032f600a5481565b34801561070757600080fd5b506102f76107163660046127a6565b6111fb565b34801561072757600080fd5b5061051e7f0000000000000000000000002ca150c206bbafcd5350133c5fad1f2d49a2298d81565b34801561075b57600080fd5b5061039c61076a3660046126f9565b611368565b34801561077b57600080fd5b506102f761078a36600461275f565b611375565b34801561079b57600080fd5b5061032f60185481565b3480156107b157600080fd5b5061039c6107c036600461275f565b60096020526000908152604090205460ff1681565b3480156107e157600080fd5b506102f76113fc565b3480156107f657600080fd5b5061032f6108053660046127a6565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561083c57600080fd5b506102f761084b3660046127d9565b611494565b34801561085c57600080fd5b5060125461051e906001600160a01b031681565b34801561087c57600080fd5b506102f761088b3660046127f7565b6115c4565b34801561089c57600080fd5b506102f76108ab36600461275f565b61162d565b3480156108bc57600080fd5b506102f76108cb36600461275f565b61170c565b3480156108dc57600080fd5b5060145461051e906001600160a01b031681565b3480156108fc57600080fd5b5061032f600d5481565b34801561091257600080fd5b5061039c61092136600461275f565b611742565b34801561093257600080fd5b5060175461039c9060ff1681565b61094933611742565b61096e5760405162461bcd60e51b815260040161096590612829565b60405180910390fd5b6101f5821061098f5760405162461bcd60e51b81526004016109659061284e565b60005b82811015610a685781600960008686858181106109b1576109b1612893565b90506020020160208101906109c6919061275f565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f566c2270277919680152b0734389ae919d95ff7e9024c03fc3c7c209ec8412c7848483818110610a2157610a21612893565b9050602002016020810190610a36919061275f565b604080516001600160a01b03909216825284151560208301520160405180910390a1610a61816128bf565b9050610992565b50505050565b610a7733611742565b610a935760405162461bcd60e51b815260040161096590612829565b6101f58210610ab45760405162461bcd60e51b81526004016109659061284e565b60005b82811015610a68578160076000868685818110610ad657610ad6612893565b9050602002016020810190610aeb919061275f565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f9fbd25f95d342f2efc070b56d2fadd2341d264ef8c915dc268609b2ca1bb25de848483818110610b4657610b46612893565b9050602002016020810190610b5b919061275f565b604080516001600160a01b03909216825284151560208301520160405180910390a1610b86816128bf565b9050610ab7565b3360008181526006602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610be89086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610c245760405162461bcd60e51b8152600401610965906128d8565b60175460ff1615610c6e5760405162461bcd60e51b81526020600482015260146024820152732a3930b234b7339030b63932b0b23c9037b832b760611b6044820152606401610965565b6017805460ff19166001908117909155426018556040519081527ff865819dcfd8250cfaa23e1ab7129c1ec65c617bae1e716699dfe07dd7c489ee906020015b60405180910390a1565b6001600160a01b038316600090815260066020908152604080832033845290915281205460001914610d65576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600682528381203382529091529190912054610d40918490611760565b6001600160a01b03851660009081526006602090815260408083203384529091529020555b610d7084848461179a565b90505b9392505050565b60056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461dead60009081527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba54600254919291610ddb91906128f8565b610de591906128f8565b905090565b610df333611742565b610e0f5760405162461bcd60e51b815260040161096590612829565b6101f58210610e305760405162461bcd60e51b81526004016109659061284e565b60005b82811015610a68578160086000868685818110610e5257610e52612893565b9050602002016020810190610e67919061275f565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f3c4f06d74861dea6c152189f2ac8853b6f789feb0e1182101b7ad9d1858f70e3848483818110610ec257610ec2612893565b9050602002016020810190610ed7919061275f565b604080516001600160a01b03909216825284151560208301520160405180910390a1610f02816128bf565b9050610e33565b6000610bf482600019610b8d565b610f2033611742565b610f3c5760405162461bcd60e51b815260040161096590612829565b600f82905560108390556011819055610f53611b3e565b505050565b6000546001600160a01b03163314610f825760405162461bcd60e51b8152600401610965906128d8565b600080546040516001600160a01b03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a2600080546001600160a01b0319169055565b6000610fd533611742565b610ff15760405162461bcd60e51b815260040161096590612829565b306001600160a01b038416036110495760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f74207769746864726177206e617469766520746f6b656e000000006044820152606401610965565b7f0000000000000000000000002ca150c206bbafcd5350133c5fad1f2d49a2298d6001600160a01b0316836001600160a01b0316036110d557601854611093906302932e0061290b565b42116110d55760405162461bcd60e51b81526020600482015260116024820152702637b1b5b2b2103337b91018903cb2b0b960791b6044820152606401610965565b81600003611148576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611121573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611145919061291e565b91505b604080516001600160a01b0385168152602081018490527f960427a4fde284dcc8da2c51a43d210cfd7ed6f4328a24ba33eee49910db564b910160405180910390a160405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d739190612937565b6000546001600160a01b031633146112255760405162461bcd60e51b8152600401610965906128d8565b6001600160a01b0382166112905760405162461bcd60e51b815260206004820152602c60248201527f4d61726b6574696e672066656520616464726573732063616e6e6f742062652060448201526b7a65726f206164647265737360a01b6064820152608401610965565b6001600160a01b0381166112f95760405162461bcd60e51b815260206004820152602a60248201527f6275796261636b2066656520616464726573732063616e6e6f74206265207a65604482015269726f206164647265737360b01b6064820152608401610965565b601280546001600160a01b038481166001600160a01b03199283168117909355601380549185169190921681179091556040805192835260208301919091527ff3b718cd51f62e3836535bffd8f429a3f80d9d4442d89b72beee94069ed1fa3891015b60405180910390a15050565b6000610d7333848461179a565b6000546001600160a01b0316331461139f5760405162461bcd60e51b8152600401610965906128d8565b6001600160a01b038116600081815260016020818152604092839020805460ff19168317905582519384528301527fb6a1709218b158ea8591fc9269b88652f1c908dc68a79faa865c745a770b950591015b60405180910390a150565b61140533611742565b6114215760405162461bcd60e51b815260040161096590612829565b600254600481905560038190556040519081527fa69fa556bf940aa0c695b9c8e1b229fdb1476830e2025e44da1028e0c1458d4a9060200160405180910390a17f365a2bb07537fddd750e9ac8d56970e584f83a144bb5225e77491b83bccd1183600354604051610cae91815260200190565b6000546001600160a01b031633146114be5760405162461bcd60e51b8152600401610965906128d8565b6114ca6012600a612a38565b6114d5906001612a47565b8110156115245760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206973206c657373207468616e206f6e6520746f6b656e0000006044820152606401610965565b600a6002546115339190612a5e565b81106115735760405162461bcd60e51b815260206004820152600f60248201526e082dadeeadce840e8dede40d0d2ced608b1b6044820152606401610965565b6019805460ff1916831515908117909155601a8290556040805183815260ff909216151560208301527f34c2d4c263b6f41223c6d30ae2e7bcb18629892587e0a4138f57ba2c523953d0910161135c565b6000546001600160a01b031633146115ee5760405162461bcd60e51b8152600401610965906128d8565b600a849055600b839055600c829055600d819055808261160e858761290b565b611618919061290b565b611622919061290b565b600e55610a68611b3e565b6000546001600160a01b031633146116575760405162461bcd60e51b8152600401610965906128d8565b6000546001600160a01b03908116908216036116b55760405162461bcd60e51b815260206004820152601a60248201527f4f574e45522063616e7420626520756e617574686f72697a65640000000000006044820152606401610965565b6001600160a01b0381166000818152600160209081526040808320805460ff191690558051938452908301919091527fb6a1709218b158ea8591fc9269b88652f1c908dc68a79faa865c745a770b950591016113f1565b6000546001600160a01b031633146117365760405162461bcd60e51b8152600401610965906128d8565b61173f81611daa565b50565b6001600160a01b031660009081526001602052604090205460ff1690565b600081848411156117845760405162461bcd60e51b8152600401610965919061268f565b50600061179184866128f8565b95945050505050565b601b5460009060ff16156117ba576117b3848484611e18565b9050610d73565b6001600160a01b03841660009081526001602052604090205460ff161580156117fc57506001600160a01b03831660009081526001602052604090205460ff16155b1561184a5760175460ff1661184a5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610965565b6001600160a01b03841660009081526001602052604090205460ff1615801561188c57506001600160a01b03841660009081526009602052604090205460ff16155b80156118b157506001600160a01b03831660009081526009602052604090205460ff16155b80156118ef57507f0000000000000000000000002ca150c206bbafcd5350133c5fad1f2d49a2298d6001600160a01b0316836001600160a01b031614155b15611969576004546001600160a01b03841660009081526005602052604090205461191b90849061290b565b11156119695760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d6974207265616368656400000000000000006044820152606401610965565b6003548211158061199257506001600160a01b03841660009081526008602052604090205460ff165b806119b557506001600160a01b03831660009081526008602052604090205460ff165b6119f95760405162461bcd60e51b815260206004820152601560248201527413585e08151608131a5b5a5d08115e18d959591959605a1b6044820152606401610965565b611a01611eec565b15611a0e57611a0e611f58565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260059091529190912054611a60918490611760565b6001600160a01b038516600090815260056020908152604080832093909355600790529081205460ff1680611aad57506001600160a01b03841660009081526007602052604090205460ff165b611ac157611abc8584866122ac565b611ac3565b825b6001600160a01b038516600090815260056020526040902054909150611ae99082612468565b6001600160a01b038086166000818152600560205260409081902093909355915190871690600080516020612b2083398151915290611b2b9085815260200190565b60405180910390a3506001949350505050565b6096611b626064611b5c601054600e546124c790919063ffffffff16565b90612549565b1115611bb05760405162461bcd60e51b815260206004820152601f60248201527f427579207461782063616e6e6f74206265206d6f7265207468616e20313525006044820152606401610965565b6096611bce6064611b5c600f54600e546124c790919063ffffffff16565b1115611c1c5760405162461bcd60e51b815260206004820181905260248201527f53656c6c207461782063616e6e6f74206265206d6f7265207468616e203135256044820152606401610965565b60c8611c3f6064611b5c601054600f54611c36919061290b565b600e54906124c7565b1115611c995760405162461bcd60e51b8152602060048201526024808201527f4275792b53656c6c207461782063616e6e6f74206265206d6f7265207468616e6044820152632032302560e01b6064820152608401610965565b6064611cb76064611b5c601154600e546124c790919063ffffffff16565b1115611d115760405162461bcd60e51b8152602060048201526024808201527f5472616e73666572205461782063616e6e6f74206265206d6f7265207468616e6044820152632031302560e01b6064820152608401610965565b7f375884ed7f92283ee74d8884b39a803f4aee832b15766fe016b74fc791fc2ada611d4e6064611b5c601054600e546124c790919063ffffffff16565b611d6a6064611b5c600f54600e546124c790919063ffffffff16565b611d866064611b5c601154600e546124c790919063ffffffff16565b6040805160ff94851681529284166020840152921691810191909152606001610cae565b6001600160a01b038116611dbd57600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600590915291822054611e69918490611760565b6001600160a01b038086166000908152600560205260408082209390935590851681522054611e989083612468565b6001600160a01b038085166000818152600560205260409081902093909355915190861690600080516020612b2083398151915290611eda9086815260200190565b60405180910390a35060019392505050565b6000336001600160a01b037f0000000000000000000000002ca150c206bbafcd5350133c5fad1f2d49a2298d1614801590611f2a5750601b5460ff16155b8015611f38575060195460ff165b8015610de5575050601a5430600090815260056020526040902054101590565b601b805460ff19166001179055600d54600e54600091611f77916128f8565b905080600003611f85575060015b6000611f92826002612a47565b600a54601a54611fa29190612a47565b611fac9190612a5e565b9050600081601a54611fbe91906128f8565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611ff857611ff8612893565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061204c5761204c612893565b6001600160a01b03928316602091820292909201015260145460405163791ac94760e01b815291169063791ac94790612092908590600090869030904290600401612a80565b600060405180830381600087803b1580156120ac57600080fd5b505af11580156120c0573d6000803e3d6000fd5b5050600a544792506120d59150600290612a5e565b6120df90866128f8565b9450846000036120ee57600194505b60006120fb866002612a47565b600a546121089084612a47565b6121129190612a5e565b9050600086600b54846121259190612a47565b61212f9190612a5e565b9050600087600c54856121429190612a47565b61214c9190612a5e565b6012546040519192506001600160a01b03169083156108fc029084906000818181858888f19350505050158015612187573d6000803e3d6000fd5b506013546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156121c2573d6000803e3d6000fd5b5086156122985760145460405163f305d71960e01b81523060048201819052602482018a9052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990859060c40160606040518083038185885af1158015612236573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061225b9190612af1565b505060408051858152602081018a90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050601b805460ff19169055505050505050565b60008215806122bb5750600e54155b156122c7575081610d73565b6011546001600160a01b037f0000000000000000000000002ca150c206bbafcd5350133c5fad1f2d49a2298d8116908416036123065750600f54612344565b7f0000000000000000000000002ca150c206bbafcd5350133c5fad1f2d49a2298d6001600160a01b0316856001600160a01b03160361234457506010545b60006123756123566103e86064612a47565b611b5c8461236f600e548a6124c790919063ffffffff16565b906124c7565b90506000612394600e54611b5c600d54856124c790919063ffffffff16565b905060006123a2838361258b565b9050801561240c57306000908152600560205260409020546123c49082612468565b30600081815260056020526040908190209290925590516001600160a01b038a1690600080516020612b20833981519152906124039085815260200190565b60405180910390a35b81156124525760025461241f908361258b565b6002556040518281526000906001600160a01b038a1690600080516020612b208339815191529060200160405180910390a35b61245c878461258b565b98975050505050505050565b600080612475838561290b565b905083811015610d735760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610965565b6000826000036124d957506000610bf4565b60006124e58385612a47565b9050826124f28583612a5e565b14610d735760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610965565b6000610d7383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125cd565b6000610d7383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611760565b600081836125ee5760405162461bcd60e51b8152600401610965919061268f565b5060006117918486612a5e565b801515811461173f57600080fd5b60008060006040848603121561261e57600080fd5b833567ffffffffffffffff8082111561263657600080fd5b818601915086601f83011261264a57600080fd5b81358181111561265957600080fd5b8760208260051b850101111561266e57600080fd5b60209283019550935050840135612684816125fb565b809150509250925092565b600060208083528351808285015260005b818110156126bc578581018301518582016040015282016126a0565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146126f457600080fd5b919050565b6000806040838503121561270c57600080fd5b612715836126dd565b946020939093013593505050565b60008060006060848603121561273857600080fd5b612741846126dd565b925061274f602085016126dd565b9150604084013590509250925092565b60006020828403121561277157600080fd5b610d73826126dd565b60008060006060848603121561278f57600080fd5b505081359360208301359350604090920135919050565b600080604083850312156127b957600080fd5b6127c2836126dd565b91506127d0602084016126dd565b90509250929050565b600080604083850312156127ec57600080fd5b8235612715816125fb565b6000806000806080858703121561280d57600080fd5b5050823594602084013594506040840135936060013592509050565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b60208082526025908201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604082015264657373657360d81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016128d1576128d16128a9565b5060010190565b60208082526006908201526510a7aba722a960d11b604082015260600190565b81810381811115610bf457610bf46128a9565b80820180821115610bf457610bf46128a9565b60006020828403121561293057600080fd5b5051919050565b60006020828403121561294957600080fd5b8151610d73816125fb565b600181815b8085111561298f578160001904821115612975576129756128a9565b8085161561298257918102915b93841c9390800290612959565b509250929050565b6000826129a657506001610bf4565b816129b357506000610bf4565b81600181146129c957600281146129d3576129ef565b6001915050610bf4565b60ff8411156129e4576129e46128a9565b50506001821b610bf4565b5060208310610133831016604e8410600b8410161715612a12575081810a610bf4565b612a1c8383612954565b8060001904821115612a3057612a306128a9565b029392505050565b6000610d7360ff841683612997565b8082028115828204841417610bf457610bf46128a9565b600082612a7b57634e487b7160e01b600052601260045260246000fd5b500490565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612ad05784516001600160a01b031683529383019391830191600101612aab565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612b0657600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122048397c3ad20790e50b66fb05c6ce8bac952c9294327a25359de518943cb4f4ec64736f6c63430008130033

Deployed Bytecode Sourcemap

5468:15336:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16685:373;;;;;;;;;;-1:-1:-1;16685:373:0;;;;;:::i;:::-;;:::i;:::-;;15956:353;;;;;;;;;;-1:-1:-1;15956:353:0;;;;;:::i;:::-;;:::i;7079:50::-;;;;;;;;;;;;;;;;;;;1038:25:1;;;1026:2;1011:18;7079:50:0;;;;;;;;8514:80;;;;;;;;;;-1:-1:-1;8586:5:0;;;;;;;;;;;;-1:-1:-1;;;8586:5:0;;;;8514:80;;;;;;;:::i;8822:216::-;;;;;;;;;;-1:-1:-1;8822:216:0;;;;;:::i;:::-;;:::i;:::-;;;2229:14:1;;2222:22;2204:41;;2192:2;2177:18;8822:216:0;2064:187:1;13957:224:0;;;;;;;;;;;;;:::i;6544:45::-;;;;;;;;;;;;6585:4;6544:45;;8244:88;;;;;;;;;;-1:-1:-1;8317:12:0;;8244:88;;6461:76;;;;;;;;;;;;;;;;9340:370;;;;;;;;;;-1:-1:-1;9340:370:0;;;;;:::i;:::-;;:::i;19261:138::-;;;;;;;;;;;;;:::i;3265:103::-;;;;;;;;;;-1:-1:-1;3265:103:0;;;;;:::i;:::-;3320:4;3355:5;-1:-1:-1;;;;;3344:16:0;;;3355:5;;3344:16;;3265:103;8338:80;;;;;;;;;;-1:-1:-1;8338:80:0;;5827:2;2922:36:1;;2910:2;2895:18;8338:80:0;2780:184:1;6392:29:0;;;;;;;;;;;;;;;;5838:55;;;;;;;;;;;;;;;;6149:44;;;;;;;;;;-1:-1:-1;6149:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16317:360;;;;;;;;;;-1:-1:-1;16317:360:0;;;;;:::i;:::-;;:::i;6860:31::-;;;;;;;;;;-1:-1:-1;6860:31:0;;;;-1:-1:-1;;;;;6860:31:0;;;;;;-1:-1:-1;;;;;3152:32:1;;;3134:51;;3122:2;3107:18;6860:31:0;2969:222:1;9046:122:0;;;;;;;;;;-1:-1:-1;9046:122:0;;;;;:::i;:::-;;:::i;6898:23::-;;;;;;;;;;;;;;;;6354:31;;;;;;;;;;;;;;;;17749:225;;;;;;;;;;-1:-1:-1;17749:225:0;;;;;:::i;:::-;;:::i;7042:30::-;;;;;;;;;;-1:-1:-1;7042:30:0;;;;;;;;6027:45;;;;;;;;;;-1:-1:-1;6027:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;3491:124;;;;;;;;;;;;;:::i;13378:548::-;;;;;;;;;;-1:-1:-1;13378:548:0;;;;;:::i;:::-;;:::i;5962:50::-;;;;;;;;;;;;;;;;5902:47;;;;;;;;;;;;;;;;6749:33;;;;;;;;;;-1:-1:-1;6749:33:0;;;;-1:-1:-1;;;;;6749:33:0;;;8597:78;;;;;;;;;;-1:-1:-1;8649:7:0;8667:5;-1:-1:-1;;;;;8667:5:0;8597:78;;6200:48;;;;;;;;;;-1:-1:-1;6200:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8424:84;;;;;;;;;;-1:-1:-1;8498:7:0;;;;;;;;;;;;-1:-1:-1;;;8498:7:0;;;;8424:84;;6316:31;;;;;;;;;;;;;;;;18381:491;;;;;;;;;;-1:-1:-1;18381:491:0;;;;;:::i;:::-;;:::i;6822:29::-;;;;;;;;;;;;;;;9176:156;;;;;;;;;;-1:-1:-1;9176:156:0;;;;;:::i;:::-;;:::i;2907:138::-;;;;;;;;;;-1:-1:-1;2907:138:0;;;;;:::i;:::-;;:::i;7008:25::-;;;;;;;;;;;;;;;;6255:52;;;;;;;;;;-1:-1:-1;6255:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10375:241;;;;;;;;;;;;;:::i;8681:133::-;;;;;;;;;;-1:-1:-1;8681:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;8783:19:0;;;8765:7;8783:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;8681:133;18880:369;;;;;;;;;;-1:-1:-1;18880:369:0;;;;;:::i;:::-;;:::i;6707:35::-;;;;;;;;;;-1:-1:-1;6707:35:0;;;;-1:-1:-1;;;;;6707:35:0;;;17982:391;;;;;;;;;;-1:-1:-1;17982:391:0;;;;;:::i;:::-;;:::i;3053:204::-;;;;;;;;;;-1:-1:-1;3053:204:0;;;;;:::i;:::-;;:::i;3623:109::-;;;;;;;;;;-1:-1:-1;3623:109:0;;;;;:::i;:::-;;:::i;6791:24::-;;;;;;;;;;-1:-1:-1;6791:24:0;;;;-1:-1:-1;;;;;6791:24:0;;;6428:26;;;;;;;;;;;;;;;;3376:107;;;;;;;;;;-1:-1:-1;3376:107:0;;;;;:::i;:::-;;:::i;6930:31::-;;;;;;;;;;-1:-1:-1;6930:31:0;;;;;;;;16685:373;2848:24;2861:10;2848:12;:24::i;:::-;2840:48;;;;-1:-1:-1;;;2840:48:0;;;;;;;:::i;:::-;;;;;;;;;16820:3:::1;16801:22:::0;::::1;16793:71;;;;-1:-1:-1::0;;;16793:71:0::1;;;;;;;:::i;:::-;16880:9;16875:176;16893:20:::0;;::::1;16875:176;;;16971:6;16935:19;:33;16955:9;;16965:1;16955:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16935:33:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;16935:33:0;:42;;-1:-1:-1;;16935:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16997::::1;17018:9:::0;;17028:1;17018:12;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;16997:42;::::0;;-1:-1:-1;;;;;5984:32:1;;;5966:51;;6060:14;;6053:22;6048:2;6033:18;;6026:50;5939:18;16997:42:0::1;;;;;;;16915:3;::::0;::::1;:::i;:::-;;;16875:176;;;;16685:373:::0;;;:::o;15956:353::-;2848:24;2861:10;2848:12;:24::i;:::-;2840:48;;;;-1:-1:-1;;;2840:48:0;;;;;;;:::i;:::-;16083:3:::1;16064:22:::0;::::1;16056:71;;;;-1:-1:-1::0;;;16056:71:0::1;;;;;;;:::i;:::-;16143:9;16138:164;16156:20:::0;;::::1;16138:164;;;16226:6;16198:11;:25;16210:9;;16220:1;16210:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16198:25:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;16198:25:0;:34;;-1:-1:-1;;16198:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16252:38:::1;16269:9:::0;;16279:1;16269:12;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;16252:38;::::0;;-1:-1:-1;;;;;5984:32:1;;;5966:51;;6060:14;;6053:22;6048:2;6033:18;;6026:50;5939:18;16252:38:0::1;;;;;;;16178:3;::::0;::::1;:::i;:::-;;;16138:164;;8822:216:::0;8926:10;8897:4;8914:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;8914:32:0;;;;;;;;;;:41;;;8971:37;8897:4;;8914:32;;8971:37;;;;8949:6;1038:25:1;;1026:2;1011:18;;892:177;8971:37:0;;;;;;;;-1:-1:-1;9026:4:0;8822:216;;;;;:::o;13957:224::-;3320:4;3355:5;-1:-1:-1;;;;;3355:5:0;2766:10;3344:16;2750:38;;;;-1:-1:-1;;;2750:38:0;;;;;;;:::i;:::-;14021:11:::1;::::0;::::1;;14020:12;14012:44;;;::::0;-1:-1:-1;;;14012:44:0;;6895:2:1;14012:44:0::1;::::0;::::1;6877:21:1::0;6934:2;6914:18;;;6907:30;-1:-1:-1;;;6953:18:1;;;6946:50;7013:18;;14012:44:0::1;6693:344:1::0;14012:44:0::1;14067:11;:18:::0;;-1:-1:-1;;14067:18:0::1;14081:4;14067:18:::0;;::::1;::::0;;;14109:15:::1;14096:10;:28:::0;14140:33:::1;::::0;2204:41:1;;;14140:33:0::1;::::0;2192:2:1;2177:18;14140:33:0::1;;;;;;;;13957:224::o:0;9340:370::-;-1:-1:-1;;;;;9460:19:0;;9440:4;9460:19;;;:11;:19;;;;;;;;9480:10;9460:31;;;;;;;;-1:-1:-1;;9460:52:0;9457:186;;9562:69;;;;;;;;;;;-1:-1:-1;;;9562:69:0;;;;;;;;-1:-1:-1;;;;;9562:19:0;;-1:-1:-1;9562:19:0;;;:11;:19;;;;;9582:10;9562:31;;;;;;;;;;:69;;9598:6;;9562:35;:69::i;:::-;-1:-1:-1;;;;;9528:19:0;;;;;;:11;:19;;;;;;;;9548:10;9528:31;;;;;;;:103;9457:186;9662:40;9676:6;9684:9;9695:6;9662:13;:40::i;:::-;9655:47;;9340:370;;;;;;:::o;19261:138::-;19375:9;:15;;;;5596:42;19314:7;19357:15;;;;;19342:12;;19314:7;;19375:15;19342:30;;19357:15;19342:30;:::i;:::-;:48;;;;:::i;:::-;19334:57;;19261:138;:::o;16317:360::-;2848:24;2861:10;2848:12;:24::i;:::-;2840:48;;;;-1:-1:-1;;;2840:48:0;;;;;;;:::i;:::-;16448:3:::1;16429:22:::0;::::1;16421:71;;;;-1:-1:-1::0;;;16421:71:0::1;;;;;;;:::i;:::-;16508:9;16503:167;16521:20:::0;;::::1;16503:167;;;16595:6;16563:15;:29;16579:9;;16589:1;16579:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16563:29:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;16563:29:0;:38;;-1:-1:-1;;16563:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16621:37:::1;16637:9:::0;;16647:1;16637:12;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;16621:37;::::0;;-1:-1:-1;;;;;5984:32:1;;;5966:51;;6060:14;;6053:22;6048:2;6033:18;;6026:50;5939:18;16621:37:0::1;;;;;;;16543:3;::::0;::::1;:::i;:::-;;;16503:167;;9046:122:::0;9101:4;9125:35;9133:7;-1:-1:-1;;9125:7:0;:35::i;17749:225::-;2848:24;2861:10;2848:12;:24::i;:::-;2840:48;;;;-1:-1:-1;;;2840:48:0;;;;;;;:::i;:::-;17849:14:::1;:22:::0;;;17882:13:::1;:20:::0;;;17913:18:::1;:27:::0;;;17953:13:::1;:11;:13::i;:::-;17749:225:::0;;;:::o;3491:124::-;3320:4;3355:5;-1:-1:-1;;;;;3355:5:0;2766:10;3344:16;2750:38;;;;-1:-1:-1;;;2750:38:0;;;;;;;:::i;:::-;3572:5:::1;::::0;;3553:25:::1;::::0;-1:-1:-1;;;;;3572:5:0;;::::1;::::0;3553:25:::1;::::0;::::1;3605:1;3589:18:::0;;-1:-1:-1;;;;;;3589:18:0::1;::::0;;3491:124::o;13378:548::-;13470:12;2848:24;2861:10;2848:12;:24::i;:::-;2840:48;;;;-1:-1:-1;;;2840:48:0;;;;;;;:::i;:::-;13527:4:::1;-1:-1:-1::0;;;;;13503:29:0;::::1;::::0;13495:69:::1;;;::::0;-1:-1:-1;;;13495:69:0;;7377:2:1;13495:69:0::1;::::0;::::1;7359:21:1::0;7416:2;7396:18;;;7389:30;7455;7435:18;;;7428:58;7503:18;;13495:69:0::1;7175:352:1::0;13495:69:0::1;13594:4;-1:-1:-1::0;;;;;13578:20:0::1;:12;-1:-1:-1::0;;;;;13578:20:0::1;::::0;13575:119:::1;;13640:10;::::0;:21:::1;::::0;13653:8:::1;13640:21;:::i;:::-;13622:15;:39;13614:68;;;::::0;-1:-1:-1;;;13614:68:0;;7864:2:1;13614:68:0::1;::::0;::::1;7846:21:1::0;7903:2;7883:18;;;7876:30;-1:-1:-1;;;7922:18:1;;;7915:47;7979:18;;13614:68:0::1;7662:341:1::0;13614:68:0::1;13709:6;13719:1;13709:11:::0;13706:95:::1;;13745:44;::::0;-1:-1:-1;;;13745:44:0;;13783:4:::1;13745:44;::::0;::::1;3134:51:1::0;-1:-1:-1;;;;;13745:29:0;::::1;::::0;::::1;::::0;3107:18:1;;13745:44:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13736:53;;13706:95;13818:32;::::0;;-1:-1:-1;;;;;8389:32:1;;8371:51;;8453:2;8438:18;;8431:34;;;13818:32:0::1;::::0;8344:18:1;13818:32:0::1;;;;;;;13870:48;::::0;-1:-1:-1;;;13870:48:0;;13899:10:::1;13870:48;::::0;::::1;8371:51:1::0;8438:18;;;8431:34;;;-1:-1:-1;;;;;13870:28:0;::::1;::::0;::::1;::::0;8344:18:1;;13870:48:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;18381:491::-:0;3320:4;3355:5;-1:-1:-1;;;;;3355:5:0;2766:10;3344:16;2750:38;;;;-1:-1:-1;;;2750:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18504:35:0;::::1;18496:91;;;::::0;-1:-1:-1;;;18496:91:0;;8928:2:1;18496:91:0::1;::::0;::::1;8910:21:1::0;8967:2;8947:18;;;8940:30;9006:34;8986:18;;;8979:62;-1:-1:-1;;;9057:18:1;;;9050:42;9109:19;;18496:91:0::1;8726:408:1::0;18496:91:0::1;-1:-1:-1::0;;;;;18606:33:0;::::1;18598:87;;;::::0;-1:-1:-1;;;18598:87:0;;9341:2:1;18598:87:0::1;::::0;::::1;9323:21:1::0;9380:2;9360:18;;;9353:30;9419:34;9399:18;;;9392:62;-1:-1:-1;;;9470:18:1;;;9463:40;9520:19;;18598:87:0::1;9139:406:1::0;18598:87:0::1;18698:20;:44:::0;;-1:-1:-1;;;;;18698:44:0;;::::1;-1:-1:-1::0;;;;;;18698:44:0;;::::1;::::0;::::1;::::0;;;18753:18:::1;:40:::0;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;18811:53:::1;::::0;;9762:34:1;;;9827:2;9812:18;;9805:43;;;;18811:53:0::1;::::0;9697:18:1;18811:53:0::1;;;;;;;;18381:491:::0;;:::o;9176:156::-;9256:4;9280:44;9294:10;9306:9;9317:6;9280:13;:44::i;2907:138::-;3320:4;3355:5;-1:-1:-1;;;;;3355:5:0;2766:10;3344:16;2750:38;;;;-1:-1:-1;;;2750:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2969:19:0;::::1;;::::0;;;2991:4:::1;2969:19;::::0;;;;;;;;:26;;-1:-1:-1;;2969:26:0::1;::::0;::::1;::::0;;3011;;5966:51:1;;;6033:18;;6026:50;3011:26:0::1;::::0;5939:18:1;3011:26:0::1;;;;;;;;2907:138:::0;:::o;10375:241::-;2848:24;2861:10;2848:12;:24::i;:::-;2840:48;;;;-1:-1:-1;;;2840:48:0;;;;;;;:::i;:::-;10456:12:::1;::::0;10438:15:::1;:30:::0;;;10479:12:::1;:27:::0;;;10524:33:::1;::::0;1038:25:1;;;10524:33:0::1;::::0;1026:2:1;1011:18;10524:33:0::1;;;;;;;10573:35;10595:12;;10573:35;;;;1038:25:1::0;;1026:2;1011:18;;892:177;18880:369:0;3320:4;3355:5;-1:-1:-1;;;;;3355:5:0;2766:10;3344:16;2750:38;;;;-1:-1:-1;;;2750:38:0;;;;;;;:::i;:::-;18994:13:::1;5827:2;18994;:13;:::i;:::-;18990:17;::::0;:1:::1;:17;:::i;:::-;18979:7;:28;;18971:70;;;::::0;-1:-1:-1;;;18971:70:0;;11617:2:1;18971:70:0::1;::::0;::::1;11599:21:1::0;11656:2;11636:18;;;11629:30;11695:31;11675:18;;;11668:59;11744:18;;18971:70:0::1;11415:353:1::0;18971:70:0::1;19084:2;19071:12;;:15;;;;:::i;:::-;19060:7;:27;19052:55;;;::::0;-1:-1:-1;;;19052:55:0;;12197:2:1;19052:55:0::1;::::0;::::1;12179:21:1::0;12236:2;12216:18;;;12209:30;-1:-1:-1;;;12255:18:1;;;12248:45;12310:18;;19052:55:0::1;11995:339:1::0;19052:55:0::1;19120:11;:22:::0;;-1:-1:-1;;19120:22:0::1;::::0;::::1;;::::0;;::::1;::::0;;;19153:13:::1;:23:::0;;;19194:47:::1;::::0;;12507:25:1;;;19120:22:0::1;19229:11:::0;;;12575:14:1;12568:22;12563:2;12548:18;;12541:50;19194:47:0::1;::::0;12480:18:1;19194:47:0::1;12339:258:1::0;17982:391:0;3320:4;3355:5;-1:-1:-1;;;;;3355:5:0;2766:10;3344:16;2750:38;;;;-1:-1:-1;;;2750:38:0;;;;;;;:::i;:::-;18124:12:::1;:28:::0;;;18163:12:::1;:28:::0;;;18202:10:::1;:24:::0;;;18237:7:::1;:18:::0;;;18247:8;18215:11;18277:29:::1;18178:13:::0;18139;18277:29:::1;:::i;:::-;:43;;;;:::i;:::-;:54;;;;:::i;:::-;18266:8;:65:::0;18352:13:::1;:11;:13::i;3053:204::-:0;3320:4;3355:5;-1:-1:-1;;;;;3355:5:0;2766:10;3344:16;2750:38;;;;-1:-1:-1;;;2750:38:0;;;;;;;:::i;:::-;3132:5:::1;::::0;-1:-1:-1;;;;;3132:5:0;;::::1;3125:12:::0;;::::1;::::0;3117:51:::1;;;::::0;-1:-1:-1;;;3117:51:0;;12804:2:1;3117:51:0::1;::::0;::::1;12786:21:1::0;12843:2;12823:18;;;12816:30;12882:28;12862:18;;;12855:56;12928:18;;3117:51:0::1;12602:350:1::0;3117:51:0::1;-1:-1:-1::0;;;;;3179:19:0;::::1;3201:5;3179:19:::0;;;:14:::1;:19;::::0;;;;;;;:27;;-1:-1:-1;;3179:27:0::1;::::0;;3222;;5966:51:1;;;6033:18;;;6026:50;;;;3222:27:0::1;::::0;5939:18:1;3222:27:0::1;5798:284:1::0;3623:109:0;3320:4;3355:5;-1:-1:-1;;;;;3355:5:0;2766:10;3344:16;2750:38;;;;-1:-1:-1;;;2750:38:0;;;;;;;:::i;:::-;3696:28:::1;3715:8;3696:18;:28::i;:::-;3623:109:::0;:::o;3376:107::-;-1:-1:-1;;;;;3456:19:0;3432:4;3456:19;;;:14;:19;;;;;;;;;3376:107::o;510:192::-;596:7;632:12;624:6;;;;616:29;;;;-1:-1:-1;;;616:29:0;;;;;;;;:::i;:::-;-1:-1:-1;656:9:0;668:5;672:1;668;:5;:::i;:::-;656:17;510:192;-1:-1:-1;;;;;510:192:0:o;10626:1158::-;10738:6;;10718:4;;10738:6;;10735:63;;;10754:41;10769:6;10777:9;10788:6;10754:14;:41::i;:::-;10747:48;;;;10735:63;-1:-1:-1;;;;;10814:22:0;;;;;;:14;:22;;;;;;;;10813:23;:53;;;;-1:-1:-1;;;;;;10841:25:0;;;;;;:14;:25;;;;;;;;10840:26;10813:53;10810:127;;;10890:11;;;;10882:43;;;;-1:-1:-1;;;10882:43:0;;13159:2:1;10882:43:0;;;13141:21:1;13198:2;13178:18;;;13171:30;-1:-1:-1;;;13217:18:1;;;13210:50;13277:18;;10882:43:0;12957:344:1;10882:43:0;-1:-1:-1;;;;;10954:22:0;;;;;;:14;:22;;;;;;;;10953:23;:55;;;;-1:-1:-1;;;;;;10981:27:0;;;;;;:19;:27;;;;;;;;10980:28;10953:55;:90;;;;-1:-1:-1;;;;;;11013:30:0;;;;;;:19;:30;;;;;;;;11012:31;10953:90;:111;;;;;11060:4;-1:-1:-1;;;;;11047:17:0;:9;-1:-1:-1;;;;;11047:17:0;;;10953:111;10949:230;;;11124:15;;-1:-1:-1;;;;;11090:20:0;;;;;;:9;:20;;;;;;:29;;11113:6;;11090:29;:::i;:::-;11089:50;;11081:86;;;;-1:-1:-1;;;11081:86:0;;13508:2:1;11081:86:0;;;13490:21:1;13547:2;13527:18;;;13520:30;13586:26;13566:18;;;13559:54;13630:18;;11081:86:0;13306:348:1;11081:86:0;11255:12;;11245:6;:22;;11244:51;;;-1:-1:-1;;;;;;11272:23:0;;;;;;:15;:23;;;;;;;;11244:51;:81;;;-1:-1:-1;;;;;;11299:26:0;;;;;;:15;:26;;;;;;;;11244:81;11236:115;;;;-1:-1:-1;;;11236:115:0;;13861:2:1;11236:115:0;;;13843:21:1;13900:2;13880:18;;;13873:30;-1:-1:-1;;;13919:18:1;;;13912:51;13980:18;;11236:115:0;13659:345:1;11236:115:0;11367:16;:14;:16::i;:::-;11364:35;;;11386:10;:8;:10::i;:::-;11431:53;;;;;;;;;;;-1:-1:-1;;;11431:53:0;;;;;;;;-1:-1:-1;;;;;11431:17:0;;-1:-1:-1;11431:17:0;;;:9;:17;;;;;;;;:53;;11453:6;;11431:21;:53::i;:::-;-1:-1:-1;;;;;11411:17:0;;;;;;:9;:17;;;;;;;;:73;;;;11523:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;11546:22:0;;;;;;:11;:22;;;;;;;;11523:45;11522:93;;11581:34;11589:6;11597;11605:9;11581:7;:34::i;:::-;11522:93;;;11572:6;11522:93;-1:-1:-1;;;;;11651:20:0;;;;;;:9;:20;;;;;;11497:118;;-1:-1:-1;11651:40:0;;11497:118;11651:24;:40::i;:::-;-1:-1:-1;;;;;11628:20:0;;;;;;;:9;:20;;;;;;;:63;;;;11711:43;;;;;;-1:-1:-1;;;;;;;;;;;11711:43:0;;;11739:14;1038:25:1;;1026:2;1011:18;;892:177;11711:43:0;;;;;;;;-1:-1:-1;11772:4:0;;10626:1158;-1:-1:-1;;;;10626:1158:0:o;17066:675::-;17157:3;17117:36;17149:3;17117:27;17130:13;;17117:8;;:12;;:27;;;;:::i;:::-;:31;;:36::i;:::-;:43;;17109:87;;;;-1:-1:-1;;;17109:87:0;;14211:2:1;17109:87:0;;;14193:21:1;14250:2;14230:18;;;14223:30;14289:33;14269:18;;;14262:61;14340:18;;17109:87:0;14009:355:1;17109:87:0;17256:3;17215:37;17248:3;17215:28;17228:14;;17215:8;;:12;;:28;;;;:::i;:37::-;:44;;17207:89;;;;-1:-1:-1;;;17207:89:0;;14571:2:1;17207:89:0;;;14553:21:1;;;14590:18;;;14583:30;14649:34;14629:18;;;14622:62;14701:18;;17207:89:0;14369:356:1;17207:89:0;17372:3;17315:53;17364:3;17315:44;17345:13;;17328:14;;:30;;;;:::i;:::-;17315:8;;;:12;:44::i;:53::-;:60;;17307:109;;;;-1:-1:-1;;;17307:109:0;;14932:2:1;17307:109:0;;;14914:21:1;14971:2;14951:18;;;14944:30;15010:34;14990:18;;;14983:62;-1:-1:-1;;;15061:18:1;;;15054:34;15105:19;;17307:109:0;14730:400:1;17307:109:0;17480:3;17435:41;17472:3;17435:32;17448:18;;17435:8;;:12;;:32;;;;:::i;:41::-;:48;;17427:97;;;;-1:-1:-1;;;17427:97:0;;15337:2:1;17427:97:0;;;15319:21:1;15376:2;15356:18;;;15349:30;15415:34;15395:18;;;15388:62;-1:-1:-1;;;15466:18:1;;;15459:34;15510:19;;17427:97:0;15135:400:1;17427:97:0;17542:191;17559:36;17591:3;17559:27;17572:13;;17559:8;;:12;;:27;;;;:::i;:36::-;17617:37;17650:3;17617:28;17630:14;;17617:8;;:12;;:28;;;;:::i;:37::-;17676:41;17713:3;17676:32;17689:18;;17676:8;;:12;;:32;;;;:::i;:41::-;17542:191;;;15760:4:1;15748:17;;;15730:36;;15802:17;;;15797:2;15782:18;;15775:45;15856:17;;15836:18;;;15829:45;;;;15718:2;15703:18;17542:191:0;15540:340:1;3740:185:0;-1:-1:-1;;;;;3814:22:0;;3806:31;;;;;;3874:5;;;3853:37;;-1:-1:-1;;;;;3853:37:0;;;;3874:5;;;3853:37;;;3901:5;:16;;-1:-1:-1;;;;;;3901:16:0;-1:-1:-1;;;;;3901:16:0;;;;;;;;;;3740:185::o;11796:330::-;11926:53;;;;;;;;;;;-1:-1:-1;;;11926:53:0;;;;;;;;-1:-1:-1;;;;;11926:17:0;;11889:4;11926:17;;;:9;:17;;;;;;;:53;;11948:6;;11926:21;:53::i;:::-;-1:-1:-1;;;;;11906:17:0;;;;;;;:9;:17;;;;;;:73;;;;12013:20;;;;;;;:32;;12038:6;12013:24;:32::i;:::-;-1:-1:-1;;;;;11990:20:0;;;;;;;:9;:20;;;;;;;:55;;;;12061:35;;;;;;-1:-1:-1;;;;;;;;;;;12061:35:0;;;12089:6;1038:25:1;;1026:2;1011:18;;892:177;12061:35:0;;;;;;;;-1:-1:-1;12114:4:0;11796:330;;;;;:::o;13173:197::-;13222:4;13246:10;-1:-1:-1;;;;;13260:4:0;13246:18;;;;;:38;;-1:-1:-1;13278:6:0;;;;13277:7;13246:38;:62;;;;-1:-1:-1;13297:11:0;;;;13246:62;:116;;;;-1:-1:-1;;13349:13:0;;13339:4;13321:24;;;;:9;:24;;;;;;:41;;;13173:197::o;14373:1575::-;7176:6;:13;;-1:-1:-1;;7176:13:0;7185:4;7176:13;;;14457:7:::1;::::0;14446:8:::1;::::0;7176:6;;14446:18:::1;::::0;::::1;:::i;:::-;14424:40;;14480:11;14495:1;14480:16:::0;14477:63:::1;;-1:-1:-1::0;14527:1:0::1;14477:63;14552:23;14610:15;:11:::0;14624:1:::1;14610:15;:::i;:::-;14595:12;;14579:13;;:28;;;;:::i;:::-;14578:48;;;;:::i;:::-;14552:74;;14637:20;14676:15;14660:13;;:31;;;;:::i;:::-;14728:16;::::0;;14742:1:::1;14728:16:::0;;;;;::::1;::::0;;14637:54;;-1:-1:-1;14704:21:0::1;::::0;14728:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;14728:16:0::1;14704:40;;14773:4;14755;14760:1;14755:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;14755:23:0::1;;;-1:-1:-1::0;;;;;14755:23:0::1;;;::::0;::::1;14799:4;14789;14794:1;14789:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14789:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;14816:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;14816:188:0;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;14888:12;;14816:6:::1;::::0;14931:4;;14958::::1;::::0;14978:15:::1;::::0;14816:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;15101:12:0::1;::::0;15037:21:::1;::::0;-1:-1:-1;15101:16:0::1;::::0;-1:-1:-1;15116:1:0::1;::::0;15101:16:::1;:::i;:::-;15086:32;::::0;:11;:32:::1;:::i;:::-;15072:46;;15135:11;15150:1;15135:16:::0;15132:63:::1;;15182:1;15168:15;;15132:63;15207:26;15266:15;:11:::0;15280:1:::1;15266:15;:::i;:::-;15249:12;::::0;15237:24:::1;::::0;:9;:24:::1;:::i;:::-;15236:46;;;;:::i;:::-;15207:75;;15293:26;15351:11;15335:12;;15323:9;:24;;;;:::i;:::-;15322:40;;;;:::i;:::-;15293:69;;15373:24;15427:11;15413:10;;15401:9;:22;;;;:::i;:::-;15400:38;;;;:::i;:::-;15459:20;::::0;15451:58:::1;::::0;15373:65;;-1:-1:-1;;;;;;15459:20:0::1;::::0;15451:58;::::1;;;::::0;15490:18;;15459:20:::1;15451:58:::0;15459:20;15451:58;15490:18;15459:20;15451:58;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;15528:18:0::1;::::0;15520:54:::1;::::0;-1:-1:-1;;;;;15528:18:0;;::::1;::::0;15520:54;::::1;;;::::0;15557:16;;15528:18:::1;15520:54:::0;15528:18;15520:54;15557:16;15528:18;15520:54;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;15590:19:0;;15587:354:::1;;15625:6;::::0;:236:::1;::::0;-1:-1:-1;;;15625:236:0;;15701:4:::1;15625:236;::::0;::::1;17343:34:1::0;;;17393:18;;;17386:34;;;15625:6:0::1;17436:18:1::0;;;17429:34;;;17479:18;;;17472:34;17522:19;;;17515:44;15831:15:0::1;17575:19:1::0;;;17568:35;-1:-1:-1;;;;;15625:6:0;;::::1;::::0;:22:::1;::::0;15655:18;;17277:19:1;;15625:236:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;15881:48:0::1;::::0;;18099:25:1;;;18155:2;18140:18;;18133:34;;;15881:48:0::1;::::0;-1:-1:-1;18072:18:1;15881:48:0::1;;;;;;;15587:354;-1:-1:-1::0;;7194:6:0;:14;;-1:-1:-1;;7194:14:0;;;-1:-1:-1;;;;;;14373:1575:0:o;12134:1031::-;12220:7;12243:11;;;:28;;-1:-1:-1;12258:8:0;;:13;12243:28;12240:72;;;-1:-1:-1;12294:6:0;12287:13;;12240:72;12345:18;;-1:-1:-1;;;;;12392:4:0;12379:17;;;;;;12376:154;;-1:-1:-1;12426:14:0;;12376:154;;;12471:4;-1:-1:-1;;;;;12461:14:0;:6;-1:-1:-1;;;;;12461:14:0;;12458:72;;-1:-1:-1;12505:13:0;;12458:72;12542:17;12562:62;12603:20;6585:4;12620:3;12603:20;:::i;:::-;12562:36;12587:10;12562:20;12573:8;;12562:6;:10;;:20;;;;:::i;:::-;:24;;:36::i;:62::-;12542:82;;12635:18;12656:36;12683:8;;12656:22;12670:7;;12656:9;:13;;:22;;;;:::i;:36::-;12635:57;-1:-1:-1;12703:22:0;12728:25;:9;12635:57;12728:13;:25::i;:::-;12703:50;-1:-1:-1;12769:18:0;;12766:187;;12848:4;12830:24;;;;:9;:24;;;;;;:44;;12859:14;12830:28;:44::i;:::-;12821:4;12803:24;;;;:9;:24;;;;;;;:71;;;;12894:47;;-1:-1:-1;;;;;12894:47:0;;;-1:-1:-1;;;;;;;;;;;12894:47:0;;;12926:14;1038:25:1;;1026:2;1011:18;;892:177;12894:47:0;;;;;;;;12766:187;12976:14;;12973:144;;13021:12;;:28;;13038:10;13021:16;:28::i;:::-;13006:12;:43;13069:34;;1038:25:1;;;5669:42:0;;-1:-1:-1;;;;;13069:34:0;;;-1:-1:-1;;;;;;;;;;;13069:34:0;1026:2:1;1011:18;13069:34:0;;;;;;;12973:144;13136:21;:6;13147:9;13136:10;:21::i;:::-;13129:28;12134:1031;-1:-1:-1;;;;;;;;12134:1031:0:o;181:181::-;239:7;;271:5;275:1;271;:5;:::i;:::-;259:17;;300:1;295;:6;;287:46;;;;-1:-1:-1;;;287:46:0;;18380:2:1;287:46:0;;;18362:21:1;18419:2;18399:18;;;18392:30;18458:29;18438:18;;;18431:57;18505:18;;287:46:0;18178:351:1;708:250:0;766:7;790:1;795;790:6;786:47;;-1:-1:-1;820:1:0;813:8;;786:47;845:9;857:5;861:1;857;:5;:::i;:::-;845:17;-1:-1:-1;890:1:0;881:5;885:1;845:17;881:5;:::i;:::-;:10;873:56;;;;-1:-1:-1;;;873:56:0;;18736:2:1;873:56:0;;;18718:21:1;18775:2;18755:18;;;18748:30;18814:34;18794:18;;;18787:62;-1:-1:-1;;;18865:18:1;;;18858:31;18906:19;;873:56:0;18534:397:1;964:132:0;1022:7;1049:39;1053:1;1056;1049:39;;;;;;;;;;;;;;;;;:3;:39::i;368:136::-;426:7;453:43;457:1;460;453:43;;;;;;;;;;;;;;;;;:3;:43::i;1102:189::-;1188:7;1223:12;1216:5;1208:28;;;;-1:-1:-1;;;1208:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1247:9:0;1259:5;1263:1;1259;:5;:::i;14:118:1:-;100:5;93:13;86:21;79:5;76:32;66:60;;122:1;119;112:12;137:750;229:6;237;245;298:2;286:9;277:7;273:23;269:32;266:52;;;314:1;311;304:12;266:52;354:9;341:23;383:18;424:2;416:6;413:14;410:34;;;440:1;437;430:12;410:34;478:6;467:9;463:22;453:32;;523:7;516:4;512:2;508:13;504:27;494:55;;545:1;542;535:12;494:55;585:2;572:16;611:2;603:6;600:14;597:34;;;627:1;624;617:12;597:34;682:7;675:4;665:6;662:1;658:14;654:2;650:23;646:34;643:47;640:67;;;703:1;700;693:12;640:67;734:4;726:13;;;;-1:-1:-1;758:6:1;-1:-1:-1;;799:20:1;;786:34;829:28;786:34;829:28;:::i;:::-;876:5;866:15;;;137:750;;;;;:::o;1074:548::-;1186:4;1215:2;1244;1233:9;1226:21;1276:6;1270:13;1319:6;1314:2;1303:9;1299:18;1292:34;1344:1;1354:140;1368:6;1365:1;1362:13;1354:140;;;1463:14;;;1459:23;;1453:30;1429:17;;;1448:2;1425:26;1418:66;1383:10;;1354:140;;;1358:3;1543:1;1538:2;1529:6;1518:9;1514:22;1510:31;1503:42;1613:2;1606;1602:7;1597:2;1589:6;1585:15;1581:29;1570:9;1566:45;1562:54;1554:62;;;;1074:548;;;;:::o;1627:173::-;1695:20;;-1:-1:-1;;;;;1744:31:1;;1734:42;;1724:70;;1790:1;1787;1780:12;1724:70;1627:173;;;:::o;1805:254::-;1873:6;1881;1934:2;1922:9;1913:7;1909:23;1905:32;1902:52;;;1950:1;1947;1940:12;1902:52;1973:29;1992:9;1973:29;:::i;:::-;1963:39;2049:2;2034:18;;;;2021:32;;-1:-1:-1;;;1805:254:1:o;2256:328::-;2333:6;2341;2349;2402:2;2390:9;2381:7;2377:23;2373:32;2370:52;;;2418:1;2415;2408:12;2370:52;2441:29;2460:9;2441:29;:::i;:::-;2431:39;;2489:38;2523:2;2512:9;2508:18;2489:38;:::i;:::-;2479:48;;2574:2;2563:9;2559:18;2546:32;2536:42;;2256:328;;;;;:::o;2589:186::-;2648:6;2701:2;2689:9;2680:7;2676:23;2672:32;2669:52;;;2717:1;2714;2707:12;2669:52;2740:29;2759:9;2740:29;:::i;3196:316::-;3273:6;3281;3289;3342:2;3330:9;3321:7;3317:23;3313:32;3310:52;;;3358:1;3355;3348:12;3310:52;-1:-1:-1;;3381:23:1;;;3451:2;3436:18;;3423:32;;-1:-1:-1;3502:2:1;3487:18;;;3474:32;;3196:316;-1:-1:-1;3196:316:1:o;3725:260::-;3793:6;3801;3854:2;3842:9;3833:7;3829:23;3825:32;3822:52;;;3870:1;3867;3860:12;3822:52;3893:29;3912:9;3893:29;:::i;:::-;3883:39;;3941:38;3975:2;3964:9;3960:18;3941:38;:::i;:::-;3931:48;;3725:260;;;;;:::o;3990:309::-;4055:6;4063;4116:2;4104:9;4095:7;4091:23;4087:32;4084:52;;;4132:1;4129;4122:12;4084:52;4171:9;4158:23;4190:28;4212:5;4190:28;:::i;4304:385::-;4390:6;4398;4406;4414;4467:3;4455:9;4446:7;4442:23;4438:33;4435:53;;;4484:1;4481;4474:12;4435:53;-1:-1:-1;;4507:23:1;;;4577:2;4562:18;;4549:32;;-1:-1:-1;4628:2:1;4613:18;;4600:32;;4679:2;4664:18;4651:32;;-1:-1:-1;4304:385:1;-1:-1:-1;4304:385:1:o;4920:335::-;5122:2;5104:21;;;5161:2;5141:18;;;5134:30;-1:-1:-1;;;5195:2:1;5180:18;;5173:41;5246:2;5231:18;;4920:335::o;5260:401::-;5462:2;5444:21;;;5501:2;5481:18;;;5474:30;5540:34;5535:2;5520:18;;5513:62;-1:-1:-1;;;5606:2:1;5591:18;;5584:35;5651:3;5636:19;;5260:401::o;5666:127::-;5727:10;5722:3;5718:20;5715:1;5708:31;5758:4;5755:1;5748:15;5782:4;5779:1;5772:15;6087:127;6148:10;6143:3;6139:20;6136:1;6129:31;6179:4;6176:1;6169:15;6203:4;6200:1;6193:15;6219:135;6258:3;6279:17;;;6276:43;;6299:18;;:::i;:::-;-1:-1:-1;6346:1:1;6335:13;;6219:135::o;6359:329::-;6561:2;6543:21;;;6600:1;6580:18;;;6573:29;-1:-1:-1;;;6633:2:1;6618:18;;6611:36;6679:2;6664:18;;6359:329::o;7042:128::-;7109:9;;;7130:11;;;7127:37;;;7144:18;;:::i;7532:125::-;7597:9;;;7618:10;;;7615:36;;;7631:18;;:::i;8008:184::-;8078:6;8131:2;8119:9;8110:7;8106:23;8102:32;8099:52;;;8147:1;8144;8137:12;8099:52;-1:-1:-1;8170:16:1;;8008:184;-1:-1:-1;8008:184:1:o;8476:245::-;8543:6;8596:2;8584:9;8575:7;8571:23;8567:32;8564:52;;;8612:1;8609;8602:12;8564:52;8644:9;8638:16;8663:28;8685:5;8663:28;:::i;9859:422::-;9948:1;9991:5;9948:1;10005:270;10026:7;10016:8;10013:21;10005:270;;;10085:4;10081:1;10077:6;10073:17;10067:4;10064:27;10061:53;;;10094:18;;:::i;:::-;10144:7;10134:8;10130:22;10127:55;;;10164:16;;;;10127:55;10243:22;;;;10203:15;;;;10005:270;;;10009:3;9859:422;;;;;:::o;10286:806::-;10335:5;10365:8;10355:80;;-1:-1:-1;10406:1:1;10420:5;;10355:80;10454:4;10444:76;;-1:-1:-1;10491:1:1;10505:5;;10444:76;10536:4;10554:1;10549:59;;;;10622:1;10617:130;;;;10529:218;;10549:59;10579:1;10570:10;;10593:5;;;10617:130;10654:3;10644:8;10641:17;10638:43;;;10661:18;;:::i;:::-;-1:-1:-1;;10717:1:1;10703:16;;10732:5;;10529:218;;10831:2;10821:8;10818:16;10812:3;10806:4;10803:13;10799:36;10793:2;10783:8;10780:16;10775:2;10769:4;10766:12;10762:35;10759:77;10756:159;;;-1:-1:-1;10868:19:1;;;10900:5;;10756:159;10947:34;10972:8;10966:4;10947:34;:::i;:::-;11017:6;11013:1;11009:6;11005:19;10996:7;10993:32;10990:58;;;11028:18;;:::i;:::-;11066:20;;10286:806;-1:-1:-1;;;10286:806:1:o;11097:140::-;11155:5;11184:47;11225:4;11215:8;11211:19;11205:4;11184:47;:::i;11242:168::-;11315:9;;;11346;;11363:15;;;11357:22;;11343:37;11333:71;;11384:18;;:::i;11773:217::-;11813:1;11839;11829:132;;11883:10;11878:3;11874:20;11871:1;11864:31;11918:4;11915:1;11908:15;11946:4;11943:1;11936:15;11829:132;-1:-1:-1;11975:9:1;;11773:217::o;16017:980::-;16279:4;16327:3;16316:9;16312:19;16358:6;16347:9;16340:25;16384:2;16422:6;16417:2;16406:9;16402:18;16395:34;16465:3;16460:2;16449:9;16445:18;16438:31;16489:6;16524;16518:13;16555:6;16547;16540:22;16593:3;16582:9;16578:19;16571:26;;16632:2;16624:6;16620:15;16606:29;;16653:1;16663:195;16677:6;16674:1;16671:13;16663:195;;;16742:13;;-1:-1:-1;;;;;16738:39:1;16726:52;;16833:15;;;;16798:12;;;;16774:1;16692:9;16663:195;;;-1:-1:-1;;;;;;;16914:32:1;;;;16909:2;16894:18;;16887:60;-1:-1:-1;;;16978:3:1;16963:19;16956:35;16875:3;16017:980;-1:-1:-1;;;16017:980:1:o;17614:306::-;17702:6;17710;17718;17771:2;17759:9;17750:7;17746:23;17742:32;17739:52;;;17787:1;17784;17777:12;17739:52;17816:9;17810:16;17800:26;;17866:2;17855:9;17851:18;17845:25;17835:35;;17910:2;17899:9;17895:18;17889:25;17879:35;;17614:306;;;;;:::o

Swarm Source

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