ETH Price: $2,521.40 (-0.12%)

Token

HarryPotterTrumpTekashi69Inu (XLM)
 

Overview

Max Total Supply

170,000,000 XLM

Holders

45

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
2,291,210.885102311 XLM

Value
$0.00
0x1f08d424d961384f9134ac441f2f41b3156c2a97
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:
hptt69i

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-21
*/

// https://t.me/hptt69i

// https://twitter.com/hptt69i








// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;


library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {return a + b;}
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {return a - b;}
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {return a * b;}
    function div(uint256 a, uint256 b) internal pure returns (uint256) {return a / b;}
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {return a % b;}
    
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {uint256 c = a + b; if(c < a) return(false, 0); return(true, c);}}

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

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {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) {
        unchecked {if(b == 0) return(false, 0); return(true, a / b);}}

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

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

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function circulatingSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);}

abstract contract Ownable {
    address internal owner;
    constructor(address _owner) {owner = _owner;}
    modifier onlyOwner() {require(isOwner(msg.sender), "!OWNER"); _;}
    function isOwner(address account) public view returns (bool) {return account == owner;}
    function transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);}
    event OwnershipTransferred(address owner);
}

interface stakeIntegration {
    function stakingWithdraw(address depositor, uint256 _amount) external;
    function stakingDeposit(address depositor, uint256 _amount) external;
}

interface tokenStaking {
    function deposit(uint256 amount) external;
    function withdraw(uint256 amount) external;
}

interface IFactory{
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
}

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

contract hptt69i is IERC20, tokenStaking, Ownable {
    using SafeMath for uint256;
    string private constant _name = 'HarryPotterTrumpTekashi69Inu';
    string private constant _symbol = 'XLM';
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 170000000 * (10 ** _decimals);
    uint256 public _maxTxAmount = ( _totalSupply * 150 ) / 10000;
    uint256 public _maxSellAmount = ( _totalSupply * 150 ) / 10000;
    uint256 public _maxWalletToken = ( _totalSupply * 150 ) / 10000;
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping(address => bool) private isFeeExempt;
    IRouter router;
    address public pair;
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 200;
    uint256 private developmentFee = 200;
    uint256 private stakingFee = 0;
    uint256 private tokenFee = 0;
    uint256 private totalFee = 1000;
    uint256 private sellFee = 2000;
    uint256 private transferFee = 4000;
    uint256 private denominator = 10000;
    bool private swapEnabled = true;
    bool private tradingAllowed = false;
    bool public Unclog = true;
    uint256 public UnclogSells;
    uint256 public UnclogTrigger = 3;
    bool public UnclogBuyNeeded = false;
    uint256 private swapTimes;
    bool private swapping;
    uint256 private swapAmount = 3;
    uint256 private swapThreshold = ( _totalSupply * 500 ) / 100000;
    uint256 private minTokenAmount = ( _totalSupply * 10 ) / 100000;
    uint256 public UnclogMinAmount = 1;
    modifier lockTheSwap {swapping = true; _; swapping = false;}
    mapping(address => uint256) public amountStaked;
    uint256 public totalStaked;
    stakeIntegration internal stakingContract;
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal development_receiver = 0x1f50c1a4bd966BfA201710B96817C941Ec66adAd; 
    address internal marketing_receiver = 0x1f50c1a4bd966BfA201710B96817C941Ec66adAd;
    address internal liquidity_receiver = 0x1f50c1a4bd966BfA201710B96817C941Ec66adAd;
    address internal staking_receiver = 0x1f50c1a4bd966BfA201710B96817C941Ec66adAd;
    address internal token_receiver = 0x000000000000000000000000000000000000dEaD;
    
    event Deposit(address indexed account, uint256 indexed amount, uint256 indexed timestamp);
    event Withdraw(address indexed account, uint256 indexed amount, uint256 indexed timestamp);
    event SetStakingAddress(address indexed stakingAddress, uint256 indexed timestamp);
    event TradingEnabled(address indexed account, uint256 indexed timestamp);
    event ExcludeFromFees(address indexed account, bool indexed isExcluded, uint256 indexed timestamp);
    event SetDividendExempt(address indexed account, bool indexed isExempt, uint256 indexed timestamp);
    event Launch(uint256 indexed whitelistTime, bool indexed whitelistAllowed, uint256 indexed timestamp);
    event SetInternalAddresses(address indexed marketing, address indexed liquidity, address indexed development, uint256 timestamp);
    event SetSwapBackSettings(uint256 indexed swapAmount, uint256 indexed swapThreshold, uint256 indexed swapMinAmount, uint256 timestamp);
    event SetDistributionCriteria(uint256 indexed minPeriod, uint256 indexed minDistribution, uint256 indexed distributorGas, uint256 timestamp);
    event SetParameters(uint256 indexed maxTxAmount, uint256 indexed maxWalletToken, uint256 indexed maxTransfer, uint256 timestamp);
    event SetStructure(uint256 indexed total, uint256 indexed sell, uint256 transfer, uint256 indexed timestamp);
    event CreateLiquidity(uint256 indexed tokenAmount, uint256 indexed ETHAmount, address indexed wallet, uint256 timestamp);

    constructor() Ownable(msg.sender) {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        router = _router;
        pair = _pair;
        isFeeExempt[address(this)] = true;
        isFeeExempt[liquidity_receiver] = true;
        isFeeExempt[marketing_receiver] = true;
        isFeeExempt[development_receiver] = true;
        isFeeExempt[address(DEAD)] = true;
        isFeeExempt[msg.sender] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}
    function name() public pure returns (string memory) {return _name;}
    function symbol() public pure returns (string memory) {return _symbol;}
    function decimals() public pure returns (uint8) {return _decimals;}
    function getOwner() external view override returns (address) { return owner; }
    function totalSupply() public view override returns (uint256) {return _totalSupply;}
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    function availableBalance(address wallet) public view returns (uint256) {return _balances[wallet].sub(amountStaked[wallet]);}
    function circulatingSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}

    function preTxCheck(address sender, address recipient, uint256 amount) internal view {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount <= balanceOf(sender),"ERC20: below available balance threshold");
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        preTxCheck(sender, recipient, amount);
        checkTradingAllowed(sender, recipient);
        checkTxLimit(sender, recipient, amount);
        checkMaxWallet(sender, recipient, amount);
        checkUnclog(sender, recipient, amount);
        swapbackCounters(sender, recipient, amount);
        swapBack(sender, recipient);
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

    function deposit(uint256 amount) override external {
        require(amount <= _balances[msg.sender].sub(amountStaked[msg.sender]), "ERC20: Cannot stake more than available balance");
        stakingContract.stakingDeposit(msg.sender, amount);
        amountStaked[msg.sender] = amountStaked[msg.sender].add(amount);
        totalStaked = totalStaked.add(amount);
        emit Deposit(msg.sender, amount, block.timestamp);
    }

    function withdraw(uint256 amount) override external {
        require(amount <= amountStaked[msg.sender], "ERC20: Cannot unstake more than amount staked");
        stakingContract.stakingWithdraw(msg.sender, amount);
        amountStaked[msg.sender] = amountStaked[msg.sender].sub(amount);
        totalStaked = totalStaked.sub(amount);
        emit Withdraw(msg.sender, amount, block.timestamp);
    }

    function setStakingAddress(address _staking) external onlyOwner {
        stakingContract = stakeIntegration(_staking); isFeeExempt[_staking] = true;
        emit SetStakingAddress(_staking, block.timestamp);
    }

    function setStructure(uint256 _liquidity, uint256 _marketing, uint256 _token, uint256 _development, uint256 _staking, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
        liquidityFee = _liquidity; marketingFee = _marketing; tokenFee = _token; stakingFee = _staking;
        developmentFee = _development; totalFee = _total; sellFee = _sell; transferFee = _trans;
        require(totalFee <= denominator.div(5) && sellFee <= denominator.div(5) && transferFee <= denominator.div(5), "ERC20: fees cannot be more than 20%");
        emit SetStructure(_total, _sell, _trans, block.timestamp);
    }

    function setParameters(uint256 _buy, uint256 _trans, uint256 _wallet) external onlyOwner {
        uint256 newTx = (totalSupply().mul(_buy)).div(uint256(10000)); uint256 newTransfer = (totalSupply().mul(_trans)).div(uint256(10000));
        uint256 newWallet = (totalSupply().mul(_wallet)).div(uint256(10000)); uint256 limit = totalSupply().mul(5).div(1000);
        require(newTx >= limit && newTransfer >= limit && newWallet >= limit, "ERC20: max TXs and max Wallet cannot be less than .5%");
        _maxTxAmount = newTx; _maxSellAmount = newTransfer; _maxWalletToken = newWallet;
        emit SetParameters(newTx, newWallet, newTransfer, block.timestamp);
    }

    function checkTradingAllowed(address sender, address recipient) internal view {
        if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "ERC20: Trading is not allowed");}
    }

    function checkUnclog(address sender, address recipient, uint256 amount) internal {
        if(Unclog && !swapping){ 
        if(recipient == pair && !isFeeExempt[sender]){UnclogSells = UnclogSells.add(uint256(1));}
        if(sender == pair && !isFeeExempt[recipient] && amount >= UnclogMinAmount){UnclogSells = uint256(0);}
        if(UnclogSells > UnclogTrigger){UnclogBuyNeeded = true;}
        if(UnclogBuyNeeded && !isFeeExempt[recipient] && !isFeeExempt[sender]){
            require(sender == pair, "ERC20: Unclog purchase required"); if(amount >= UnclogMinAmount){UnclogSells = uint256(0); UnclogBuyNeeded = false;}}}
    }

    function setUnclog(bool enabled, uint256 trigger, uint256 minAmount) external onlyOwner {
        Unclog = enabled; UnclogTrigger = trigger; UnclogMinAmount = minAmount;
    }

    function checkMaxWallet(address sender, address recipient, uint256 amount) internal view {
        if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD)){
            require((_balances[recipient].add(amount)) <= _maxWalletToken, "ERC20: exceeds maximum wallet amount.");}
    }

    function swapbackCounters(address sender, address recipient, uint256 amount) internal {
        if(recipient == pair && !isFeeExempt[sender] && amount >= minTokenAmount){swapTimes += uint256(1);}
    }

    function checkTxLimit(address sender, address recipient, uint256 amount) internal view {
        if(amountStaked[sender] > uint256(0)){require((amount.add(amountStaked[sender])) <= _balances[sender], "ERC20: exceeds maximum allowed not currently staked.");}
        if(sender != pair){require(amount <= _maxSellAmount || isFeeExempt[sender] || isFeeExempt[recipient], "ERC20: tx limit exceeded");}
        require(amount <= _maxTxAmount || isFeeExempt[sender] || isFeeExempt[recipient], "ERC20: tx limit exceeded");
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap {
        uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(developmentFee).add(stakingFee)).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(_denominator);
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith, liquidity_receiver); }
        uint256 marketingAmount = unitBalance.mul(2).mul(marketingFee);
        if(marketingAmount > 0){payable(marketing_receiver).transfer(marketingAmount);}
        uint256 stakingAmount = unitBalance.mul(2).mul(stakingFee);
        if(stakingAmount > 0){payable(staking_receiver).transfer(stakingAmount);}
        if(address(this).balance > uint256(0)){payable(development_receiver).transfer(address(this).balance);}
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount, address receiver) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            address(receiver),
            block.timestamp);
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        _approve(address(this), address(router), tokenAmount);
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp);
    }

    function shouldSwapBack(address sender, address recipient) internal view returns (bool) {
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return !swapping && swapEnabled && tradingAllowed && !isFeeExempt[sender] 
            && recipient == pair && swapTimes >= swapAmount && aboveThreshold;
    }

    function swapBack(address sender, address recipient) internal {
        if(shouldSwapBack(sender, recipient)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);}
    }
    
    function startTrading() external onlyOwner {
        tradingAllowed = true;
        emit TradingEnabled(msg.sender, block.timestamp);
    }

    function setInternalAddresses(address _marketing, address _liquidity, address _development, address _staking, address _token) external onlyOwner {
        marketing_receiver = _marketing; liquidity_receiver = _liquidity; development_receiver = _development; staking_receiver = _staking; token_receiver = _token;
        isFeeExempt[_marketing] = true; isFeeExempt[_liquidity] = true; isFeeExempt[_staking] = true; isFeeExempt[_token] = true;
        emit SetInternalAddresses(_marketing, _liquidity, _development, block.timestamp);
    }

    function setisExempt(address _address, bool _enabled) external onlyOwner {
        isFeeExempt[_address] = _enabled;
        emit ExcludeFromFees(_address, _enabled, block.timestamp);
    }

    function rescueERC20(address _address, uint256 _amount) external {
        IERC20(_address).transfer(development_receiver, _amount);
    }

    function setSwapbackSettings(uint256 _swapAmount, uint256 _swapThreshold, uint256 _minTokenAmount) external onlyOwner {
        swapAmount = _swapAmount; swapThreshold = _totalSupply.mul(_swapThreshold).div(uint256(100000)); 
        minTokenAmount = _totalSupply.mul(_minTokenAmount).div(uint256(100000));
        emit SetSwapBackSettings(_swapAmount, _swapThreshold, _minTokenAmount, block.timestamp);  
    }

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

    function getTotalFee(address sender, address recipient) internal view returns (uint256) {
        if(recipient == pair){return sellFee;}
        if(sender == pair){return totalFee;}
        return transferFee;
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if(getTotalFee(sender, recipient) > 0){
        uint256 feeAmount = amount.div(denominator).mul(getTotalFee(sender, recipient));
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        if(tokenFee > uint256(0)){_transfer(address(this), address(token_receiver), amount.div(denominator).mul(tokenFee));}
        return amount.sub(feeAmount);} return amount;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, 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":true,"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"ETHAmount","type":"uint256"},{"indexed":true,"internalType":"address","name":"wallet","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"CreateLiquidity","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"bool","name":"isExcluded","type":"bool"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"whitelistTime","type":"uint256"},{"indexed":true,"internalType":"bool","name":"whitelistAllowed","type":"bool"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"Launch","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"minPeriod","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"minDistribution","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"distributorGas","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SetDistributionCriteria","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"bool","name":"isExempt","type":"bool"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SetDividendExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"marketing","type":"address"},{"indexed":true,"internalType":"address","name":"liquidity","type":"address"},{"indexed":true,"internalType":"address","name":"development","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SetInternalAddresses","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxTxAmount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"maxWalletToken","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"maxTransfer","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SetParameters","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"stakingAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SetStakingAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"total","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"sell","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"transfer","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SetStructure","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"swapAmount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"swapThreshold","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"swapMinAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SetSwapBackSettings","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"TradingEnabled","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":"account","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"Unclog","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UnclogBuyNeeded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UnclogMinAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UnclogSells","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UnclogTrigger","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxSellAmount","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":"_maxWalletToken","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":[{"internalType":"address","name":"","type":"address"}],"name":"amountStaked","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":"wallet","type":"address"}],"name":"availableBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"circulatingSupply","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":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"},{"internalType":"address","name":"_liquidity","type":"address"},{"internalType":"address","name":"_development","type":"address"},{"internalType":"address","name":"_staking","type":"address"},{"internalType":"address","name":"_token","type":"address"}],"name":"setInternalAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_staking","type":"address"}],"name":"setStakingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_token","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_staking","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"_minTokenAmount","type":"uint256"}],"name":"setSwapbackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"},{"internalType":"uint256","name":"trigger","type":"uint256"},{"internalType":"uint256","name":"minAmount","type":"uint256"}],"name":"setUnclog","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a6200052c565b6200002290630a21fe8062000544565b600155612710600154609662000039919062000544565b6200004591906200055e565b60025561271060015460966200005c919062000544565b6200006891906200055e565b60035561271060015460966200007f919062000544565b6200008b91906200055e565b6004556000600a81905560c8600b819055600c55600d819055600e556103e8600f556107d0601055610fa06011556127106012556013805462ffffff191662010001179055600360158190556016805460ff19169055601955600154620186a090620000fa906101f462000544565b6200010691906200055e565b601a55620186a0600154600a6200011e919062000544565b6200012a91906200055e565b601b556001601c55602080546001600160a01b0319908116731f50c1a4bd966bfa201710b96817c941ec66adad90811790925560218054821683179055602280548216831790556023805482169092179091556024805490911661dead1790553480156200019757600080fd5b50600080546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa158015620001ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000225919062000581565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000273573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000299919062000581565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002e7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030d919062000581565b600880546001600160a01b038581166001600160a01b031992831617909255600980548484169216919091179055306000908152600760209081526040808320805460ff1990811660019081179092556022548616855282852080548216831790556021548616855282852080548216831790558354909516845281842080548616821790557fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d8054861682179055338085528285208054909616821790955554600583528184208190559051908152939450919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050620005ac565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200046e57816000190482111562000452576200045262000417565b808516156200046057918102915b93841c939080029062000432565b509250929050565b600082620004875750600162000526565b81620004965750600062000526565b8160018114620004af5760028114620004ba57620004da565b600191505062000526565b60ff841115620004ce57620004ce62000417565b50506001821b62000526565b5060208310610133831016604e8410600b8410161715620004ff575081810a62000526565b6200050b83836200042d565b806000190482111562000522576200052262000417565b0290505b92915050565b60006200053d60ff84168362000476565b9392505050565b808202811582820484141762000526576200052662000417565b6000826200057c57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200059457600080fd5b81516001600160a01b03811681146200053d57600080fd5b61263880620005bc6000396000f3fe6080604052600436106102135760003560e01c8063817b1cd211610118578063b6b55f25116100a0578063e94dd17c1161006f578063e94dd17c14610659578063ef40a67014610679578063f2fde38b146106a6578063f4e0d9ac146106c6578063fa6271ce146106e657600080fd5b8063b6b55f25146105b9578063dd62ed3e146105d9578063e2d6f94c1461061f578063e6ec18ef1461063f57600080fd5b806395d89b41116100e757806395d89b411461050d5780639fb05d3714610539578063a0821be314610559578063a8aa1b3114610579578063a9059cbb1461059957600080fd5b8063817b1cd214610490578063893d20e8146104a65780638cd4426d146104d85780639358928b146104f857600080fd5b8063313ce5671161019b57806366f4ae7a1161016a57806366f4ae7a146103f857806370a082311461041857806378109e541461044e5780637cca52fe146104645780637d1db4a51461047a57600080fd5b8063313ce5671461038657806334c5d2ce146103a257806348ff2b8b146103c25780634fd1fa69146103e257600080fd5b806318160ddd116101e257806318160ddd146102eb57806323b872dd14610300578063293230b8146103205780632e1a7d4d146103375780632f54bf6e1461035757600080fd5b806306fdde031461021f578063095ea7b3146102775780630eaa27da146102a7578063111aaeb3146102cb57600080fd5b3661021a57005b600080fd5b34801561022b57600080fd5b5060408051808201909152601c81527f4861727279506f747465725472756d7054656b617368693639496e750000000060208201525b60405161026e91906121b1565b60405180910390f35b34801561028357600080fd5b50610297610292366004612217565b6106fc565b604051901515815260200161026e565b3480156102b357600080fd5b506102bd60145481565b60405190815260200161026e565b3480156102d757600080fd5b506013546102979062010000900460ff1681565b3480156102f757600080fd5b506001546102bd565b34801561030c57600080fd5b5061029761031b366004612243565b610713565b34801561032c57600080fd5b5061033561077d565b005b34801561034357600080fd5b50610335610352366004612284565b6107ee565b34801561036357600080fd5b5061029761037236600461229d565b6000546001600160a01b0391821691161490565b34801561039257600080fd5b506040516009815260200161026e565b3480156103ae57600080fd5b506103356103bd3660046122ba565b610934565b3480156103ce57600080fd5b506103356103dd3660046122f4565b610a9e565b3480156103ee57600080fd5b506102bd601c5481565b34801561040457600080fd5b5061033561041336600461232d565b610b1d565b34801561042457600080fd5b506102bd61043336600461229d565b6001600160a01b031660009081526005602052604090205490565b34801561045a57600080fd5b506102bd60045481565b34801561047057600080fd5b506102bd60035481565b34801561048657600080fd5b506102bd60025481565b34801561049c57600080fd5b506102bd601e5481565b3480156104b257600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161026e565b3480156104e457600080fd5b506103356104f3366004612217565b610b6a565b34801561050457600080fd5b506102bd610be6565b34801561051957600080fd5b50604080518082019091526003815262584c4d60e81b6020820152610261565b34801561054557600080fd5b50610335610554366004612362565b610c57565b34801561056557600080fd5b506102bd61057436600461229d565b610d65565b34801561058557600080fd5b506009546104c0906001600160a01b031681565b3480156105a557600080fd5b506102976105b4366004612217565b610d92565b3480156105c557600080fd5b506103356105d4366004612284565b610d9f565b3480156105e557600080fd5b506102bd6105f43660046123d3565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561062b57600080fd5b5061033561063a366004612401565b610efc565b34801561064b57600080fd5b506016546102979060ff1681565b34801561066557600080fd5b506103356106743660046122ba565b611035565b34801561068557600080fd5b506102bd61069436600461229d565b601d6020526000908152604090205481565b3480156106b257600080fd5b506103356106c136600461229d565b6110d4565b3480156106d257600080fd5b506103356106e136600461229d565b611152565b3480156106f257600080fd5b506102bd60155481565b60006107093384846111de565b5060015b92915050565b6000610720848484611302565b610772843361076d856040518060600160405280602881526020016125db602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190611433565b6111de565b5060015b9392505050565b6000546001600160a01b031633146107b05760405162461bcd60e51b81526004016107a790612456565b60405180910390fd5b6013805461ff001916610100179055604051429033907f340c369ced7c3a65b67543c4f1e839173c42d01b38931b0c01b18c89a1d1ba4b90600090a3565b336000908152601d60205260409020548111156108635760405162461bcd60e51b815260206004820152602d60248201527f45524332303a2043616e6e6f7420756e7374616b65206d6f7265207468616e2060448201526c185b5bdd5b9d081cdd185ad959609a1b60648201526084016107a7565b601f5460405163d8a9bf2960e01b8152336004820152602481018390526001600160a01b039091169063d8a9bf2990604401600060405180830381600087803b1580156108af57600080fd5b505af11580156108c3573d6000803e3d6000fd5b5050336000908152601d60205260409020546108e2925090508261145f565b336000908152601d6020526040902055601e546108ff908261145f565b601e556040514290829033907ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b56890600090a450565b6000546001600160a01b0316331461095e5760405162461bcd60e51b81526004016107a790612456565b600061097f6127106109798661097360015490565b9061146b565b90611477565b905060006109966127106109798661097360015490565b905060006109ad6127106109798661097360015490565b905060006109c56103e8610979600561097360015490565b90508084101580156109d75750808310155b80156109e35750808210155b610a4d5760405162461bcd60e51b815260206004820152603560248201527f45524332303a206d61782054587320616e64206d61782057616c6c65742063616044820152746e6e6f74206265206c657373207468616e202e352560581b60648201526084016107a7565b6002849055600383905560048290556040514281528390839086907fbd5acdd9cd7346c04cee822893f228a65a948bc41357408255ab8f36c446349f9060200160405180910390a450505050505050565b6000546001600160a01b03163314610ac85760405162461bcd60e51b81526004016107a790612456565b6001600160a01b038216600081815260076020526040808220805460ff19168515159081179091559051429391927ff61420caae4661cdd9554a2c8b6c89fc9f30f94abccb1da76abb2ec99783821191a45050565b6000546001600160a01b03163314610b475760405162461bcd60e51b81526004016107a790612456565b60138054931515620100000262ff00001990941693909317909255601555601c55565b60205460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610bbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be19190612476565b505050565b60056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461dead60009081527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba546001549192610c52929091610c4c919061145f565b9061145f565b905090565b6000546001600160a01b03163314610c815760405162461bcd60e51b81526004016107a790612456565b602180546001600160a01b03199081166001600160a01b038881169182179093556022805483168885169081179091556020805484168886169081178255602380548616898816908117909155602480549096169688169687179095556000848152600783526040808220805460ff199081166001908117909255868452828420805482168317905597835281832080548916821790559782529081902080549096169096179094559351428152929390927f358f3926f41536f5fa6926b5b6945502e5fdfb85b1876c473d06606ed0fae9ca910160405180910390a45050505050565b6001600160a01b0381166000908152601d6020908152604080832054600590925282205461070d9161145f565b6000610709338484611302565b336000908152601d6020908152604080832054600590925290912054610dc49161145f565b811115610e2b5760405162461bcd60e51b815260206004820152602f60248201527f45524332303a2043616e6e6f74207374616b65206d6f7265207468616e20617660448201526e61696c61626c652062616c616e636560881b60648201526084016107a7565b601f5460405163773a0f0960e01b8152336004820152602481018390526001600160a01b039091169063773a0f0990604401600060405180830381600087803b158015610e7757600080fd5b505af1158015610e8b573d6000803e3d6000fd5b5050336000908152601d6020526040902054610eaa9250905082611483565b336000908152601d6020526040902055601e54610ec79082611483565b601e556040514290829033907f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1590600090a450565b6000546001600160a01b03163314610f265760405162461bcd60e51b81526004016107a790612456565b600a889055600b879055600e869055600d849055600c859055600f83905560108290556011819055601254610f5c906005611477565b600f5411158015610f7c5750601254610f76906005611477565b60105411155b8015610f975750601254610f91906005611477565b60115411155b610fef5760405162461bcd60e51b815260206004820152602360248201527f45524332303a20666565732063616e6e6f74206265206d6f7265207468616e2060448201526232302560e81b60648201526084016107a7565b4282847fdddb43af0ad29e5d9d3cb393fd94e8f11ac2c069da19545bac6ee6baf3ddc9898460405161102391815260200190565b60405180910390a45050505050505050565b6000546001600160a01b0316331461105f5760405162461bcd60e51b81526004016107a790612456565b601983905560015461107a90620186a090610979908561146b565b601a5560015461109390620186a090610979908461146b565b601b556040514281528190839085907f3af591b474e55c209cfbc3da369b6762366e3015997314ac10bd5c3198d26fb39060200160405180910390a4505050565b6000546001600160a01b031633146110fe5760405162461bcd60e51b81526004016107a790612456565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6000546001600160a01b0316331461117c5760405162461bcd60e51b81526004016107a790612456565b601f80546001600160a01b0319166001600160a01b038316908117909155600081815260076020526040808220805460ff19166001179055514292917f23481943b6ef3dff645af874fbb24781bf224a02312f9cb308880e03e0a9ddee91a350565b6001600160a01b0383166112405760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107a7565b6001600160a01b0382166112a15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107a7565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b61130d83838361148f565b61131783836115ce565b611322838383611670565b61132d838383611864565b61133883838361195e565b611343838383611b03565b61134d8383611b69565b6001600160a01b038316600090815260056020526040902054611370908261145f565b6001600160a01b0384166000908152600560205260408120919091556113968484611b8c565b6113a057816113ab565b6113ab848484611bd2565b6001600160a01b0384166000908152600560205260409020549091506113d19082611483565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114259085815260200190565b60405180910390a350505050565b600081848411156114575760405162461bcd60e51b81526004016107a791906121b1565b505050900390565b600061077682846124a9565b600061077682846124bc565b600061077682846124d3565b600061077682846124f5565b6001600160a01b0383166114f35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107a7565b6001600160a01b0382166115555760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107a7565b6001600160a01b038316600090815260056020526040902054811115610be15760405162461bcd60e51b815260206004820152602860248201527f45524332303a2062656c6f7720617661696c61626c652062616c616e636520746044820152671a1c995cda1bdb1960c21b60648201526084016107a7565b6001600160a01b03821660009081526007602052604090205460ff1615801561161057506001600160a01b03811660009081526007602052604090205460ff16155b1561166c57601354610100900460ff1661166c5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a2054726164696e67206973206e6f7420616c6c6f77656400000060448201526064016107a7565b5050565b6001600160a01b0383166000908152601d602052604090205415611729576001600160a01b038316600090815260056020908152604080832054601d909252909120546116be908390611483565b11156117295760405162461bcd60e51b815260206004820152603460248201527f45524332303a2065786365656473206d6178696d756d20616c6c6f776564206e60448201527337ba1031bab93932b73a363c9039ba30b5b2b21760611b60648201526084016107a7565b6009546001600160a01b038481169116146117d1576003548111158061176757506001600160a01b03831660009081526007602052604090205460ff165b8061178a57506001600160a01b03821660009081526007602052604090205460ff165b6117d15760405162461bcd60e51b8152602060048201526018602482015277115490cc8c0e881d1e081b1a5b5a5d08195e18d95959195960421b60448201526064016107a7565b600254811115806117fa57506001600160a01b03831660009081526007602052604090205460ff165b8061181d57506001600160a01b03821660009081526007602052604090205460ff165b610be15760405162461bcd60e51b8152602060048201526018602482015277115490cc8c0e881d1e081b1a5b5a5d08195e18d95959195960421b60448201526064016107a7565b6001600160a01b03831660009081526007602052604090205460ff161580156118a657506001600160a01b03821660009081526007602052604090205460ff16155b80156118c057506009546001600160a01b03838116911614155b80156118d757506001600160a01b03821661dead14155b15610be1576004546001600160a01b0383166000908152600560205260409020546119029083611483565b1115610be15760405162461bcd60e51b815260206004820152602560248201527f45524332303a2065786365656473206d6178696d756d2077616c6c657420616d60448201526437bab73a1760d91b60648201526084016107a7565b60135462010000900460ff168015611979575060185460ff16155b15610be1576009546001600160a01b0383811691161480156119b457506001600160a01b03831660009081526007602052604090205460ff16155b156119cb576014546119c7906001611483565b6014555b6009546001600160a01b038481169116148015611a0157506001600160a01b03821660009081526007602052604090205460ff16155b8015611a0f5750601c548110155b15611a1a5760006014555b6015546014541115611a34576016805460ff191660011790555b60165460ff168015611a5f57506001600160a01b03821660009081526007602052604090205460ff16155b8015611a8457506001600160a01b03831660009081526007602052604090205460ff16155b15610be1576009546001600160a01b03848116911614611ae65760405162461bcd60e51b815260206004820152601f60248201527f45524332303a20556e636c6f672070757263686173652072657175697265640060448201526064016107a7565b601c548110610be15760006014556016805460ff19169055505050565b6009546001600160a01b038381169116148015611b3957506001600160a01b03831660009081526007602052604090205460ff16155b8015611b475750601b548110155b15610be157600160176000828254611b5f91906124f5565b9091555050505050565b611b738282611cc9565b1561166c57611b83601a54611d68565b60006017555050565b6001600160a01b03821660009081526007602052604081205460ff161580156107765750506001600160a01b031660009081526007602052604090205460ff1615919050565b600080611bdf8585611f61565b1115611cc2576000611c02611bf48686611f61565b601254610973908690611477565b30600090815260056020526040902054909150611c1f9082611483565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c709085815260200190565b60405180910390a3600e5415611cb057602454600e54601254611cb09230926001600160a01b0390911691611cab9190610973908990611477565b611302565b611cba838261145f565b915050610776565b5092915050565b601a5430600090815260056020526040812054601854919211159060ff16158015611cf6575060135460ff165b8015611d095750601354610100900460ff165b8015611d2e57506001600160a01b03841660009081526007602052604090205460ff16155b8015611d4757506009546001600160a01b038481169116145b8015611d57575060195460175410155b8015611d605750805b949350505050565b6001601860006101000a81548160ff0219169083151502179055506000611db86002610973600d54611db2600c54611db2600b54611db26001600a5461148390919063ffffffff16565b90611483565b90506000611dd582610979600a548661146b90919063ffffffff16565b90506000611de3848361145f565b905047611def82611fac565b6000611dfb478361145f565b90506000611e1e611e17600a548861145f90919063ffffffff16565b8390611477565b90506000611e37600a548361146b90919063ffffffff16565b90508015611e5857602254611e5890879083906001600160a01b0316612106565b600b54600090611e6d9061097385600261146b565b90508015611eb1576021546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611eaf573d6000803e3d6000fd5b505b600d54600090611ec69061097386600261146b565b90508015611f0a576023546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611f08573d6000803e3d6000fd5b505b4715611f4b576020546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611f49573d6000803e3d6000fd5b505b50506018805460ff191690555050505050505050565b6009546000906001600160a01b0390811690831603611f83575060105461070d565b6009546001600160a01b0390811690841603611fa25750600f5461070d565b5060115492915050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611fe157611fe1612508565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561203a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061205e919061251e565b8160018151811061207157612071612508565b6001600160a01b03928316602091820292909201015260085461209791309116846111de565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac947906120d090859060009086903090429060040161253b565b600060405180830381600087803b1580156120ea57600080fd5b505af11580156120fe573d6000803e3d6000fd5b505050505050565b60085461211e9030906001600160a01b0316856111de565b60085460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0383811660848301524260a48301529091169063f305d71990849060c40160606040518083038185885af115801561218c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906120fe91906125ac565b600060208083528351808285015260005b818110156121de578581018301518582016040015282016121c2565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461221457600080fd5b50565b6000806040838503121561222a57600080fd5b8235612235816121ff565b946020939093013593505050565b60008060006060848603121561225857600080fd5b8335612263816121ff565b92506020840135612273816121ff565b929592945050506040919091013590565b60006020828403121561229657600080fd5b5035919050565b6000602082840312156122af57600080fd5b8135610776816121ff565b6000806000606084860312156122cf57600080fd5b505081359360208301359350604090920135919050565b801515811461221457600080fd5b6000806040838503121561230757600080fd5b8235612312816121ff565b91506020830135612322816122e6565b809150509250929050565b60008060006060848603121561234257600080fd5b833561234d816122e6565b95602085013595506040909401359392505050565b600080600080600060a0868803121561237a57600080fd5b8535612385816121ff565b94506020860135612395816121ff565b935060408601356123a5816121ff565b925060608601356123b5816121ff565b915060808601356123c5816121ff565b809150509295509295909350565b600080604083850312156123e657600080fd5b82356123f1816121ff565b91506020830135612322816121ff565b600080600080600080600080610100898b03121561241e57600080fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b60006020828403121561248857600080fd5b8151610776816122e6565b634e487b7160e01b600052601160045260246000fd5b8181038181111561070d5761070d612493565b808202811582820484141761070d5761070d612493565b6000826124f057634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561070d5761070d612493565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561253057600080fd5b8151610776816121ff565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561258b5784516001600160a01b031683529383019391830191600101612566565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156125c157600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212204eab5fc02d5976cadd5ffa68bb433b6fedcdf615a14cda22cf604ac77c96c7bd64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102135760003560e01c8063817b1cd211610118578063b6b55f25116100a0578063e94dd17c1161006f578063e94dd17c14610659578063ef40a67014610679578063f2fde38b146106a6578063f4e0d9ac146106c6578063fa6271ce146106e657600080fd5b8063b6b55f25146105b9578063dd62ed3e146105d9578063e2d6f94c1461061f578063e6ec18ef1461063f57600080fd5b806395d89b41116100e757806395d89b411461050d5780639fb05d3714610539578063a0821be314610559578063a8aa1b3114610579578063a9059cbb1461059957600080fd5b8063817b1cd214610490578063893d20e8146104a65780638cd4426d146104d85780639358928b146104f857600080fd5b8063313ce5671161019b57806366f4ae7a1161016a57806366f4ae7a146103f857806370a082311461041857806378109e541461044e5780637cca52fe146104645780637d1db4a51461047a57600080fd5b8063313ce5671461038657806334c5d2ce146103a257806348ff2b8b146103c25780634fd1fa69146103e257600080fd5b806318160ddd116101e257806318160ddd146102eb57806323b872dd14610300578063293230b8146103205780632e1a7d4d146103375780632f54bf6e1461035757600080fd5b806306fdde031461021f578063095ea7b3146102775780630eaa27da146102a7578063111aaeb3146102cb57600080fd5b3661021a57005b600080fd5b34801561022b57600080fd5b5060408051808201909152601c81527f4861727279506f747465725472756d7054656b617368693639496e750000000060208201525b60405161026e91906121b1565b60405180910390f35b34801561028357600080fd5b50610297610292366004612217565b6106fc565b604051901515815260200161026e565b3480156102b357600080fd5b506102bd60145481565b60405190815260200161026e565b3480156102d757600080fd5b506013546102979062010000900460ff1681565b3480156102f757600080fd5b506001546102bd565b34801561030c57600080fd5b5061029761031b366004612243565b610713565b34801561032c57600080fd5b5061033561077d565b005b34801561034357600080fd5b50610335610352366004612284565b6107ee565b34801561036357600080fd5b5061029761037236600461229d565b6000546001600160a01b0391821691161490565b34801561039257600080fd5b506040516009815260200161026e565b3480156103ae57600080fd5b506103356103bd3660046122ba565b610934565b3480156103ce57600080fd5b506103356103dd3660046122f4565b610a9e565b3480156103ee57600080fd5b506102bd601c5481565b34801561040457600080fd5b5061033561041336600461232d565b610b1d565b34801561042457600080fd5b506102bd61043336600461229d565b6001600160a01b031660009081526005602052604090205490565b34801561045a57600080fd5b506102bd60045481565b34801561047057600080fd5b506102bd60035481565b34801561048657600080fd5b506102bd60025481565b34801561049c57600080fd5b506102bd601e5481565b3480156104b257600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161026e565b3480156104e457600080fd5b506103356104f3366004612217565b610b6a565b34801561050457600080fd5b506102bd610be6565b34801561051957600080fd5b50604080518082019091526003815262584c4d60e81b6020820152610261565b34801561054557600080fd5b50610335610554366004612362565b610c57565b34801561056557600080fd5b506102bd61057436600461229d565b610d65565b34801561058557600080fd5b506009546104c0906001600160a01b031681565b3480156105a557600080fd5b506102976105b4366004612217565b610d92565b3480156105c557600080fd5b506103356105d4366004612284565b610d9f565b3480156105e557600080fd5b506102bd6105f43660046123d3565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561062b57600080fd5b5061033561063a366004612401565b610efc565b34801561064b57600080fd5b506016546102979060ff1681565b34801561066557600080fd5b506103356106743660046122ba565b611035565b34801561068557600080fd5b506102bd61069436600461229d565b601d6020526000908152604090205481565b3480156106b257600080fd5b506103356106c136600461229d565b6110d4565b3480156106d257600080fd5b506103356106e136600461229d565b611152565b3480156106f257600080fd5b506102bd60155481565b60006107093384846111de565b5060015b92915050565b6000610720848484611302565b610772843361076d856040518060600160405280602881526020016125db602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190611433565b6111de565b5060015b9392505050565b6000546001600160a01b031633146107b05760405162461bcd60e51b81526004016107a790612456565b60405180910390fd5b6013805461ff001916610100179055604051429033907f340c369ced7c3a65b67543c4f1e839173c42d01b38931b0c01b18c89a1d1ba4b90600090a3565b336000908152601d60205260409020548111156108635760405162461bcd60e51b815260206004820152602d60248201527f45524332303a2043616e6e6f7420756e7374616b65206d6f7265207468616e2060448201526c185b5bdd5b9d081cdd185ad959609a1b60648201526084016107a7565b601f5460405163d8a9bf2960e01b8152336004820152602481018390526001600160a01b039091169063d8a9bf2990604401600060405180830381600087803b1580156108af57600080fd5b505af11580156108c3573d6000803e3d6000fd5b5050336000908152601d60205260409020546108e2925090508261145f565b336000908152601d6020526040902055601e546108ff908261145f565b601e556040514290829033907ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b56890600090a450565b6000546001600160a01b0316331461095e5760405162461bcd60e51b81526004016107a790612456565b600061097f6127106109798661097360015490565b9061146b565b90611477565b905060006109966127106109798661097360015490565b905060006109ad6127106109798661097360015490565b905060006109c56103e8610979600561097360015490565b90508084101580156109d75750808310155b80156109e35750808210155b610a4d5760405162461bcd60e51b815260206004820152603560248201527f45524332303a206d61782054587320616e64206d61782057616c6c65742063616044820152746e6e6f74206265206c657373207468616e202e352560581b60648201526084016107a7565b6002849055600383905560048290556040514281528390839086907fbd5acdd9cd7346c04cee822893f228a65a948bc41357408255ab8f36c446349f9060200160405180910390a450505050505050565b6000546001600160a01b03163314610ac85760405162461bcd60e51b81526004016107a790612456565b6001600160a01b038216600081815260076020526040808220805460ff19168515159081179091559051429391927ff61420caae4661cdd9554a2c8b6c89fc9f30f94abccb1da76abb2ec99783821191a45050565b6000546001600160a01b03163314610b475760405162461bcd60e51b81526004016107a790612456565b60138054931515620100000262ff00001990941693909317909255601555601c55565b60205460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610bbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be19190612476565b505050565b60056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461dead60009081527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba546001549192610c52929091610c4c919061145f565b9061145f565b905090565b6000546001600160a01b03163314610c815760405162461bcd60e51b81526004016107a790612456565b602180546001600160a01b03199081166001600160a01b038881169182179093556022805483168885169081179091556020805484168886169081178255602380548616898816908117909155602480549096169688169687179095556000848152600783526040808220805460ff199081166001908117909255868452828420805482168317905597835281832080548916821790559782529081902080549096169096179094559351428152929390927f358f3926f41536f5fa6926b5b6945502e5fdfb85b1876c473d06606ed0fae9ca910160405180910390a45050505050565b6001600160a01b0381166000908152601d6020908152604080832054600590925282205461070d9161145f565b6000610709338484611302565b336000908152601d6020908152604080832054600590925290912054610dc49161145f565b811115610e2b5760405162461bcd60e51b815260206004820152602f60248201527f45524332303a2043616e6e6f74207374616b65206d6f7265207468616e20617660448201526e61696c61626c652062616c616e636560881b60648201526084016107a7565b601f5460405163773a0f0960e01b8152336004820152602481018390526001600160a01b039091169063773a0f0990604401600060405180830381600087803b158015610e7757600080fd5b505af1158015610e8b573d6000803e3d6000fd5b5050336000908152601d6020526040902054610eaa9250905082611483565b336000908152601d6020526040902055601e54610ec79082611483565b601e556040514290829033907f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1590600090a450565b6000546001600160a01b03163314610f265760405162461bcd60e51b81526004016107a790612456565b600a889055600b879055600e869055600d849055600c859055600f83905560108290556011819055601254610f5c906005611477565b600f5411158015610f7c5750601254610f76906005611477565b60105411155b8015610f975750601254610f91906005611477565b60115411155b610fef5760405162461bcd60e51b815260206004820152602360248201527f45524332303a20666565732063616e6e6f74206265206d6f7265207468616e2060448201526232302560e81b60648201526084016107a7565b4282847fdddb43af0ad29e5d9d3cb393fd94e8f11ac2c069da19545bac6ee6baf3ddc9898460405161102391815260200190565b60405180910390a45050505050505050565b6000546001600160a01b0316331461105f5760405162461bcd60e51b81526004016107a790612456565b601983905560015461107a90620186a090610979908561146b565b601a5560015461109390620186a090610979908461146b565b601b556040514281528190839085907f3af591b474e55c209cfbc3da369b6762366e3015997314ac10bd5c3198d26fb39060200160405180910390a4505050565b6000546001600160a01b031633146110fe5760405162461bcd60e51b81526004016107a790612456565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6000546001600160a01b0316331461117c5760405162461bcd60e51b81526004016107a790612456565b601f80546001600160a01b0319166001600160a01b038316908117909155600081815260076020526040808220805460ff19166001179055514292917f23481943b6ef3dff645af874fbb24781bf224a02312f9cb308880e03e0a9ddee91a350565b6001600160a01b0383166112405760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107a7565b6001600160a01b0382166112a15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107a7565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b61130d83838361148f565b61131783836115ce565b611322838383611670565b61132d838383611864565b61133883838361195e565b611343838383611b03565b61134d8383611b69565b6001600160a01b038316600090815260056020526040902054611370908261145f565b6001600160a01b0384166000908152600560205260408120919091556113968484611b8c565b6113a057816113ab565b6113ab848484611bd2565b6001600160a01b0384166000908152600560205260409020549091506113d19082611483565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114259085815260200190565b60405180910390a350505050565b600081848411156114575760405162461bcd60e51b81526004016107a791906121b1565b505050900390565b600061077682846124a9565b600061077682846124bc565b600061077682846124d3565b600061077682846124f5565b6001600160a01b0383166114f35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107a7565b6001600160a01b0382166115555760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107a7565b6001600160a01b038316600090815260056020526040902054811115610be15760405162461bcd60e51b815260206004820152602860248201527f45524332303a2062656c6f7720617661696c61626c652062616c616e636520746044820152671a1c995cda1bdb1960c21b60648201526084016107a7565b6001600160a01b03821660009081526007602052604090205460ff1615801561161057506001600160a01b03811660009081526007602052604090205460ff16155b1561166c57601354610100900460ff1661166c5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a2054726164696e67206973206e6f7420616c6c6f77656400000060448201526064016107a7565b5050565b6001600160a01b0383166000908152601d602052604090205415611729576001600160a01b038316600090815260056020908152604080832054601d909252909120546116be908390611483565b11156117295760405162461bcd60e51b815260206004820152603460248201527f45524332303a2065786365656473206d6178696d756d20616c6c6f776564206e60448201527337ba1031bab93932b73a363c9039ba30b5b2b21760611b60648201526084016107a7565b6009546001600160a01b038481169116146117d1576003548111158061176757506001600160a01b03831660009081526007602052604090205460ff165b8061178a57506001600160a01b03821660009081526007602052604090205460ff165b6117d15760405162461bcd60e51b8152602060048201526018602482015277115490cc8c0e881d1e081b1a5b5a5d08195e18d95959195960421b60448201526064016107a7565b600254811115806117fa57506001600160a01b03831660009081526007602052604090205460ff165b8061181d57506001600160a01b03821660009081526007602052604090205460ff165b610be15760405162461bcd60e51b8152602060048201526018602482015277115490cc8c0e881d1e081b1a5b5a5d08195e18d95959195960421b60448201526064016107a7565b6001600160a01b03831660009081526007602052604090205460ff161580156118a657506001600160a01b03821660009081526007602052604090205460ff16155b80156118c057506009546001600160a01b03838116911614155b80156118d757506001600160a01b03821661dead14155b15610be1576004546001600160a01b0383166000908152600560205260409020546119029083611483565b1115610be15760405162461bcd60e51b815260206004820152602560248201527f45524332303a2065786365656473206d6178696d756d2077616c6c657420616d60448201526437bab73a1760d91b60648201526084016107a7565b60135462010000900460ff168015611979575060185460ff16155b15610be1576009546001600160a01b0383811691161480156119b457506001600160a01b03831660009081526007602052604090205460ff16155b156119cb576014546119c7906001611483565b6014555b6009546001600160a01b038481169116148015611a0157506001600160a01b03821660009081526007602052604090205460ff16155b8015611a0f5750601c548110155b15611a1a5760006014555b6015546014541115611a34576016805460ff191660011790555b60165460ff168015611a5f57506001600160a01b03821660009081526007602052604090205460ff16155b8015611a8457506001600160a01b03831660009081526007602052604090205460ff16155b15610be1576009546001600160a01b03848116911614611ae65760405162461bcd60e51b815260206004820152601f60248201527f45524332303a20556e636c6f672070757263686173652072657175697265640060448201526064016107a7565b601c548110610be15760006014556016805460ff19169055505050565b6009546001600160a01b038381169116148015611b3957506001600160a01b03831660009081526007602052604090205460ff16155b8015611b475750601b548110155b15610be157600160176000828254611b5f91906124f5565b9091555050505050565b611b738282611cc9565b1561166c57611b83601a54611d68565b60006017555050565b6001600160a01b03821660009081526007602052604081205460ff161580156107765750506001600160a01b031660009081526007602052604090205460ff1615919050565b600080611bdf8585611f61565b1115611cc2576000611c02611bf48686611f61565b601254610973908690611477565b30600090815260056020526040902054909150611c1f9082611483565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c709085815260200190565b60405180910390a3600e5415611cb057602454600e54601254611cb09230926001600160a01b0390911691611cab9190610973908990611477565b611302565b611cba838261145f565b915050610776565b5092915050565b601a5430600090815260056020526040812054601854919211159060ff16158015611cf6575060135460ff165b8015611d095750601354610100900460ff165b8015611d2e57506001600160a01b03841660009081526007602052604090205460ff16155b8015611d4757506009546001600160a01b038481169116145b8015611d57575060195460175410155b8015611d605750805b949350505050565b6001601860006101000a81548160ff0219169083151502179055506000611db86002610973600d54611db2600c54611db2600b54611db26001600a5461148390919063ffffffff16565b90611483565b90506000611dd582610979600a548661146b90919063ffffffff16565b90506000611de3848361145f565b905047611def82611fac565b6000611dfb478361145f565b90506000611e1e611e17600a548861145f90919063ffffffff16565b8390611477565b90506000611e37600a548361146b90919063ffffffff16565b90508015611e5857602254611e5890879083906001600160a01b0316612106565b600b54600090611e6d9061097385600261146b565b90508015611eb1576021546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611eaf573d6000803e3d6000fd5b505b600d54600090611ec69061097386600261146b565b90508015611f0a576023546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611f08573d6000803e3d6000fd5b505b4715611f4b576020546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611f49573d6000803e3d6000fd5b505b50506018805460ff191690555050505050505050565b6009546000906001600160a01b0390811690831603611f83575060105461070d565b6009546001600160a01b0390811690841603611fa25750600f5461070d565b5060115492915050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611fe157611fe1612508565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561203a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061205e919061251e565b8160018151811061207157612071612508565b6001600160a01b03928316602091820292909201015260085461209791309116846111de565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac947906120d090859060009086903090429060040161253b565b600060405180830381600087803b1580156120ea57600080fd5b505af11580156120fe573d6000803e3d6000fd5b505050505050565b60085461211e9030906001600160a01b0316856111de565b60085460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0383811660848301524260a48301529091169063f305d71990849060c40160606040518083038185885af115801561218c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906120fe91906125ac565b600060208083528351808285015260005b818110156121de578581018301518582016040015282016121c2565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461221457600080fd5b50565b6000806040838503121561222a57600080fd5b8235612235816121ff565b946020939093013593505050565b60008060006060848603121561225857600080fd5b8335612263816121ff565b92506020840135612273816121ff565b929592945050506040919091013590565b60006020828403121561229657600080fd5b5035919050565b6000602082840312156122af57600080fd5b8135610776816121ff565b6000806000606084860312156122cf57600080fd5b505081359360208301359350604090920135919050565b801515811461221457600080fd5b6000806040838503121561230757600080fd5b8235612312816121ff565b91506020830135612322816122e6565b809150509250929050565b60008060006060848603121561234257600080fd5b833561234d816122e6565b95602085013595506040909401359392505050565b600080600080600060a0868803121561237a57600080fd5b8535612385816121ff565b94506020860135612395816121ff565b935060408601356123a5816121ff565b925060608601356123b5816121ff565b915060808601356123c5816121ff565b809150509295509295909350565b600080604083850312156123e657600080fd5b82356123f1816121ff565b91506020830135612322816121ff565b600080600080600080600080610100898b03121561241e57600080fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b60006020828403121561248857600080fd5b8151610776816122e6565b634e487b7160e01b600052601160045260246000fd5b8181038181111561070d5761070d612493565b808202811582820484141761070d5761070d612493565b6000826124f057634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561070d5761070d612493565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561253057600080fd5b8151610776816121ff565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561258b5784516001600160a01b031683529383019391830191600101612566565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156125c157600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212204eab5fc02d5976cadd5ffa68bb433b6fedcdf615a14cda22cf604ac77c96c7bd64736f6c63430008130033

Deployed Bytecode Sourcemap

4540:16964:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9037:67;;;;;;;;;;-1:-1:-1;9097:5:0;;;;;;;;;;;;;;;;;9037:67;;;;;;;:::i;:::-;;;;;;;;9821:133;;;;;;;;;;-1:-1:-1;9821:133:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;9821:133:0;1023:187:1;5745:26:0;;;;;;;;;;;;;;;;;;;1361:25:1;;;1349:2;1334:18;5745:26:0;1215:177:1;5713:25:0;;;;;;;;;;-1:-1:-1;5713:25:0;;;;;;;;;;;9344:84;;;;;;;;;;-1:-1:-1;9414:12:0;;9344:84;;20849:309;;;;;;;;;;-1:-1:-1;20849:309:0;;;;;:::i;:::-;;:::i;18418:142::-;;;;;;;;;;;;;:::i;:::-;;11774:408;;;;;;;;;;-1:-1:-1;11774:408:0;;;;;:::i;:::-;;:::i;3132:87::-;;;;;;;;;;-1:-1:-1;3132:87:0;;;;;:::i;:::-;3187:4;3212:5;-1:-1:-1;;;;;3201:16:0;;;3212:5;;3201:16;;3132:87;9187:67;;;;;;;;;;-1:-1:-1;9187:67:0;;4780:1;2437:36:1;;2425:2;2410:18;9187:67:0;2295:184:1;13045:671:0;;;;;;;;;;-1:-1:-1;13045:671:0;;;;;:::i;:::-;;:::i;19117:192::-;;;;;;;;;;-1:-1:-1;19117:192:0;;;;;:::i;:::-;;:::i;6096:34::-;;;;;;;;;;;;;;;;14584:177;;;;;;;;;;-1:-1:-1;14584:177:0;;;;;:::i;:::-;;:::i;9434:103::-;;;;;;;;;;-1:-1:-1;9434:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;9517:18:0;9500:7;9517:18;;;:9;:18;;;;;;;9434:103;4991:63;;;;;;;;;;;;;;;;4922:62;;;;;;;;;;;;;;;;4855:60;;;;;;;;;;;;;;;;6257:26;;;;;;;;;;;;;;;;9260:78;;;;;;;;;;-1:-1:-1;9312:7:0;9330:5;-1:-1:-1;;;;;9330:5:0;9260:78;;;-1:-1:-1;;;;;3861:32:1;;;3843:51;;3831:2;3816:18;9260:78:0;3697:203:1;19317:140:0;;;;;;;;;;-1:-1:-1;19317:140:0;;;;;:::i;:::-;;:::i;10091:138::-;;;;;;;;;;;;;:::i;9110:71::-;;;;;;;;;;-1:-1:-1;9172:7:0;;;;;;;;;;;;-1:-1:-1;;;9172:7:0;;;;9110:71;;18568:541;;;;;;;;;;-1:-1:-1;18568:541:0;;;;;:::i;:::-;;:::i;9960:125::-;;;;;;;;;;-1:-1:-1;9960:125:0;;;;;:::i;:::-;;:::i;5254:19::-;;;;;;;;;;-1:-1:-1;5254:19:0;;;;-1:-1:-1;;;;;5254:19:0;;;9543:139;;;;;;;;;;-1:-1:-1;9543:139:0;;;;;:::i;:::-;;:::i;11332:434::-;;;;;;;;;;-1:-1:-1;11332:434:0;;;;;:::i;:::-;;:::i;9688:127::-;;;;;;;;;;-1:-1:-1;9688:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;9786:18:0;;;9769:7;9786:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;9688:127;12415:622;;;;;;;;;;-1:-1:-1;12415:622:0;;;;;:::i;:::-;;:::i;5817:35::-;;;;;;;;;;-1:-1:-1;5817:35:0;;;;;;;;19465:415;;;;;;;;;;-1:-1:-1;19465:415:0;;;;;:::i;:::-;;:::i;6203:47::-;;;;;;;;;;-1:-1:-1;6203:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;3225:111;;;;;;;;;;-1:-1:-1;3225:111:0;;;;;:::i;:::-;;:::i;12190:217::-;;;;;;;;;;-1:-1:-1;12190:217:0;;;;;:::i;:::-;;:::i;5778:32::-;;;;;;;;;;;;;;;;9821:133;9896:4;9903:37;9912:10;9924:7;9933:6;9903:8;:37::i;:::-;-1:-1:-1;9948:4:0;9821:133;;;;;:::o;20849:309::-;20947:4;20964:36;20974:6;20982:9;20993:6;20964:9;:36::i;:::-;21011:117;21020:6;21028:10;21040:87;21076:6;21040:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21040:19:0;;;;;;:11;:19;;;;;;;;21060:10;21040:31;;;;;;;;;:87;:35;:87::i;:::-;21011:8;:117::i;:::-;-1:-1:-1;21146:4:0;20849:309;;;;;;:::o;18418:142::-;3187:4;3212:5;-1:-1:-1;;;;;3212:5:0;3099:10;3201:16;3083:38;;;;-1:-1:-1;;;3083:38:0;;;;;;;:::i;:::-;;;;;;;;;18472:14:::1;:21:::0;;-1:-1:-1;;18472:21:0::1;;;::::0;;18509:43:::1;::::0;18536:15:::1;::::0;18524:10:::1;::::0;18509:43:::1;::::0;18472:21;;18509:43:::1;18418:142::o:0;11774:408::-;11868:10;11855:24;;;;:12;:24;;;;;;11845:34;;;11837:92;;;;-1:-1:-1;;;11837:92:0;;6578:2:1;11837:92:0;;;6560:21:1;6617:2;6597:18;;;6590:30;6656:34;6636:18;;;6629:62;-1:-1:-1;;;6707:18:1;;;6700:43;6760:19;;11837:92:0;6376:409:1;11837:92:0;11940:15;;:51;;-1:-1:-1;;;11940:51:0;;11972:10;11940:51;;;6964::1;7031:18;;;7024:34;;;-1:-1:-1;;;;;11940:15:0;;;;:31;;6937:18:1;;11940:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12042:10:0;12029:24;;;;:12;:24;;;;;;:36;;-1:-1:-1;12029:24:0;-1:-1:-1;12058:6:0;12029:28;:36::i;:::-;12015:10;12002:24;;;;:12;:24;;;;;:63;12090:11;;:23;;12106:6;12090:15;:23::i;:::-;12076:11;:37;12129:45;;12158:15;;12150:6;;12138:10;;12129:45;;;;;11774:408;:::o;13045:671::-;3187:4;3212:5;-1:-1:-1;;;;;3212:5:0;3099:10;3201:16;3083:38;;;;-1:-1:-1;;;3083:38:0;;;;;;;:::i;:::-;13145:13:::1;13161:45;13199:5;13162:23;13180:4;13162:13;9414:12:::0;;;9344:84;13162:13:::1;:17:::0;::::1;:23::i;:::-;13161:29:::0;::::1;:45::i;:::-;13145:61;;13208:19;13230:47;13270:5;13231:25;13249:6;13231:13;9414:12:::0;;;9344:84;13230:47:::1;13208:69;;13288:17;13308:48;13349:5;13309:26;13327:7;13309:13;9414:12:::0;;;9344:84;13308:48:::1;13288:68;;13358:13;13374:30;13399:4;13374:20;13392:1;13374:13;9414:12:::0;;;9344:84;13374:30:::1;13358:46;;13432:5;13423;:14;;:38;;;;;13456:5;13441:11;:20;;13423:38;:60;;;;;13478:5;13465:9;:18;;13423:60;13415:126;;;::::0;-1:-1:-1;;;13415:126:0;;7271:2:1;13415:126:0::1;::::0;::::1;7253:21:1::0;7310:2;7290:18;;;7283:30;7349:34;7329:18;;;7322:62;-1:-1:-1;;;7400:18:1;;;7393:51;7461:19;;13415:126:0::1;7069:417:1::0;13415:126:0::1;13552:12;:20:::0;;;13574:14:::1;:28:::0;;;13604:15:::1;:27:::0;;;13647:61:::1;::::0;13692:15:::1;1361:25:1::0;;13574:28:0;;13604:27;;13552:20;;13647:61:::1;::::0;1349:2:1;1334:18;13647:61:0::1;;;;;;;13134:582;;;;13045:671:::0;;;:::o;19117:192::-;3187:4;3212:5;-1:-1:-1;;;;;3212:5:0;3099:10;3201:16;3083:38;;;;-1:-1:-1;;;3083:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19201:21:0;::::1;;::::0;;;:11:::1;:21;::::0;;;;;:32;;-1:-1:-1;;19201:32:0::1;::::0;::::1;;::::0;;::::1;::::0;;;19249:52;;19285:15:::1;::::0;19201:32;;19249:52:::1;::::0;::::1;19117:192:::0;;:::o;14584:177::-;3187:4;3212:5;-1:-1:-1;;;;;3212:5:0;3099:10;3201:16;3083:38;;;;-1:-1:-1;;;3083:38:0;;;;;;;:::i;:::-;14683:6:::1;:16:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;14683:16:0;;::::1;::::0;;;::::1;::::0;;;14701:13:::1;:23:::0;14726:15:::1;:27:::0;14584:177::o;19317:140::-;19419:20;;19393:56;;-1:-1:-1;;;19393:56:0;;-1:-1:-1;;;;;19419:20:0;;;19393:56;;;6964:51:1;7031:18;;;7024:34;;;19393:25:0;;;;;;6937:18:1;;19393:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19317:140;;:::o;10091:138::-;9517:9;:18;;;;6371:42;10150:7;9517:18;;;;;10167:12;;10150:7;;10167:60;;9517:18;;10167:33;;:12;:16;:33::i;:::-;:37;;:60::i;:::-;10160:67;;10091:138;:::o;18568:541::-;3187:4;3212:5;-1:-1:-1;;;;;3212:5:0;3099:10;3201:16;3083:38;;;;-1:-1:-1;;;3083:38:0;;;;;;;:::i;:::-;18724:18:::1;:31:::0;;-1:-1:-1;;;;;;18724:31:0;;::::1;-1:-1:-1::0;;;;;18724:31:0;;::::1;::::0;;::::1;::::0;;;18757:18:::1;:31:::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;18790:20:::1;:35:::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;18827:16:::1;:27:::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;18856:14:::1;:23:::0;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;18890:23:0;;;:11:::1;:23:::0;;;;;;:30;;-1:-1:-1;;18890:30:0;;::::1;-1:-1:-1::0;18890:30:0;;::::1;::::0;;;18922:23;;;;;;:30;;;::::1;::::0;::::1;::::0;;18954:21;;;;;;:28;;;::::1;::::0;::::1;::::0;;18984:19;;;;;;;:26;;;;::::1;::::0;;::::1;::::0;;;19026:75;;19085:15:::1;1361:25:1::0;;18790:35:0;;18757:31;;19026:75:::1;::::0;1334:18:1;19026:75:0::1;;;;;;;18568:541:::0;;;;;:::o;9960:125::-;-1:-1:-1;;;;;10062:20:0;;10023:7;10062:20;;;:12;:20;;;;;;;;;10040:9;:17;;;;;;:43;;:21;:43::i;9543:139::-;9621:4;9628:40;9638:10;9650:9;9661:6;9628:9;:40::i;11332:434::-;11451:10;11438:24;;;;:12;:24;;;;;;;;;11412:9;:21;;;;;;;:51;;:25;:51::i;:::-;11402:6;:61;;11394:121;;;;-1:-1:-1;;;11394:121:0;;7943:2:1;11394:121:0;;;7925:21:1;7982:2;7962:18;;;7955:30;8021:34;8001:18;;;7994:62;-1:-1:-1;;;8072:18:1;;;8065:45;8127:19;;11394:121:0;7741:411:1;11394:121:0;11526:15;;:50;;-1:-1:-1;;;11526:50:0;;11557:10;11526:50;;;6964:51:1;7031:18;;;7024:34;;;-1:-1:-1;;;;;11526:15:0;;;;:30;;6937:18:1;;11526:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11627:10:0;11614:24;;;;:12;:24;;;;;;:36;;-1:-1:-1;11614:24:0;-1:-1:-1;11643:6:0;11614:28;:36::i;:::-;11600:10;11587:24;;;;:12;:24;;;;;:63;11675:11;;:23;;11691:6;11675:15;:23::i;:::-;11661:11;:37;11714:44;;11742:15;;11734:6;;11722:10;;11714:44;;;;;11332:434;:::o;12415:622::-;3187:4;3212:5;-1:-1:-1;;;;;3212:5:0;3099:10;3201:16;3083:38;;;;-1:-1:-1;;;3083:38:0;;;;;;;:::i;:::-;12610:12:::1;:25:::0;;;12637:12:::1;:25:::0;;;12664:8:::1;:17:::0;;;12683:10:::1;:21:::0;;;12715:14:::1;:29:::0;;;12746:8:::1;:17:::0;;;12765:7:::1;:15:::0;;;12782:11:::1;:20:::0;;;12833:11:::1;::::0;:18:::1;::::0;12849:1:::1;12833:15;:18::i;:::-;12821:8;;:30;;:63;;;;-1:-1:-1::0;12866:11:0::1;::::0;:18:::1;::::0;12882:1:::1;12866:15;:18::i;:::-;12855:7;;:29;;12821:63;:100;;;;-1:-1:-1::0;12903:11:0::1;::::0;:18:::1;::::0;12919:1:::1;12903:15;:18::i;:::-;12888:11;;:33;;12821:100;12813:148;;;::::0;-1:-1:-1;;;12813:148:0;;8359:2:1;12813:148:0::1;::::0;::::1;8341:21:1::0;8398:2;8378:18;;;8371:30;8437:34;8417:18;;;8410:62;-1:-1:-1;;;8488:18:1;;;8481:33;8531:19;;12813:148:0::1;8157:399:1::0;12813:148:0::1;13013:15;12998:5;12990:6;12977:52;13005:6;12977:52;;;;1361:25:1::0;;1349:2;1334:18;;1215:177;12977:52:0::1;;;;;;;;12415:622:::0;;;;;;;;:::o;19465:415::-;3187:4;3212:5;-1:-1:-1;;;;;3212:5:0;3099:10;3201:16;3083:38;;;;-1:-1:-1;;;3083:38:0;;;;;;;:::i;:::-;19594:10:::1;:24:::0;;;19636:12:::1;::::0;:53:::1;::::0;19681:6:::1;::::0;19636:32:::1;::::0;19653:14;19636:16:::1;:32::i;:53::-;19620:13;:69:::0;19718:12:::1;::::0;:54:::1;::::0;19764:6:::1;::::0;19718:33:::1;::::0;19735:15;19718:16:::1;:33::i;:54::-;19701:14;:71:::0;19788:82:::1;::::0;19854:15:::1;1361:25:1::0;;19837:15:0;;19821:14;;19808:11;;19788:82:::1;::::0;1349:2:1;1334:18;19788:82:0::1;;;;;;;19465:415:::0;;;:::o;3225:111::-;3187:4;3212:5;-1:-1:-1;;;;;3212:5:0;3099:10;3201:16;3083:38;;;;-1:-1:-1;;;3083:38:0;;;;;;;:::i;:::-;3291:5:::1;:11:::0;;-1:-1:-1;;;;;;3291:11:0::1;-1:-1:-1::0;;;;;3291:11:0;::::1;::::0;;::::1;::::0;;;3309:25:::1;::::0;3843:51:1;;;3309:25:0::1;::::0;3831:2:1;3816:18;3309:25:0::1;;;;;;;3225:111:::0;:::o;12190:217::-;3187:4;3212:5;-1:-1:-1;;;;;3212:5:0;3099:10;3201:16;3083:38;;;;-1:-1:-1;;;3083:38:0;;;;;;;:::i;:::-;12265:15:::1;:44:::0;;-1:-1:-1;;;;;;12265:44:0::1;-1:-1:-1::0;;;;;12265:44:0;::::1;::::0;;::::1;::::0;;;-1:-1:-1;12311:21:0;;;:11:::1;:21;::::0;;;;;:28;;-1:-1:-1;;12311:28:0::1;-1:-1:-1::0;12311:28:0::1;::::0;;12355:44;12383:15:::1;::::0;12265:44;12355::::1;::::0;::::1;12190:217:::0;:::o;21166:335::-;-1:-1:-1;;;;;21259:19:0;;21251:68;;;;-1:-1:-1;;;21251:68:0;;8979:2:1;21251:68:0;;;8961:21:1;9018:2;8998:18;;;8991:30;9057:34;9037:18;;;9030:62;-1:-1:-1;;;9108:18:1;;;9101:34;9152:19;;21251:68:0;8777:400:1;21251:68:0;-1:-1:-1;;;;;21338:21:0;;21330:68;;;;-1:-1:-1;;;21330:68:0;;9384:2:1;21330:68:0;;;9366:21:1;9423:2;9403:18;;;9396:30;9462:34;9442:18;;;9435:62;-1:-1:-1;;;9513:18:1;;;9506:32;9555:19;;21330:68:0;9182:398:1;21330:68:0;-1:-1:-1;;;;;21409:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;21461:32;;1361:25:1;;;21461:32:0;;1334:18:1;21461:32:0;;;;;;;21166:335;;;:::o;10591:733::-;10680:37;10691:6;10699:9;10710:6;10680:10;:37::i;:::-;10728:38;10748:6;10756:9;10728:19;:38::i;:::-;10777:39;10790:6;10798:9;10809:6;10777:12;:39::i;:::-;10827:41;10842:6;10850:9;10861:6;10827:14;:41::i;:::-;10879:38;10891:6;10899:9;10910:6;10879:11;:38::i;:::-;10928:43;10945:6;10953:9;10964:6;10928:16;:43::i;:::-;10982:27;10991:6;10999:9;10982:8;:27::i;:::-;-1:-1:-1;;;;;11040:17:0;;;;;;:9;:17;;;;;;:29;;11062:6;11040:21;:29::i;:::-;-1:-1:-1;;;;;11020:17:0;;;;;;:9;:17;;;;;:49;;;;11105:32;11030:6;11127:9;11105:13;:32::i;:::-;:78;;11177:6;11105:78;;;11140:34;11148:6;11156:9;11167:6;11140:7;:34::i;:::-;-1:-1:-1;;;;;11217:20:0;;;;;;:9;:20;;;;;;11080:103;;-1:-1:-1;11217:40:0;;11080:103;11217:24;:40::i;:::-;-1:-1:-1;;;;;11194:20:0;;;;;;;:9;:20;;;;;;;:63;;;;11273:43;;;;;;;;;;11301:14;1361:25:1;;1349:2;1334:18;;1215:177;11273:43:0;;;;;;;;10669:655;10591:733;;;:::o;1464:162::-;1550:7;1596:12;1588:6;;;;1580:29;;;;-1:-1:-1;;;1580:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;1618:5:0;;;1464:162::o;251:82::-;309:7;326:5;330:1;326;:5;:::i;339:82::-;397:7;414:5;418:1;414;:5;:::i;427:82::-;485:7;502:5;506:1;502;:5;:::i;163:82::-;221:7;238:5;242:1;238;:5;:::i;10237:346::-;-1:-1:-1;;;;;10341:20:0;;10333:70;;;;-1:-1:-1;;;10333:70:0;;10577:2:1;10333:70:0;;;10559:21:1;10616:2;10596:18;;;10589:30;10655:34;10635:18;;;10628:62;-1:-1:-1;;;10706:18:1;;;10699:35;10751:19;;10333:70:0;10375:401:1;10333:70:0;-1:-1:-1;;;;;10422:23:0;;10414:71;;;;-1:-1:-1;;;10414:71:0;;10983:2:1;10414:71:0;;;10965:21:1;11022:2;11002:18;;;10995:30;11061:34;11041:18;;;11034:62;-1:-1:-1;;;11112:18:1;;;11105:33;11155:19;;10414:71:0;10781:399:1;10414:71:0;-1:-1:-1;;;;;9517:18:0;;9500:7;9517:18;;;:9;:18;;;;;;10504:6;:27;;10496:79;;;;-1:-1:-1;;;10496:79:0;;11387:2:1;10496:79:0;;;11369:21:1;11426:2;11406:18;;;11399:30;11465:34;11445:18;;;11438:62;-1:-1:-1;;;11516:18:1;;;11509:38;11564:19;;10496:79:0;11185:404:1;13724:206:0;-1:-1:-1;;;;;13817:19:0;;;;;;:11;:19;;;;;;;;13816:20;:47;;;;-1:-1:-1;;;;;;13841:22:0;;;;;;:11;:22;;;;;;;;13840:23;13816:47;13813:110;;;13873:14;;;;;;;13865:56;;;;-1:-1:-1;;;13865:56:0;;11796:2:1;13865:56:0;;;11778:21:1;11835:2;11815:18;;;11808:30;11874:31;11854:18;;;11847:59;11923:18;;13865:56:0;11594:353:1;13865:56:0;13724:206;;:::o;15326:525::-;-1:-1:-1;;;;;15427:20:0;;15458:1;15427:20;;;:12;:20;;;;;;:33;15424:160;;-1:-1:-1;;;;;15508:17:0;;;;;;:9;:17;;;;;;;;;15482:12;:20;;;;;;;15471:32;;:6;;:10;:32::i;:::-;15470:55;;15462:120;;;;-1:-1:-1;;;15462:120:0;;12154:2:1;15462:120:0;;;12136:21:1;12193:2;12173:18;;;12166:30;12232:34;12212:18;;;12205:62;-1:-1:-1;;;12283:18:1;;;12276:50;12343:19;;15462:120:0;11952:416:1;15462:120:0;15607:4;;-1:-1:-1;;;;;15597:14:0;;;15607:4;;15597:14;15594:131;;15631:14;;15621:6;:24;;:47;;;-1:-1:-1;;;;;;15649:19:0;;;;;;:11;:19;;;;;;;;15621:47;:73;;;-1:-1:-1;;;;;;15672:22:0;;;;;;:11;:22;;;;;;;;15621:73;15613:110;;;;-1:-1:-1;;;15613:110:0;;12575:2:1;15613:110:0;;;12557:21:1;12614:2;12594:18;;;12587:30;-1:-1:-1;;;12633:18:1;;;12626:54;12697:18;;15613:110:0;12373:348:1;15613:110:0;15753:12;;15743:6;:22;;:45;;;-1:-1:-1;;;;;;15769:19:0;;;;;;:11;:19;;;;;;;;15743:45;:71;;;-1:-1:-1;;;;;;15792:22:0;;;;;;:11;:22;;;;;;;;15743:71;15735:108;;;;-1:-1:-1;;;15735:108:0;;12575:2:1;15735:108:0;;;12557:21:1;12614:2;12594:18;;;12587:30;-1:-1:-1;;;12633:18:1;;;12626:54;12697:18;;15735:108:0;12373:348:1;14769:338:0;-1:-1:-1;;;;;14873:19:0;;;;;;:11;:19;;;;;;;;14872:20;:47;;;;-1:-1:-1;;;;;;14897:22:0;;;;;;:11;:22;;;;;;;;14896:23;14872:47;:77;;;;-1:-1:-1;14944:4:0;;-1:-1:-1;;;;;14923:26:0;;;14944:4;;14923:26;;14872:77;:107;;;;-1:-1:-1;;;;;;14953:26:0;;6371:42;14953:26;;14872:107;14869:231;;;15041:15;;-1:-1:-1;;;;;15004:20:0;;;;;;:9;:20;;;;;;:32;;15029:6;15004:24;:32::i;:::-;15003:53;;14995:103;;;;-1:-1:-1;;;14995:103:0;;12928:2:1;14995:103:0;;;12910:21:1;12967:2;12947:18;;;12940:30;13006:34;12986:18;;;12979:62;-1:-1:-1;;;13057:18:1;;;13050:35;13102:19;;14995:103:0;12726:401:1;13938:638:0;14033:6;;;;;;;:19;;;;-1:-1:-1;14044:8:0;;;;14043:9;14033:19;14030:539;;;14081:4;;-1:-1:-1;;;;;14068:17:0;;;14081:4;;14068:17;:41;;;;-1:-1:-1;;;;;;14090:19:0;;;;;;:11;:19;;;;;;;;14089:20;14068:41;14065:89;;;14125:11;;:27;;14149:1;14125:15;:27::i;:::-;14111:11;:41;14065:89;14177:4;;-1:-1:-1;;;;;14167:14:0;;;14177:4;;14167:14;:41;;;;-1:-1:-1;;;;;;14186:22:0;;;;;;:11;:22;;;;;;;;14185:23;14167:41;:70;;;;;14222:15;;14212:6;:25;;14167:70;14164:101;;;14261:1;14239:11;:24;14164:101;14292:13;;14278:11;;:27;14275:56;;;14307:15;:22;;-1:-1:-1;;14307:22:0;14325:4;14307:22;;;14275:56;14344:15;;;;:42;;;;-1:-1:-1;;;;;;14364:22:0;;;;;;:11;:22;;;;;;;;14363:23;14344:42;:66;;;;-1:-1:-1;;;;;;14391:19:0;;;;;;:11;:19;;;;;;;;14390:20;14344:66;14341:227;;;14444:4;;-1:-1:-1;;;;;14434:14:0;;;14444:4;;14434:14;14426:58;;;;-1:-1:-1;;;14426:58:0;;13334:2:1;14426:58:0;;;13316:21:1;13373:2;13353:18;;;13346:30;13412:33;13392:18;;;13385:61;13463:18;;14426:58:0;13132:355:1;14426:58:0;14499:15;;14489:6;:25;14486:81;;14538:1;14516:11;:24;14542:15;:23;;-1:-1:-1;;14542:23:0;;;13938:638;;;:::o;15115:203::-;15228:4;;-1:-1:-1;;;;;15215:17:0;;;15228:4;;15215:17;:41;;;;-1:-1:-1;;;;;;15237:19:0;;;;;;:11;:19;;;;;;;;15236:20;15215:41;:69;;;;;15270:14;;15260:6;:24;;15215:69;15212:99;;;15307:1;15286:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;15115:203:0;;;:::o;18233:173::-;18309:33;18324:6;18332:9;18309:14;:33::i;:::-;18306:93;;;18344:29;18359:13;;18344:14;:29::i;:::-;18395:1;18375:9;:22;18233:173;;:::o;19888:160::-;-1:-1:-1;;;;;19994:19:0;;19969:4;19994:19;;;:11;:19;;;;;;;;19993:20;:47;;;;-1:-1:-1;;;;;;;20018:22:0;;;;;:11;:22;;;;;;;;20017:23;;19888:160;-1:-1:-1;19888:160:0:o;20283:558::-;20369:7;20425:1;20392:30;20404:6;20412:9;20392:11;:30::i;:::-;:34;20389:430;;;20438:17;20458:59;20486:30;20498:6;20506:9;20486:11;:30::i;:::-;20469:11;;20458:23;;:6;;:10;:23::i;:59::-;20573:4;20555:24;;;;:9;:24;;;;;;20438:79;;-1:-1:-1;20555:39:0;;20438:79;20555:28;:39::i;:::-;20546:4;20528:24;;;;:9;:24;;;;;;;:66;;;;20610:42;;-1:-1:-1;;;;;20610:42:0;;;;;;;20642:9;1361:25:1;;1349:2;1334:18;;1215:177;20610:42:0;;;;;;;;20666:8;;:21;20663:116;;20722:14;;20767:8;;20750:11;;20689:88;;20707:4;;-1:-1:-1;;;;;20722:14:0;;;;20739:37;;20767:8;20739:23;;:6;;:10;:23::i;:37::-;20689:9;:88::i;:::-;20796:21;:6;20807:9;20796:10;:21::i;:::-;20789:28;;;;;20389:430;-1:-1:-1;20827:6:0;20283:558;-1:-1:-1;;20283:558:0:o;17891:334::-;18040:13;;18030:4;17973;9517:18;;;:9;:18;;;;;;18072:8;;17973:4;;-1:-1:-1;18012:41:0;;18072:8;;18071:9;:24;;;;-1:-1:-1;18084:11:0;;;;18071:24;:42;;;;-1:-1:-1;18099:14:0;;;;;;;18071:42;:66;;;;-1:-1:-1;;;;;;18118:19:0;;;;;;:11;:19;;;;;;;;18117:20;18071:66;:101;;;;-1:-1:-1;18168:4:0;;-1:-1:-1;;;;;18155:17:0;;;18168:4;;18155:17;18071:101;:128;;;;;18189:10;;18176:9;;:23;;18071:128;:146;;;;;18203:14;18071:146;18064:153;17891:334;-1:-1:-1;;;;17891:334:0:o;15859:1214::-;6170:4;6159:8;;:15;;;;;;;;;;;;;;;;;;15930:20:::1;15953:82;16033:1;15954:73;16016:10;;15954:57;15996:14;;15954:37;15978:12;;15954:19;15971:1;15954:12;;:16;;:19;;;;:::i;:::-;:23:::0;::::1;:37::i;15953:82::-;15930:105;;16046:32;16081:42;16110:12;16081:24;16092:12;;16081:6;:10;;:24;;;;:::i;:42::-;16046:77:::0;-1:-1:-1;16134:14:0::1;16151:36;:6:::0;16046:77;16151:10:::1;:36::i;:::-;16134:53:::0;-1:-1:-1;16223:21:0::1;16255:24;16134:53:::0;16255:16:::1;:24::i;:::-;16290:20;16313:41;:21;16339:14:::0;16313:25:::1;:41::i;:::-;16290:64;;16365:19;16386:48;16403:30;16420:12;;16403;:16;;:30;;;;:::i;:::-;16386:12:::0;;:16:::1;:48::i;:::-;16365:69;;16445:29;16477;16493:12;;16477:11;:15;;:29;;;;:::i;:::-;16445:61:::0;-1:-1:-1;16520:34:0;;16517:123:::1;;16618:18;::::0;16556:81:::1;::::0;16569:24;;16595:21;;-1:-1:-1;;;;;16618:18:0::1;16556:12;:81::i;:::-;16699:12;::::0;16650:23:::1;::::0;16676:36:::1;::::0;:18:::1;:11:::0;16692:1:::1;16676:15;:18::i;:36::-;16650:62:::0;-1:-1:-1;16726:19:0;;16723:79:::1;;16755:18;::::0;16747:53:::1;::::0;-1:-1:-1;;;;;16755:18:0;;::::1;::::0;16747:53;::::1;;;::::0;16784:15;;16755:18:::1;16747:53:::0;16755:18;16747:53;16784:15;16755:18;16747:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;16723:79;16859:10;::::0;16812:21:::1;::::0;16836:34:::1;::::0;:18:::1;:11:::0;16852:1:::1;16836:15;:18::i;:34::-;16812:58:::0;-1:-1:-1;16884:17:0;;16881:73:::1;;16911:16;::::0;16903:49:::1;::::0;-1:-1:-1;;;;;16911:16:0;;::::1;::::0;16903:49;::::1;;;::::0;16938:13;;16911:16:::1;16903:49:::0;16911:16;16903:49;16938:13;16911:16;16903:49;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;16881:73;16967:21;:34:::0;16964:102:::1;;17011:20;::::0;17003:61:::1;::::0;-1:-1:-1;;;;;17011:20:0;;::::1;::::0;17042:21:::1;17003:61:::0;::::1;;;::::0;17011:20:::1;17003:61:::0;17011:20;17003:61;17042:21;17011:20;17003:61;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;16964:102;-1:-1:-1::0;;6179:8:0;:16;;-1:-1:-1;;6179:16:0;;;-1:-1:-1;;;;;;;;15859:1214:0:o;20056:219::-;20171:4;;20135:7;;-1:-1:-1;;;;;20171:4:0;;;20158:17;;;;20155:38;;-1:-1:-1;20184:7:0;;20177:14;;20155:38;20216:4;;-1:-1:-1;;;;;20216:4:0;;;20206:14;;;;20203:36;;-1:-1:-1;20229:8:0;;20222:15;;20203:36;-1:-1:-1;20256:11:0;;20056:219;;;;:::o;17449:434::-;17539:16;;;17553:1;17539:16;;;;;;;;17515:21;;17539:16;;;;;;;;;;-1:-1:-1;17539:16:0;17515:40;;17584:4;17566;17571:1;17566:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17566:23:0;;;:7;;;;;;;;;;:23;;;;17610:6;;:13;;;-1:-1:-1;;;17610:13:0;;;;:6;;;;;:11;;:13;;;;;17566:7;;17610:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17600:4;17605:1;17600:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17600:23:0;;;:7;;;;;;;;;:23;17666:6;;17634:53;;17651:4;;17666:6;17675:11;17634:8;:53::i;:::-;17698:6;;:177;;-1:-1:-1;;;17698:177:0;;-1:-1:-1;;;;;17698:6:0;;;;:57;;:177;;17770:11;;17698:6;;17812:4;;17839;;17859:15;;17698:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17504:379;17449:434;:::o;17081:360::-;17212:6;;17180:53;;17197:4;;-1:-1:-1;;;;;17212:6:0;17221:11;17180:8;:53::i;:::-;17244:6;;:189;;-1:-1:-1;;;17244:189:0;;17307:4;17244:189;;;15338:34:1;15388:18;;;15381:34;;;17244:6:0;15431:18:1;;;15424:34;;;15474:18;;;15467:34;-1:-1:-1;;;;;15538:15:1;;;15517:19;;;15510:44;17417:15:0;15570:19:1;;;15563:35;17244:6:0;;;;:22;;17274:9;;15272:19:1;;17244:189:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;1858:180::-;1917:6;1970:2;1958:9;1949:7;1945:23;1941:32;1938:52;;;1986:1;1983;1976:12;1938:52;-1:-1:-1;2009:23:1;;1858:180;-1:-1:-1;1858:180:1:o;2043:247::-;2102:6;2155:2;2143:9;2134:7;2130:23;2126:32;2123:52;;;2171:1;2168;2161:12;2123:52;2210:9;2197:23;2229:31;2254:5;2229:31;:::i;2484:316::-;2561:6;2569;2577;2630:2;2618:9;2609:7;2605:23;2601:32;2598:52;;;2646:1;2643;2636:12;2598:52;-1:-1:-1;;2669:23:1;;;2739:2;2724:18;;2711:32;;-1:-1:-1;2790:2:1;2775:18;;;2762:32;;2484:316;-1:-1:-1;2484:316:1:o;2805:118::-;2891:5;2884:13;2877:21;2870:5;2867:32;2857:60;;2913:1;2910;2903:12;2928:382;2993:6;3001;3054:2;3042:9;3033:7;3029:23;3025:32;3022:52;;;3070:1;3067;3060:12;3022:52;3109:9;3096:23;3128:31;3153:5;3128:31;:::i;:::-;3178:5;-1:-1:-1;3235:2:1;3220:18;;3207:32;3248:30;3207:32;3248:30;:::i;:::-;3297:7;3287:17;;;2928:382;;;;;:::o;3315:377::-;3389:6;3397;3405;3458:2;3446:9;3437:7;3433:23;3429:32;3426:52;;;3474:1;3471;3464:12;3426:52;3513:9;3500:23;3532:28;3554:5;3532:28;:::i;:::-;3579:5;3631:2;3616:18;;3603:32;;-1:-1:-1;3682:2:1;3667:18;;;3654:32;;3315:377;-1:-1:-1;;;3315:377:1:o;3905:813::-;4000:6;4008;4016;4024;4032;4085:3;4073:9;4064:7;4060:23;4056:33;4053:53;;;4102:1;4099;4092:12;4053:53;4141:9;4128:23;4160:31;4185:5;4160:31;:::i;:::-;4210:5;-1:-1:-1;4267:2:1;4252:18;;4239:32;4280:33;4239:32;4280:33;:::i;:::-;4332:7;-1:-1:-1;4391:2:1;4376:18;;4363:32;4404:33;4363:32;4404:33;:::i;:::-;4456:7;-1:-1:-1;4515:2:1;4500:18;;4487:32;4528:33;4487:32;4528:33;:::i;:::-;4580:7;-1:-1:-1;4639:3:1;4624:19;;4611:33;4653;4611;4653;:::i;:::-;4705:7;4695:17;;;3905:813;;;;;;;;:::o;4723:388::-;4791:6;4799;4852:2;4840:9;4831:7;4827:23;4823:32;4820:52;;;4868:1;4865;4858:12;4820:52;4907:9;4894:23;4926:31;4951:5;4926:31;:::i;:::-;4976:5;-1:-1:-1;5033:2:1;5018:18;;5005:32;5046:33;5005:32;5046:33;:::i;5116:661::-;5238:6;5246;5254;5262;5270;5278;5286;5294;5347:3;5335:9;5326:7;5322:23;5318:33;5315:53;;;5364:1;5361;5354:12;5315:53;-1:-1:-1;;5387:23:1;;;5457:2;5442:18;;5429:32;;-1:-1:-1;5508:2:1;5493:18;;5480:32;;5559:2;5544:18;;5531:32;;-1:-1:-1;5610:3:1;5595:19;;5582:33;;-1:-1:-1;5662:3:1;5647:19;;5634:33;;-1:-1:-1;5714:3:1;5699:19;;5686:33;;-1:-1:-1;5766:3:1;5751:19;5738:33;;-1:-1:-1;5116:661:1;-1:-1:-1;5116:661:1:o;6042:329::-;6244:2;6226:21;;;6283:1;6263:18;;;6256:29;-1:-1:-1;;;6316:2:1;6301:18;;6294:36;6362:2;6347:18;;6042:329::o;7491:245::-;7558:6;7611:2;7599:9;7590:7;7586:23;7582:32;7579:52;;;7627:1;7624;7617:12;7579:52;7659:9;7653:16;7678:28;7700:5;7678:28;:::i;9585:127::-;9646:10;9641:3;9637:20;9634:1;9627:31;9677:4;9674:1;9667:15;9701:4;9698:1;9691:15;9717:128;9784:9;;;9805:11;;;9802:37;;;9819:18;;:::i;9850:168::-;9923:9;;;9954;;9971:15;;;9965:22;;9951:37;9941:71;;9992:18;;:::i;10023:217::-;10063:1;10089;10079:132;;10133:10;10128:3;10124:20;10121:1;10114:31;10168:4;10165:1;10158:15;10196:4;10193:1;10186:15;10079:132;-1:-1:-1;10225:9:1;;10023:217::o;10245:125::-;10310:9;;;10331:10;;;10328:36;;;10344:18;;:::i;13624:127::-;13685:10;13680:3;13676:20;13673:1;13666:31;13716:4;13713:1;13706:15;13740:4;13737:1;13730:15;13756:251;13826:6;13879:2;13867:9;13858:7;13854:23;13850:32;13847:52;;;13895:1;13892;13885:12;13847:52;13927:9;13921:16;13946:31;13971:5;13946:31;:::i;14012:980::-;14274:4;14322:3;14311:9;14307:19;14353:6;14342:9;14335:25;14379:2;14417:6;14412:2;14401:9;14397:18;14390:34;14460:3;14455:2;14444:9;14440:18;14433:31;14484:6;14519;14513:13;14550:6;14542;14535:22;14588:3;14577:9;14573:19;14566:26;;14627:2;14619:6;14615:15;14601:29;;14648:1;14658:195;14672:6;14669:1;14666:13;14658:195;;;14737:13;;-1:-1:-1;;;;;14733:39:1;14721:52;;14828:15;;;;14793:12;;;;14769:1;14687:9;14658:195;;;-1:-1:-1;;;;;;;14909:32:1;;;;14904:2;14889:18;;14882:60;-1:-1:-1;;;14973:3:1;14958:19;14951:35;14870:3;14012:980;-1:-1:-1;;;14012:980:1:o;15609:306::-;15697:6;15705;15713;15766:2;15754:9;15745:7;15741:23;15737:32;15734:52;;;15782:1;15779;15772:12;15734:52;15811:9;15805:16;15795:26;;15861:2;15850:9;15846:18;15840:25;15830:35;;15905:2;15894:9;15890:18;15884:25;15874:35;;15609:306;;;;;:::o

Swarm Source

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