ETH Price: $3,579.42 (+0.77%)
Gas: 2 Gwei

Token

PURPLE PALACE (PPX)
 

Overview

Max Total Supply

1,000,000,000 PPX

Holders

59

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,960 PPX

Value
$0.00
0xf41f37c584835426dbc519766f888dc5881a3827
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x30c5398C...2216dB752
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
PurplePalace

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-11-01
*/

// Purple Palace
// Pay for Pleasure With Crypto !
// Accelerator Launchpad, Bridge to Pay for Adult Content Anonymously, Nightclub Metaverse

//TG: @PurplePalacETH
//Website: https://purple-palace.com/
//Twitter: twitter.com/PurplePalaceETH

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.7;

library Address {
    /**
     * 
     */
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}
abstract contract Context {
    function _msgSender() internal view returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view returns (bytes memory) {
        this;
        return msg.data;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    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);
}

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

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

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

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

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract PurplePalace is IERC20, Ownable {
    using Address for address;
    
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "PURPLE PALACE";
    string constant _symbol = "PPX";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1_000_000_000 * (10 ** _decimals);
    uint256 _maxBuyTxAmount = (_totalSupply * 2) / 100;
    uint256 _maxSellTxAmount = (_totalSupply * 2) / 100;
    uint256 _maxWalletSize = (_totalSupply * 2) / 100;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;
    mapping (address => uint256) public lastSell;
    mapping (address => uint256) public lastBuy;

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) liquidityCreator;

    uint256 marketingFee = 400;
    uint256 liquidityFee = 200;
    uint256 totalFee = marketingFee + liquidityFee;
    uint256 sellBias = 0;
    uint256 feeDenominator = 10000;

    address payable public liquidityFeeReceiver = payable(0x97D35DD7db65a4a95E5feC93701F89F92BA10165);
    address payable public marketingFeeReceiver = payable(0x97D35DD7db65a4a95E5feC93701F89F92BA10165);

    IDEXRouter public router;
    address routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    mapping (address => bool) liquidityPools;
    mapping (address => uint256) public protected;
    bool protectionEnabled = true;
    bool protectionDisabled = false;
    uint256 protectionLimit;
    uint256 public protectionCount;
    uint256 protectionTimer;

    address public pair;

    uint256 public launchedAt;
    uint256 public launchedTime;
    uint256 public deadBlocks;
    bool startBullRun = false;
    bool pauseDisabled = false;
    uint256 public rateLimit = 2;

    bool public swapEnabled = false;
    bool processEnabled = true;
    uint256 public swapThreshold = _totalSupply / 1000;
    uint256 public swapMinimum = _totalSupply / 10000;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }
    
    mapping (address => bool) teamMember;
    
    modifier onlyTeam() {
        require(teamMember[_msgSender()] || msg.sender == owner(), "Caller is not a team member");
        _;
    }
    
    event ProtectedWallet(address, address, uint256, uint8);

    constructor () {
        router = IDEXRouter(routerAddress);
        pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this));
        liquidityPools[pair] = true;
        _allowances[owner()][routerAddress] = type(uint256).max;
        _allowances[address(this)][routerAddress] = type(uint256).max;

        isFeeExempt[owner()] = true;
        liquidityCreator[owner()] = true;

        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[routerAddress] = true;
        isTxLimitExempt[DEAD] = true;

        _balances[owner()] = _totalSupply;

        emit Transfer(address(0), owner(), _totalSupply);
    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure returns (uint8) { return _decimals; }
    function symbol() external pure returns (string memory) { return _symbol; }
    function name() external pure returns (string memory) { return _name; }
    function getOwner() external view returns (address) { return owner(); }
    function maxBuyTxTokens() external view returns (uint256) { return _maxBuyTxAmount / (10 ** _decimals); }
    function maxSellTxTokens() external view returns (uint256) { return _maxSellTxAmount / (10 ** _decimals); }
    function maxWalletTokens() external view returns (uint256) { return _maxWalletSize / (10 ** _decimals); }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

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

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }
    
    function setTeamMember(address _team, bool _enabled) external onlyOwner {
        teamMember[_team] = _enabled;
    }
    
    function airdrop(address[] calldata addresses, uint256[] calldata amounts) external onlyOwner {
        require(addresses.length > 0 && amounts.length == addresses.length);
        address from = msg.sender;

        for (uint i = 0; i < addresses.length; i++) {
            if(!liquidityPools[addresses[i]] && !liquidityCreator[addresses[i]]) {
                _basicTransfer(from, addresses[i], amounts[i] * (10 ** _decimals));
            }
        }
    }
    
    function clearStuckBalance(uint256 amountPercentage, address adr) external onlyTeam {
        uint256 amountETH = address(this).balance;
        payable(adr).transfer((amountETH * amountPercentage) / 100);
    }
    
    function openTrading(uint256 _deadBlocks, uint256 _protection, uint256 _limit) external onlyTeam {
        require(!startBullRun && _deadBlocks < 10);
        deadBlocks = _deadBlocks;
        startBullRun = true;
        launchedAt = block.number;
        protectionTimer = block.timestamp + _protection;
        protectionLimit = _limit * (10 ** _decimals);
    }
    
    function pauseTrading() external onlyTeam {
        require(!pauseDisabled);
        startBullRun = false;
    }
    
    function disablePause() external onlyTeam {
        pauseDisabled = true;
        startBullRun = true;
    }
    
    function setProtection(bool _protect, uint256 _addTime) external onlyTeam {
        require(!protectionDisabled);
        protectionEnabled = _protect;
        require(_addTime < 1 days);
        protectionTimer += _addTime;
    }
    
    function disableProtection() external onlyTeam {
        protectionDisabled = true;
        protectionEnabled = false;
    }
    
    function protectWallet(address[] calldata _wallets, bool _protect) external onlyTeam {
        if (_protect) {
            require(protectionEnabled);
        }
        
        for (uint i = 0; i < _wallets.length; i++) {
            
            if (_protect) {
                protectionCount++;
                emit ProtectedWallet(tx.origin, _wallets[i], block.number, 2);
            }
            else {
                if (protected[_wallets[i]] != 0)
                    protectionCount--;      
            }
            protected[_wallets[i]] = _protect ? block.number : 0;
        }
    }

    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] - amount;
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(sender != address(0), "BEP20: transfer from 0x0");
        require(recipient != address(0), "BEP20: transfer to 0x0");
        require(amount > 0, "Amount must be > zero");
        require(_balances[sender] >= amount, "Insufficient balance");
        if(!launched() && liquidityPools[recipient]){ require(liquidityCreator[sender], "Liquidity not added yet."); launch(); }
        if(!startBullRun){ require(liquidityCreator[sender] || liquidityCreator[recipient], "Trading not open yet."); }

        checkTxLimit(sender, recipient, amount);
        
        if (!liquidityPools[recipient] && recipient != DEAD) {
            if (!isTxLimitExempt[recipient]) {
                checkWalletLimit(recipient, amount);
            }
        }
        
        if(protectionEnabled && protectionTimer > block.timestamp) {
            if(liquidityPools[sender] && tx.origin != recipient && protected[recipient] == 0) {
                protected[recipient] = block.number;
                protectionCount++;
                emit ProtectedWallet(tx.origin, recipient, block.number, 0);
            }
        }
        
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        _balances[sender] = _balances[sender] - amount;

        uint256 amountReceived = shouldTakeFee(sender) ? takeFee(recipient, amount) : amount;
        
        if(shouldSwapBack(recipient)){ if (amount > 0) swapBack(amount); }
        
        _balances[recipient] = _balances[recipient] + amountReceived;

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function launched() internal view returns (bool) {
        return launchedAt != 0;
    }

    function launch() internal {
        launchedAt = block.number;
        launchedTime = block.timestamp;
        swapEnabled = true;
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender] - amount;
        _balances[recipient] = _balances[recipient] + amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }
    
    function checkWalletLimit(address recipient, uint256 amount) internal view {
        uint256 walletLimit = _maxWalletSize;
        require(_balances[recipient] + amount <= walletLimit, "Transfer amount exceeds the bag size.");
    }

    function checkTxLimit(address sender, address recipient, uint256 amount) internal {
        require(isTxLimitExempt[sender] || amount <= (liquidityPools[sender] ? _maxBuyTxAmount : _maxSellTxAmount), "TX Limit Exceeded");
        require(isTxLimitExempt[sender] || lastBuy[recipient] + rateLimit <= block.number, "Transfer rate limit exceeded.");
        
        if (protected[sender] != 0){
            require(amount <= protectionLimit * (10 ** _decimals) && lastSell[sender] == 0 && protectionTimer > block.timestamp, "Wallet protected, please contact support.");
            lastSell[sender] = block.number;
        }
        
        if (liquidityPools[recipient]) {
            lastSell[sender] = block.number;
        } else if (shouldTakeFee(sender)) {
            if (protectionEnabled && protectionTimer > block.timestamp && lastBuy[tx.origin] == block.number && protected[recipient] == 0) {
                protected[recipient] = block.number;
                emit ProtectedWallet(tx.origin, recipient, block.number, 1);
            }
            lastBuy[recipient] = block.number;
            if (tx.origin != recipient)
                lastBuy[tx.origin] = block.number;
        }
    }

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

    function getTotalFee(bool selling) public view returns (uint256) {
        if(launchedAt + deadBlocks >= block.number){ return feeDenominator - 1; }
        if (selling) return totalFee + sellBias;
        return totalFee - sellBias;
    }

    function takeFee(address recipient, uint256 amount) internal returns (uint256) {
        bool selling = liquidityPools[recipient];
        uint256 feeAmount = (amount * getTotalFee(selling)) / feeDenominator;
        
        _balances[address(this)] += feeAmount;
    
        return amount - feeAmount;
    }

    function shouldSwapBack(address recipient) internal view returns (bool) {
        return !liquidityPools[msg.sender]
        && !inSwap
        && swapEnabled
        && liquidityPools[recipient]
        && _balances[address(this)] >= swapMinimum;
    }

    function swapBack(uint256 amount) internal swapping {
        uint256 amountToSwap = amount < swapThreshold ? amount : swapThreshold;
        if (_balances[address(this)] < amountToSwap) amountToSwap = _balances[address(this)];
        
        uint256 amountToLiquify = (amountToSwap * liquidityFee / 2) / totalFee;
        amountToSwap -= amountToLiquify;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        
        uint256 balanceBefore = address(this).balance;

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

        uint256 amountBNB = address(this).balance - balanceBefore;
        uint256 totalBNBFee = totalFee - (liquidityFee / 2);

        uint256 amountBNBLiquidity = (amountBNB * liquidityFee / 2) / totalBNBFee;
        uint256 amountBNBMarketing = amountBNB - amountBNBLiquidity;
        
        if (amountBNBMarketing > 0)
            marketingFeeReceiver.transfer(amountBNBMarketing);
        
        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountBNBLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                liquidityFeeReceiver,
                block.timestamp
            );
        }

        emit FundsDistributed(amountBNBMarketing, amountBNBLiquidity, amountToLiquify);
    }
    
    function addLiquidityPool(address lp, bool isPool) external onlyOwner {
        require(lp != pair, "Can't alter current liquidity pair");
        liquidityPools[lp] = isPool;
    }

    function setRateLimit(uint256 rate) external onlyOwner {
        require(rate <= 60 seconds);
        rateLimit = rate;
    }

    function setTxLimit(uint256 buyNumerator, uint256 sellNumerator, uint256 divisor) external onlyOwner {
        require(buyNumerator > 0 && sellNumerator > 0 && divisor > 0 && divisor <= 10000);
        _maxBuyTxAmount = (_totalSupply * buyNumerator) / divisor;
        _maxSellTxAmount = (_totalSupply * sellNumerator) / divisor;
    }
    
    function setMaxWallet(uint256 numerator, uint256 divisor) external onlyOwner() {
        require(numerator > 0 && divisor > 0 && divisor <= 10000);
        _maxWalletSize = (_totalSupply * numerator) / divisor;
    }

    function setIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }

    function setFees(uint256 _liquidityFee, uint256 _marketingFee, uint256 _sellBias, uint256 _feeDenominator) external onlyOwner {
        liquidityFee = _liquidityFee;
        marketingFee = _marketingFee;
        totalFee = _marketingFee + _liquidityFee;
        sellBias = _sellBias;
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator / 2);
    }

    function setFeeReceivers(address _liquidityFeeReceiver, address _marketingFeeReceiver) external onlyOwner {
        liquidityFeeReceiver = payable(_liquidityFeeReceiver);
        marketingFeeReceiver = payable(_marketingFeeReceiver);
    }

    function setSwapBackSettings(bool _enabled, bool _processEnabled, uint256 _denominator, uint256 _swapMinimum) external onlyOwner {
        require(_denominator > 0);
        swapEnabled = _enabled;
        processEnabled = _processEnabled;
        swapThreshold = _totalSupply / _denominator;
        swapMinimum = _swapMinimum * (10 ** _decimals);
    }

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

    function withdrawETH (address payable recipient, uint256 amount) public onlyOwner {
        (bool succeed, bytes memory data) = recipient.call{value: amount}("");
        require(succeed, "Failed to withdraw ETH");
    }

    event FundsDistributed(uint256 marketingBNB, uint256 liquidityBNB, uint256 liquidityTokens);
    
}

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":"uint256","name":"marketingBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityTokens","type":"uint256"}],"name":"FundsDistributed","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":"","type":"address"},{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"","type":"uint8"}],"name":"ProtectedWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"lp","type":"address"},{"internalType":"bool","name":"isPool","type":"bool"}],"name":"addLiquidityPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"},{"internalType":"address","name":"adr","type":"address"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"disablePause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"selling","type":"bool"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastSell","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":"launchedTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeReceiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTxTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTxTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadBlocks","type":"uint256"},{"internalType":"uint256","name":"_protection","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pauseTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_wallets","type":"address[]"},{"internalType":"bool","name":"_protect","type":"bool"}],"name":"protectWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"protected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protectionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rateLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"_liquidityFeeReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","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":"_sellBias","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_protect","type":"bool"},{"internalType":"uint256","name":"_addTime","type":"uint256"}],"name":"setProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setRateLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"bool","name":"_processEnabled","type":"bool"},{"internalType":"uint256","name":"_denominator","type":"uint256"},{"internalType":"uint256","name":"_swapMinimum","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_team","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setTeamMember","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyNumerator","type":"uint256"},{"internalType":"uint256","name":"sellNumerator","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapMinimum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"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 payable","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600180546001600160a01b031990811661dead17909155600280549091169055620000326009600a6200059b565b6200004290633b9aca006200065c565b600355606460035460026200005891906200065c565b6200006491906200052f565b600455606460035460026200007a91906200065c565b6200008691906200052f565b600555606460035460026200009c91906200065c565b620000a891906200052f565b600655610190600e81905560c8600f819055620000c59162000514565b6010556000601155612710601255601380546001600160a01b03199081167397d35dd7db65a4a95e5fec93701f89f92ba1016590811790925560148054821690921790915560168054909116737a250d5630b4cf539739df2c5dacb4c659f2488d1790556019805461ffff19908116600117909155602180548216905560026022556023805490911661010017905560035462000166906103e8906200052f565b6024556127106003546200017b91906200052f565b6025553480156200018b57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601654601580546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b1580156200022557600080fd5b505afa1580156200023a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002609190620004e2565b6001600160a01b031663c9c65396601560009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002bd57600080fd5b505afa158015620002d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f89190620004e2565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b1580156200034057600080fd5b505af115801562000355573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037b9190620004e2565b601d80546001600160a01b0319166001600160a01b039290921691821790556000908152601760205260408120805460ff1916600117905560001990600890620003cd6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120601680548416835290855283822095909555308082526008855283822086548416835285528382206000199055815483168252600b85528382208054600160ff199182168117909255835485168452600d87528584208054821683179055918352600c865284832080548316821790558254841683528483208054831682179055955483168252838220805482168717905585548316825283822080549091169095179094556003548454821685526007845282852081905584549251908152911692917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000694565b600060208284031215620004f557600080fd5b81516001600160a01b03811681146200050d57600080fd5b9392505050565b600082198211156200052a576200052a6200067e565b500190565b6000826200054d57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115620005935781600019048211156200057757620005776200067e565b808516156200058557918102915b93841c939080029062000557565b509250929050565b60006200050d60ff841683600082620005b75750600162000656565b81620005c65750600062000656565b8160018114620005df5760028114620005ea576200060a565b600191505062000656565b60ff841115620005fe57620005fe6200067e565b50506001821b62000656565b5060208310610133831016604e8410600b84101617156200062f575081810a62000656565b6200063b838362000552565b80600019048211156200065257620006526200067e565b0290505b92915050565b60008160001904831182151516156200067957620006796200067e565b500290565b634e487b7160e01b600052601160045260246000fd5b612d4c80620006a46000396000f3fe60806040526004361061031e5760003560e01c80636ddd1713116101ab578063bafe446b116100f7578063e96fada211610095578063f84ba65d1161006f578063f84ba65d1461096e578063f8821a621461098e578063f887ea40146109a4578063fabb0b4f146109c457600080fd5b8063e96fada21461090e578063f1f3bca31461092e578063f2fde38b1461094e57600080fd5b8063c1adf7bc116100d1578063c1adf7bc1461085b578063c287184e14610888578063d6860142146108a8578063dd62ed3e146108c857600080fd5b8063bafe446b14610810578063bf56b37114610825578063bfa21d6a1461083b57600080fd5b80638da5cb5b11610164578063a4b45c001161013e578063a4b45c0014610790578063a8aa1b31146107b0578063a9059cbb146107d0578063abe57e70146107f057600080fd5b80638da5cb5b1461073057806395d89b411461074e5780639b02c4021461077a57600080fd5b80636ddd17131461064c5780636f4ce428146106665780636fcba3771461069357806370a08231146106b3578063715018a6146106e9578063893d20e8146106fe57600080fd5b80634782f7791161026a5780635804f1e41161022357806361e08e72116101fd57806361e08e72146105e157806363a803e1146105f7578063658d4b7f1461060c578063672434821461062c57600080fd5b80635804f1e414610596578063584f969a146105ac57806360bba03d146105c157600080fd5b80634782f779146104d6578063492a937b146104f6578063507139351461051657806354a1dfc91461053657806356a227f214610556578063571ac8b01461057657600080fd5b8063234e9494116102d7578063313ce567116102b1578063313ce5671461045857806334848b9a14610474578063421dd7c71461049457806346d7edaa146104a957600080fd5b8063234e94941461040e57806323b872dd146104235780632b112e491461044357600080fd5b80630445b6671461032a57806306fdde0314610353578063095db78f14610392578063095ea7b3146103b45780631031e36e146103e457806318160ddd146103f957600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5061034060245481565b6040519081526020015b60405180910390f35b34801561035f57600080fd5b5060408051808201909152600d81526c505552504c452050414c41434560981b60208201525b60405161034a9190612a10565b34801561039e57600080fd5b506103b26103ad36600461282c565b6109da565b005b3480156103c057600080fd5b506103d46103cf3660046126e5565b610b96565b604051901515815260200161034a565b3480156103f057600080fd5b506103b2610c03565b34801561040557600080fd5b50600354610340565b34801561041a57600080fd5b50610340610c68565b34801561042f57600080fd5b506103d461043e36600461274a565b610c88565b34801561044f57600080fd5b50610340610d1d565b34801561046457600080fd5b506040516009815260200161034a565b34801561048057600080fd5b506103b261048f366004612959565b610d5e565b3480156104a057600080fd5b506103b2610dff565b3480156104b557600080fd5b506103406104c43660046126ab565b60186020526000908152604090205481565b3480156104e257600080fd5b506103b26104f13660046126e5565b610e54565b34801561050257600080fd5b506103b261051136600461278b565b610f1c565b34801561052257600080fd5b506103b2610531366004612959565b610fda565b34801561054257600080fd5b506103b261055136600461289b565b611075565b34801561056257600080fd5b506103b2610571366004612912565b6110f8565b34801561058257600080fd5b506103d46105913660046126ab565b611188565b3480156105a257600080fd5b50610340601f5481565b3480156105b857600080fd5b506103b2611196565b3480156105cd57600080fd5b506103b26105dc36600461278b565b6111eb565b3480156105ed57600080fd5b5061034060225481565b34801561060357600080fd5b50610340611240565b34801561061857600080fd5b506103b261062736600461278b565b61125b565b34801561063857600080fd5b506103b26106473660046127c0565b6112b0565b34801561065857600080fd5b506023546103d49060ff1681565b34801561067257600080fd5b506103406106813660046126ab565b60096020526000908152604090205481565b34801561069f57600080fd5b506103b26106ae3660046129b3565b611417565b3480156106bf57600080fd5b506103406106ce3660046126ab565b6001600160a01b031660009081526007602052604090205490565b3480156106f557600080fd5b506103b261147a565b34801561070a57600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161034a565b34801561073c57600080fd5b506000546001600160a01b0316610718565b34801561075a57600080fd5b506040805180820190915260038152620a0a0b60eb1b6020820152610385565b34801561078657600080fd5b50610340601b5481565b34801561079c57600080fd5b506103b26107ab366004612711565b6114ee565b3480156107bc57600080fd5b50601d54610718906001600160a01b031681565b3480156107dc57600080fd5b506103d46107eb3660046126e5565b611546565b3480156107fc57600080fd5b506103b261080b366004612937565b611553565b34801561081c57600080fd5b506103406115c4565b34801561083157600080fd5b50610340601e5481565b34801561084757600080fd5b50601354610718906001600160a01b031681565b34801561086757600080fd5b506103406108763660046126ab565b600a6020526000908152604090205481565b34801561089457600080fd5b506103b26108a33660046128f9565b6115df565b3480156108b457600080fd5b506103b26108c33660046128dd565b61161c565b3480156108d457600080fd5b506103406108e3366004612711565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b34801561091a57600080fd5b50601454610718906001600160a01b031681565b34801561093a57600080fd5b50610340610949366004612880565b6116ad565b34801561095a57600080fd5b506103b26109693660046126ab565b6116fa565b34801561097a57600080fd5b506103b261098936600461278b565b6117e4565b34801561099a57600080fd5b5061034060255481565b3480156109b057600080fd5b50601554610718906001600160a01b031681565b3480156109d057600080fd5b5061034060205481565b3360009081526027602052604090205460ff1680610a0257506000546001600160a01b031633145b610a275760405162461bcd60e51b8152600401610a1e90612a65565b60405180910390fd5b8015610a3c5760195460ff16610a3c57600080fd5b60005b82811015610b90578115610acb57601b8054906000610a5d83612cb7565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea32858584818110610a9657610a96612ce8565b9050602002016020810190610aab91906126ab565b436002604051610abe94939291906129e5565b60405180910390a1610b2b565b60186000858584818110610ae157610ae1612ce8565b9050602002016020810190610af691906126ab565b6001600160a01b0316815260208101919091526040016000205415610b2b57601b8054906000610b2583612ca0565b91905055505b81610b37576000610b39565b435b60186000868685818110610b4f57610b4f612ce8565b9050602002016020810190610b6491906126ab565b6001600160a01b0316815260208101919091526040016000205580610b8881612cb7565b915050610a3f565b50505050565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610bf19086815260200190565b60405180910390a35060015b92915050565b3360009081526027602052604090205460ff1680610c2b57506000546001600160a01b031633145b610c475760405162461bcd60e51b8152600401610a1e90612a65565b602154610100900460ff1615610c5c57600080fd5b6021805460ff19169055565b6000610c766009600a612bbf565b600554610c839190612b5a565b905090565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610d08576001600160a01b0384166000908152600860209081526040808320338452909152902054610ce3908390612c89565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610d13848484611839565b90505b9392505050565b6002546001600160a01b039081166000908152600760205260408082205460015490931682528120549091610d5191612b42565b600354610c839190612c89565b3360009081526027602052604090205460ff1680610d8657506000546001600160a01b031633145b610da25760405162461bcd60e51b8152600401610a1e90612a65565b60215460ff16158015610db55750600a83105b610dbe57600080fd5b60208390556021805460ff1916600117905543601e55610dde8242612b42565b601c55610ded6009600a612bbf565b610df79082612c6a565b601a55505050565b3360009081526027602052604090205460ff1680610e2757506000546001600160a01b031633145b610e435760405162461bcd60e51b8152600401610a1e90612a65565b6019805461ffff1916610100179055565b6000546001600160a01b03163314610e7e5760405162461bcd60e51b8152600401610a1e90612a9c565b600080836001600160a01b03168360405160006040518083038185875af1925050503d8060008114610ecc576040519150601f19603f3d011682016040523d82523d6000602084013e610ed1565b606091505b509150915081610b905760405162461bcd60e51b815260206004820152601660248201527508cc2d2d8cac840e8de40eed2e8d0c8e4c2ee408aa8960531b6044820152606401610a1e565b6000546001600160a01b03163314610f465760405162461bcd60e51b8152600401610a1e90612a9c565b601d546001600160a01b0383811691161415610faf5760405162461bcd60e51b815260206004820152602260248201527f43616e277420616c7465722063757272656e74206c697175696469747920706160448201526134b960f11b6064820152608401610a1e565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146110045760405162461bcd60e51b8152600401610a1e90612a9c565b6000831180156110145750600082115b80156110205750600081115b801561102e57506127108111155b61103757600080fd5b80836003546110469190612c6a565b6110509190612b5a565b6004556003548190611063908490612c6a565b61106d9190612b5a565b600555505050565b6000546001600160a01b0316331461109f5760405162461bcd60e51b8152600401610a1e90612a9c565b600082116110ac57600080fd5b6023805461ffff191685151561ff00191617610100851515021790556003546110d6908390612b5a565b6024556110e56009600a612bbf565b6110ef9082612c6a565b60255550505050565b3360009081526027602052604090205460ff168061112057506000546001600160a01b031633145b61113c5760405162461bcd60e51b8152600401610a1e90612a65565b476001600160a01b0382166108fc60646111568685612c6a565b6111609190612b5a565b6040518115909202916000818181858888f19350505050158015610b90573d6000803e3d6000fd5b6000610bfd82600019610b96565b3360009081526027602052604090205460ff16806111be57506000546001600160a01b031633145b6111da5760405162461bcd60e51b8152600401610a1e90612a65565b6021805461ffff1916610101179055565b6000546001600160a01b031633146112155760405162461bcd60e51b8152600401610a1e90612a9c565b6001600160a01b03919091166000908152602760205260409020805460ff1916911515919091179055565b600061124e6009600a612bbf565b600654610c839190612b5a565b6000546001600160a01b031633146112855760405162461bcd60e51b8152600401610a1e90612a9c565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146112da5760405162461bcd60e51b8152600401610a1e90612a9c565b82158015906112e857508083145b6112f157600080fd5b3360005b8481101561140f576017600087878481811061131357611313612ce8565b905060200201602081019061132891906126ab565b6001600160a01b0316815260208101919091526040016000205460ff161580156113975750600d600087878481811061136357611363612ce8565b905060200201602081019061137891906126ab565b6001600160a01b0316815260208101919091526040016000205460ff16155b156113fd576113fb828787848181106113b2576113b2612ce8565b90506020020160208101906113c791906126ab565b6113d36009600a612bbf565b8787868181106113e5576113e5612ce8565b905060200201356113f69190612c6a565b611d3b565b505b8061140781612cb7565b9150506112f5565b505050505050565b6000546001600160a01b031633146114415760405162461bcd60e51b8152600401610a1e90612a9c565b600f849055600e8390556114558484612b42565b6010556011829055601281905561146d600282612b5a565b60105410610b9057600080fd5b6000546001600160a01b031633146114a45760405162461bcd60e51b8152600401610a1e90612a9c565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146115185760405162461bcd60e51b8152600401610a1e90612a9c565b601380546001600160a01b039384166001600160a01b03199182161790915560148054929093169116179055565b6000610d16338484611839565b6000546001600160a01b0316331461157d5760405162461bcd60e51b8152600401610a1e90612a9c565b60008211801561158d5750600081115b801561159b57506127108111155b6115a457600080fd5b80826003546115b39190612c6a565b6115bd9190612b5a565b6006555050565b60006115d26009600a612bbf565b600454610c839190612b5a565b6000546001600160a01b031633146116095760405162461bcd60e51b8152600401610a1e90612a9c565b603c81111561161757600080fd5b602255565b3360009081526027602052604090205460ff168061164457506000546001600160a01b031633145b6116605760405162461bcd60e51b8152600401610a1e90612a65565b601954610100900460ff161561167557600080fd5b6019805460ff191683151517905562015180811061169257600080fd5b80601c60008282546116a49190612b42565b90915550505050565b600043602054601e546116c09190612b42565b106116d4576001601254610bfd9190612c89565b81156116ea57601154601054610bfd9190612b42565b601154601054610bfd9190612c89565b6000546001600160a01b031633146117245760405162461bcd60e51b8152600401610a1e90612a9c565b6001600160a01b0381166117895760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a1e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461180e5760405162461bcd60e51b8152600401610a1e90612a9c565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b60006001600160a01b0384166118915760405162461bcd60e51b815260206004820152601860248201527f42455032303a207472616e736665722066726f6d2030783000000000000000006044820152606401610a1e565b6001600160a01b0383166118e05760405162461bcd60e51b8152602060048201526016602482015275042455032303a207472616e7366657220746f203078360541b6044820152606401610a1e565b600082116119285760405162461bcd60e51b8152602060048201526015602482015274416d6f756e74206d757374206265203e207a65726f60581b6044820152606401610a1e565b6001600160a01b0384166000908152600760205260409020548211156119875760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152606401610a1e565b601e541580156119af57506001600160a01b03831660009081526017602052604090205460ff165b15611a36576001600160a01b0384166000908152600d602052604090205460ff16611a1c5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206e6f74206164646564207965742e00000000000000006044820152606401610a1e565b611a3643601e5542601f556023805460ff19166001179055565b60215460ff16611ac3576001600160a01b0384166000908152600d602052604090205460ff1680611a7f57506001600160a01b0383166000908152600d602052604090205460ff165b611ac35760405162461bcd60e51b81526020600482015260156024820152742a3930b234b733903737ba1037b832b7103cb2ba1760591b6044820152606401610a1e565b611ace848484611df5565b6001600160a01b03831660009081526017602052604090205460ff16158015611b0557506001546001600160a01b03848116911614155b15611b34576001600160a01b0383166000908152600c602052604090205460ff16611b3457611b34838361214a565b60195460ff168015611b47575042601c54115b15611c11576001600160a01b03841660009081526017602052604090205460ff168015611b7d5750326001600160a01b03841614155b8015611b9f57506001600160a01b038316600090815260186020526040902054155b15611c11576001600160a01b0383166000908152601860205260408120439055601b805491611bcd83612cb7565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea3284436000604051611c0894939291906129e5565b60405180910390a15b60265460ff1615611c2e57611c27848484611d3b565b9050610d16565b6001600160a01b038416600090815260076020526040902054611c52908390612c89565b6001600160a01b038516600090815260076020908152604080832093909355600b90529081205460ff1615611c875782611c91565b611c9184846121cf565b9050611c9c8461224d565b15611cb0578215611cb057611cb0836122c4565b6001600160a01b038416600090815260076020526040902054611cd4908290612b42565b6001600160a01b0380861660008181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d289085815260200190565b60405180910390a3506001949350505050565b6001600160a01b038316600090815260076020526040812054611d5f908390612c89565b6001600160a01b038086166000908152600760205260408082209390935590851681522054611d8f908390612b42565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611de39086815260200190565b60405180910390a35060019392505050565b6001600160a01b0383166000908152600c602052604090205460ff1680611e4757506001600160a01b03831660009081526017602052604090205460ff16611e3f57600554611e43565b6004545b8111155b611e875760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610a1e565b6001600160a01b0383166000908152600c602052604090205460ff1680611ed357506022546001600160a01b0383166000908152600a60205260409020544391611ed091612b42565b11155b611f1f5760405162461bcd60e51b815260206004820152601d60248201527f5472616e736665722072617465206c696d69742065786365656465642e0000006044820152606401610a1e565b6001600160a01b0383166000908152601860205260409020541561200257611f496009600a612bbf565b601a54611f569190612c6a565b8111158015611f7b57506001600160a01b038316600090815260096020526040902054155b8015611f88575042601c54115b611fe65760405162461bcd60e51b815260206004820152602960248201527f57616c6c65742070726f7465637465642c20706c6561736520636f6e746163746044820152681039bab83837b93a1760b91b6064820152608401610a1e565b6001600160a01b03831660009081526009602052604090204390555b6001600160a01b03821660009081526017602052604090205460ff16156120415750506001600160a01b03166000908152600960205260409020439055565b6001600160a01b0383166000908152600b602052604090205460ff166121455760195460ff168015612074575042601c54115b801561208e5750326000908152600a602052604090205443145b80156120b057506001600160a01b038216600090815260186020526040902054155b15612111576001600160a01b03821660009081526018602052604090819020439081905590517f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea9161210891329186916001906129e5565b60405180910390a15b6001600160a01b0382166000818152600a60205260409020439055321461214557326000908152600a602052604090204390555b505050565b6006546001600160a01b0383166000908152600760205260409020548190612173908490612b42565b11156121455760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b6064820152608401610a1e565b6001600160a01b03821660009081526017602052604081205460125460ff9091169082906121fc836116ad565b6122069086612c6a565b6122109190612b5a565b30600090815260076020526040812080549293508392909190612234908490612b42565b9091555061224490508185612c89565b95945050505050565b3360009081526017602052604081205460ff16158015612270575060265460ff16155b801561227e575060235460ff165b80156122a257506001600160a01b03821660009081526017602052604090205460ff165b8015610bfd575060255430600090815260076020526040902054101592915050565b6026805460ff1916600117905560245460009082106122e5576024546122e7565b815b306000908152600760205260409020549091508111156123135750306000908152600760205260409020545b60006010546002600f54846123289190612c6a565b6123329190612b5a565b61233c9190612b5a565b90506123488183612c89565b6040805160028082526060820183529294506000929091602083019080368337019050509050308160008151811061238257612382612ce8565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156123d657600080fd5b505afa1580156123ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061240e91906126c8565b8160018151811061242157612421612ce8565b6001600160a01b03928316602091820292909201015260155460405163791ac94760e01b81524792919091169063791ac9479061246b908790600090879030904290600401612ad1565b600060405180830381600087803b15801561248557600080fd5b505af1158015612499573d6000803e3d6000fd5b50505050600081476124ab9190612c89565b905060006002600f546124be9190612b5a565b6010546124cb9190612c89565b90506000816002600f54856124e09190612c6a565b6124ea9190612b5a565b6124f49190612b5a565b905060006125028285612c89565b90508015612546576014546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612544573d6000803e3d6000fd5b505b86156125f45760155460135460405163f305d71960e01b8152306004820152602481018a905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990849060c4016060604051808303818588803b1580156125b757600080fd5b505af11580156125cb573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906125f09190612985565b5050505b60408051828152602081018490529081018890527fdaf6233a382145376035341e71f8a04305f7e323d0fe3e58c908cf0a26b76df99060600160405180910390a150506026805460ff1916905550505050505050565b60008083601f84011261265c57600080fd5b50813567ffffffffffffffff81111561267457600080fd5b6020830191508360208260051b850101111561268f57600080fd5b9250929050565b803580151581146126a657600080fd5b919050565b6000602082840312156126bd57600080fd5b8135610d1681612cfe565b6000602082840312156126da57600080fd5b8151610d1681612cfe565b600080604083850312156126f857600080fd5b823561270381612cfe565b946020939093013593505050565b6000806040838503121561272457600080fd5b823561272f81612cfe565b9150602083013561273f81612cfe565b809150509250929050565b60008060006060848603121561275f57600080fd5b833561276a81612cfe565b9250602084013561277a81612cfe565b929592945050506040919091013590565b6000806040838503121561279e57600080fd5b82356127a981612cfe565b91506127b760208401612696565b90509250929050565b600080600080604085870312156127d657600080fd5b843567ffffffffffffffff808211156127ee57600080fd5b6127fa8883890161264a565b9096509450602087013591508082111561281357600080fd5b506128208782880161264a565b95989497509550505050565b60008060006040848603121561284157600080fd5b833567ffffffffffffffff81111561285857600080fd5b6128648682870161264a565b9094509250612877905060208501612696565b90509250925092565b60006020828403121561289257600080fd5b610d1682612696565b600080600080608085870312156128b157600080fd5b6128ba85612696565b93506128c860208601612696565b93969395505050506040820135916060013590565b600080604083850312156128f057600080fd5b61270383612696565b60006020828403121561290b57600080fd5b5035919050565b6000806040838503121561292557600080fd5b82359150602083013561273f81612cfe565b6000806040838503121561294a57600080fd5b50508035926020909101359150565b60008060006060848603121561296e57600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561299a57600080fd5b8351925060208401519150604084015190509250925092565b600080600080608085870312156129c957600080fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b039485168152929093166020830152604082015260ff909116606082015260800190565b600060208083528351808285015260005b81811015612a3d57858101830151858201604001528201612a21565b81811115612a4f576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252601b908201527f43616c6c6572206973206e6f742061207465616d206d656d6265720000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612b215784516001600160a01b031683529383019391830191600101612afc565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612b5557612b55612cd2565b500190565b600082612b7757634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115612bb7578160001904821115612b9d57612b9d612cd2565b80851615612baa57918102915b93841c9390800290612b81565b509250929050565b6000610d1660ff841683600082612bd857506001610bfd565b81612be557506000610bfd565b8160018114612bfb5760028114612c0557612c21565b6001915050610bfd565b60ff841115612c1657612c16612cd2565b50506001821b610bfd565b5060208310610133831016604e8410600b8410161715612c44575081810a610bfd565b612c4e8383612b7c565b8060001904821115612c6257612c62612cd2565b029392505050565b6000816000190483118215151615612c8457612c84612cd2565b500290565b600082821015612c9b57612c9b612cd2565b500390565b600081612caf57612caf612cd2565b506000190190565b6000600019821415612ccb57612ccb612cd2565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114612d1357600080fd5b5056fea26469706673582212205736786a1d693d31ec86aba06ac781617354e9ce7c9744bd0992e1cc4f18368264736f6c63430008070033

Deployed Bytecode

0x60806040526004361061031e5760003560e01c80636ddd1713116101ab578063bafe446b116100f7578063e96fada211610095578063f84ba65d1161006f578063f84ba65d1461096e578063f8821a621461098e578063f887ea40146109a4578063fabb0b4f146109c457600080fd5b8063e96fada21461090e578063f1f3bca31461092e578063f2fde38b1461094e57600080fd5b8063c1adf7bc116100d1578063c1adf7bc1461085b578063c287184e14610888578063d6860142146108a8578063dd62ed3e146108c857600080fd5b8063bafe446b14610810578063bf56b37114610825578063bfa21d6a1461083b57600080fd5b80638da5cb5b11610164578063a4b45c001161013e578063a4b45c0014610790578063a8aa1b31146107b0578063a9059cbb146107d0578063abe57e70146107f057600080fd5b80638da5cb5b1461073057806395d89b411461074e5780639b02c4021461077a57600080fd5b80636ddd17131461064c5780636f4ce428146106665780636fcba3771461069357806370a08231146106b3578063715018a6146106e9578063893d20e8146106fe57600080fd5b80634782f7791161026a5780635804f1e41161022357806361e08e72116101fd57806361e08e72146105e157806363a803e1146105f7578063658d4b7f1461060c578063672434821461062c57600080fd5b80635804f1e414610596578063584f969a146105ac57806360bba03d146105c157600080fd5b80634782f779146104d6578063492a937b146104f6578063507139351461051657806354a1dfc91461053657806356a227f214610556578063571ac8b01461057657600080fd5b8063234e9494116102d7578063313ce567116102b1578063313ce5671461045857806334848b9a14610474578063421dd7c71461049457806346d7edaa146104a957600080fd5b8063234e94941461040e57806323b872dd146104235780632b112e491461044357600080fd5b80630445b6671461032a57806306fdde0314610353578063095db78f14610392578063095ea7b3146103b45780631031e36e146103e457806318160ddd146103f957600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5061034060245481565b6040519081526020015b60405180910390f35b34801561035f57600080fd5b5060408051808201909152600d81526c505552504c452050414c41434560981b60208201525b60405161034a9190612a10565b34801561039e57600080fd5b506103b26103ad36600461282c565b6109da565b005b3480156103c057600080fd5b506103d46103cf3660046126e5565b610b96565b604051901515815260200161034a565b3480156103f057600080fd5b506103b2610c03565b34801561040557600080fd5b50600354610340565b34801561041a57600080fd5b50610340610c68565b34801561042f57600080fd5b506103d461043e36600461274a565b610c88565b34801561044f57600080fd5b50610340610d1d565b34801561046457600080fd5b506040516009815260200161034a565b34801561048057600080fd5b506103b261048f366004612959565b610d5e565b3480156104a057600080fd5b506103b2610dff565b3480156104b557600080fd5b506103406104c43660046126ab565b60186020526000908152604090205481565b3480156104e257600080fd5b506103b26104f13660046126e5565b610e54565b34801561050257600080fd5b506103b261051136600461278b565b610f1c565b34801561052257600080fd5b506103b2610531366004612959565b610fda565b34801561054257600080fd5b506103b261055136600461289b565b611075565b34801561056257600080fd5b506103b2610571366004612912565b6110f8565b34801561058257600080fd5b506103d46105913660046126ab565b611188565b3480156105a257600080fd5b50610340601f5481565b3480156105b857600080fd5b506103b2611196565b3480156105cd57600080fd5b506103b26105dc36600461278b565b6111eb565b3480156105ed57600080fd5b5061034060225481565b34801561060357600080fd5b50610340611240565b34801561061857600080fd5b506103b261062736600461278b565b61125b565b34801561063857600080fd5b506103b26106473660046127c0565b6112b0565b34801561065857600080fd5b506023546103d49060ff1681565b34801561067257600080fd5b506103406106813660046126ab565b60096020526000908152604090205481565b34801561069f57600080fd5b506103b26106ae3660046129b3565b611417565b3480156106bf57600080fd5b506103406106ce3660046126ab565b6001600160a01b031660009081526007602052604090205490565b3480156106f557600080fd5b506103b261147a565b34801561070a57600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161034a565b34801561073c57600080fd5b506000546001600160a01b0316610718565b34801561075a57600080fd5b506040805180820190915260038152620a0a0b60eb1b6020820152610385565b34801561078657600080fd5b50610340601b5481565b34801561079c57600080fd5b506103b26107ab366004612711565b6114ee565b3480156107bc57600080fd5b50601d54610718906001600160a01b031681565b3480156107dc57600080fd5b506103d46107eb3660046126e5565b611546565b3480156107fc57600080fd5b506103b261080b366004612937565b611553565b34801561081c57600080fd5b506103406115c4565b34801561083157600080fd5b50610340601e5481565b34801561084757600080fd5b50601354610718906001600160a01b031681565b34801561086757600080fd5b506103406108763660046126ab565b600a6020526000908152604090205481565b34801561089457600080fd5b506103b26108a33660046128f9565b6115df565b3480156108b457600080fd5b506103b26108c33660046128dd565b61161c565b3480156108d457600080fd5b506103406108e3366004612711565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b34801561091a57600080fd5b50601454610718906001600160a01b031681565b34801561093a57600080fd5b50610340610949366004612880565b6116ad565b34801561095a57600080fd5b506103b26109693660046126ab565b6116fa565b34801561097a57600080fd5b506103b261098936600461278b565b6117e4565b34801561099a57600080fd5b5061034060255481565b3480156109b057600080fd5b50601554610718906001600160a01b031681565b3480156109d057600080fd5b5061034060205481565b3360009081526027602052604090205460ff1680610a0257506000546001600160a01b031633145b610a275760405162461bcd60e51b8152600401610a1e90612a65565b60405180910390fd5b8015610a3c5760195460ff16610a3c57600080fd5b60005b82811015610b90578115610acb57601b8054906000610a5d83612cb7565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea32858584818110610a9657610a96612ce8565b9050602002016020810190610aab91906126ab565b436002604051610abe94939291906129e5565b60405180910390a1610b2b565b60186000858584818110610ae157610ae1612ce8565b9050602002016020810190610af691906126ab565b6001600160a01b0316815260208101919091526040016000205415610b2b57601b8054906000610b2583612ca0565b91905055505b81610b37576000610b39565b435b60186000868685818110610b4f57610b4f612ce8565b9050602002016020810190610b6491906126ab565b6001600160a01b0316815260208101919091526040016000205580610b8881612cb7565b915050610a3f565b50505050565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610bf19086815260200190565b60405180910390a35060015b92915050565b3360009081526027602052604090205460ff1680610c2b57506000546001600160a01b031633145b610c475760405162461bcd60e51b8152600401610a1e90612a65565b602154610100900460ff1615610c5c57600080fd5b6021805460ff19169055565b6000610c766009600a612bbf565b600554610c839190612b5a565b905090565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610d08576001600160a01b0384166000908152600860209081526040808320338452909152902054610ce3908390612c89565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610d13848484611839565b90505b9392505050565b6002546001600160a01b039081166000908152600760205260408082205460015490931682528120549091610d5191612b42565b600354610c839190612c89565b3360009081526027602052604090205460ff1680610d8657506000546001600160a01b031633145b610da25760405162461bcd60e51b8152600401610a1e90612a65565b60215460ff16158015610db55750600a83105b610dbe57600080fd5b60208390556021805460ff1916600117905543601e55610dde8242612b42565b601c55610ded6009600a612bbf565b610df79082612c6a565b601a55505050565b3360009081526027602052604090205460ff1680610e2757506000546001600160a01b031633145b610e435760405162461bcd60e51b8152600401610a1e90612a65565b6019805461ffff1916610100179055565b6000546001600160a01b03163314610e7e5760405162461bcd60e51b8152600401610a1e90612a9c565b600080836001600160a01b03168360405160006040518083038185875af1925050503d8060008114610ecc576040519150601f19603f3d011682016040523d82523d6000602084013e610ed1565b606091505b509150915081610b905760405162461bcd60e51b815260206004820152601660248201527508cc2d2d8cac840e8de40eed2e8d0c8e4c2ee408aa8960531b6044820152606401610a1e565b6000546001600160a01b03163314610f465760405162461bcd60e51b8152600401610a1e90612a9c565b601d546001600160a01b0383811691161415610faf5760405162461bcd60e51b815260206004820152602260248201527f43616e277420616c7465722063757272656e74206c697175696469747920706160448201526134b960f11b6064820152608401610a1e565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146110045760405162461bcd60e51b8152600401610a1e90612a9c565b6000831180156110145750600082115b80156110205750600081115b801561102e57506127108111155b61103757600080fd5b80836003546110469190612c6a565b6110509190612b5a565b6004556003548190611063908490612c6a565b61106d9190612b5a565b600555505050565b6000546001600160a01b0316331461109f5760405162461bcd60e51b8152600401610a1e90612a9c565b600082116110ac57600080fd5b6023805461ffff191685151561ff00191617610100851515021790556003546110d6908390612b5a565b6024556110e56009600a612bbf565b6110ef9082612c6a565b60255550505050565b3360009081526027602052604090205460ff168061112057506000546001600160a01b031633145b61113c5760405162461bcd60e51b8152600401610a1e90612a65565b476001600160a01b0382166108fc60646111568685612c6a565b6111609190612b5a565b6040518115909202916000818181858888f19350505050158015610b90573d6000803e3d6000fd5b6000610bfd82600019610b96565b3360009081526027602052604090205460ff16806111be57506000546001600160a01b031633145b6111da5760405162461bcd60e51b8152600401610a1e90612a65565b6021805461ffff1916610101179055565b6000546001600160a01b031633146112155760405162461bcd60e51b8152600401610a1e90612a9c565b6001600160a01b03919091166000908152602760205260409020805460ff1916911515919091179055565b600061124e6009600a612bbf565b600654610c839190612b5a565b6000546001600160a01b031633146112855760405162461bcd60e51b8152600401610a1e90612a9c565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146112da5760405162461bcd60e51b8152600401610a1e90612a9c565b82158015906112e857508083145b6112f157600080fd5b3360005b8481101561140f576017600087878481811061131357611313612ce8565b905060200201602081019061132891906126ab565b6001600160a01b0316815260208101919091526040016000205460ff161580156113975750600d600087878481811061136357611363612ce8565b905060200201602081019061137891906126ab565b6001600160a01b0316815260208101919091526040016000205460ff16155b156113fd576113fb828787848181106113b2576113b2612ce8565b90506020020160208101906113c791906126ab565b6113d36009600a612bbf565b8787868181106113e5576113e5612ce8565b905060200201356113f69190612c6a565b611d3b565b505b8061140781612cb7565b9150506112f5565b505050505050565b6000546001600160a01b031633146114415760405162461bcd60e51b8152600401610a1e90612a9c565b600f849055600e8390556114558484612b42565b6010556011829055601281905561146d600282612b5a565b60105410610b9057600080fd5b6000546001600160a01b031633146114a45760405162461bcd60e51b8152600401610a1e90612a9c565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146115185760405162461bcd60e51b8152600401610a1e90612a9c565b601380546001600160a01b039384166001600160a01b03199182161790915560148054929093169116179055565b6000610d16338484611839565b6000546001600160a01b0316331461157d5760405162461bcd60e51b8152600401610a1e90612a9c565b60008211801561158d5750600081115b801561159b57506127108111155b6115a457600080fd5b80826003546115b39190612c6a565b6115bd9190612b5a565b6006555050565b60006115d26009600a612bbf565b600454610c839190612b5a565b6000546001600160a01b031633146116095760405162461bcd60e51b8152600401610a1e90612a9c565b603c81111561161757600080fd5b602255565b3360009081526027602052604090205460ff168061164457506000546001600160a01b031633145b6116605760405162461bcd60e51b8152600401610a1e90612a65565b601954610100900460ff161561167557600080fd5b6019805460ff191683151517905562015180811061169257600080fd5b80601c60008282546116a49190612b42565b90915550505050565b600043602054601e546116c09190612b42565b106116d4576001601254610bfd9190612c89565b81156116ea57601154601054610bfd9190612b42565b601154601054610bfd9190612c89565b6000546001600160a01b031633146117245760405162461bcd60e51b8152600401610a1e90612a9c565b6001600160a01b0381166117895760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a1e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461180e5760405162461bcd60e51b8152600401610a1e90612a9c565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b60006001600160a01b0384166118915760405162461bcd60e51b815260206004820152601860248201527f42455032303a207472616e736665722066726f6d2030783000000000000000006044820152606401610a1e565b6001600160a01b0383166118e05760405162461bcd60e51b8152602060048201526016602482015275042455032303a207472616e7366657220746f203078360541b6044820152606401610a1e565b600082116119285760405162461bcd60e51b8152602060048201526015602482015274416d6f756e74206d757374206265203e207a65726f60581b6044820152606401610a1e565b6001600160a01b0384166000908152600760205260409020548211156119875760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152606401610a1e565b601e541580156119af57506001600160a01b03831660009081526017602052604090205460ff165b15611a36576001600160a01b0384166000908152600d602052604090205460ff16611a1c5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206e6f74206164646564207965742e00000000000000006044820152606401610a1e565b611a3643601e5542601f556023805460ff19166001179055565b60215460ff16611ac3576001600160a01b0384166000908152600d602052604090205460ff1680611a7f57506001600160a01b0383166000908152600d602052604090205460ff165b611ac35760405162461bcd60e51b81526020600482015260156024820152742a3930b234b733903737ba1037b832b7103cb2ba1760591b6044820152606401610a1e565b611ace848484611df5565b6001600160a01b03831660009081526017602052604090205460ff16158015611b0557506001546001600160a01b03848116911614155b15611b34576001600160a01b0383166000908152600c602052604090205460ff16611b3457611b34838361214a565b60195460ff168015611b47575042601c54115b15611c11576001600160a01b03841660009081526017602052604090205460ff168015611b7d5750326001600160a01b03841614155b8015611b9f57506001600160a01b038316600090815260186020526040902054155b15611c11576001600160a01b0383166000908152601860205260408120439055601b805491611bcd83612cb7565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea3284436000604051611c0894939291906129e5565b60405180910390a15b60265460ff1615611c2e57611c27848484611d3b565b9050610d16565b6001600160a01b038416600090815260076020526040902054611c52908390612c89565b6001600160a01b038516600090815260076020908152604080832093909355600b90529081205460ff1615611c875782611c91565b611c9184846121cf565b9050611c9c8461224d565b15611cb0578215611cb057611cb0836122c4565b6001600160a01b038416600090815260076020526040902054611cd4908290612b42565b6001600160a01b0380861660008181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d289085815260200190565b60405180910390a3506001949350505050565b6001600160a01b038316600090815260076020526040812054611d5f908390612c89565b6001600160a01b038086166000908152600760205260408082209390935590851681522054611d8f908390612b42565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611de39086815260200190565b60405180910390a35060019392505050565b6001600160a01b0383166000908152600c602052604090205460ff1680611e4757506001600160a01b03831660009081526017602052604090205460ff16611e3f57600554611e43565b6004545b8111155b611e875760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610a1e565b6001600160a01b0383166000908152600c602052604090205460ff1680611ed357506022546001600160a01b0383166000908152600a60205260409020544391611ed091612b42565b11155b611f1f5760405162461bcd60e51b815260206004820152601d60248201527f5472616e736665722072617465206c696d69742065786365656465642e0000006044820152606401610a1e565b6001600160a01b0383166000908152601860205260409020541561200257611f496009600a612bbf565b601a54611f569190612c6a565b8111158015611f7b57506001600160a01b038316600090815260096020526040902054155b8015611f88575042601c54115b611fe65760405162461bcd60e51b815260206004820152602960248201527f57616c6c65742070726f7465637465642c20706c6561736520636f6e746163746044820152681039bab83837b93a1760b91b6064820152608401610a1e565b6001600160a01b03831660009081526009602052604090204390555b6001600160a01b03821660009081526017602052604090205460ff16156120415750506001600160a01b03166000908152600960205260409020439055565b6001600160a01b0383166000908152600b602052604090205460ff166121455760195460ff168015612074575042601c54115b801561208e5750326000908152600a602052604090205443145b80156120b057506001600160a01b038216600090815260186020526040902054155b15612111576001600160a01b03821660009081526018602052604090819020439081905590517f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea9161210891329186916001906129e5565b60405180910390a15b6001600160a01b0382166000818152600a60205260409020439055321461214557326000908152600a602052604090204390555b505050565b6006546001600160a01b0383166000908152600760205260409020548190612173908490612b42565b11156121455760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b6064820152608401610a1e565b6001600160a01b03821660009081526017602052604081205460125460ff9091169082906121fc836116ad565b6122069086612c6a565b6122109190612b5a565b30600090815260076020526040812080549293508392909190612234908490612b42565b9091555061224490508185612c89565b95945050505050565b3360009081526017602052604081205460ff16158015612270575060265460ff16155b801561227e575060235460ff165b80156122a257506001600160a01b03821660009081526017602052604090205460ff165b8015610bfd575060255430600090815260076020526040902054101592915050565b6026805460ff1916600117905560245460009082106122e5576024546122e7565b815b306000908152600760205260409020549091508111156123135750306000908152600760205260409020545b60006010546002600f54846123289190612c6a565b6123329190612b5a565b61233c9190612b5a565b90506123488183612c89565b6040805160028082526060820183529294506000929091602083019080368337019050509050308160008151811061238257612382612ce8565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156123d657600080fd5b505afa1580156123ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061240e91906126c8565b8160018151811061242157612421612ce8565b6001600160a01b03928316602091820292909201015260155460405163791ac94760e01b81524792919091169063791ac9479061246b908790600090879030904290600401612ad1565b600060405180830381600087803b15801561248557600080fd5b505af1158015612499573d6000803e3d6000fd5b50505050600081476124ab9190612c89565b905060006002600f546124be9190612b5a565b6010546124cb9190612c89565b90506000816002600f54856124e09190612c6a565b6124ea9190612b5a565b6124f49190612b5a565b905060006125028285612c89565b90508015612546576014546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612544573d6000803e3d6000fd5b505b86156125f45760155460135460405163f305d71960e01b8152306004820152602481018a905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990849060c4016060604051808303818588803b1580156125b757600080fd5b505af11580156125cb573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906125f09190612985565b5050505b60408051828152602081018490529081018890527fdaf6233a382145376035341e71f8a04305f7e323d0fe3e58c908cf0a26b76df99060600160405180910390a150506026805460ff1916905550505050505050565b60008083601f84011261265c57600080fd5b50813567ffffffffffffffff81111561267457600080fd5b6020830191508360208260051b850101111561268f57600080fd5b9250929050565b803580151581146126a657600080fd5b919050565b6000602082840312156126bd57600080fd5b8135610d1681612cfe565b6000602082840312156126da57600080fd5b8151610d1681612cfe565b600080604083850312156126f857600080fd5b823561270381612cfe565b946020939093013593505050565b6000806040838503121561272457600080fd5b823561272f81612cfe565b9150602083013561273f81612cfe565b809150509250929050565b60008060006060848603121561275f57600080fd5b833561276a81612cfe565b9250602084013561277a81612cfe565b929592945050506040919091013590565b6000806040838503121561279e57600080fd5b82356127a981612cfe565b91506127b760208401612696565b90509250929050565b600080600080604085870312156127d657600080fd5b843567ffffffffffffffff808211156127ee57600080fd5b6127fa8883890161264a565b9096509450602087013591508082111561281357600080fd5b506128208782880161264a565b95989497509550505050565b60008060006040848603121561284157600080fd5b833567ffffffffffffffff81111561285857600080fd5b6128648682870161264a565b9094509250612877905060208501612696565b90509250925092565b60006020828403121561289257600080fd5b610d1682612696565b600080600080608085870312156128b157600080fd5b6128ba85612696565b93506128c860208601612696565b93969395505050506040820135916060013590565b600080604083850312156128f057600080fd5b61270383612696565b60006020828403121561290b57600080fd5b5035919050565b6000806040838503121561292557600080fd5b82359150602083013561273f81612cfe565b6000806040838503121561294a57600080fd5b50508035926020909101359150565b60008060006060848603121561296e57600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561299a57600080fd5b8351925060208401519150604084015190509250925092565b600080600080608085870312156129c957600080fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b039485168152929093166020830152604082015260ff909116606082015260800190565b600060208083528351808285015260005b81811015612a3d57858101830151858201604001528201612a21565b81811115612a4f576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252601b908201527f43616c6c6572206973206e6f742061207465616d206d656d6265720000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612b215784516001600160a01b031683529383019391830191600101612afc565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612b5557612b55612cd2565b500190565b600082612b7757634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115612bb7578160001904821115612b9d57612b9d612cd2565b80851615612baa57918102915b93841c9390800290612b81565b509250929050565b6000610d1660ff841683600082612bd857506001610bfd565b81612be557506000610bfd565b8160018114612bfb5760028114612c0557612c21565b6001915050610bfd565b60ff841115612c1657612c16612cd2565b50506001821b610bfd565b5060208310610133831016604e8410600b8410161715612c44575081810a610bfd565b612c4e8383612b7c565b8060001904821115612c6257612c62612cd2565b029392505050565b6000816000190483118215151615612c8457612c84612cd2565b500290565b600082821015612c9b57612c9b612cd2565b500390565b600081612caf57612caf612cd2565b506000190190565b6000600019821415612ccb57612ccb612cd2565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114612d1357600080fd5b5056fea26469706673582212205736786a1d693d31ec86aba06ac781617354e9ce7c9744bd0992e1cc4f18368264736f6c63430008070033

Deployed Bytecode Sourcemap

5271:16531:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7273:50;;;;;;;;;;;;;;;;;;;16116:25:1;;;16104:2;16089:18;7273:50:0;;;;;;;;8737:71;;;;;;;;;;-1:-1:-1;8800:5:0;;;;;;;;;;;;-1:-1:-1;;;8800:5:0;;;;8737:71;;;;;;;:::i;11693:617::-;;;;;;;;;;-1:-1:-1;11693:617:0;;;;;:::i;:::-;;:::i;:::-;;9478:216;;;;;;;;;;-1:-1:-1;9478:216:0;;;;;:::i;:::-;;:::i;:::-;;;9611:14:1;;9604:22;9586:41;;9574:2;9559:18;9478:216:0;9446:187:1;11057:115:0;;;;;;;;;;;;;:::i;8485:88::-;;;;;;;;;;-1:-1:-1;8558:12:0;;8485:88;;9002:107;;;;;;;;;;;;;:::i;12482:341::-;;;;;;;;;;-1:-1:-1;12482:341:0;;;;;:::i;:::-;;:::i;21324:138::-;;;;;;;;;;;;;:::i;8579:71::-;;;;;;;;;;-1:-1:-1;8579:71:0;;5598:1;17603:36:1;;17591:2;17576:18;8579:71:0;17461:184:1;10673:372:0;;;;;;;;;;-1:-1:-1;10673:372:0;;;;;:::i;:::-;;:::i;11554:127::-;;;;;;;;;;;;;:::i;6749:45::-;;;;;;;;;;-1:-1:-1;6749:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;21470:223;;;;;;;;;;-1:-1:-1;21470:223:0;;;;;:::i;:::-;;:::i;19144:184::-;;;;;;;;;;-1:-1:-1;19144:184:0;;;;;:::i;:::-;;:::i;19472:339::-;;;;;;;;;;-1:-1:-1;19472:339:0;;;;;:::i;:::-;;:::i;20956:360::-;;;;;;;;;;-1:-1:-1;20956:360:0;;;;;:::i;:::-;;:::i;10447:214::-;;;;;;;;;;-1:-1:-1;10447:214:0;;;;;:::i;:::-;;:::i;9702:122::-;;;;;;;;;;-1:-1:-1;9702:122:0;;;;;:::i;:::-;;:::i;7034:27::-;;;;;;;;;;;;;;;;11184:111;;;;;;;;;;;;;:::i;9836:119::-;;;;;;;;;;-1:-1:-1;9836:119:0;;;;;:::i;:::-;;:::i;7165:28::-;;;;;;;;;;;;;;;;9115:105;;;;;;;;;;;;;:::i;20050:119::-;;;;;;;;;;-1:-1:-1;20050:119:0;;;;;:::i;:::-;;:::i;9967:468::-;;;;;;;;;;-1:-1:-1;9967:468:0;;;;;:::i;:::-;;:::i;7202:31::-;;;;;;;;;;-1:-1:-1;7202:31:0;;;;;;;;5957:44;;;;;;;;;;-1:-1:-1;5957:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;20312:386;;;;;;;;;;-1:-1:-1;20312:386:0;;;;;:::i;:::-;;:::i;9226:105::-;;;;;;;;;;-1:-1:-1;9226:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;9310:18:0;9292:7;9310:18;;;:9;:18;;;;;;;9226:105;4866:148;;;;;;;;;;;;;:::i;8814:71::-;;;;;;;;;;-1:-1:-1;8857:7:0;4721:6;-1:-1:-1;;;;;4721:6:0;8814:71;;;-1:-1:-1;;;;;7151:32:1;;;7133:51;;7121:2;7106:18;8814:71:0;6987:203:1;4656:79:0;;;;;;;;;;-1:-1:-1;4694:7:0;4721:6;-1:-1:-1;;;;;4721:6:0;4656:79;;8656:75;;;;;;;;;;-1:-1:-1;8721:7:0;;;;;;;;;;;;-1:-1:-1;;;8721:7:0;;;;8656:75;;6905:30;;;;;;;;;;;;;;;;20706:242;;;;;;;;;;-1:-1:-1;20706:242:0;;;;;:::i;:::-;;:::i;6974:19::-;;;;;;;;;;-1:-1:-1;6974:19:0;;;;-1:-1:-1;;;;;6974:19:0;;;12318:156;;;;;;;;;;-1:-1:-1;12318:156:0;;;;;:::i;:::-;;:::i;19823:219::-;;;;;;;;;;-1:-1:-1;19823:219:0;;;;;:::i;:::-;;:::i;8891:105::-;;;;;;;;;;;;;:::i;7002:25::-;;;;;;;;;;;;;;;;6388:97;;;;;;;;;;-1:-1:-1;6388:97:0;;;;-1:-1:-1;;;;;6388:97:0;;;6008:43;;;;;;;;;;-1:-1:-1;6008:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;19336:128;;;;;;;;;;-1:-1:-1;19336:128:0;;;;;:::i;:::-;;:::i;11307:235::-;;;;;;;;;;-1:-1:-1;11307:235:0;;;;;:::i;:::-;;:::i;9337:133::-;;;;;;;;;;-1:-1:-1;9337:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;9439:19:0;;;9421:7;9439:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;9337:133;6492:97;;;;;;;;;;-1:-1:-1;6492:97:0;;;;-1:-1:-1;;;;;6492:97:0;;;16729:243;;;;;;;;;;-1:-1:-1;16729:243:0;;;;;:::i;:::-;;:::i;5020:244::-;;;;;;;;;;-1:-1:-1;5020:244:0;;;;;:::i;:::-;;:::i;20177:127::-;;;;;;;;;;-1:-1:-1;20177:127:0;;;;;:::i;:::-;;:::i;7330:49::-;;;;;;;;;;;;;;;;6598:24;;;;;;;;;;-1:-1:-1;6598:24:0;;;;-1:-1:-1;;;;;6598:24:0;;;7068:25;;;;;;;;;;;;;;;;11693:617;2771:10;7561:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;4694:7:0;4721:6;-1:-1:-1;;;;;4721:6:0;7589:10;:21;7561:49;7553:89;;;;-1:-1:-1;;;7553:89:0;;;;;;;:::i;:::-;;;;;;;;;11793:8:::1;11789:67;;;11826:17;::::0;::::1;;11818:26;;;::::0;::::1;;11881:6;11876:427;11893:19:::0;;::::1;11876:427;;;11952:8;11948:277;;;11981:15;:17:::0;;;:15:::1;:17;::::0;::::1;:::i;:::-;;;;;;12022:56;12038:9;12049:8;;12058:1;12049:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;12062:12;12076:1;12022:56;;;;;;;;;:::i;:::-;;;;;;;;11948:277;;;12136:9;:22;12146:8;;12155:1;12146:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12136:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;12136:22:0;;:27;12132:71:::1;;12186:15;:17:::0;;;:15:::1;:17;::::0;::::1;:::i;:::-;;;;;;12132:71;12264:8;:27;;12290:1;12264:27;;;12275:12;12264:27;12239:9;:22;12249:8;;12258:1;12249:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12239:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;12239:22:0;:52;11914:3;::::1;::::0;::::1;:::i;:::-;;;;11876:427;;;;11693:617:::0;;;:::o;9478:216::-;9582:10;9553:4;9570:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;9570:32:0;;;;;;;;;;:41;;;9627:37;9553:4;;9570:32;;9627:37;;;;9605:6;16116:25:1;;16104:2;16089:18;;15970:177;9627:37:0;;;;;;;;-1:-1:-1;9682:4:0;9478:216;;;;;:::o;11057:115::-;2771:10;7561:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;4694:7:0;4721:6;-1:-1:-1;;;;;4721:6:0;7589:10;:21;7561:49;7553:89;;;;-1:-1:-1;;;7553:89:0;;;;;;;:::i;:::-;11119:13:::1;::::0;::::1;::::0;::::1;;;11118:14;11110:23;;;::::0;::::1;;11144:12;:20:::0;;-1:-1:-1;;11144:20:0::1;::::0;;11057:115::o;9002:107::-;9052:7;9090:15;5598:1;9090:2;:15;:::i;:::-;9070:16;;:36;;;;:::i;:::-;9063:43;;9002:107;:::o;12482:341::-;-1:-1:-1;;;;;12602:19:0;;12582:4;12602:19;;;:11;:19;;;;;;;;12622:10;12602:31;;;;;;;;-1:-1:-1;;12602:52:0;12599:157;;-1:-1:-1;;;;;12704:19:0;;;;;;:11;:19;;;;;;;;12724:10;12704:31;;;;;;;;:40;;12738:6;;12704:40;:::i;:::-;-1:-1:-1;;;;;12670:19:0;;;;;;:11;:19;;;;;;;;12690:10;12670:31;;;;;;;:74;12599:157;12775:40;12789:6;12797:9;12808:6;12775:13;:40::i;:::-;12768:47;;12482:341;;;;;;:::o;21324:138::-;21448:4;;-1:-1:-1;;;;;21448:4:0;;;21377:7;9310:18;;;:9;:18;;;;;;;21430:4;;;;;9310:18;;;;;21377:7;;21420:33;;;:::i;:::-;21404:12;;:50;;;;:::i;10673:372::-;2771:10;7561:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;4694:7:0;4721:6;-1:-1:-1;;;;;4721:6:0;7589:10;:21;7561:49;7553:89;;;;-1:-1:-1;;;7553:89:0;;;;;;;:::i;:::-;10790:12:::1;::::0;::::1;;10789:13;:33:::0;::::1;;;;10820:2;10806:11;:16;10789:33;10781:42;;;::::0;::::1;;10834:10;:24:::0;;;10869:12:::1;:19:::0;;-1:-1:-1;;10869:19:0::1;10884:4;10869:19;::::0;;10912:12:::1;10899:10;:25:::0;10953:29:::1;10971:11:::0;10953:15:::1;:29;:::i;:::-;10935:15;:47:::0;11021:15:::1;5598:1;11021:2;:15;:::i;:::-;11011:26;::::0;:6;:26:::1;:::i;:::-;10993:15;:44:::0;-1:-1:-1;;;10673:372:0:o;11554:127::-;2771:10;7561:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;4694:7:0;4721:6;-1:-1:-1;;;;;4721:6:0;7589:10;:21;7561:49;7553:89;;;;-1:-1:-1;;;7553:89:0;;;;;;;:::i;:::-;11612:18:::1;:25:::0;;-1:-1:-1;;11648:25:0;11612::::1;11648::::0;;;11554:127::o;21470:223::-;4781:6;;-1:-1:-1;;;;;4781:6:0;2771:10;4781:22;4773:67;;;;-1:-1:-1;;;4773:67:0;;;;;;;:::i;:::-;21564:12:::1;21578:17:::0;21599:9:::1;-1:-1:-1::0;;;;;21599:14:0::1;21621:6;21599:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21563:69;;;;21651:7;21643:42;;;::::0;-1:-1:-1;;;21643:42:0;;13230:2:1;21643:42:0::1;::::0;::::1;13212:21:1::0;13269:2;13249:18;;;13242:30;-1:-1:-1;;;13288:18:1;;;13281:52;13350:18;;21643:42:0::1;13028:346:1::0;19144:184:0;4781:6;;-1:-1:-1;;;;;4781:6:0;2771:10;4781:22;4773:67;;;;-1:-1:-1;;;4773:67:0;;;;;;;:::i;:::-;19239:4:::1;::::0;-1:-1:-1;;;;;19233:10:0;;::::1;19239:4:::0;::::1;19233:10;;19225:57;;;::::0;-1:-1:-1;;;19225:57:0;;15769:2:1;19225:57:0::1;::::0;::::1;15751:21:1::0;15808:2;15788:18;;;15781:30;15847:34;15827:18;;;15820:62;-1:-1:-1;;;15898:18:1;;;15891:32;15940:19;;19225:57:0::1;15567:398:1::0;19225:57:0::1;-1:-1:-1::0;;;;;19293:18:0;;;::::1;;::::0;;;:14:::1;:18;::::0;;;;:27;;-1:-1:-1;;19293:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19144:184::o;19472:339::-;4781:6;;-1:-1:-1;;;;;4781:6:0;2771:10;4781:22;4773:67;;;;-1:-1:-1;;;4773:67:0;;;;;;;:::i;:::-;19607:1:::1;19592:12;:16;:37;;;;;19628:1;19612:13;:17;19592:37;:52;;;;;19643:1;19633:7;:11;19592:52;:72;;;;;19659:5;19648:7;:16;;19592:72;19584:81;;;::::0;::::1;;19726:7;19710:12;19695;;:27;;;;:::i;:::-;19694:39;;;;:::i;:::-;19676:15;:57:::0;19764:12:::1;::::0;19796:7;;19764:28:::1;::::0;19779:13;;19764:28:::1;:::i;:::-;19763:40;;;;:::i;:::-;19744:16;:59:::0;-1:-1:-1;;;19472:339:0:o;20956:360::-;4781:6;;-1:-1:-1;;;;;4781:6:0;2771:10;4781:22;4773:67;;;;-1:-1:-1;;;4773:67:0;;;;;;;:::i;:::-;21119:1:::1;21104:12;:16;21096:25;;;::::0;::::1;;21132:11;:22:::0;;-1:-1:-1;;21165:32:0;21132:22;::::1;;-1:-1:-1::0;;21165:32:0;;21132:22:::1;21165:32:::0;::::1;;;;::::0;;21224:12:::1;::::0;:27:::1;::::0;21239:12;;21224:27:::1;:::i;:::-;21208:13;:43:::0;21292:15:::1;5598:1;21292:2;:15;:::i;:::-;21276:32;::::0;:12;:32:::1;:::i;:::-;21262:11;:46:::0;-1:-1:-1;;;;20956:360:0:o;10447:214::-;2771:10;7561:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;4694:7:0;4721:6;-1:-1:-1;;;;;4721:6:0;7589:10;:21;7561:49;7553:89;;;;-1:-1:-1;;;7553:89:0;;;;;;;:::i;:::-;10562:21:::1;-1:-1:-1::0;;;;;10594:21:0;::::1;:59;10649:3;10617:28;10629:16:::0;10562:21;10617:28:::1;:::i;:::-;10616:36;;;;:::i;:::-;10594:59;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;9702:122:::0;9757:4;9781:35;9789:7;-1:-1:-1;;9781:7:0;:35::i;11184:111::-;2771:10;7561:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;4694:7:0;4721:6;-1:-1:-1;;;;;4721:6:0;7589:10;:21;7561:49;7553:89;;;;-1:-1:-1;;;7553:89:0;;;;;;;:::i;:::-;11237:13:::1;:20:::0;;-1:-1:-1;;11268:19:0;;;;;11184:111::o;9836:119::-;4781:6;;-1:-1:-1;;;;;4781:6:0;2771:10;4781:22;4773:67;;;;-1:-1:-1;;;4773:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9919:17:0;;;::::1;;::::0;;;:10:::1;:17;::::0;;;;:28;;-1:-1:-1;;9919:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;9836:119::o;9115:105::-;9165:7;9201:15;5598:1;9201:2;:15;:::i;:::-;9183:14;;:34;;;;:::i;20050:119::-;4781:6;;-1:-1:-1;;;;;4781:6:0;2771:10;4781:22;4773:67;;;;-1:-1:-1;;;4773:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20133:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;20133:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20050:119::o;9967:468::-;4781:6;;-1:-1:-1;;;;;4781:6:0;2771:10;4781:22;4773:67;;;;-1:-1:-1;;;4773:67:0;;;;;;;:::i;:::-;10080:20;;;;;:58:::1;;-1:-1:-1::0;10104:34:0;;::::1;10080:58;10072:67;;;::::0;::::1;;10165:10;10150:12;10188:240;10205:20:::0;;::::1;10188:240;;;10251:14;:28;10266:9;;10276:1;10266:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10251:28:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;10251:28:0;;::::1;;10250:29;:64:::0;::::1;;;;10284:16;:30;10301:9;;10311:1;10301:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10284:30:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;10284:30:0;;::::1;;10283:31;10250:64;10247:170;;;10335:66;10350:4;10356:9;;10366:1;10356:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;10384:15;5598:1;10384:2;:15;:::i;:::-;10370:7;;10378:1;10370:10;;;;;;;:::i;:::-;;;;;;;:30;;;;:::i;:::-;10335:14;:66::i;:::-;;10247:170;10227:3:::0;::::1;::::0;::::1;:::i;:::-;;;;10188:240;;;;10061:374;9967:468:::0;;;;:::o;20312:386::-;4781:6;;-1:-1:-1;;;;;4781:6:0;2771:10;4781:22;4773:67;;;;-1:-1:-1;;;4773:67:0;;;;;;;:::i;:::-;20449:12:::1;:28:::0;;;20488:12:::1;:28:::0;;;20538:29:::1;20464:13:::0;20503;20538:29:::1;:::i;:::-;20527:8;:40:::0;20578:8:::1;:20:::0;;;20609:14:::1;:32:::0;;;20671:18:::1;20688:1;20626:15:::0;20671:18:::1;:::i;:::-;20660:8;;:29;20652:38;;;::::0;::::1;4866:148:::0;4781:6;;-1:-1:-1;;;;;4781:6:0;2771:10;4781:22;4773:67;;;;-1:-1:-1;;;4773:67:0;;;;;;;:::i;:::-;4973:1:::1;4957:6:::0;;4936:40:::1;::::0;-1:-1:-1;;;;;4957:6:0;;::::1;::::0;4936:40:::1;::::0;4973:1;;4936:40:::1;5004:1;4987:19:::0;;-1:-1:-1;;;;;;4987:19:0::1;::::0;;4866:148::o;20706:242::-;4781:6;;-1:-1:-1;;;;;4781:6:0;2771:10;4781:22;4773:67;;;;-1:-1:-1;;;4773:67:0;;;;;;;:::i;:::-;20823:20:::1;:53:::0;;-1:-1:-1;;;;;20823:53:0;;::::1;-1:-1:-1::0;;;;;;20823:53:0;;::::1;;::::0;;;20887:20:::1;:53:::0;;;;;::::1;::::0;::::1;;::::0;;20706:242::o;12318:156::-;12398:4;12422:44;12436:10;12448:9;12459:6;12422:13;:44::i;19823:219::-;4781:6;;-1:-1:-1;;;;;4781:6:0;2771:10;4781:22;4773:67;;;;-1:-1:-1;;;4773:67:0;;;;;;;:::i;:::-;19933:1:::1;19921:9;:13;:28;;;;;19948:1;19938:7;:11;19921:28;:48;;;;;19964:5;19953:7;:16;;19921:48;19913:57;;;::::0;::::1;;20027:7;20014:9;19999:12;;:24;;;;:::i;:::-;19998:36;;;;:::i;:::-;19981:14;:53:::0;-1:-1:-1;;19823:219:0:o;8891:105::-;8940:7;8977:15;5598:1;8977:2;:15;:::i;:::-;8958;;:35;;;;:::i;19336:128::-;4781:6;;-1:-1:-1;;;;;4781:6:0;2771:10;4781:22;4773:67;;;;-1:-1:-1;;;4773:67:0;;;;;;;:::i;:::-;19418:10:::1;19410:4;:18;;19402:27;;;::::0;::::1;;19440:9;:16:::0;19336:128::o;11307:235::-;2771:10;7561:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;4694:7:0;4721:6;-1:-1:-1;;;;;4721:6:0;7589:10;:21;7561:49;7553:89;;;;-1:-1:-1;;;7553:89:0;;;;;;;:::i;:::-;11401:18:::1;::::0;::::1;::::0;::::1;;;11400:19;11392:28;;;::::0;::::1;;11431:17;:28:::0;;-1:-1:-1;;11431:28:0::1;::::0;::::1;;;::::0;;11489:6:::1;11478:17:::0;::::1;11470:26;;;::::0;::::1;;11526:8;11507:15;;:27;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;;11307:235:0:o;16729:243::-;16785:7;16835:12;16821:10;;16808;;:23;;;;:::i;:::-;:39;16805:73;;16874:1;16857:14;;:18;;;;:::i;16805:73::-;16892:7;16888:39;;;16919:8;;16908;;:19;;;;:::i;16888:39::-;16956:8;;16945;;:19;;;;:::i;5020:244::-;4781:6;;-1:-1:-1;;;;;4781:6:0;2771:10;4781:22;4773:67;;;;-1:-1:-1;;;4773:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5109:22:0;::::1;5101:73;;;::::0;-1:-1:-1;;;5101:73:0;;12123:2:1;5101:73:0::1;::::0;::::1;12105:21:1::0;12162:2;12142:18;;;12135:30;12201:34;12181:18;;;12174:62;-1:-1:-1;;;12252:18:1;;;12245:36;12298:19;;5101:73:0::1;11921:402:1::0;5101:73:0::1;5211:6;::::0;;5190:38:::1;::::0;-1:-1:-1;;;;;5190:38:0;;::::1;::::0;5211:6;::::1;::::0;5190:38:::1;::::0;::::1;5239:6;:17:::0;;-1:-1:-1;;;;;;5239:17:0::1;-1:-1:-1::0;;;;;5239:17:0;;;::::1;::::0;;;::::1;::::0;;5020:244::o;20177:127::-;4781:6;;-1:-1:-1;;;;;4781:6:0;2771:10;4781:22;4773:67;;;;-1:-1:-1;;;4773:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20264:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;20264:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20177:127::o;12831:1734::-;12923:4;-1:-1:-1;;;;;12948:20:0;;12940:57;;;;-1:-1:-1;;;12940:57:0;;11770:2:1;12940:57:0;;;11752:21:1;11809:2;11789:18;;;11782:30;11848:26;11828:18;;;11821:54;11892:18;;12940:57:0;11568:348:1;12940:57:0;-1:-1:-1;;;;;13016:23:0;;13008:58;;;;-1:-1:-1;;;13008:58:0;;12530:2:1;13008:58:0;;;12512:21:1;12569:2;12549:18;;;12542:30;-1:-1:-1;;;12588:18:1;;;12581:52;12650:18;;13008:58:0;12328:346:1;13008:58:0;13094:1;13085:6;:10;13077:44;;;;-1:-1:-1;;;13077:44:0;;10668:2:1;13077:44:0;;;10650:21:1;10707:2;10687:18;;;10680:30;-1:-1:-1;;;10726:18:1;;;10719:51;10787:18;;13077:44:0;10466:345:1;13077:44:0;-1:-1:-1;;;;;13140:17:0;;;;;;:9;:17;;;;;;:27;-1:-1:-1;13140:27:0;13132:60;;;;-1:-1:-1;;;13132:60:0;;12881:2:1;13132:60:0;;;12863:21:1;12920:2;12900:18;;;12893:30;-1:-1:-1;;;12939:18:1;;;12932:50;12999:18;;13132:60:0;12679:344:1;13132:60:0;14644:10;;:15;;;13206:40;;-1:-1:-1;;;;;;13221:25:0;;;;;;:14;:25;;;;;;;;13206:40;13203:120;;;-1:-1:-1;;;;;13257:24:0;;;;;;:16;:24;;;;;;;;13249:61;;;;-1:-1:-1;;;13249:61:0;;14295:2:1;13249:61:0;;;14277:21:1;14334:2;14314:18;;;14307:30;14373:26;14353:18;;;14346:54;14417:18;;13249:61:0;14093:348:1;13249:61:0;13312:8;14726:12;14713:10;:25;14764:15;14749:12;:30;14790:11;:18;;-1:-1:-1;;14790:18:0;14804:4;14790:18;;;14675:141;13312:8;13337:12;;;;13333:111;;-1:-1:-1;;;;;13360:24:0;;;;;;:16;:24;;;;;;;;;:55;;-1:-1:-1;;;;;;13388:27:0;;;;;;:16;:27;;;;;;;;13360:55;13352:89;;;;-1:-1:-1;;;13352:89:0;;15419:2:1;13352:89:0;;;15401:21:1;15458:2;15438:18;;;15431:30;-1:-1:-1;;;15477:18:1;;;15470:51;15538:18;;13352:89:0;15217:345:1;13352:89:0;13456:39;13469:6;13477:9;13488:6;13456:12;:39::i;:::-;-1:-1:-1;;;;;13521:25:0;;;;;;:14;:25;;;;;;;;13520:26;:47;;;;-1:-1:-1;13563:4:0;;-1:-1:-1;;;;;13550:17:0;;;13563:4;;13550:17;;13520:47;13516:182;;;-1:-1:-1;;;;;13589:26:0;;;;;;:15;:26;;;;;;;;13584:103;;13636:35;13653:9;13664:6;13636:16;:35::i;:::-;13721:17;;;;:54;;;;;13760:15;13742;;:33;13721:54;13718:351;;;-1:-1:-1;;;;;13795:22:0;;;;;;:14;:22;;;;;;;;:48;;;;-1:-1:-1;13821:9:0;-1:-1:-1;;;;;13821:22:0;;;;13795:48;:77;;;;-1:-1:-1;;;;;;13847:20:0;;;;;;:9;:20;;;;;;:25;13795:77;13792:266;;;-1:-1:-1;;;;;13893:20:0;;;;;;:9;:20;;;;;13916:12;13893:35;;13947:15;:17;;;;;;:::i;:::-;;;;;;13988:54;14004:9;14015;14026:12;14040:1;13988:54;;;;;;;;;:::i;:::-;;;;;;;;13792:266;14092:6;;;;14089:63;;;14108:41;14123:6;14131:9;14142:6;14108:14;:41::i;:::-;14101:48;;;;14089:63;-1:-1:-1;;;;;14184:17:0;;;;;;:9;:17;;;;;;:26;;14204:6;;14184:26;:::i;:::-;-1:-1:-1;;;;;14164:17:0;;;;;;:9;:17;;;;;;;;:46;;;;16694:11;:19;;;;;;;;16693:20;14248:59;;14301:6;14248:59;;;14272:26;14280:9;14291:6;14272:7;:26::i;:::-;14223:84;;14331:25;14346:9;14331:14;:25::i;:::-;14328:66;;;14363:10;;14359:32;;14375:16;14384:6;14375:8;:16::i;:::-;-1:-1:-1;;;;;14437:20:0;;;;;;:9;:20;;;;;;:37;;14460:14;;14437:37;:::i;:::-;-1:-1:-1;;;;;14414:20:0;;;;;;;:9;:20;;;;;;;:60;;;;14492:43;;;;;;;;;;14520:14;16116:25:1;;16104:2;16089:18;;15970:177;14492:43:0;;;;;;;;-1:-1:-1;14553:4:0;;12831:1734;-1:-1:-1;;;;12831:1734:0:o;14824:300::-;-1:-1:-1;;;;;14954:17:0;;14917:4;14954:17;;;:9;:17;;;;;;:26;;14974:6;;14954:26;:::i;:::-;-1:-1:-1;;;;;14934:17:0;;;;;;;:9;:17;;;;;;:46;;;;15014:20;;;;;;;:29;;15037:6;;15014:29;:::i;:::-;-1:-1:-1;;;;;14991:20:0;;;;;;;:9;:20;;;;;;;:52;;;;15059:35;;;;;;;;;;15087:6;16116:25:1;;16104:2;16089:18;;15970:177;15059:35:0;;;;;;;;-1:-1:-1;15112:4:0;14824:300;;;;;:::o;15379:1220::-;-1:-1:-1;;;;;15480:23:0;;;;;;:15;:23;;;;;;;;;:98;;-1:-1:-1;;;;;;15518:22:0;;;;;;:14;:22;;;;;;;;:59;;15561:16;;15518:59;;;15543:15;;15518:59;15507:6;:71;;15480:98;15472:128;;;;-1:-1:-1;;;15472:128:0;;11424:2:1;15472:128:0;;;11406:21:1;11463:2;11443:18;;;11436:30;-1:-1:-1;;;11482:18:1;;;11475:47;11539:18;;15472:128:0;11222:341:1;15472:128:0;-1:-1:-1;;;;;15619:23:0;;;;;;:15;:23;;;;;;;;;:73;;-1:-1:-1;15667:9:0;;-1:-1:-1;;;;;15646:18:0;;;;;;:7;:18;;;;;;15680:12;;15646:30;;;:::i;:::-;:46;;15619:73;15611:115;;;;-1:-1:-1;;;15611:115:0;;13937:2:1;15611:115:0;;;13919:21:1;13976:2;13956:18;;;13949:30;14015:31;13995:18;;;13988:59;14064:18;;15611:115:0;13735:353:1;15611:115:0;-1:-1:-1;;;;;15751:17:0;;;;;;:9;:17;;;;;;:22;15747:261;;15826:15;5598:1;15826:2;:15;:::i;:::-;15807;;:35;;;;:::i;:::-;15797:6;:45;;:70;;;;-1:-1:-1;;;;;;15846:16:0;;;;;;:8;:16;;;;;;:21;15797:70;:107;;;;;15889:15;15871;;:33;15797:107;15789:161;;;;-1:-1:-1;;;15789:161:0;;14648:2:1;15789:161:0;;;14630:21:1;14687:2;14667:18;;;14660:30;14726:34;14706:18;;;14699:62;-1:-1:-1;;;14777:18:1;;;14770:39;14826:19;;15789:161:0;14446:405:1;15789:161:0;-1:-1:-1;;;;;15965:16:0;;;;;;:8;:16;;;;;15984:12;15965:31;;15747:261;-1:-1:-1;;;;;16032:25:0;;;;;;:14;:25;;;;;;;;16028:564;;;-1:-1:-1;;;;;;;16074:16:0;;;;;:8;:16;;;;;16093:12;16074:31;;15379:1220::o;16028:564::-;-1:-1:-1;;;;;16694:19:0;;16669:4;16694:19;;;:11;:19;;;;;;;;16123:469;;16169:17;;;;:54;;;;;16208:15;16190;;:33;16169:54;:92;;;;-1:-1:-1;16235:9:0;16227:18;;;;:7;:18;;;;;;16249:12;16227:34;16169:92;:121;;;;-1:-1:-1;;;;;;16265:20:0;;;;;;:9;:20;;;;;;:25;16169:121;16165:275;;;-1:-1:-1;;;;;16311:20:0;;;;;;:9;:20;;;;;;;16334:12;16311:35;;;;16370:54;;;;;;16386:9;;16321;;16422:1;;16370:54;:::i;:::-;;;;;;;;16165:275;-1:-1:-1;;;;;16454:18:0;;;;;;:7;:18;;;;;16475:12;16454:33;;16506:9;:22;16502:78;;16555:9;16547:18;;;;:7;:18;;;;;16568:12;16547:33;;16502:78;15379:1220;;;:::o;15136:235::-;15244:14;;-1:-1:-1;;;;;15277:20:0;;15222:19;15277:20;;;:9;:20;;;;;;15244:14;;15277:29;;15300:6;;15277:29;:::i;:::-;:44;;15269:94;;;;-1:-1:-1;;;15269:94:0;;11018:2:1;15269:94:0;;;11000:21:1;11057:2;11037:18;;;11030:30;11096:34;11076:18;;;11069:62;-1:-1:-1;;;11147:18:1;;;11140:35;11192:19;;15269:94:0;10816:401:1;16980:317:0;-1:-1:-1;;;;;17085:25:0;;17050:7;17085:25;;;:14;:25;;;;;;17175:14;;17085:25;;;;;17050:7;;17151:20;17085:25;17151:11;:20::i;:::-;17142:29;;:6;:29;:::i;:::-;17141:48;;;;:::i;:::-;17228:4;17210:24;;;;:9;:24;;;;;:37;;17121:68;;-1:-1:-1;17121:68:0;;17210:24;;;:37;;17121:68;;17210:37;:::i;:::-;;;;-1:-1:-1;17271:18:0;;-1:-1:-1;17280:9:0;17271:6;:18;:::i;:::-;17264:25;16980:317;-1:-1:-1;;;;;16980:317:0:o;17305:259::-;17411:10;17371:4;17396:26;;;:14;:26;;;;;;;;17395:27;:47;;;;-1:-1:-1;17436:6:0;;;;17435:7;17395:47;:71;;;;-1:-1:-1;17455:11:0;;;;17395:71;:109;;;;-1:-1:-1;;;;;;17479:25:0;;;;;;:14;:25;;;;;;;;17395:109;:161;;;;-1:-1:-1;17545:11:0;;17535:4;17517:24;;;;:9;:24;;;;;;:39;;17388:168;17305:259;-1:-1:-1;;17305:259:0:o;17572:1560::-;7426:6;:13;;-1:-1:-1;;7426:13:0;7435:4;7426:13;;;17667::::1;::::0;7426:6;;17658:22;::::1;:47;;17692:13;;17658:47;;;17683:6;17658:47;17738:4;17720:24;::::0;;;:9:::1;:24;::::0;;;;;17635:70;;-1:-1:-1;17720:39:0;-1:-1:-1;17716:84:0::1;;;-1:-1:-1::0;17794:4:0::1;17776:24;::::0;;;:9:::1;:24;::::0;;;;;17716:84:::1;17821:23;17883:8;;17878:1;17863:12;;17848;:27;;;;:::i;:::-;:31;;;;:::i;:::-;17847:44;;;;:::i;:::-;17821:70:::0;-1:-1:-1;17902:31:0::1;17821:70:::0;17902:31;::::1;:::i;:::-;17970:16;::::0;;17984:1:::1;17970:16:::0;;;;;::::1;::::0;;17902:31;;-1:-1:-1;17946:21:0::1;::::0;17970:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;17970:16:0::1;17946:40;;18015:4;17997;18002:1;17997:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17997:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;18041:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;18041:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;17997:7;;18041:13;;;;;:6;:13;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18031:4;18036:1;18031:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18031:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;18133:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;18133:188:0;;18099:21:::1;::::0;18133:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;18205:12;;18075:21:::1;::::0;18248:4;;18275::::1;::::0;18295:15:::1;::::0;18133:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18334:17;18378:13;18354:21;:37;;;;:::i;:::-;18334:57;;18402:19;18451:1;18436:12;;:16;;;;:::i;:::-;18424:8;;:29;;;;:::i;:::-;18402:51;;18466:26;18528:11;18523:1;18508:12;;18496:9;:24;;;;:::i;:::-;:28;;;;:::i;:::-;18495:44;;;;:::i;:::-;18466:73:::0;-1:-1:-1;18550:26:0::1;18579:30;18466:73:::0;18579:9;:30:::1;:::i;:::-;18550:59:::0;-1:-1:-1;18634:22:0;;18630:90:::1;;18671:20;::::0;:49:::1;::::0;-1:-1:-1;;;;;18671:20:0;;::::1;::::0;:49;::::1;;;::::0;18701:18;;18671:20:::1;:49:::0;:20;:49;18701:18;18671:20;:49;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;18630:90;18744:19:::0;;18741:293:::1;;18779:6;::::0;18953:20:::1;::::0;18779:243:::1;::::0;-1:-1:-1;;;18779:243:0;;18855:4:::1;18779:243;::::0;::::1;9175:34:1::0;9225:18;;;9218:34;;;18779:6:0::1;9268:18:1::0;;;9261:34;;;9311:18;;;9304:34;-1:-1:-1;;;;;18953:20:0;;::::1;9354:19:1::0;;;9347:44;18992:15:0::1;9407:19:1::0;;;9400:35;18779:6:0;::::1;::::0;:22:::1;::::0;18809:18;;9109:19:1;;18779:243:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18741:293;19051:73;::::0;;17339:25:1;;;17395:2;17380:18;;17373:34;;;17423:18;;;17416:34;;;19051:73:0::1;::::0;17327:2:1;17312:18;19051:73:0::1;;;;;;;-1:-1:-1::0;;7444:6:0;:14;;-1:-1:-1;;7444:14:0;;;-1:-1:-1;;;;;;;17572:1560:0:o;14:367:1:-;77:8;87:6;141:3;134:4;126:6;122:17;118:27;108:55;;159:1;156;149:12;108:55;-1:-1:-1;182:20:1;;225:18;214:30;;211:50;;;257:1;254;247:12;211:50;294:4;286:6;282:17;270:29;;354:3;347:4;337:6;334:1;330:14;322:6;318:27;314:38;311:47;308:67;;;371:1;368;361:12;308:67;14:367;;;;;:::o;386:160::-;451:20;;507:13;;500:21;490:32;;480:60;;536:1;533;526:12;480:60;386:160;;;:::o;551:247::-;610:6;663:2;651:9;642:7;638:23;634:32;631:52;;;679:1;676;669:12;631:52;718:9;705:23;737:31;762:5;737:31;:::i;803:251::-;873:6;926:2;914:9;905:7;901:23;897:32;894:52;;;942:1;939;932:12;894:52;974:9;968:16;993:31;1018:5;993:31;:::i;1059:323::-;1135:6;1143;1196:2;1184:9;1175:7;1171:23;1167:32;1164:52;;;1212:1;1209;1202:12;1164:52;1251:9;1238:23;1270:31;1295:5;1270:31;:::i;:::-;1320:5;1372:2;1357:18;;;;1344:32;;-1:-1:-1;;;1059:323:1:o;1387:388::-;1455:6;1463;1516:2;1504:9;1495:7;1491:23;1487:32;1484:52;;;1532:1;1529;1522:12;1484:52;1571:9;1558:23;1590:31;1615:5;1590:31;:::i;:::-;1640:5;-1:-1:-1;1697:2:1;1682:18;;1669:32;1710:33;1669:32;1710:33;:::i;:::-;1762:7;1752:17;;;1387:388;;;;;:::o;1780:456::-;1857:6;1865;1873;1926:2;1914:9;1905:7;1901:23;1897:32;1894:52;;;1942:1;1939;1932:12;1894:52;1981:9;1968:23;2000:31;2025:5;2000:31;:::i;:::-;2050:5;-1:-1:-1;2107:2:1;2092:18;;2079:32;2120:33;2079:32;2120:33;:::i;:::-;1780:456;;2172:7;;-1:-1:-1;;;2226:2:1;2211:18;;;;2198:32;;1780:456::o;2241:315::-;2306:6;2314;2367:2;2355:9;2346:7;2342:23;2338:32;2335:52;;;2383:1;2380;2373:12;2335:52;2422:9;2409:23;2441:31;2466:5;2441:31;:::i;:::-;2491:5;-1:-1:-1;2515:35:1;2546:2;2531:18;;2515:35;:::i;:::-;2505:45;;2241:315;;;;;:::o;2881:773::-;3003:6;3011;3019;3027;3080:2;3068:9;3059:7;3055:23;3051:32;3048:52;;;3096:1;3093;3086:12;3048:52;3136:9;3123:23;3165:18;3206:2;3198:6;3195:14;3192:34;;;3222:1;3219;3212:12;3192:34;3261:70;3323:7;3314:6;3303:9;3299:22;3261:70;:::i;:::-;3350:8;;-1:-1:-1;3235:96:1;-1:-1:-1;3438:2:1;3423:18;;3410:32;;-1:-1:-1;3454:16:1;;;3451:36;;;3483:1;3480;3473:12;3451:36;;3522:72;3586:7;3575:8;3564:9;3560:24;3522:72;:::i;:::-;2881:773;;;;-1:-1:-1;3613:8:1;-1:-1:-1;;;;2881:773:1:o;3659:505::-;3751:6;3759;3767;3820:2;3808:9;3799:7;3795:23;3791:32;3788:52;;;3836:1;3833;3826:12;3788:52;3876:9;3863:23;3909:18;3901:6;3898:30;3895:50;;;3941:1;3938;3931:12;3895:50;3980:70;4042:7;4033:6;4022:9;4018:22;3980:70;:::i;:::-;4069:8;;-1:-1:-1;3954:96:1;-1:-1:-1;4123:35:1;;-1:-1:-1;4154:2:1;4139:18;;4123:35;:::i;:::-;4113:45;;3659:505;;;;;:::o;4169:180::-;4225:6;4278:2;4266:9;4257:7;4253:23;4249:32;4246:52;;;4294:1;4291;4284:12;4246:52;4317:26;4333:9;4317:26;:::i;4354:385::-;4434:6;4442;4450;4458;4511:3;4499:9;4490:7;4486:23;4482:33;4479:53;;;4528:1;4525;4518:12;4479:53;4551:26;4567:9;4551:26;:::i;:::-;4541:36;;4596:35;4627:2;4616:9;4612:18;4596:35;:::i;:::-;4354:385;;4586:45;;-1:-1:-1;;;;4678:2:1;4663:18;;4650:32;;4729:2;4714:18;4701:32;;4354:385::o;4744:248::-;4809:6;4817;4870:2;4858:9;4849:7;4845:23;4841:32;4838:52;;;4886:1;4883;4876:12;4838:52;4909:26;4925:9;4909:26;:::i;4997:180::-;5056:6;5109:2;5097:9;5088:7;5084:23;5080:32;5077:52;;;5125:1;5122;5115:12;5077:52;-1:-1:-1;5148:23:1;;4997:180;-1:-1:-1;4997:180:1:o;5182:315::-;5250:6;5258;5311:2;5299:9;5290:7;5286:23;5282:32;5279:52;;;5327:1;5324;5317:12;5279:52;5363:9;5350:23;5340:33;;5423:2;5412:9;5408:18;5395:32;5436:31;5461:5;5436:31;:::i;5502:248::-;5570:6;5578;5631:2;5619:9;5610:7;5606:23;5602:32;5599:52;;;5647:1;5644;5637:12;5599:52;-1:-1:-1;;5670:23:1;;;5740:2;5725:18;;;5712:32;;-1:-1:-1;5502:248:1:o;5755:316::-;5832:6;5840;5848;5901:2;5889:9;5880:7;5876:23;5872:32;5869:52;;;5917:1;5914;5907:12;5869:52;-1:-1:-1;;5940:23:1;;;6010:2;5995:18;;5982:32;;-1:-1:-1;6061:2:1;6046:18;;;6033:32;;5755:316;-1:-1:-1;5755:316:1:o;6076:306::-;6164:6;6172;6180;6233:2;6221:9;6212:7;6208:23;6204:32;6201:52;;;6249:1;6246;6239:12;6201:52;6278:9;6272:16;6262:26;;6328:2;6317:9;6313:18;6307:25;6297:35;;6372:2;6361:9;6357:18;6351:25;6341:35;;6076:306;;;;;:::o;6387:385::-;6473:6;6481;6489;6497;6550:3;6538:9;6529:7;6525:23;6521:33;6518:53;;;6567:1;6564;6557:12;6518:53;-1:-1:-1;;6590:23:1;;;6660:2;6645:18;;6632:32;;-1:-1:-1;6711:2:1;6696:18;;6683:32;;6762:2;6747:18;6734:32;;-1:-1:-1;6387:385:1;-1:-1:-1;6387:385:1:o;7419:464::-;-1:-1:-1;;;;;7712:15:1;;;7694:34;;7764:15;;;;7759:2;7744:18;;7737:43;7811:2;7796:18;;7789:34;7871:4;7859:17;;;7854:2;7839:18;;7832:45;7643:3;7628:19;;7419:464::o;9864:597::-;9976:4;10005:2;10034;10023:9;10016:21;10066:6;10060:13;10109:6;10104:2;10093:9;10089:18;10082:34;10134:1;10144:140;10158:6;10155:1;10152:13;10144:140;;;10253:14;;;10249:23;;10243:30;10219:17;;;10238:2;10215:26;10208:66;10173:10;;10144:140;;;10302:6;10299:1;10296:13;10293:91;;;10372:1;10367:2;10358:6;10347:9;10343:22;10339:31;10332:42;10293:91;-1:-1:-1;10445:2:1;10424:15;-1:-1:-1;;10420:29:1;10405:45;;;;10452:2;10401:54;;9864:597;-1:-1:-1;;;9864:597:1:o;13379:351::-;13581:2;13563:21;;;13620:2;13600:18;;;13593:30;13659:29;13654:2;13639:18;;13632:57;13721:2;13706:18;;13379:351::o;14856:356::-;15058:2;15040:21;;;15077:18;;;15070:30;15136:34;15131:2;15116:18;;15109:62;15203:2;15188:18;;14856:356::o;16152:980::-;16414:4;16462:3;16451:9;16447:19;16493:6;16482:9;16475:25;16519:2;16557:6;16552:2;16541:9;16537:18;16530:34;16600:3;16595:2;16584:9;16580:18;16573:31;16624:6;16659;16653:13;16690:6;16682;16675:22;16728:3;16717:9;16713:19;16706:26;;16767:2;16759:6;16755:15;16741:29;;16788:1;16798:195;16812:6;16809:1;16806:13;16798:195;;;16877:13;;-1:-1:-1;;;;;16873:39:1;16861:52;;16968:15;;;;16933:12;;;;16909:1;16827:9;16798:195;;;-1:-1:-1;;;;;;;17049:32:1;;;;17044:2;17029:18;;17022:60;-1:-1:-1;;;17113:3:1;17098:19;17091:35;17010:3;16152:980;-1:-1:-1;;;16152:980:1:o;17650:128::-;17690:3;17721:1;17717:6;17714:1;17711:13;17708:39;;;17727:18;;:::i;:::-;-1:-1:-1;17763:9:1;;17650:128::o;17783:217::-;17823:1;17849;17839:132;;17893:10;17888:3;17884:20;17881:1;17874:31;17928:4;17925:1;17918:15;17956:4;17953:1;17946:15;17839:132;-1:-1:-1;17985:9:1;;17783:217::o;18005:422::-;18094:1;18137:5;18094:1;18151:270;18172:7;18162:8;18159:21;18151:270;;;18231:4;18227:1;18223:6;18219:17;18213:4;18210:27;18207:53;;;18240:18;;:::i;:::-;18290:7;18280:8;18276:22;18273:55;;;18310:16;;;;18273:55;18389:22;;;;18349:15;;;;18151:270;;;18155:3;18005:422;;;;;:::o;18432:140::-;18490:5;18519:47;18560:4;18550:8;18546:19;18540:4;18626:5;18656:8;18646:80;;-1:-1:-1;18697:1:1;18711:5;;18646:80;18745:4;18735:76;;-1:-1:-1;18782:1:1;18796:5;;18735:76;18827:4;18845:1;18840:59;;;;18913:1;18908:130;;;;18820:218;;18840:59;18870:1;18861:10;;18884:5;;;18908:130;18945:3;18935:8;18932:17;18929:43;;;18952:18;;:::i;:::-;-1:-1:-1;;19008:1:1;18994:16;;19023:5;;18820:218;;19122:2;19112:8;19109:16;19103:3;19097:4;19094:13;19090:36;19084:2;19074:8;19071:16;19066:2;19060:4;19057:12;19053:35;19050:77;19047:159;;;-1:-1:-1;19159:19:1;;;19191:5;;19047:159;19238:34;19263:8;19257:4;19238:34;:::i;:::-;19308:6;19304:1;19300:6;19296:19;19287:7;19284:32;19281:58;;;19319:18;;:::i;:::-;19357:20;;18577:806;-1:-1:-1;;;18577:806:1:o;19388:168::-;19428:7;19494:1;19490;19486:6;19482:14;19479:1;19476:21;19471:1;19464:9;19457:17;19453:45;19450:71;;;19501:18;;:::i;:::-;-1:-1:-1;19541:9:1;;19388:168::o;19561:125::-;19601:4;19629:1;19626;19623:8;19620:34;;;19634:18;;:::i;:::-;-1:-1:-1;19671:9:1;;19561:125::o;19691:136::-;19730:3;19758:5;19748:39;;19767:18;;:::i;:::-;-1:-1:-1;;;19803:18:1;;19691:136::o;19832:135::-;19871:3;-1:-1:-1;;19892:17:1;;19889:43;;;19912:18;;:::i;:::-;-1:-1:-1;19959:1:1;19948:13;;19832:135::o;19972:127::-;20033:10;20028:3;20024:20;20021:1;20014:31;20064:4;20061:1;20054:15;20088:4;20085:1;20078:15;20104:127;20165:10;20160:3;20156:20;20153:1;20146:31;20196:4;20193:1;20186:15;20220:4;20217:1;20210:15;20368:131;-1:-1:-1;;;;;20443:31:1;;20433:42;;20423:70;;20489:1;20486;20479:12;20423:70;20368:131;:::o

Swarm Source

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