ETH Price: $2,900.64 (+1.26%)
 

Overview

Max Total Supply

10,000,000,000 $HOLA

Holders

369

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
4,319,768.234708705081034654 $HOLA

Value
$0.00
0x696eF2c6F8C0271629B3f989F44b8eda9cB10931
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
HOLA

Compiler Version
v0.8.6+commit.11564f7e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-02-05
*/

//     ▄       ▄         ▄  ▄▄▄▄▄▄▄▄▄▄▄  ▄            ▄▄▄▄▄▄▄▄▄▄▄ 
 //▄▄▄▄█░█▄▄▄▄ ▐░▌       ▐░▌▐░░░░░░░░░░░▌▐░▌          ▐░░░░░░░░░░░▌
//▐░░░░░░░░░░░▌▐░▌       ▐░▌▐░█▀▀▀▀▀▀▀█░▌▐░▌          ▐░█▀▀▀▀▀▀▀█░▌
//▐░█▀▀█░█▀▀▀▀ ▐░▌       ▐░▌▐░▌       ▐░▌▐░▌          ▐░▌       ▐░▌
//▐░█▄▄█░█▄▄▄▄ ▐░█▄▄▄▄▄▄▄█░▌▐░▌       ▐░▌▐░▌          ▐░█▄▄▄▄▄▄▄█░▌
//▐░░░░░░░░░░░▌▐░░░░░░░░░░░▌▐░▌       ▐░▌▐░▌          ▐░░░░░░░░░░░▌
// ▀▀▀▀█░█▀▀█░▌▐░█▀▀▀▀▀▀▀█░▌▐░▌       ▐░▌▐░▌          ▐░█▀▀▀▀▀▀▀█░▌
// ▄▄▄▄█░█▄▄█░▌▐░▌       ▐░▌▐░▌       ▐░▌▐░▌          ▐░▌       ▐░▌
//▐░░░░░░░░░░░▌▐░▌       ▐░▌▐░█▄▄▄▄▄▄▄█░▌▐░█▄▄▄▄▄▄▄▄▄ ▐░▌       ▐░▌
// ▀▀▀▀█░█▀▀▀▀ ▐░▌       ▐░▌▐░░░░░░░░░░░▌▐░░░░░░░░░░░▌▐░▌       ▐░▌
//      ▀       ▀         ▀  ▀▀▀▀▀▀▀▀▀▀▀  ▀▀▀▀▀▀▀▀▀▀▀  ▀         ▀ 
// t.me/Hola_token_Official

/**
 * SPDX-License-Identifier: MIT
 */ 


pragma solidity ^0.8.6;


library SafeMath {

    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        uint256 c = a + b;
        if (c < a) return (false, 0);
        return (true, c);
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b > a) return (false, 0);
        return (true, a - b);
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (a == 0) return (true, 0);
        uint256 c = a * b;
        if (c / a != b) return (false, 0);
        return (true, c);
    }


    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a / b);
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a % b);
    }

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

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


    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) return 0;
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: modulo by zero");
        return a % b;
    }


    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        return a - b;
    }

 
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a / b;
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a % b;
    }
}

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 IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {return msg.sender;}
    function _msgData() internal view virtual returns (bytes calldata) {this; return msg.data;}
}

library Address {
    function isContract(address account) internal view returns (bool) { 
        uint256 size; assembly { size := extcodesize(account) } return size > 0;
    }
    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");
        require(isContract(target), "Address: call to non-contract");
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }
    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        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 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;
    }
}

interface IPancakeV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IPancakeV2Router {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

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

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

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

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

contract HOLA is IERC20Metadata, Ownable {
    using SafeMath for uint256;
    using Address for address;
    
    address internal deadAddress = 0x000000000000000000000000000000000000dEaD;
    
    string constant _name = "HOLA";
    string constant _symbol = "$HOLA";
    uint8 constant _decimals = 18;
    
    uint256 internal constant _totalSupply = 10_000_000_000 * (10**18);
  
    uint256 public maxTxAmount = _totalSupply / 1000; // 0.1% of the total supply
    uint256 public maxWalletBalance = _totalSupply / 50; // 2% of the total supply

    uint256 private constant FEES_DIVISOR = 10**3;

    uint256 public sellingMarketingFee = 10; // 1%
    uint256 public buyingMarketingFee = 10;
    
    uint256 public sellingTreasuryFee = 10;
    uint256 public buyingTreasuryFee = 10;
    
    uint256 public lpFee = 5; // 0.5%
    uint256 public teamFee = 10;

    uint256 public buyersTotalFees;
    uint256 public sellersTotalFees;

    bool public takeFeeEnabled = true;

    // Total = 100% (1000)
    uint256 public otherPortionOfSwap = 950; // 95%
    uint256 public lpPortionOfSwap = 50; // 5%

    address public treasuryWallet = 0x2C63abDb23bb686d38d9C6de629a24Bd5E766177;
    
    bool public antiBotEnabled = false;
    uint256 public antiBotFee = 990; // 99%
    uint256 public _startTimeForSwap;

    bool private swapping;
    bool public swapEnabled = true;
    uint256 public swapTokensAtAmount = 1000 * (10**18);
    

    IPancakeV2Router public router;
    address public pair;
    
    mapping (address => uint256) internal _balances;
    mapping (address => mapping (address => uint256)) internal _allowances;

    mapping(address => bool) public _isBlacklisted;
    mapping(address => bool) public _iswhitelisted;
    mapping (address => bool) internal _isExcludedFromFee;
    
    event UpdatePancakeswapRouter(address indexed newAddress, address indexed oldAddress);
    
    event SwapTokensForETH(uint256 amountIn, address[] path);
    event TreasuryWalletUpdated(address indexed newTreasuryWallet, address indexed oldTreasuryWallet);
    event LiquidityAdded(uint256 tokenAmountSent, uint256 ethAmountSent, uint256 liquidity);
    
    constructor () {
        _balances[msg.sender] = _totalSupply;
        
        IPancakeV2Router _newPancakeRouter = IPancakeV2Router(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IPancakeV2Factory(_newPancakeRouter.factory()).createPair(address(this), _newPancakeRouter.WETH());
        router = _newPancakeRouter;

        buyersTotalFees = buyingMarketingFee.add(buyingTreasuryFee).add(lpFee);
        sellersTotalFees = sellingMarketingFee.add(sellingTreasuryFee).add(teamFee);


        // exclude owner and this contract from fee
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;

        _approve(owner(), address(router), ~uint256(0));
        
        emit Transfer(address(0), owner(), _totalSupply);
    }
    
    receive() external payable { }
    
    function name() external pure override returns (string memory) {
        return _name;
    }

    function symbol() external pure override returns (string memory) {
        return _symbol;
    }

    function decimals() external pure override returns (uint8) {
        return _decimals;
    }

    function totalSupply() external pure override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view override returns (uint256) { 
        return _balances[account]; 
    }
    
        
    function transfer(address recipient, uint256 amount) external override returns (bool){
        _transfer(_msgSender(), recipient, amount);
        return true;
        }
        
    function allowance(address owner, address spender) external view override returns (uint256){
        return _allowances[owner][spender];
        }
    
    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
        }
        
    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool){
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;  
    }
        
    
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }
    
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }
    
    function _approve(address owner, address spender, uint256 amount) internal {
        require(owner != address(0), "BaseRfiToken: approve from the zero address");
        require(spender != address(0), "BaseRfiToken: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    
    function blacklistAddress(address account, bool value) external onlyOwner{
        _isBlacklisted[account] = value;
    }

    function whitelistAddress(address account, bool value) external onlyOwner{
        _iswhitelisted[account] = value;
    }
    
    function updateWalletMax(uint256 _walletMax) external onlyOwner {
        maxWalletBalance = _walletMax * (10**18);
    }
    
    function updateTransactionMax(uint256 _txMax) external onlyOwner {
        maxTxAmount = _txMax * (10**18);
    }

    function updateTreasuryWallet(address newWallet) external onlyOwner {
        require(newWallet != treasuryWallet, "The Treasury wallet is already this address");
        emit TreasuryWalletUpdated(newWallet, treasuryWallet);
        
        treasuryWallet = newWallet;
    }

    function updatePortionsOfSwap(uint256 otherPortion, uint256 lpPortion) external onlyOwner {
        
        uint256 totalPortion = otherPortion.add(lpPortion);
        require(totalPortion == 1000, "Total must be equal to 1000 (100%)");
        
        otherPortionOfSwap = otherPortion;
        lpPortionOfSwap = lpPortion;
    }

     function setSwapEnabled(bool _enabled) external onlyOwner {
        swapEnabled  = _enabled;
    }
    
    function updateSwapTokensAt(uint256 _swaptokens) external onlyOwner {
        swapTokensAtAmount = _swaptokens * (10**18);
    }

    function calcBuyersTotalFees() private {
        buyersTotalFees = buyingMarketingFee.add(buyingTreasuryFee).add(lpFee);
    }
    
    function calcSellersTotalFees() private {
        sellersTotalFees = sellingMarketingFee.add(sellingTreasuryFee).add(teamFee);
    }
    
    function updateSellingMarketingFee (uint256 newFee) external onlyOwner {
        sellingMarketingFee = newFee;
        calcSellersTotalFees();
    }
    
    function updateSellingTreasuryFee (uint256 newFee) external onlyOwner {
        sellingTreasuryFee = newFee;
        calcSellersTotalFees();
    }

    function updateTeamFee (uint256 newFee) external onlyOwner {
        teamFee = newFee;
        calcSellersTotalFees();
    }
    
    function updateLpFee (uint256 newFee) external onlyOwner {
        lpFee = newFee;
       calcBuyersTotalFees();
    }

    function updateBuyingMarketingFee (uint256 newFee) external onlyOwner {
        buyingMarketingFee = newFee;
        calcBuyersTotalFees();
    }
    
    function updateBuyingTreasuryFee (uint256 newFee) external onlyOwner {
        buyingTreasuryFee = newFee;
        calcBuyersTotalFees();
    }
    

    function toggleAntiBot(bool toggleStatus) external onlyOwner() {
        antiBotEnabled = toggleStatus;

        if(antiBotEnabled){
            _startTimeForSwap = block.timestamp + 40;    
        }    
    }

     function updateTakeFeeEnabled(bool _value) external onlyOwner {
        takeFeeEnabled = _value;
    }
    
    function updateRouterAddress(address newAddress) external onlyOwner {
        require(newAddress != address(router), "The router already has that address");
        emit UpdatePancakeswapRouter(newAddress, address(router));
        
        router = IPancakeV2Router(newAddress);   
    }

    function takeFee(address sender, uint256 amount, uint256 fee) internal returns (uint256)  {
        uint256 feeAmount = amount.mul(fee).div(FEES_DIVISOR);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }
        
    
    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "Token: transfer from the zero address");
        require(recipient != address(0), "Token: transfer to the zero address");
        require(sender != address(deadAddress), "Token: transfer from the burn address");
        require(amount > 0, "Transfer amount must be greater than zero");

        require(!_isBlacklisted[sender] && !_isBlacklisted[recipient], "Blacklisted address");
        
        if (
            sender != address(router) && //router -> pair is removing liquidity which shouldn't have max
            !_iswhitelisted[recipient] && //no max for those whitelisted
            !_iswhitelisted[sender] 
        ) {
            require(amount <= maxTxAmount, "Transfer amount exceeds the Max Transaction Amount.");
            
        }
        
        if ( maxWalletBalance > 0 && !_iswhitelisted[recipient] && !_iswhitelisted[sender] && recipient != address(pair) ) {
                uint256 recipientBalance = balanceOf(recipient);
                require(recipientBalance + amount <= maxWalletBalance, "New balance would exceed the maxWalletBalance");
            }

        // Exchange tokens - deduct from senders balance
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
            
         // Indicates whether or not fee should be deducted from the transfer
         bool _isTakeFee = takeFeeEnabled;
        
         // If any account belongs to _iswhitelisted account then remove the fee
        if(_iswhitelisted[sender] || _iswhitelisted[recipient]) { 
            _isTakeFee = false; 
        }

        // Transfer between wallets
        if(sender != pair && recipient != pair) {
           _isTakeFee = false;
        }

        uint256 sumOfFees = recipient == pair ? sellersTotalFees : buyersTotalFees;

        // Antibot enabled
        sumOfFees = antiBotEnabled && block.timestamp <= _startTimeForSwap ? antiBotFee : sumOfFees;

        _beforeTokenTransfer(recipient);
        
         uint256 amountReceived = _isTakeFee ? takeFee(sender, amount, sumOfFees) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);   
    }

     function _beforeTokenTransfer(address recipient) private {
            
        uint256 contractTokenBalance = balanceOf(address(this));
         // swap
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;
            
        if (!swapping && canSwap && swapEnabled && recipient == pair) {
            swapping = true;
                
            swapBack();
                
            swapping = false;
        }        
    }


    function swapBack() private {
        uint256 splitLiquidityPortion = lpPortionOfSwap.div(2);
        uint256 amountToLiquify = balanceOf(address(this)).mul(splitLiquidityPortion).div(FEES_DIVISOR);
        uint256 amountToSwap = balanceOf(address(this)).sub(amountToLiquify);

        uint256 balanceBefore = address(this).balance;
        
        swapTokensForETH(amountToSwap);

        uint256 amountETH = address(this).balance.sub(balanceBefore);
        
        uint256 amountETHTax = amountETH.mul(otherPortionOfSwap).div(FEES_DIVISOR);
        uint256 amountETHLiquidity = amountETH.mul(splitLiquidityPortion).div(FEES_DIVISOR);
        
          //Send to addresses
        transferToAddress(payable(treasuryWallet), amountETHTax);
        
        // add liquidity
        _addLiquidity(amountToLiquify, amountETHLiquidity);
    }

    function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

        // add the liquidity
        (uint256 tokenAmountSent, uint256 ethAmountSent, uint256 liquidity) = router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            owner(),
            block.timestamp
        );

        emit LiquidityAdded(tokenAmountSent, ethAmountSent, liquidity);
    }
    
    
    function swapTokensForETH(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), tokenAmount);

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }

    function transferToAddress(address payable recipient, uint256 amount) private {
        require(recipient != address(0), "Cannot transfer the ETH to a zero address");
        recipient.transfer(amount);
    }

    function TransferETH(address payable recipient, uint256 amount) external onlyOwner {
        require(recipient != address(0), "Cannot withdraw the ETH balance to a zero address");
        recipient.transfer(amount);
    }
    
}

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":"tokenAmountSent","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethAmountSent","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"LiquidityAdded","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":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newTreasuryWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldTreasuryWallet","type":"address"}],"name":"TreasuryWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdatePancakeswapRouter","type":"event"},{"inputs":[{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_iswhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_startTimeForSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiBotEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiBotFee","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"blacklistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyersTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyingMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyingTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPortionOfSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"otherPortionOfSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IPancakeV2Router","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellersTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellingMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellingTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","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":"takeFeeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"toggleStatus","type":"bool"}],"name":"toggleAntiBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"updateBuyingMarketingFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"updateBuyingTreasuryFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"updateLpFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"otherPortion","type":"uint256"},{"internalType":"uint256","name":"lpPortion","type":"uint256"}],"name":"updatePortionsOfSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateRouterAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"updateSellingMarketingFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"updateSellingTreasuryFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swaptokens","type":"uint256"}],"name":"updateSwapTokensAt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"updateTakeFeeEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"updateTeamFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_txMax","type":"uint256"}],"name":"updateTransactionMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_walletMax","type":"uint256"}],"name":"updateWalletMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"whitelistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600180546001600160a01b03191661dead179055620000326103e86b204fce5e3e2502611000000062000633565b6002556200004e60326b204fce5e3e2502611000000062000633565b600355600a6004819055600581815560068290556007829055600855600955600c805460ff191660011790556103b6600d556032600e55600f80546001600160a81b031916732c63abdb23bb686d38d9c6de629a24bd5e7661771790556103de6010556012805461ff001916610100179055683635c9adc5dea00000601355348015620000da57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350336000908152601660209081526040918290206b204fce5e3e250261100000009055815163c45a015560e01b81529151737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a015592600480840193829003018186803b1580156200018557600080fd5b505afa1580156200019a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c09190620005e1565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200020957600080fd5b505afa1580156200021e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002449190620005e1565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200028d57600080fd5b505af1158015620002a2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c89190620005e1565b601580546001600160a01b03199081166001600160a01b0393841617909155601480549091169183169190911790556008546007546005546200033292916200031e91906200043c602090811b620013ca17901c565b6200043c60201b620013ca1790919060201c565b600a819055506200035d6009546200031e6006546004546200043c60201b620013ca1790919060201c565b600b556001601a6000620003796000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308152601a909252902080549091166001179055620003e5620003d06000546001600160a01b031690565b6014546001600160a01b0316600019620004aa565b600080546040516b204fce5e3e2502611000000081526001600160a01b0390911691907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35062000656565b6000806200044b83856200060c565b905083811015620004a35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064015b60405180910390fd5b9392505050565b6001600160a01b038316620005165760405162461bcd60e51b815260206004820152602b60248201527f42617365526669546f6b656e3a20617070726f76652066726f6d20746865207a60448201526a65726f206164647265737360a81b60648201526084016200049a565b6001600160a01b038216620005805760405162461bcd60e51b815260206004820152602960248201527f42617365526669546f6b656e3a20617070726f766520746f20746865207a65726044820152686f206164647265737360b81b60648201526084016200049a565b6001600160a01b0383811660008181526017602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600060208284031215620005f457600080fd5b81516001600160a01b0381168114620004a357600080fd5b600082198211156200062e57634e487b7160e01b600052601160045260246000fd5b500190565b6000826200065157634e487b7160e01b600052601260045260246000fd5b500490565b61262780620006666000396000f3fe6080604052600436106103535760003560e01c80638da5cb5b116101c6578063bbf1af95116100f7578063de5bfb9711610095578063f2b083201161006f578063f2b08320146109dc578063f2fde38b146109f2578063f887ea4014610a12578063fd69c21514610a3257600080fd5b8063de5bfb9714610986578063e01af92c146109a6578063e2f45605146109c657600080fd5b8063cbf7e888116100d1578063cbf7e888146108f3578063d7c94efd14610909578063d8c6404b1461091f578063dd62ed3e1461094057600080fd5b8063bbf1af951461089d578063c0fddc90146108bd578063c25c1722146108dd57600080fd5b8063a9059cbb11610164578063b225d4b71161013e578063b225d4b714610827578063b853a13914610847578063b9a45aac14610867578063bbde77c11461088757600080fd5b8063a9059cbb146107c7578063acedf07c146107e7578063adf4ba011461080757600080fd5b80639ac2d2da116101a05780639ac2d2da1461075b578063a43c772514610771578063a457c2d714610787578063a8aa1b31146107a757600080fd5b80638da5cb5b146106ef57806391053d941461070d57806395d89b411461072d57600080fd5b806353a4ec55116102a057806370a082311161023e5780637d8dbe24116102185780637d8dbe2414610683578063809d458d146106a3578063872f5969146106c35780638c0b5e22146106d957600080fd5b806370a0823114610622578063715018a614610658578063721d4e2b1461066d57600080fd5b8063690c22ca1161027a578063690c22ca146105a75780636a4b8fd9146105bd5780636ddd1713146105ed578063704ce43e1461060c57600080fd5b806353a4ec5514610547578063612888f614610567578063655873021461058757600080fd5b806323b872dd1161030d57806339509351116102e757806339509351146104b5578063450dde46146104d5578063455a4396146104ef5780634626402b1461050f57600080fd5b806323b872dd146104635780632a6ae1e814610483578063313ce5671461049957600080fd5b8062e6be7b1461035f57806306fdde0314610381578063095ea7b3146103c0578063176b48b8146103f057806318160ddd146104145780631cdd3be31461043357600080fd5b3661035a57005b600080fd5b34801561036b57600080fd5b5061037f61037a366004612237565b610a52565b005b34801561038d57600080fd5b50604080518082019091526004815263484f4c4160e01b60208201525b6040516103b79190612414565b60405180910390f35b3480156103cc57600080fd5b506103e06103db366004612271565b610b4c565b60405190151581526020016103b7565b3480156103fc57600080fd5b50610406600b5481565b6040519081526020016103b7565b34801561042057600080fd5b506b204fce5e3e25026110000000610406565b34801561043f57600080fd5b506103e061044e366004612237565b60186020526000908152604090205460ff1681565b34801561046f57600080fd5b506103e061047e3660046122d6565b610b63565b34801561048f57600080fd5b5061040660045481565b3480156104a557600080fd5b50604051601281526020016103b7565b3480156104c157600080fd5b506103e06104d0366004612271565b610bcc565b3480156104e157600080fd5b50600c546103e09060ff1681565b3480156104fb57600080fd5b5061037f61050a366004612317565b610c02565b34801561051b57600080fd5b50600f5461052f906001600160a01b031681565b6040516001600160a01b0390911681526020016103b7565b34801561055357600080fd5b5061037f610562366004612367565b610c57565b34801561057357600080fd5b5061037f610582366004612367565b610c91565b34801561059357600080fd5b5061037f6105a2366004612367565b610cc8565b3480156105b357600080fd5b5061040660115481565b3480156105c957600080fd5b506103e06105d8366004612237565b60196020526000908152604090205460ff1681565b3480156105f957600080fd5b506012546103e090610100900460ff1681565b34801561061857600080fd5b5061040660085481565b34801561062e57600080fd5b5061040661063d366004612237565b6001600160a01b031660009081526016602052604090205490565b34801561066457600080fd5b5061037f610cff565b34801561067957600080fd5b5061040660055481565b34801561068f57600080fd5b5061037f61069e366004612367565b610d73565b3480156106af57600080fd5b5061037f6106be366004612237565b610db5565b3480156106cf57600080fd5b5061040660105481565b3480156106e557600080fd5b5061040660025481565b3480156106fb57600080fd5b506000546001600160a01b031661052f565b34801561071957600080fd5b5061037f610728366004612367565b610eae565b34801561073957600080fd5b5060408051808201909152600581526424484f4c4160d81b60208201526103aa565b34801561076757600080fd5b5061040660075481565b34801561077d57600080fd5b50610406600a5481565b34801561079357600080fd5b506103e06107a2366004612271565b610ef0565b3480156107b357600080fd5b5060155461052f906001600160a01b031681565b3480156107d357600080fd5b506103e06107e2366004612271565b610f3f565b3480156107f357600080fd5b5061037f610802366004612367565b610f4c565b34801561081357600080fd5b5061037f610822366004612367565b610f83565b34801561083357600080fd5b5061037f610842366004612367565b610fba565b34801561085357600080fd5b5061037f610862366004612367565b610ffc565b34801561087357600080fd5b5061037f610882366004612317565b611033565b34801561089357600080fd5b5061040660035481565b3480156108a957600080fd5b5061037f6108b836600461234c565b611088565b3480156108c957600080fd5b5061037f6108d8366004612380565b6110ea565b3480156108e957600080fd5b50610406600d5481565b3480156108ff57600080fd5b50610406600e5481565b34801561091557600080fd5b5061040660095481565b34801561092b57600080fd5b50600f546103e090600160a01b900460ff1681565b34801561094c57600080fd5b5061040661095b36600461229d565b6001600160a01b03918216600090815260176020908152604080832093909416825291909152205490565b34801561099257600080fd5b5061037f6109a136600461234c565b61118a565b3480156109b257600080fd5b5061037f6109c136600461234c565b6111c7565b3480156109d257600080fd5b5061040660135481565b3480156109e857600080fd5b5061040660065481565b3480156109fe57600080fd5b5061037f610a0d366004612237565b61120b565b348015610a1e57600080fd5b5060145461052f906001600160a01b031681565b348015610a3e57600080fd5b5061037f610a4d366004612271565b6112f5565b6000546001600160a01b03163314610a855760405162461bcd60e51b8152600401610a7c90612469565b60405180910390fd5b6014546001600160a01b0382811691161415610aef5760405162461bcd60e51b815260206004820152602360248201527f54686520726f7574657220616c7265616479206861732074686174206164647260448201526265737360e81b6064820152608401610a7c565b6014546040516001600160a01b03918216918316907fc4382ee892d64a85fffb798adefd9dd8fcdeb2b1ababe74b46cdae7fe88da4e090600090a3601480546001600160a01b0319166001600160a01b0392909216919091179055565b6000610b59338484611430565b5060015b92915050565b6000610b70848484611563565b610bc28433610bbd856040518060600160405280602881526020016125a5602891396001600160a01b038a1660009081526017602090815260408083203384529091529020549190611b27565b611430565b5060019392505050565b3360008181526017602090815260408083206001600160a01b03871684529091528120549091610b59918590610bbd90866113ca565b6000546001600160a01b03163314610c2c5760405162461bcd60e51b8152600401610a7c90612469565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610c815760405162461bcd60e51b8152600401610a7c90612469565b6004819055610c8e611b5e565b50565b6000546001600160a01b03163314610cbb5760405162461bcd60e51b8152600401610a7c90612469565b6008819055610c8e611b86565b6000546001600160a01b03163314610cf25760405162461bcd60e51b8152600401610a7c90612469565b6005819055610c8e611b86565b6000546001600160a01b03163314610d295760405162461bcd60e51b8152600401610a7c90612469565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610d9d5760405162461bcd60e51b8152600401610a7c90612469565b610daf81670de0b6b3a764000061252d565b60025550565b6000546001600160a01b03163314610ddf5760405162461bcd60e51b8152600401610a7c90612469565b600f546001600160a01b0382811691161415610e515760405162461bcd60e51b815260206004820152602b60248201527f5468652054726561737572792077616c6c657420697320616c7265616479207460448201526a686973206164647265737360a81b6064820152608401610a7c565b600f546040516001600160a01b03918216918316907fa982575859d7ad2f390dc12b23f7dab8bbda047f9d0140ac68344b27bf34bfb490600090a3600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610ed85760405162461bcd60e51b8152600401610a7c90612469565b610eea81670de0b6b3a764000061252d565b60035550565b6000610b593384610bbd856040518060600160405280602581526020016125cd602591393360009081526017602090815260408083206001600160a01b038d1684529091529020549190611b27565b6000610b59338484611563565b6000546001600160a01b03163314610f765760405162461bcd60e51b8152600401610a7c90612469565b6009819055610c8e611b5e565b6000546001600160a01b03163314610fad5760405162461bcd60e51b8152600401610a7c90612469565b6006819055610c8e611b5e565b6000546001600160a01b03163314610fe45760405162461bcd60e51b8152600401610a7c90612469565b610ff681670de0b6b3a764000061252d565b60135550565b6000546001600160a01b031633146110265760405162461bcd60e51b8152600401610a7c90612469565b6007819055610c8e611b86565b6000546001600160a01b0316331461105d5760405162461bcd60e51b8152600401610a7c90612469565b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146110b25760405162461bcd60e51b8152600401610a7c90612469565b600f805460ff60a01b1916600160a01b8315158102919091179182905560ff91041615610c8e576110e44260286124f3565b60115550565b6000546001600160a01b031633146111145760405162461bcd60e51b8152600401610a7c90612469565b600061112083836113ca565b9050806103e81461117e5760405162461bcd60e51b815260206004820152602260248201527f546f74616c206d75737420626520657175616c20746f20313030302028313030604482015261252960f01b6064820152608401610a7c565b50600d91909155600e55565b6000546001600160a01b031633146111b45760405162461bcd60e51b8152600401610a7c90612469565b600c805460ff1916911515919091179055565b6000546001600160a01b031633146111f15760405162461bcd60e51b8152600401610a7c90612469565b601280549115156101000261ff0019909216919091179055565b6000546001600160a01b031633146112355760405162461bcd60e51b8152600401610a7c90612469565b6001600160a01b03811661129a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a7c565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461131f5760405162461bcd60e51b8152600401610a7c90612469565b6001600160a01b03821661138f5760405162461bcd60e51b815260206004820152603160248201527f43616e6e6f7420776974686472617720746865204554482062616c616e636520604482015270746f2061207a65726f206164647265737360781b6064820152608401610a7c565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156113c5573d6000803e3d6000fd5b505050565b6000806113d783856124f3565b9050838110156114295760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a7c565b9392505050565b6001600160a01b03831661149a5760405162461bcd60e51b815260206004820152602b60248201527f42617365526669546f6b656e3a20617070726f76652066726f6d20746865207a60448201526a65726f206164647265737360a81b6064820152608401610a7c565b6001600160a01b0382166115025760405162461bcd60e51b815260206004820152602960248201527f42617365526669546f6b656e3a20617070726f766520746f20746865207a65726044820152686f206164647265737360b81b6064820152608401610a7c565b6001600160a01b0383811660008181526017602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166115c75760405162461bcd60e51b815260206004820152602560248201527f546f6b656e3a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a7c565b6001600160a01b0382166116295760405162461bcd60e51b815260206004820152602360248201527f546f6b656e3a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a7c565b6001546001600160a01b03848116911614156116955760405162461bcd60e51b815260206004820152602560248201527f546f6b656e3a207472616e736665722066726f6d20746865206275726e206164604482015264647265737360d81b6064820152608401610a7c565b600081116116f75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610a7c565b6001600160a01b03831660009081526018602052604090205460ff1615801561173957506001600160a01b03821660009081526018602052604090205460ff16155b61177b5760405162461bcd60e51b8152602060048201526013602482015272426c61636b6c6973746564206164647265737360681b6044820152606401610a7c565b6014546001600160a01b038481169116148015906117b257506001600160a01b03821660009081526019602052604090205460ff16155b80156117d757506001600160a01b03831660009081526019602052604090205460ff16155b1561184a5760025481111561184a5760405162461bcd60e51b815260206004820152603360248201527f5472616e7366657220616d6f756e74206578636565647320746865204d6178206044820152722a3930b739b0b1ba34b7b71020b6b7bab73a1760691b6064820152608401610a7c565b600060035411801561187557506001600160a01b03821660009081526019602052604090205460ff16155b801561189a57506001600160a01b03831660009081526019602052604090205460ff16155b80156118b457506015546001600160a01b03838116911614155b15611945576001600160a01b0382166000908152601660205260409020546003546118df83836124f3565b11156119435760405162461bcd60e51b815260206004820152602d60248201527f4e65772062616c616e636520776f756c642065786365656420746865206d617860448201526c57616c6c657442616c616e636560981b6064820152608401610a7c565b505b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260169091529190912054611997918390611b27565b6001600160a01b038416600090815260166020908152604080832093909355600c5460199091529190205460ff9182169116806119ec57506001600160a01b03831660009081526019602052604090205460ff165b156119f5575060005b6015546001600160a01b03858116911614801590611a2157506015546001600160a01b03848116911614155b15611a2a575060005b6015546000906001600160a01b03858116911614611a4a57600a54611a4e565b600b545b600f54909150600160a01b900460ff168015611a6c57506011544211155b611a765780611a7a565b6010545b9050611a8584611ba8565b600082611a925783611a9d565b611a9d868584611c25565b6001600160a01b038616600090815260166020526040902054909150611ac390826113ca565b6001600160a01b0380871660008181526016602052604090819020939093559151908816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b179085815260200190565b60405180910390a3505050505050565b60008184841115611b4b5760405162461bcd60e51b8152600401610a7c9190612414565b50611b56838561254c565b949350505050565b611b81600954611b7b6006546004546113ca90919063ffffffff16565b906113ca565b600b55565b611ba3600854611b7b6007546005546113ca90919063ffffffff16565b600a55565b30600090815260166020526040902054601354601254908210159060ff16158015611bd05750805b8015611be35750601254610100900460ff165b8015611bfc57506015546001600160a01b038481169116145b156113c5576012805460ff19166001179055611c16611cc7565b6012805460ff19169055505050565b600080611c3e6103e8611c388686611daf565b90611e2e565b30600090815260166020526040902054909150611c5b90826113ca565b30600081815260166020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611cac9085815260200190565b60405180910390a3611cbe8482611e89565b95945050505050565b600e54600090611cd8906002611e2e565b90506000611d0b6103e8611c3884611d05306001600160a01b031660009081526016602052604090205490565b90611daf565b90506000611d3882611d32306001600160a01b031660009081526016602052604090205490565b90611e89565b905047611d4482611ee5565b6000611d504783611e89565b90506000611d6f6103e8611c38600d5485611daf90919063ffffffff16565b90506000611d836103e8611c38858a611daf565b600f54909150611d9c906001600160a01b031683612087565b611da686826120ef565b50505050505050565b600082611dbe57506000610b5d565b6000611dca838561252d565b905082611dd7858361250b565b146114295760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610a7c565b6000808211611e7f5760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f0000000000006044820152606401610a7c565b611429828461250b565b600082821115611edb5760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006044820152606401610a7c565b611429828461254c565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611f1a57611f1a612579565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611f6e57600080fd5b505afa158015611f82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa69190612254565b81600181518110611fb957611fb9612579565b6001600160a01b039283166020918202929092010152601454611fdf9130911684611430565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac947906120189085906000908690309042906004016124b7565b600060405180830381600087803b15801561203257600080fd5b505af1158015612046573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161207b92919061249e565b60405180910390a15050565b6001600160a01b03821661138f5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f74207472616e73666572207468652045544820746f2061207a65726044820152686f206164647265737360b81b6064820152608401610a7c565b6014546121079030906001600160a01b031684611430565b601454600090819081906001600160a01b031663f305d71985308885806121366000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561219957600080fd5b505af11580156121ad573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906121d291906123a2565b604080518481526020810184905290810182905292955090935091507fd7f28048575eead8851d024ead087913957dfb4fd1a02b4d1573f5352a5a2be39060600160405180910390a15050505050565b8035801515811461223257600080fd5b919050565b60006020828403121561224957600080fd5b81356114298161258f565b60006020828403121561226657600080fd5b81516114298161258f565b6000806040838503121561228457600080fd5b823561228f8161258f565b946020939093013593505050565b600080604083850312156122b057600080fd5b82356122bb8161258f565b915060208301356122cb8161258f565b809150509250929050565b6000806000606084860312156122eb57600080fd5b83356122f68161258f565b925060208401356123068161258f565b929592945050506040919091013590565b6000806040838503121561232a57600080fd5b82356123358161258f565b915061234360208401612222565b90509250929050565b60006020828403121561235e57600080fd5b61142982612222565b60006020828403121561237957600080fd5b5035919050565b6000806040838503121561239357600080fd5b50508035926020909101359150565b6000806000606084860312156123b757600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b838110156124095781516001600160a01b0316875295820195908201906001016123e4565b509495945050505050565b600060208083528351808285015260005b8181101561244157858101830151858201604001528201612425565b81811115612453576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b828152604060208201526000611b5660408301846123d0565b85815284602082015260a0604082015260006124d660a08301866123d0565b6001600160a01b0394909416606083015250608001529392505050565b6000821982111561250657612506612563565b500190565b60008261252857634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561254757612547612563565b500290565b60008282101561255e5761255e612563565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114610c8e57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b5f0e951b34a2dce93761ba5a66a8c02b876e44a9ceaa7d5f404c5c767c2de8564736f6c63430008060033

Deployed Bytecode

0x6080604052600436106103535760003560e01c80638da5cb5b116101c6578063bbf1af95116100f7578063de5bfb9711610095578063f2b083201161006f578063f2b08320146109dc578063f2fde38b146109f2578063f887ea4014610a12578063fd69c21514610a3257600080fd5b8063de5bfb9714610986578063e01af92c146109a6578063e2f45605146109c657600080fd5b8063cbf7e888116100d1578063cbf7e888146108f3578063d7c94efd14610909578063d8c6404b1461091f578063dd62ed3e1461094057600080fd5b8063bbf1af951461089d578063c0fddc90146108bd578063c25c1722146108dd57600080fd5b8063a9059cbb11610164578063b225d4b71161013e578063b225d4b714610827578063b853a13914610847578063b9a45aac14610867578063bbde77c11461088757600080fd5b8063a9059cbb146107c7578063acedf07c146107e7578063adf4ba011461080757600080fd5b80639ac2d2da116101a05780639ac2d2da1461075b578063a43c772514610771578063a457c2d714610787578063a8aa1b31146107a757600080fd5b80638da5cb5b146106ef57806391053d941461070d57806395d89b411461072d57600080fd5b806353a4ec55116102a057806370a082311161023e5780637d8dbe24116102185780637d8dbe2414610683578063809d458d146106a3578063872f5969146106c35780638c0b5e22146106d957600080fd5b806370a0823114610622578063715018a614610658578063721d4e2b1461066d57600080fd5b8063690c22ca1161027a578063690c22ca146105a75780636a4b8fd9146105bd5780636ddd1713146105ed578063704ce43e1461060c57600080fd5b806353a4ec5514610547578063612888f614610567578063655873021461058757600080fd5b806323b872dd1161030d57806339509351116102e757806339509351146104b5578063450dde46146104d5578063455a4396146104ef5780634626402b1461050f57600080fd5b806323b872dd146104635780632a6ae1e814610483578063313ce5671461049957600080fd5b8062e6be7b1461035f57806306fdde0314610381578063095ea7b3146103c0578063176b48b8146103f057806318160ddd146104145780631cdd3be31461043357600080fd5b3661035a57005b600080fd5b34801561036b57600080fd5b5061037f61037a366004612237565b610a52565b005b34801561038d57600080fd5b50604080518082019091526004815263484f4c4160e01b60208201525b6040516103b79190612414565b60405180910390f35b3480156103cc57600080fd5b506103e06103db366004612271565b610b4c565b60405190151581526020016103b7565b3480156103fc57600080fd5b50610406600b5481565b6040519081526020016103b7565b34801561042057600080fd5b506b204fce5e3e25026110000000610406565b34801561043f57600080fd5b506103e061044e366004612237565b60186020526000908152604090205460ff1681565b34801561046f57600080fd5b506103e061047e3660046122d6565b610b63565b34801561048f57600080fd5b5061040660045481565b3480156104a557600080fd5b50604051601281526020016103b7565b3480156104c157600080fd5b506103e06104d0366004612271565b610bcc565b3480156104e157600080fd5b50600c546103e09060ff1681565b3480156104fb57600080fd5b5061037f61050a366004612317565b610c02565b34801561051b57600080fd5b50600f5461052f906001600160a01b031681565b6040516001600160a01b0390911681526020016103b7565b34801561055357600080fd5b5061037f610562366004612367565b610c57565b34801561057357600080fd5b5061037f610582366004612367565b610c91565b34801561059357600080fd5b5061037f6105a2366004612367565b610cc8565b3480156105b357600080fd5b5061040660115481565b3480156105c957600080fd5b506103e06105d8366004612237565b60196020526000908152604090205460ff1681565b3480156105f957600080fd5b506012546103e090610100900460ff1681565b34801561061857600080fd5b5061040660085481565b34801561062e57600080fd5b5061040661063d366004612237565b6001600160a01b031660009081526016602052604090205490565b34801561066457600080fd5b5061037f610cff565b34801561067957600080fd5b5061040660055481565b34801561068f57600080fd5b5061037f61069e366004612367565b610d73565b3480156106af57600080fd5b5061037f6106be366004612237565b610db5565b3480156106cf57600080fd5b5061040660105481565b3480156106e557600080fd5b5061040660025481565b3480156106fb57600080fd5b506000546001600160a01b031661052f565b34801561071957600080fd5b5061037f610728366004612367565b610eae565b34801561073957600080fd5b5060408051808201909152600581526424484f4c4160d81b60208201526103aa565b34801561076757600080fd5b5061040660075481565b34801561077d57600080fd5b50610406600a5481565b34801561079357600080fd5b506103e06107a2366004612271565b610ef0565b3480156107b357600080fd5b5060155461052f906001600160a01b031681565b3480156107d357600080fd5b506103e06107e2366004612271565b610f3f565b3480156107f357600080fd5b5061037f610802366004612367565b610f4c565b34801561081357600080fd5b5061037f610822366004612367565b610f83565b34801561083357600080fd5b5061037f610842366004612367565b610fba565b34801561085357600080fd5b5061037f610862366004612367565b610ffc565b34801561087357600080fd5b5061037f610882366004612317565b611033565b34801561089357600080fd5b5061040660035481565b3480156108a957600080fd5b5061037f6108b836600461234c565b611088565b3480156108c957600080fd5b5061037f6108d8366004612380565b6110ea565b3480156108e957600080fd5b50610406600d5481565b3480156108ff57600080fd5b50610406600e5481565b34801561091557600080fd5b5061040660095481565b34801561092b57600080fd5b50600f546103e090600160a01b900460ff1681565b34801561094c57600080fd5b5061040661095b36600461229d565b6001600160a01b03918216600090815260176020908152604080832093909416825291909152205490565b34801561099257600080fd5b5061037f6109a136600461234c565b61118a565b3480156109b257600080fd5b5061037f6109c136600461234c565b6111c7565b3480156109d257600080fd5b5061040660135481565b3480156109e857600080fd5b5061040660065481565b3480156109fe57600080fd5b5061037f610a0d366004612237565b61120b565b348015610a1e57600080fd5b5060145461052f906001600160a01b031681565b348015610a3e57600080fd5b5061037f610a4d366004612271565b6112f5565b6000546001600160a01b03163314610a855760405162461bcd60e51b8152600401610a7c90612469565b60405180910390fd5b6014546001600160a01b0382811691161415610aef5760405162461bcd60e51b815260206004820152602360248201527f54686520726f7574657220616c7265616479206861732074686174206164647260448201526265737360e81b6064820152608401610a7c565b6014546040516001600160a01b03918216918316907fc4382ee892d64a85fffb798adefd9dd8fcdeb2b1ababe74b46cdae7fe88da4e090600090a3601480546001600160a01b0319166001600160a01b0392909216919091179055565b6000610b59338484611430565b5060015b92915050565b6000610b70848484611563565b610bc28433610bbd856040518060600160405280602881526020016125a5602891396001600160a01b038a1660009081526017602090815260408083203384529091529020549190611b27565b611430565b5060019392505050565b3360008181526017602090815260408083206001600160a01b03871684529091528120549091610b59918590610bbd90866113ca565b6000546001600160a01b03163314610c2c5760405162461bcd60e51b8152600401610a7c90612469565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610c815760405162461bcd60e51b8152600401610a7c90612469565b6004819055610c8e611b5e565b50565b6000546001600160a01b03163314610cbb5760405162461bcd60e51b8152600401610a7c90612469565b6008819055610c8e611b86565b6000546001600160a01b03163314610cf25760405162461bcd60e51b8152600401610a7c90612469565b6005819055610c8e611b86565b6000546001600160a01b03163314610d295760405162461bcd60e51b8152600401610a7c90612469565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610d9d5760405162461bcd60e51b8152600401610a7c90612469565b610daf81670de0b6b3a764000061252d565b60025550565b6000546001600160a01b03163314610ddf5760405162461bcd60e51b8152600401610a7c90612469565b600f546001600160a01b0382811691161415610e515760405162461bcd60e51b815260206004820152602b60248201527f5468652054726561737572792077616c6c657420697320616c7265616479207460448201526a686973206164647265737360a81b6064820152608401610a7c565b600f546040516001600160a01b03918216918316907fa982575859d7ad2f390dc12b23f7dab8bbda047f9d0140ac68344b27bf34bfb490600090a3600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610ed85760405162461bcd60e51b8152600401610a7c90612469565b610eea81670de0b6b3a764000061252d565b60035550565b6000610b593384610bbd856040518060600160405280602581526020016125cd602591393360009081526017602090815260408083206001600160a01b038d1684529091529020549190611b27565b6000610b59338484611563565b6000546001600160a01b03163314610f765760405162461bcd60e51b8152600401610a7c90612469565b6009819055610c8e611b5e565b6000546001600160a01b03163314610fad5760405162461bcd60e51b8152600401610a7c90612469565b6006819055610c8e611b5e565b6000546001600160a01b03163314610fe45760405162461bcd60e51b8152600401610a7c90612469565b610ff681670de0b6b3a764000061252d565b60135550565b6000546001600160a01b031633146110265760405162461bcd60e51b8152600401610a7c90612469565b6007819055610c8e611b86565b6000546001600160a01b0316331461105d5760405162461bcd60e51b8152600401610a7c90612469565b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146110b25760405162461bcd60e51b8152600401610a7c90612469565b600f805460ff60a01b1916600160a01b8315158102919091179182905560ff91041615610c8e576110e44260286124f3565b60115550565b6000546001600160a01b031633146111145760405162461bcd60e51b8152600401610a7c90612469565b600061112083836113ca565b9050806103e81461117e5760405162461bcd60e51b815260206004820152602260248201527f546f74616c206d75737420626520657175616c20746f20313030302028313030604482015261252960f01b6064820152608401610a7c565b50600d91909155600e55565b6000546001600160a01b031633146111b45760405162461bcd60e51b8152600401610a7c90612469565b600c805460ff1916911515919091179055565b6000546001600160a01b031633146111f15760405162461bcd60e51b8152600401610a7c90612469565b601280549115156101000261ff0019909216919091179055565b6000546001600160a01b031633146112355760405162461bcd60e51b8152600401610a7c90612469565b6001600160a01b03811661129a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a7c565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461131f5760405162461bcd60e51b8152600401610a7c90612469565b6001600160a01b03821661138f5760405162461bcd60e51b815260206004820152603160248201527f43616e6e6f7420776974686472617720746865204554482062616c616e636520604482015270746f2061207a65726f206164647265737360781b6064820152608401610a7c565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156113c5573d6000803e3d6000fd5b505050565b6000806113d783856124f3565b9050838110156114295760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a7c565b9392505050565b6001600160a01b03831661149a5760405162461bcd60e51b815260206004820152602b60248201527f42617365526669546f6b656e3a20617070726f76652066726f6d20746865207a60448201526a65726f206164647265737360a81b6064820152608401610a7c565b6001600160a01b0382166115025760405162461bcd60e51b815260206004820152602960248201527f42617365526669546f6b656e3a20617070726f766520746f20746865207a65726044820152686f206164647265737360b81b6064820152608401610a7c565b6001600160a01b0383811660008181526017602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166115c75760405162461bcd60e51b815260206004820152602560248201527f546f6b656e3a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a7c565b6001600160a01b0382166116295760405162461bcd60e51b815260206004820152602360248201527f546f6b656e3a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a7c565b6001546001600160a01b03848116911614156116955760405162461bcd60e51b815260206004820152602560248201527f546f6b656e3a207472616e736665722066726f6d20746865206275726e206164604482015264647265737360d81b6064820152608401610a7c565b600081116116f75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610a7c565b6001600160a01b03831660009081526018602052604090205460ff1615801561173957506001600160a01b03821660009081526018602052604090205460ff16155b61177b5760405162461bcd60e51b8152602060048201526013602482015272426c61636b6c6973746564206164647265737360681b6044820152606401610a7c565b6014546001600160a01b038481169116148015906117b257506001600160a01b03821660009081526019602052604090205460ff16155b80156117d757506001600160a01b03831660009081526019602052604090205460ff16155b1561184a5760025481111561184a5760405162461bcd60e51b815260206004820152603360248201527f5472616e7366657220616d6f756e74206578636565647320746865204d6178206044820152722a3930b739b0b1ba34b7b71020b6b7bab73a1760691b6064820152608401610a7c565b600060035411801561187557506001600160a01b03821660009081526019602052604090205460ff16155b801561189a57506001600160a01b03831660009081526019602052604090205460ff16155b80156118b457506015546001600160a01b03838116911614155b15611945576001600160a01b0382166000908152601660205260409020546003546118df83836124f3565b11156119435760405162461bcd60e51b815260206004820152602d60248201527f4e65772062616c616e636520776f756c642065786365656420746865206d617860448201526c57616c6c657442616c616e636560981b6064820152608401610a7c565b505b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260169091529190912054611997918390611b27565b6001600160a01b038416600090815260166020908152604080832093909355600c5460199091529190205460ff9182169116806119ec57506001600160a01b03831660009081526019602052604090205460ff165b156119f5575060005b6015546001600160a01b03858116911614801590611a2157506015546001600160a01b03848116911614155b15611a2a575060005b6015546000906001600160a01b03858116911614611a4a57600a54611a4e565b600b545b600f54909150600160a01b900460ff168015611a6c57506011544211155b611a765780611a7a565b6010545b9050611a8584611ba8565b600082611a925783611a9d565b611a9d868584611c25565b6001600160a01b038616600090815260166020526040902054909150611ac390826113ca565b6001600160a01b0380871660008181526016602052604090819020939093559151908816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b179085815260200190565b60405180910390a3505050505050565b60008184841115611b4b5760405162461bcd60e51b8152600401610a7c9190612414565b50611b56838561254c565b949350505050565b611b81600954611b7b6006546004546113ca90919063ffffffff16565b906113ca565b600b55565b611ba3600854611b7b6007546005546113ca90919063ffffffff16565b600a55565b30600090815260166020526040902054601354601254908210159060ff16158015611bd05750805b8015611be35750601254610100900460ff165b8015611bfc57506015546001600160a01b038481169116145b156113c5576012805460ff19166001179055611c16611cc7565b6012805460ff19169055505050565b600080611c3e6103e8611c388686611daf565b90611e2e565b30600090815260166020526040902054909150611c5b90826113ca565b30600081815260166020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611cac9085815260200190565b60405180910390a3611cbe8482611e89565b95945050505050565b600e54600090611cd8906002611e2e565b90506000611d0b6103e8611c3884611d05306001600160a01b031660009081526016602052604090205490565b90611daf565b90506000611d3882611d32306001600160a01b031660009081526016602052604090205490565b90611e89565b905047611d4482611ee5565b6000611d504783611e89565b90506000611d6f6103e8611c38600d5485611daf90919063ffffffff16565b90506000611d836103e8611c38858a611daf565b600f54909150611d9c906001600160a01b031683612087565b611da686826120ef565b50505050505050565b600082611dbe57506000610b5d565b6000611dca838561252d565b905082611dd7858361250b565b146114295760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610a7c565b6000808211611e7f5760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f0000000000006044820152606401610a7c565b611429828461250b565b600082821115611edb5760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006044820152606401610a7c565b611429828461254c565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611f1a57611f1a612579565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611f6e57600080fd5b505afa158015611f82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa69190612254565b81600181518110611fb957611fb9612579565b6001600160a01b039283166020918202929092010152601454611fdf9130911684611430565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac947906120189085906000908690309042906004016124b7565b600060405180830381600087803b15801561203257600080fd5b505af1158015612046573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161207b92919061249e565b60405180910390a15050565b6001600160a01b03821661138f5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f74207472616e73666572207468652045544820746f2061207a65726044820152686f206164647265737360b81b6064820152608401610a7c565b6014546121079030906001600160a01b031684611430565b601454600090819081906001600160a01b031663f305d71985308885806121366000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561219957600080fd5b505af11580156121ad573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906121d291906123a2565b604080518481526020810184905290810182905292955090935091507fd7f28048575eead8851d024ead087913957dfb4fd1a02b4d1573f5352a5a2be39060600160405180910390a15050505050565b8035801515811461223257600080fd5b919050565b60006020828403121561224957600080fd5b81356114298161258f565b60006020828403121561226657600080fd5b81516114298161258f565b6000806040838503121561228457600080fd5b823561228f8161258f565b946020939093013593505050565b600080604083850312156122b057600080fd5b82356122bb8161258f565b915060208301356122cb8161258f565b809150509250929050565b6000806000606084860312156122eb57600080fd5b83356122f68161258f565b925060208401356123068161258f565b929592945050506040919091013590565b6000806040838503121561232a57600080fd5b82356123358161258f565b915061234360208401612222565b90509250929050565b60006020828403121561235e57600080fd5b61142982612222565b60006020828403121561237957600080fd5b5035919050565b6000806040838503121561239357600080fd5b50508035926020909101359150565b6000806000606084860312156123b757600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b838110156124095781516001600160a01b0316875295820195908201906001016123e4565b509495945050505050565b600060208083528351808285015260005b8181101561244157858101830151858201604001528201612425565b81811115612453576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b828152604060208201526000611b5660408301846123d0565b85815284602082015260a0604082015260006124d660a08301866123d0565b6001600160a01b0394909416606083015250608001529392505050565b6000821982111561250657612506612563565b500190565b60008261252857634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561254757612547612563565b500290565b60008282101561255e5761255e612563565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114610c8e57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b5f0e951b34a2dce93761ba5a66a8c02b876e44a9ceaa7d5f404c5c767c2de8564736f6c63430008060033

Deployed Bytecode Sourcemap

11125:14384:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19455:293;;;;;;;;;;-1:-1:-1;19455:293:0;;;;;:::i;:::-;;:::i;:::-;;14202:94;;;;;;;;;;-1:-1:-1;14283:5:0;;;;;;;;;;;;-1:-1:-1;;;14283:5:0;;;;14202:94;;;;;;;:::i;:::-;;;;;;;;15113:167;;;;;;;;;;-1:-1:-1;15113:167:0;;;;;:::i;:::-;;:::i;:::-;;;4894:14:1;;4887:22;4869:41;;4857:2;4842:18;15113:167:0;4824:92:1;12059:31:0;;;;;;;;;;;;;;;;;;;13818:25:1;;;13806:2;13791:18;12059:31:0;13773:76:1;14512:102:0;;;;;;;;;;-1:-1:-1;11490:25:0;14512:102;;12819:46;;;;;;;;;;-1:-1:-1;12819:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15296:316;;;;;;;;;;-1:-1:-1;15296:316:0;;;;;:::i;:::-;;:::i;11749:39::-;;;;;;;;;;;;;;;;14410:94;;;;;;;;;;-1:-1:-1;14410:94:0;;11434:2;15244:36:1;;15232:2;15217:18;14410:94:0;15199:87:1;15634:218:0;;;;;;;;;;-1:-1:-1;15634:218:0;;;;;:::i;:::-;;:::i;12099:33::-;;;;;;;;;;-1:-1:-1;12099:33:0;;;;;;;;16509:123;;;;;;;;;;-1:-1:-1;16509:123:0;;;;;:::i;:::-;;:::i;12272:74::-;;;;;;;;;;-1:-1:-1;12272:74:0;;;;-1:-1:-1;;;;;12272:74:0;;;;;;-1:-1:-1;;;;;4073:32:1;;;4055:51;;4043:2;4028:18;12272:74:0;4010:102:1;18206:151:0;;;;;;;;;;-1:-1:-1;18206:151:0;;;;;:::i;:::-;;:::i;18665:121::-;;;;;;;;;;-1:-1:-1;18665:121:0;;;;;:::i;:::-;;:::i;18794:148::-;;;;;;;;;;-1:-1:-1;18794:148:0;;;;;:::i;:::-;;:::i;12445:32::-;;;;;;;;;;;;;;;;12872:46;;;;;;;;;;-1:-1:-1;12872:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12514:30;;;;;;;;;;-1:-1:-1;12514:30:0;;;;;;;;;;;11947:24;;;;;;;;;;;;;;;;14622:121;;;;;;;;;;-1:-1:-1;14622:121:0;;;;;:::i;:::-;-1:-1:-1;;;;;14716:18:0;14688:7;14716:18;;;:9;:18;;;;;;;14622:121;9135:148;;;;;;;;;;;;;:::i;11801:38::-;;;;;;;;;;;;;;;;16910:115;;;;;;;;;;-1:-1:-1;16910:115:0;;;;;:::i;:::-;;:::i;17033:281::-;;;;;;;;;;-1:-1:-1;17033:281:0;;;;;:::i;:::-;;:::i;12400:31::-;;;;;;;;;;;;;;;;11526:48;;;;;;;;;;;;;;;;8910:79;;;;;;;;;;-1:-1:-1;8948:7:0;8975:6;-1:-1:-1;;;;;8975:6:0;8910:79;;16775:123;;;;;;;;;;-1:-1:-1;16775:123:0;;;;;:::i;:::-;;:::i;14304:98::-;;;;;;;;;;-1:-1:-1;14387:7:0;;;;;;;;;;;;-1:-1:-1;;;14387:7:0;;;;14304:98;;11897:37;;;;;;;;;;;;;;;;12022:30;;;;;;;;;;;;;;;;15864:269;;;;;;;;;;-1:-1:-1;15864:269:0;;;;;:::i;:::-;;:::i;12654:19::-;;;;;;;;;;-1:-1:-1;12654:19:0;;;;-1:-1:-1;;;;;12654:19:0;;;14765:172;;;;;;;;;;-1:-1:-1;14765:172:0;;;;;:::i;:::-;;:::i;18526:127::-;;;;;;;;;;-1:-1:-1;18526:127:0;;;;;:::i;:::-;;:::i;18369:149::-;;;;;;;;;;-1:-1:-1;18369:149:0;;;;;:::i;:::-;;:::i;17782:130::-;;;;;;;;;;-1:-1:-1;17782:130:0;;;;;:::i;:::-;;:::i;18954:146::-;;;;;;;;;;-1:-1:-1;18954:146:0;;;;;:::i;:::-;;:::i;16640:123::-;;;;;;;;;;-1:-1:-1;16640:123:0;;;;;:::i;:::-;;:::i;11609:51::-;;;;;;;;;;;;;;;;19114:216;;;;;;;;;;-1:-1:-1;19114:216:0;;;;;:::i;:::-;;:::i;17322:339::-;;;;;;;;;;-1:-1:-1;17322:339:0;;;;;:::i;:::-;;:::i;12169:39::-;;;;;;;;;;;;;;;;12222:35;;;;;;;;;;;;;;;;11986:27;;;;;;;;;;;;;;;;12359:34;;;;;;;;;;-1:-1:-1;12359:34:0;;;;-1:-1:-1;;;12359:34:0;;;;;;14953:148;;;;;;;;;;-1:-1:-1;14953:148:0;;;;;:::i;:::-;-1:-1:-1;;;;;15062:18:0;;;15036:7;15062:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;14953:148;19339:104;;;;;;;;;;-1:-1:-1;19339:104:0;;;;;:::i;:::-;;:::i;17670:100::-;;;;;;;;;;-1:-1:-1;17670:100:0;;;;;:::i;:::-;;:::i;12551:51::-;;;;;;;;;;;;;;;;11852:38;;;;;;;;;;;;;;;;9291:244;;;;;;;;;;-1:-1:-1;9291:244:0;;;;;:::i;:::-;;:::i;12617:30::-;;;;;;;;;;-1:-1:-1;12617:30:0;;;;-1:-1:-1;;;;;12617:30:0;;;25276:224;;;;;;;;;;-1:-1:-1;25276:224:0;;;;;:::i;:::-;;:::i;19455:293::-;9044:6;;-1:-1:-1;;;;;9044:6:0;5236:10;9044:22;9036:67;;;;-1:-1:-1;;;9036:67:0;;;;;;;:::i;:::-;;;;;;;;;19564:6:::1;::::0;-1:-1:-1;;;;;19542:29:0;;::::1;19564:6:::0;::::1;19542:29;;19534:77;;;::::0;-1:-1:-1;;;19534:77:0;;7956:2:1;19534:77:0::1;::::0;::::1;7938:21:1::0;7995:2;7975:18;;;7968:30;8034:34;8014:18;;;8007:62;-1:-1:-1;;;8085:18:1;;;8078:33;8128:19;;19534:77:0::1;7928:225:1::0;19534:77:0::1;19671:6;::::0;19627:52:::1;::::0;-1:-1:-1;;;;;19671:6:0;;::::1;::::0;19627:52;::::1;::::0;::::1;::::0;19671:6:::1;::::0;19627:52:::1;19700:6;:37:::0;;-1:-1:-1;;;;;;19700:37:0::1;-1:-1:-1::0;;;;;19700:37:0;;;::::1;::::0;;;::::1;::::0;;19455:293::o;15113:167::-;15190:4;15207:39;5236:10;15230:7;15239:6;15207:8;:39::i;:::-;-1:-1:-1;15264:4:0;15113:167;;;;;:::o;15296:316::-;15396:4;15412:36;15422:6;15430:9;15441:6;15412:9;:36::i;:::-;15459:121;15468:6;5236:10;15490:89;15528:6;15490:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15490:19:0;;;;;;:11;:19;;;;;;;;5236:10;15490:33;;;;;;;;;;:37;:89::i;:::-;15459:8;:121::i;:::-;-1:-1:-1;15598:4:0;15296:316;;;;;:::o;15634:218::-;5236:10;15722:4;15771:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15771:34:0;;;;;;;;;;15722:4;;15739:83;;15762:7;;15771:50;;15810:10;15771:38;:50::i;16509:123::-;9044:6;;-1:-1:-1;;;;;9044:6:0;5236:10;9044:22;9036:67;;;;-1:-1:-1;;;9036:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16593:23:0;;;::::1;;::::0;;;:14:::1;:23;::::0;;;;:31;;-1:-1:-1;;16593:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16509:123::o;18206:151::-;9044:6;;-1:-1:-1;;;;;9044:6:0;5236:10;9044:22;9036:67;;;;-1:-1:-1;;;9036:67:0;;;;;;;:::i;:::-;18288:19:::1;:28:::0;;;18327:22:::1;:20;:22::i;:::-;18206:151:::0;:::o;18665:121::-;9044:6;;-1:-1:-1;;;;;9044:6:0;5236:10;9044:22;9036:67;;;;-1:-1:-1;;;9036:67:0;;;;;;;:::i;:::-;18733:5:::1;:14:::0;;;18757:21:::1;:19;:21::i;18794:148::-:0;9044:6;;-1:-1:-1;;;;;9044:6:0;5236:10;9044:22;9036:67;;;;-1:-1:-1;;;9036:67:0;;;;;;;:::i;:::-;18875:18:::1;:27:::0;;;18913:21:::1;:19;:21::i;9135:148::-:0;9044:6;;-1:-1:-1;;;;;9044:6:0;5236:10;9044:22;9036:67;;;;-1:-1:-1;;;9036:67:0;;;;;;;:::i;:::-;9242:1:::1;9226:6:::0;;9205:40:::1;::::0;-1:-1:-1;;;;;9226:6:0;;::::1;::::0;9205:40:::1;::::0;9242:1;;9205:40:::1;9273:1;9256:19:::0;;-1:-1:-1;;;;;;9256:19:0::1;::::0;;9135:148::o;16910:115::-;9044:6;;-1:-1:-1;;;;;9044:6:0;5236:10;9044:22;9036:67;;;;-1:-1:-1;;;9036:67:0;;;;;;;:::i;:::-;17000:17:::1;:6:::0;17010::::1;17000:17;:::i;:::-;16986:11;:31:::0;-1:-1:-1;16910:115:0:o;17033:281::-;9044:6;;-1:-1:-1;;;;;9044:6:0;5236:10;9044:22;9036:67;;;;-1:-1:-1;;;9036:67:0;;;;;;;:::i;:::-;17133:14:::1;::::0;-1:-1:-1;;;;;17120:27:0;;::::1;17133:14:::0;::::1;17120:27;;17112:83;;;::::0;-1:-1:-1;;;17112:83:0;;12239:2:1;17112:83:0::1;::::0;::::1;12221:21:1::0;12278:2;12258:18;;;12251:30;12317:34;12297:18;;;12290:62;-1:-1:-1;;;12368:18:1;;;12361:41;12419:19;;17112:83:0::1;12211:233:1::0;17112:83:0::1;17244:14;::::0;17211:48:::1;::::0;-1:-1:-1;;;;;17244:14:0;;::::1;::::0;17211:48;::::1;::::0;::::1;::::0;17244:14:::1;::::0;17211:48:::1;17280:14;:26:::0;;-1:-1:-1;;;;;;17280:26:0::1;-1:-1:-1::0;;;;;17280:26:0;;;::::1;::::0;;;::::1;::::0;;17033:281::o;16775:123::-;9044:6;;-1:-1:-1;;;;;9044:6:0;5236:10;9044:22;9036:67;;;;-1:-1:-1;;;9036:67:0;;;;;;;:::i;:::-;16869:21:::1;:10:::0;16883:6:::1;16869:21;:::i;:::-;16850:16;:40:::0;-1:-1:-1;16775:123:0:o;15864:269::-;15957:4;15974:129;5236:10;15997:7;16006:96;16045:15;16006:96;;;;;;;;;;;;;;;;;5236:10;16006:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;16006:34:0;;;;;;;;;;;;:38;:96::i;14765:172::-;14845:4;14861:42;5236:10;14885:9;14896:6;14861:9;:42::i;18526:127::-;9044:6;;-1:-1:-1;;;;;9044:6:0;5236:10;9044:22;9036:67;;;;-1:-1:-1;;;9036:67:0;;;;;;;:::i;:::-;18596:7:::1;:16:::0;;;18623:22:::1;:20;:22::i;18369:149::-:0;9044:6;;-1:-1:-1;;;;;9044:6:0;5236:10;9044:22;9036:67;;;;-1:-1:-1;;;9036:67:0;;;;;;;:::i;:::-;18450:18:::1;:27:::0;;;18488:22:::1;:20;:22::i;17782:130::-:0;9044:6;;-1:-1:-1;;;;;9044:6:0;5236:10;9044:22;9036:67;;;;-1:-1:-1;;;9036:67:0;;;;;;;:::i;:::-;17882:22:::1;:11:::0;17897:6:::1;17882:22;:::i;:::-;17861:18;:43:::0;-1:-1:-1;17782:130:0:o;18954:146::-;9044:6;;-1:-1:-1;;;;;9044:6:0;5236:10;9044:22;9036:67;;;;-1:-1:-1;;;9036:67:0;;;;;;;:::i;:::-;19034:17:::1;:26:::0;;;19071:21:::1;:19;:21::i;16640:123::-:0;9044:6;;-1:-1:-1;;;;;9044:6:0;5236:10;9044:22;9036:67;;;;-1:-1:-1;;;9036:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16724:23:0;;;::::1;;::::0;;;:14:::1;:23;::::0;;;;:31;;-1:-1:-1;;16724:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16640:123::o;19114:216::-;9044:6;;-1:-1:-1;;;;;9044:6:0;5236:10;9044:22;9036:67;;;;-1:-1:-1;;;9036:67:0;;;;;;;:::i;:::-;19188:14:::1;:29:::0;;-1:-1:-1;;;;19188:29:0::1;-1:-1:-1::0;;;19188:29:0;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;::::1;19233:14:::0;::::1;;19230:89;;;19283:20;:15;19301:2;19283:20;:::i;:::-;19263:17;:40:::0;19114:216;:::o;17322:339::-;9044:6;;-1:-1:-1;;;;;9044:6:0;5236:10;9044:22;9036:67;;;;-1:-1:-1;;;9036:67:0;;;;;;;:::i;:::-;17433:20:::1;17456:27;:12:::0;17473:9;17456:16:::1;:27::i;:::-;17433:50;;17502:12;17518:4;17502:20;17494:67;;;::::0;-1:-1:-1;;;17494:67:0;;13061:2:1;17494:67:0::1;::::0;::::1;13043:21:1::0;13100:2;13080:18;;;13073:30;13139:34;13119:18;;;13112:62;-1:-1:-1;;;13190:18:1;;;13183:32;13232:19;;17494:67:0::1;13033:224:1::0;17494:67:0::1;-1:-1:-1::0;17582:18:0::1;:33:::0;;;;17626:15:::1;:27:::0;17322:339::o;19339:104::-;9044:6;;-1:-1:-1;;;;;9044:6:0;5236:10;9044:22;9036:67;;;;-1:-1:-1;;;9036:67:0;;;;;;;:::i;:::-;19412:14:::1;:23:::0;;-1:-1:-1;;19412:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19339:104::o;17670:100::-;9044:6;;-1:-1:-1;;;;;9044:6:0;5236:10;9044:22;9036:67;;;;-1:-1:-1;;;9036:67:0;;;;;;;:::i;:::-;17739:11:::1;:23:::0;;;::::1;;;;-1:-1:-1::0;;17739:23:0;;::::1;::::0;;;::::1;::::0;;17670:100::o;9291:244::-;9044:6;;-1:-1:-1;;;;;9044:6:0;5236:10;9044:22;9036:67;;;;-1:-1:-1;;;9036:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9380:22:0;::::1;9372:73;;;::::0;-1:-1:-1;;;9372:73:0;;7193:2:1;9372:73:0::1;::::0;::::1;7175:21:1::0;7232:2;7212:18;;;7205:30;7271:34;7251:18;;;7244:62;-1:-1:-1;;;7322:18:1;;;7315:36;7368:19;;9372:73:0::1;7165:228:1::0;9372:73:0::1;9482:6;::::0;;9461:38:::1;::::0;-1:-1:-1;;;;;9461:38:0;;::::1;::::0;9482:6;::::1;::::0;9461:38:::1;::::0;::::1;9510:6;:17:::0;;-1:-1:-1;;;;;;9510:17:0::1;-1:-1:-1::0;;;;;9510:17:0;;;::::1;::::0;;;::::1;::::0;;9291:244::o;25276:224::-;9044:6;;-1:-1:-1;;;;;9044:6:0;5236:10;9044:22;9036:67;;;;-1:-1:-1;;;9036:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25378:23:0;::::1;25370:85;;;::::0;-1:-1:-1;;;25370:85:0;;6775:2:1;25370:85:0::1;::::0;::::1;6757:21:1::0;6814:2;6794:18;;;6787:30;6853:34;6833:18;;;6826:62;-1:-1:-1;;;6904:18:1;;;6897:47;6961:19;;25370:85:0::1;6747:239:1::0;25370:85:0::1;25466:26;::::0;-1:-1:-1;;;;;25466:18:0;::::1;::::0;:26;::::1;;;::::0;25485:6;;25466:26:::1;::::0;;;25485:6;25466:18;:26;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;25276:224:::0;;:::o;2706:179::-;2764:7;;2796:5;2800:1;2796;:5;:::i;:::-;2784:17;;2825:1;2820;:6;;2812:46;;;;-1:-1:-1;;;2812:46:0;;7600:2:1;2812:46:0;;;7582:21:1;7639:2;7619:18;;;7612:30;7678:29;7658:18;;;7651:57;7725:18;;2812:46:0;7572:177:1;2812:46:0;2876:1;2706:179;-1:-1:-1;;;2706:179:0:o;16145:352::-;-1:-1:-1;;;;;16239:19:0;;16231:75;;;;-1:-1:-1;;;16231:75:0;;5957:2:1;16231:75:0;;;5939:21:1;5996:2;5976:18;;;5969:30;6035:34;6015:18;;;6008:62;-1:-1:-1;;;6086:18:1;;;6079:41;6137:19;;16231:75:0;5929:233:1;16231:75:0;-1:-1:-1;;;;;16325:21:0;;16317:75;;;;-1:-1:-1;;;16317:75:0;;12651:2:1;16317:75:0;;;12633:21:1;12690:2;12670:18;;;12663:30;12729:34;12709:18;;;12702:62;-1:-1:-1;;;12780:18:1;;;12773:39;12829:19;;16317:75:0;12623:231:1;16317:75:0;-1:-1:-1;;;;;16405:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;16457:32;;13818:25:1;;;16457:32:0;;13791:18:1;16457:32:0;;;;;;;16145:352;;;:::o;20118:2355::-;-1:-1:-1;;;;;20215:20:0;;20207:70;;;;-1:-1:-1;;;20207:70:0;;6369:2:1;20207:70:0;;;6351:21:1;6408:2;6388:18;;;6381:30;6447:34;6427:18;;;6420:62;-1:-1:-1;;;6498:18:1;;;6491:35;6543:19;;20207:70:0;6341:227:1;20207:70:0;-1:-1:-1;;;;;20296:23:0;;20288:71;;;;-1:-1:-1;;;20288:71:0;;8719:2:1;20288:71:0;;;8701:21:1;8758:2;8738:18;;;8731:30;8797:34;8777:18;;;8770:62;-1:-1:-1;;;8848:18:1;;;8841:33;8891:19;;20288:71:0;8691:225:1;20288:71:0;20396:11;;-1:-1:-1;;;;;20378:30:0;;;20396:11;;20378:30;;20370:80;;;;-1:-1:-1;;;20370:80:0;;11419:2:1;20370:80:0;;;11401:21:1;11458:2;11438:18;;;11431:30;11497:34;11477:18;;;11470:62;-1:-1:-1;;;11548:18:1;;;11541:35;11593:19;;20370:80:0;11391:227:1;20370:80:0;20478:1;20469:6;:10;20461:64;;;;-1:-1:-1;;;20461:64:0;;11009:2:1;20461:64:0;;;10991:21:1;11048:2;11028:18;;;11021:30;11087:34;11067:18;;;11060:62;-1:-1:-1;;;11138:18:1;;;11131:39;11187:19;;20461:64:0;10981:231:1;20461:64:0;-1:-1:-1;;;;;20547:22:0;;;;;;:14;:22;;;;;;;;20546:23;:53;;;;-1:-1:-1;;;;;;20574:25:0;;;;;;:14;:25;;;;;;;;20573:26;20546:53;20538:85;;;;-1:-1:-1;;;20538:85:0;;9478:2:1;20538:85:0;;;9460:21:1;9517:2;9497:18;;;9490:30;-1:-1:-1;;;9536:18:1;;;9529:49;9595:18;;20538:85:0;9450:169:1;20538:85:0;20680:6;;-1:-1:-1;;;;;20662:25:0;;;20680:6;;20662:25;;;;:132;;-1:-1:-1;;;;;;20769:25:0;;;;;;:14;:25;;;;;;;;20768:26;20662:132;:203;;;;-1:-1:-1;;;;;;20843:22:0;;;;;;:14;:22;;;;;;;;20842:23;20662:203;20644:360;;;20911:11;;20901:6;:21;;20893:85;;;;-1:-1:-1;;;20893:85:0;;9826:2:1;20893:85:0;;;9808:21:1;9865:2;9845:18;;;9838:30;9904:34;9884:18;;;9877:62;-1:-1:-1;;;9955:18:1;;;9948:49;10014:19;;20893:85:0;9798:241:1;20893:85:0;21048:1;21029:16;;:20;:50;;;;-1:-1:-1;;;;;;21054:25:0;;;;;;:14;:25;;;;;;;;21053:26;21029:50;:77;;;;-1:-1:-1;;;;;;21084:22:0;;;;;;:14;:22;;;;;;;;21083:23;21029:77;:107;;;;-1:-1:-1;21131:4:0;;-1:-1:-1;;;;;21110:26:0;;;21131:4;;21110:26;;21029:107;21024:319;;;-1:-1:-1;;;;;14716:18:0;;21158:24;14716:18;;;:9;:18;;;;;;21261:16;;21232:25;21251:6;14716:18;21232:25;:::i;:::-;:45;;21224:103;;;;-1:-1:-1;;;21224:103:0;;11825:2:1;21224:103:0;;;11807:21:1;11864:2;11844:18;;;11837:30;11903:34;11883:18;;;11876:62;-1:-1:-1;;;11954:18:1;;;11947:43;12007:19;;21224:103:0;11797:235:1;21224:103:0;21139:204;21024:319;21433:53;;;;;;;;;;;-1:-1:-1;;;21433:53:0;;;;;;;;-1:-1:-1;;;;;21433:17:0;;-1:-1:-1;21433:17:0;;;:9;:17;;;;;;;;:53;;21455:6;;21433:21;:53::i;:::-;-1:-1:-1;;;;;21413:17:0;;;;;;:9;:17;;;;;;;;:73;;;;21609:14;;21729;:22;;;;;;;21609:14;;;;;21729:22;;:51;;-1:-1:-1;;;;;;21755:25:0;;;;;;:14;:25;;;;;;;;21729:51;21726:103;;;-1:-1:-1;21811:5:0;21726:103;21891:4;;-1:-1:-1;;;;;21881:14:0;;;21891:4;;21881:14;;;;:35;;-1:-1:-1;21912:4:0;;-1:-1:-1;;;;;21899:17:0;;;21912:4;;21899:17;;21881:35;21878:84;;;-1:-1:-1;21945:5:0;21878:84;22007:4;;21974:17;;-1:-1:-1;;;;;21994:17:0;;;22007:4;;21994:17;:54;;22033:15;;21994:54;;;22014:16;;21994:54;22101:14;;21974:74;;-1:-1:-1;;;;22101:14:0;;;;:54;;;;;22138:17;;22119:15;:36;;22101:54;:79;;22171:9;22101:79;;;22158:10;;22101:79;22089:91;;22193:31;22214:9;22193:20;:31::i;:::-;22246:22;22271:10;:56;;22321:6;22271:56;;;22284:34;22292:6;22300;22308:9;22284:7;:34::i;:::-;-1:-1:-1;;;;;22361:20:0;;;;;;:9;:20;;;;;;22246:81;;-1:-1:-1;22361:40:0;;22246:81;22361:24;:40::i;:::-;-1:-1:-1;;;;;22338:20:0;;;;;;;:9;:20;;;;;;;:63;;;;22419:43;;;;;;;;;;22447:14;13818:25:1;;13806:2;13791:18;;13773:76;22419:43:0;;;;;;;;20196:2277;;;20118:2355;;;:::o;3611:200::-;3731:7;3767:12;3759:6;;;;3751:29;;;;-1:-1:-1;;;3751:29:0;;;;;;;;:::i;:::-;-1:-1:-1;3798:5:0;3802:1;3798;:5;:::i;:::-;3791:12;3611:200;-1:-1:-1;;;;3611:200:0:o;18060:134::-;18130:56;18178:7;;18130:43;18154:18;;18130:19;;:23;;:43;;;;:::i;:::-;:47;;:56::i;:::-;18111:16;:75;18060:134::o;17920:128::-;17988:52;18034:5;;17988:41;18011:17;;17988:18;;:22;;:41;;;;:::i;:52::-;17970:15;:70;17920:128::o;22482:459::-;22613:4;22564:28;14716:18;;;:9;:18;;;;;;22687;;22735:8;;22663:42;;;;;22735:8;;22734:9;:20;;;;;22747:7;22734:20;:35;;;;-1:-1:-1;22758:11:0;;;;;;;22734:35;:56;;;;-1:-1:-1;22786:4:0;;-1:-1:-1;;;;;22773:17:0;;;22786:4;;22773:17;22734:56;22730:196;;;22807:8;:15;;-1:-1:-1;;22807:15:0;22818:4;22807:15;;;22855:10;:8;:10::i;:::-;22898:8;:16;;-1:-1:-1;;22898:16:0;;;22539:402;;22482:459;:::o;19756:340::-;19836:7;;19877:33;11735:5;19877:15;:6;19888:3;19877:10;:15::i;:::-;:19;;:33::i;:::-;19968:4;19950:24;;;;:9;:24;;;;;;19857:53;;-1:-1:-1;19950:39:0;;19857:53;19950:28;:39::i;:::-;19941:4;19923:24;;;;:9;:24;;;;;;;:66;;;;20005:42;;-1:-1:-1;;;;;20005:42:0;;;;;;;20037:9;13818:25:1;;13806:2;13791:18;;13773:76;20005:42:0;;;;;;;;20067:21;:6;20078:9;20067:10;:21::i;:::-;20060:28;19756:340;-1:-1:-1;;;;;19756:340:0:o;22951:862::-;23022:15;;22990:29;;23022:22;;23042:1;23022:19;:22::i;:::-;22990:54;;23055:23;23081:69;11735:5;23081:51;23110:21;23081:24;23099:4;-1:-1:-1;;;;;14716:18:0;14688:7;14716:18;;;:9;:18;;;;;;;14622:121;23081:24;:28;;:51::i;:69::-;23055:95;;23161:20;23184:45;23213:15;23184:24;23202:4;-1:-1:-1;;;;;14716:18:0;14688:7;14716:18;;;:9;:18;;;;;;;14622:121;23184:24;:28;;:45::i;:::-;23161:68;-1:-1:-1;23266:21:0;23308:30;23161:68;23308:16;:30::i;:::-;23351:17;23371:40;:21;23397:13;23371:25;:40::i;:::-;23351:60;;23432:20;23455:51;11735:5;23455:33;23469:18;;23455:9;:13;;:33;;;;:::i;:51::-;23432:74;-1:-1:-1;23517:26:0;23546:54;11735:5;23546:36;:9;23560:21;23546:13;:36::i;:54::-;23678:14;;23517:83;;-1:-1:-1;23652:56:0;;-1:-1:-1;;;;;23678:14:0;23695:12;23652:17;:56::i;:::-;23755:50;23769:15;23786:18;23755:13;:50::i;:::-;22979:834;;;;;;;22951:862::o;3061:220::-;3119:7;3143:6;3139:20;;-1:-1:-1;3158:1:0;3151:8;;3139:20;3170:9;3182:5;3186:1;3182;:5;:::i;:::-;3170:17;-1:-1:-1;3215:1:0;3206:5;3210:1;3170:17;3206:5;:::i;:::-;:10;3198:56;;;;-1:-1:-1;;;3198:56:0;;10246:2:1;3198:56:0;;;10228:21:1;10285:2;10265:18;;;10258:30;10324:34;10304:18;;;10297:62;-1:-1:-1;;;10375:18:1;;;10368:31;10416:19;;3198:56:0;10218:223:1;3289:153:0;3347:7;3379:1;3375;:5;3367:44;;;;-1:-1:-1;;;3367:44:0;;9123:2:1;3367:44:0;;;9105:21:1;9162:2;9142:18;;;9135:30;9201:28;9181:18;;;9174:56;9247:18;;3367:44:0;9095:176:1;3367:44:0;3429:5;3433:1;3429;:5;:::i;2893:158::-;2951:7;2984:1;2979;:6;;2971:49;;;;-1:-1:-1;;;2971:49:0;;8360:2:1;2971:49:0;;;8342:21:1;8399:2;8379:18;;;8372:30;8438:32;8418:18;;;8411:60;8488:18;;2971:49:0;8332:180:1;2971:49:0;3038:5;3042:1;3038;:5;:::i;24426:623::-;24576:16;;;24590:1;24576:16;;;;;;;;24552:21;;24576:16;;;;;;;;;;-1:-1:-1;24576:16:0;24552:40;;24621:4;24603;24608:1;24603:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24603:23:0;;;:7;;;;;;;;;;:23;;;;24647:6;;:13;;;-1:-1:-1;;;24647:13:0;;;;:6;;;;;:11;;:13;;;;;24603:7;;24647:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24637:4;24642:1;24637:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24637:23:0;;;:7;;;;;;;;;:23;24705:6;;24673:53;;24690:4;;24705:6;24714:11;24673:8;:53::i;:::-;24765:6;;:215;;-1:-1:-1;;;24765:215:0;;-1:-1:-1;;;;;24765:6:0;;;;:57;;:215;;24837:11;;24765:6;;24907:4;;24934;;24954:15;;24765:215;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25006:35;25023:11;25036:4;25006:35;;;;;;;:::i;:::-;;;;;;;;24481:568;24426:623;:::o;25057:211::-;-1:-1:-1;;;;;25154:23:0;;25146:77;;;;-1:-1:-1;;;25146:77:0;;13464:2:1;25146:77:0;;;13446:21:1;13503:2;13483:18;;;13476:30;13542:34;13522:18;;;13515:62;-1:-1:-1;;;13593:18:1;;;13586:39;13642:19;;25146:77:0;13436:231:1;23821:587:0;24002:6;;23970:53;;23987:4;;-1:-1:-1;;;;;24002:6:0;24011:11;23970:8;:53::i;:::-;24136:6;;24067:23;;;;;;-1:-1:-1;;;;;24136:6:0;:22;24166:9;24199:4;24219:11;24067:23;;24277:7;8948;8975:6;-1:-1:-1;;;;;8975:6:0;;8910:79;24277:7;24136:189;;;;;;-1:-1:-1;;;;;;24136:189:0;;;-1:-1:-1;;;;;4476:15:1;;;24136:189:0;;;4458:34:1;4508:18;;;4501:34;;;;4551:18;;;4544:34;;;;4594:18;;;4587:34;4658:15;;;4637:19;;;4630:44;24299:15:0;4690:19:1;;;4683:35;4392:19;;24136:189:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24343:57;;;14980:25:1;;;15036:2;15021:18;;15014:34;;;15064:18;;;15057:34;;;24066:259:0;;-1:-1:-1;24066:259:0;;-1:-1:-1;24066:259:0;-1:-1:-1;24343:57:0;;14968:2:1;14953:18;24343:57:0;;;;;;;23892:516;;;23821:587;;:::o;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:2;;164:1;161;154:12;108:2;60:114;;;:::o;179:247::-;238:6;291:2;279:9;270:7;266:23;262:32;259:2;;;307:1;304;297:12;259:2;346:9;333:23;365:31;390:5;365:31;:::i;431:251::-;501:6;554:2;542:9;533:7;529:23;525:32;522:2;;;570:1;567;560:12;522:2;602:9;596:16;621:31;646:5;621:31;:::i;687:323::-;763:6;771;824:2;812:9;803:7;799:23;795:32;792:2;;;840:1;837;830:12;792:2;879:9;866:23;898:31;923:5;898:31;:::i;:::-;948:5;1000:2;985:18;;;;972:32;;-1:-1:-1;;;782:228:1:o;1015:388::-;1083:6;1091;1144:2;1132:9;1123:7;1119:23;1115:32;1112:2;;;1160:1;1157;1150:12;1112:2;1199:9;1186:23;1218:31;1243:5;1218:31;:::i;:::-;1268:5;-1:-1:-1;1325:2:1;1310:18;;1297:32;1338:33;1297:32;1338:33;:::i;:::-;1390:7;1380:17;;;1102:301;;;;;:::o;1408:456::-;1485:6;1493;1501;1554:2;1542:9;1533:7;1529:23;1525:32;1522:2;;;1570:1;1567;1560:12;1522:2;1609:9;1596:23;1628:31;1653:5;1628:31;:::i;:::-;1678:5;-1:-1:-1;1735:2:1;1720:18;;1707:32;1748:33;1707:32;1748:33;:::i;:::-;1512:352;;1800:7;;-1:-1:-1;;;1854:2:1;1839:18;;;;1826:32;;1512:352::o;1869:315::-;1934:6;1942;1995:2;1983:9;1974:7;1970:23;1966:32;1963:2;;;2011:1;2008;2001:12;1963:2;2050:9;2037:23;2069:31;2094:5;2069:31;:::i;:::-;2119:5;-1:-1:-1;2143:35:1;2174:2;2159:18;;2143:35;:::i;:::-;2133:45;;1953:231;;;;;:::o;2509:180::-;2565:6;2618:2;2606:9;2597:7;2593:23;2589:32;2586:2;;;2634:1;2631;2624:12;2586:2;2657:26;2673:9;2657:26;:::i;2694:180::-;2753:6;2806:2;2794:9;2785:7;2781:23;2777:32;2774:2;;;2822:1;2819;2812:12;2774:2;-1:-1:-1;2845:23:1;;2764:110;-1:-1:-1;2764:110:1:o;2879:248::-;2947:6;2955;3008:2;2996:9;2987:7;2983:23;2979:32;2976:2;;;3024:1;3021;3014:12;2976:2;-1:-1:-1;;3047:23:1;;;3117:2;3102:18;;;3089:32;;-1:-1:-1;2966:161:1:o;3132:306::-;3220:6;3228;3236;3289:2;3277:9;3268:7;3264:23;3260:32;3257:2;;;3305:1;3302;3295:12;3257:2;3334:9;3328:16;3318:26;;3384:2;3373:9;3369:18;3363:25;3353:35;;3428:2;3417:9;3413:18;3407:25;3397:35;;3247:191;;;;;:::o;3443:461::-;3496:3;3534:5;3528:12;3561:6;3556:3;3549:19;3587:4;3616:2;3611:3;3607:12;3600:19;;3653:2;3646:5;3642:14;3674:1;3684:195;3698:6;3695:1;3692:13;3684:195;;;3763:13;;-1:-1:-1;;;;;3759:39:1;3747:52;;3819:12;;;;3854:15;;;;3795:1;3713:9;3684:195;;;-1:-1:-1;3895:3:1;;3504:400;-1:-1:-1;;;;;3504:400:1:o;5153:597::-;5265:4;5294:2;5323;5312:9;5305:21;5355:6;5349:13;5398:6;5393:2;5382:9;5378:18;5371:34;5423:1;5433:140;5447:6;5444:1;5441:13;5433:140;;;5542:14;;;5538:23;;5532:30;5508:17;;;5527:2;5504:26;5497:66;5462:10;;5433:140;;;5591:6;5588:1;5585:13;5582:2;;;5661:1;5656:2;5647:6;5636:9;5632:22;5628:31;5621:42;5582:2;-1:-1:-1;5734:2:1;5713:15;-1:-1:-1;;5709:29:1;5694:45;;;;5741:2;5690:54;;5274:476;-1:-1:-1;;;5274:476:1:o;10446:356::-;10648:2;10630:21;;;10667:18;;;10660:30;10726:34;10721:2;10706:18;;10699:62;10793:2;10778:18;;10620:182::o;13854:332::-;14061:6;14050:9;14043:25;14104:2;14099;14088:9;14084:18;14077:30;14024:4;14124:56;14176:2;14165:9;14161:18;14153:6;14124:56;:::i;14191:582::-;14490:6;14479:9;14472:25;14533:6;14528:2;14517:9;14513:18;14506:34;14576:3;14571:2;14560:9;14556:18;14549:31;14453:4;14597:57;14649:3;14638:9;14634:19;14626:6;14597:57;:::i;:::-;-1:-1:-1;;;;;14690:32:1;;;;14685:2;14670:18;;14663:60;-1:-1:-1;14754:3:1;14739:19;14732:35;14589:65;14462:311;-1:-1:-1;;;14462:311:1:o;15291:128::-;15331:3;15362:1;15358:6;15355:1;15352:13;15349:2;;;15368:18;;:::i;:::-;-1:-1:-1;15404:9:1;;15339:80::o;15424:217::-;15464:1;15490;15480:2;;15534:10;15529:3;15525:20;15522:1;15515:31;15569:4;15566:1;15559:15;15597:4;15594:1;15587:15;15480:2;-1:-1:-1;15626:9:1;;15470:171::o;15646:168::-;15686:7;15752:1;15748;15744:6;15740:14;15737:1;15734:21;15729:1;15722:9;15715:17;15711:45;15708:2;;;15759:18;;:::i;:::-;-1:-1:-1;15799:9:1;;15698:116::o;15819:125::-;15859:4;15887:1;15884;15881:8;15878:2;;;15892:18;;:::i;:::-;-1:-1:-1;15929:9:1;;15868:76::o;15949:127::-;16010:10;16005:3;16001:20;15998:1;15991:31;16041:4;16038:1;16031:15;16065:4;16062:1;16055:15;16081:127;16142:10;16137:3;16133:20;16130:1;16123:31;16173:4;16170:1;16163:15;16197:4;16194:1;16187:15;16345:131;-1:-1:-1;;;;;16420:31:1;;16410:42;;16400:2;;16466:1;16463;16456:12

Swarm Source

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