ETH Price: $3,421.06 (-1.59%)
Gas: 7 Gwei

Token

Heaven Seven (H7)
 

Overview

Max Total Supply

7,777,777,777 H7

Holders

63

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
8,070,440.484976316 H7

Value
$0.00
0x1cca146Ae9f4569b1695b1B4Cf5212e1711FAf24
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:
heaven7

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-23
*/

// Heaven Seven $H7 - EXPERIMENTAL TOKEN - INNOVATIVE SMART CONTRACT

// 1 CONSECUTIVE SELL EVERY 7 BUYS
// NUMBER OF CONSECUTIVE SELLS AUTHORIZED WILL BE INCREASED AND NUMBER BUY CONDITIONS WILL BE LOWERED ON THE WAY UP, ADAPTING TO OUR GROWTH.
// THIS SYSTEM AIMS TO ELIMINATE MULTIWALLET SELLS, PREVENTING HUGE DUMPS AND FORCING JEETS TO RESPECT THE NEW BUYS!

// NO SOCIALS, ALL COMMUNICATIONS WILL BE THROUGH ETHERSCAN, FEEL FREE TO CREATE YOUR OWN COMMUNITIES.
// A COMMUNITY TG GROUP WILL BE MADE ONLY FOR THE FIRST ETH TRENDING SESSION, IT WILL BE A HUB FOR OUR HOLDERS TO CONNECT WITH EACH OTHER AND CREATE THEIR COMMUNITIES, STARTING FROM THERE.

// 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 heaven7 is IERC20, tokenStaking, Ownable {
    using SafeMath for uint256;
    string private constant _name = 'Heaven Seven';
    string private constant _symbol = 'H7';
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 7777777777 * (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 H7Adapter = true;
    uint256 public H7AdapterSells;
    uint256 public H7AdapterTrigger = 3;
    bool public H7AdapterBuyNeeded = 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 H7AdapterMinAmount = 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 = 0x95bc9f48cd73807E6E159776000032f45D8Ab0fD; 
    address internal marketing_receiver = 0x95bc9f48cd73807E6E159776000032f45D8Ab0fD;
    address internal liquidity_receiver = 0x95bc9f48cd73807E6E159776000032f45D8Ab0fD;
    address internal staking_receiver = 0x95bc9f48cd73807E6E159776000032f45D8Ab0fD;
    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);
        checkH7Adapter(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 checkH7Adapter(address sender, address recipient, uint256 amount) internal {
        if(H7Adapter && !swapping){ 
        if(recipient == pair && !isFeeExempt[sender]){H7AdapterSells = H7AdapterSells.add(uint256(1));}
        if(sender == pair && !isFeeExempt[recipient] && amount >= H7AdapterMinAmount){H7AdapterSells = uint256(0);}
        if(H7AdapterSells > H7AdapterTrigger){H7AdapterBuyNeeded = true;}
        if(H7AdapterBuyNeeded && !isFeeExempt[recipient] && !isFeeExempt[sender]){
            require(sender == pair, "ERC20: H7Adapter purchase required"); if(amount >= H7AdapterMinAmount){H7AdapterSells = uint256(0); H7AdapterBuyNeeded = false;}}}
    }

    function setH7Adapter(bool enabled, uint256 trigger, uint256 minAmount) external onlyOwner {
        H7Adapter = enabled; H7AdapterTrigger = trigger; H7AdapterMinAmount = 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":"H7Adapter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"H7AdapterBuyNeeded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"H7AdapterMinAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"H7AdapterSells","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"H7AdapterTrigger","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":"bool","name":"enabled","type":"bool"},{"internalType":"uint256","name":"trigger","type":"uint256"},{"internalType":"uint256","name":"minAmount","type":"uint256"}],"name":"setH7Adapter","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":"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"}]

6080604052620000126009600a6200052d565b62000023906401cf97787162000545565b60015561271060015460966200003a919062000545565b6200004691906200055f565b60025561271060015460966200005d919062000545565b6200006991906200055f565b600355612710600154609662000080919062000545565b6200008c91906200055f565b6004556000600a81905560c8600b819055600c55600d819055600e556103e8600f556107d0601055610fa06011556127106012556013805462ffffff191662010001179055600360158190556016805460ff19169055601955600154620186a090620000fb906101f462000545565b6200010791906200055f565b601a55620186a0600154600a6200011f919062000545565b6200012b91906200055f565b601b556001601c55602080546001600160a01b03199081167395bc9f48cd73807e6e159776000032f45d8ab0fd90811790925560218054821683179055602280548216831790556023805482169092179091556024805490911661dead1790553480156200019857600080fd5b50600080546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa15801562000200573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000226919062000582565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000274573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029a919062000582565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030e919062000582565b600880546001600160a01b038581166001600160a01b031992831617909255600980548484169216919091179055306000908152600760209081526040808320805460ff1990811660019081179092556022548616855282852080548216831790556021548616855282852080548216831790558354909516845281842080548616821790557fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d8054861682179055338085528285208054909616821790955554600583528184208190559051908152939450919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050620005ad565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200046f57816000190482111562000453576200045362000418565b808516156200046157918102915b93841c939080029062000433565b509250929050565b600082620004885750600162000527565b81620004975750600062000527565b8160018114620004b05760028114620004bb57620004db565b600191505062000527565b60ff841115620004cf57620004cf62000418565b50506001821b62000527565b5060208310610133831016604e8410600b841016171562000500575081810a62000527565b6200050c83836200042e565b806000190482111562000523576200052362000418565b0290505b92915050565b60006200053e60ff84168362000477565b9392505050565b808202811582820484141762000527576200052762000418565b6000826200057d57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200059557600080fd5b81516001600160a01b03811681146200053e57600080fd5b61262d80620005bd6000396000f3fe6080604052600436106102135760003560e01c80638cd4426d11610118578063cf7d036e116100a0578063e94dd17c1161006f578063e94dd17c14610643578063ea3d02ec14610663578063ef40a67014610679578063f2fde38b146106a6578063f4e0d9ac146106c657600080fd5b8063cf7d036e1461059d578063dd62ed3e146105bd578063e28be0cb14610603578063e2d6f94c1461062357600080fd5b80639fb05d37116100e75780639fb05d37146104fd578063a0821be31461051d578063a8aa1b311461053d578063a9059cbb1461055d578063b6b55f251461057d57600080fd5b80638cd4426d146104875780639358928b146104a757806395d89b41146104bc57806398d2c57e146104e757600080fd5b8063420516ec1161019b57806378109e541161016a57806378109e54146103fd5780637cca52fe146104135780637d1db4a514610429578063817b1cd21461043f578063893d20e81461045557600080fd5b8063420516ec1461037757806348ff2b8b1461038d5780636514b9ca146103ad57806370a08231146103c757600080fd5b8063293230b8116101e2578063293230b8146102d55780632e1a7d4d146102ec5780632f54bf6e1461030c578063313ce5671461033b57806334c5d2ce1461035757600080fd5b806306fdde031461021f578063095ea7b31461026657806318160ddd1461029657806323b872dd146102b557600080fd5b3661021a57005b600080fd5b34801561022b57600080fd5b5060408051808201909152600c81526b2432b0bb32b71029b2bb32b760a11b60208201525b60405161025d91906121a6565b60405180910390f35b34801561027257600080fd5b5061028661028136600461220c565b6106e6565b604051901515815260200161025d565b3480156102a257600080fd5b506001545b60405190815260200161025d565b3480156102c157600080fd5b506102866102d0366004612238565b6106fd565b3480156102e157600080fd5b506102ea610767565b005b3480156102f857600080fd5b506102ea610307366004612279565b6107d8565b34801561031857600080fd5b50610286610327366004612292565b6000546001600160a01b0391821691161490565b34801561034757600080fd5b506040516009815260200161025d565b34801561036357600080fd5b506102ea6103723660046122af565b61091e565b34801561038357600080fd5b506102a760145481565b34801561039957600080fd5b506102ea6103a83660046122e9565b610a88565b3480156103b957600080fd5b506016546102869060ff1681565b3480156103d357600080fd5b506102a76103e2366004612292565b6001600160a01b031660009081526005602052604090205490565b34801561040957600080fd5b506102a760045481565b34801561041f57600080fd5b506102a760035481565b34801561043557600080fd5b506102a760025481565b34801561044b57600080fd5b506102a7601e5481565b34801561046157600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161025d565b34801561049357600080fd5b506102ea6104a236600461220c565b610b07565b3480156104b357600080fd5b506102a7610b83565b3480156104c857600080fd5b50604080518082019091526002815261483760f01b6020820152610250565b3480156104f357600080fd5b506102a760155481565b34801561050957600080fd5b506102ea610518366004612322565b610bf4565b34801561052957600080fd5b506102a7610538366004612292565b610d02565b34801561054957600080fd5b5060095461046f906001600160a01b031681565b34801561056957600080fd5b5061028661057836600461220c565b610d2f565b34801561058957600080fd5b506102ea610598366004612279565b610d3c565b3480156105a957600080fd5b506102ea6105b8366004612393565b610e99565b3480156105c957600080fd5b506102a76105d83660046123c8565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561060f57600080fd5b506013546102869062010000900460ff1681565b34801561062f57600080fd5b506102ea61063e3660046123f6565b610ee6565b34801561064f57600080fd5b506102ea61065e3660046122af565b61101f565b34801561066f57600080fd5b506102a7601c5481565b34801561068557600080fd5b506102a7610694366004612292565b601d6020526000908152604090205481565b3480156106b257600080fd5b506102ea6106c1366004612292565b6110be565b3480156106d257600080fd5b506102ea6106e1366004612292565b61113c565b60006106f33384846111c8565b5060015b92915050565b600061070a8484846112ec565b61075c8433610757856040518060600160405280602881526020016125d0602891396001600160a01b038a166000908152600660209081526040808320338452909152902054919061141d565b6111c8565b5060015b9392505050565b6000546001600160a01b0316331461079a5760405162461bcd60e51b81526004016107919061244b565b60405180910390fd5b6013805461ff001916610100179055604051429033907f340c369ced7c3a65b67543c4f1e839173c42d01b38931b0c01b18c89a1d1ba4b90600090a3565b336000908152601d602052604090205481111561084d5760405162461bcd60e51b815260206004820152602d60248201527f45524332303a2043616e6e6f7420756e7374616b65206d6f7265207468616e2060448201526c185b5bdd5b9d081cdd185ad959609a1b6064820152608401610791565b601f5460405163d8a9bf2960e01b8152336004820152602481018390526001600160a01b039091169063d8a9bf2990604401600060405180830381600087803b15801561089957600080fd5b505af11580156108ad573d6000803e3d6000fd5b5050336000908152601d60205260409020546108cc9250905082611449565b336000908152601d6020526040902055601e546108e99082611449565b601e556040514290829033907ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b56890600090a450565b6000546001600160a01b031633146109485760405162461bcd60e51b81526004016107919061244b565b60006109696127106109638661095d60015490565b90611455565b90611461565b905060006109806127106109638661095d60015490565b905060006109976127106109638661095d60015490565b905060006109af6103e8610963600561095d60015490565b90508084101580156109c15750808310155b80156109cd5750808210155b610a375760405162461bcd60e51b815260206004820152603560248201527f45524332303a206d61782054587320616e64206d61782057616c6c65742063616044820152746e6e6f74206265206c657373207468616e202e352560581b6064820152608401610791565b6002849055600383905560048290556040514281528390839086907fbd5acdd9cd7346c04cee822893f228a65a948bc41357408255ab8f36c446349f9060200160405180910390a450505050505050565b6000546001600160a01b03163314610ab25760405162461bcd60e51b81526004016107919061244b565b6001600160a01b038216600081815260076020526040808220805460ff19168515159081179091559051429391927ff61420caae4661cdd9554a2c8b6c89fc9f30f94abccb1da76abb2ec99783821191a45050565b60205460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610b5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7e919061246b565b505050565b60056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461dead60009081527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba546001549192610bef929091610be99190611449565b90611449565b905090565b6000546001600160a01b03163314610c1e5760405162461bcd60e51b81526004016107919061244b565b602180546001600160a01b03199081166001600160a01b038881169182179093556022805483168885169081179091556020805484168886169081178255602380548616898816908117909155602480549096169688169687179095556000848152600783526040808220805460ff199081166001908117909255868452828420805482168317905597835281832080548916821790559782529081902080549096169096179094559351428152929390927f358f3926f41536f5fa6926b5b6945502e5fdfb85b1876c473d06606ed0fae9ca910160405180910390a45050505050565b6001600160a01b0381166000908152601d602090815260408083205460059092528220546106f791611449565b60006106f33384846112ec565b336000908152601d6020908152604080832054600590925290912054610d6191611449565b811115610dc85760405162461bcd60e51b815260206004820152602f60248201527f45524332303a2043616e6e6f74207374616b65206d6f7265207468616e20617660448201526e61696c61626c652062616c616e636560881b6064820152608401610791565b601f5460405163773a0f0960e01b8152336004820152602481018390526001600160a01b039091169063773a0f0990604401600060405180830381600087803b158015610e1457600080fd5b505af1158015610e28573d6000803e3d6000fd5b5050336000908152601d6020526040902054610e47925090508261146d565b336000908152601d6020526040902055601e54610e64908261146d565b601e556040514290829033907f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1590600090a450565b6000546001600160a01b03163314610ec35760405162461bcd60e51b81526004016107919061244b565b60138054931515620100000262ff00001990941693909317909255601555601c55565b6000546001600160a01b03163314610f105760405162461bcd60e51b81526004016107919061244b565b600a889055600b879055600e869055600d849055600c859055600f83905560108290556011819055601254610f46906005611461565b600f5411158015610f665750601254610f60906005611461565b60105411155b8015610f815750601254610f7b906005611461565b60115411155b610fd95760405162461bcd60e51b815260206004820152602360248201527f45524332303a20666565732063616e6e6f74206265206d6f7265207468616e2060448201526232302560e81b6064820152608401610791565b4282847fdddb43af0ad29e5d9d3cb393fd94e8f11ac2c069da19545bac6ee6baf3ddc9898460405161100d91815260200190565b60405180910390a45050505050505050565b6000546001600160a01b031633146110495760405162461bcd60e51b81526004016107919061244b565b601983905560015461106490620186a0906109639085611455565b601a5560015461107d90620186a0906109639084611455565b601b556040514281528190839085907f3af591b474e55c209cfbc3da369b6762366e3015997314ac10bd5c3198d26fb39060200160405180910390a4505050565b6000546001600160a01b031633146110e85760405162461bcd60e51b81526004016107919061244b565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6000546001600160a01b031633146111665760405162461bcd60e51b81526004016107919061244b565b601f80546001600160a01b0319166001600160a01b038316908117909155600081815260076020526040808220805460ff19166001179055514292917f23481943b6ef3dff645af874fbb24781bf224a02312f9cb308880e03e0a9ddee91a350565b6001600160a01b03831661122a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610791565b6001600160a01b03821661128b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610791565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6112f7838383611479565b61130183836115b8565b61130c83838361165a565b61131783838361184e565b611322838383611948565b61132d838383611af8565b6113378383611b5e565b6001600160a01b03831660009081526005602052604090205461135a9082611449565b6001600160a01b0384166000908152600560205260408120919091556113808484611b81565b61138a5781611395565b611395848484611bc7565b6001600160a01b0384166000908152600560205260409020549091506113bb908261146d565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061140f9085815260200190565b60405180910390a350505050565b600081848411156114415760405162461bcd60e51b815260040161079191906121a6565b505050900390565b6000610760828461249e565b600061076082846124b1565b600061076082846124c8565b600061076082846124ea565b6001600160a01b0383166114dd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610791565b6001600160a01b03821661153f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610791565b6001600160a01b038316600090815260056020526040902054811115610b7e5760405162461bcd60e51b815260206004820152602860248201527f45524332303a2062656c6f7720617661696c61626c652062616c616e636520746044820152671a1c995cda1bdb1960c21b6064820152608401610791565b6001600160a01b03821660009081526007602052604090205460ff161580156115fa57506001600160a01b03811660009081526007602052604090205460ff16155b1561165657601354610100900460ff166116565760405162461bcd60e51b815260206004820152601d60248201527f45524332303a2054726164696e67206973206e6f7420616c6c6f7765640000006044820152606401610791565b5050565b6001600160a01b0383166000908152601d602052604090205415611713576001600160a01b038316600090815260056020908152604080832054601d909252909120546116a890839061146d565b11156117135760405162461bcd60e51b815260206004820152603460248201527f45524332303a2065786365656473206d6178696d756d20616c6c6f776564206e60448201527337ba1031bab93932b73a363c9039ba30b5b2b21760611b6064820152608401610791565b6009546001600160a01b038481169116146117bb576003548111158061175157506001600160a01b03831660009081526007602052604090205460ff165b8061177457506001600160a01b03821660009081526007602052604090205460ff165b6117bb5760405162461bcd60e51b8152602060048201526018602482015277115490cc8c0e881d1e081b1a5b5a5d08195e18d95959195960421b6044820152606401610791565b600254811115806117e457506001600160a01b03831660009081526007602052604090205460ff165b8061180757506001600160a01b03821660009081526007602052604090205460ff165b610b7e5760405162461bcd60e51b8152602060048201526018602482015277115490cc8c0e881d1e081b1a5b5a5d08195e18d95959195960421b6044820152606401610791565b6001600160a01b03831660009081526007602052604090205460ff1615801561189057506001600160a01b03821660009081526007602052604090205460ff16155b80156118aa57506009546001600160a01b03838116911614155b80156118c157506001600160a01b03821661dead14155b15610b7e576004546001600160a01b0383166000908152600560205260409020546118ec908361146d565b1115610b7e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2065786365656473206d6178696d756d2077616c6c657420616d60448201526437bab73a1760d91b6064820152608401610791565b60135462010000900460ff168015611963575060185460ff16155b15610b7e576009546001600160a01b03838116911614801561199e57506001600160a01b03831660009081526007602052604090205460ff16155b156119b5576014546119b190600161146d565b6014555b6009546001600160a01b0384811691161480156119eb57506001600160a01b03821660009081526007602052604090205460ff16155b80156119f95750601c548110155b15611a045760006014555b6015546014541115611a1e576016805460ff191660011790555b60165460ff168015611a4957506001600160a01b03821660009081526007602052604090205460ff16155b8015611a6e57506001600160a01b03831660009081526007602052604090205460ff16155b15610b7e576009546001600160a01b03848116911614611adb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a2048374164617074657220707572636861736520726571756972604482015261195960f21b6064820152608401610791565b601c548110610b7e5760006014556016805460ff19169055505050565b6009546001600160a01b038381169116148015611b2e57506001600160a01b03831660009081526007602052604090205460ff16155b8015611b3c5750601b548110155b15610b7e57600160176000828254611b5491906124ea565b9091555050505050565b611b688282611cbe565b1561165657611b78601a54611d5d565b60006017555050565b6001600160a01b03821660009081526007602052604081205460ff161580156107605750506001600160a01b031660009081526007602052604090205460ff1615919050565b600080611bd48585611f56565b1115611cb7576000611bf7611be98686611f56565b60125461095d908690611461565b30600090815260056020526040902054909150611c14908261146d565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c659085815260200190565b60405180910390a3600e5415611ca557602454600e54601254611ca59230926001600160a01b0390911691611ca0919061095d908990611461565b6112ec565b611caf8382611449565b915050610760565b5092915050565b601a5430600090815260056020526040812054601854919211159060ff16158015611ceb575060135460ff165b8015611cfe5750601354610100900460ff165b8015611d2357506001600160a01b03841660009081526007602052604090205460ff16155b8015611d3c57506009546001600160a01b038481169116145b8015611d4c575060195460175410155b8015611d555750805b949350505050565b6001601860006101000a81548160ff0219169083151502179055506000611dad600261095d600d54611da7600c54611da7600b54611da76001600a5461146d90919063ffffffff16565b9061146d565b90506000611dca82610963600a548661145590919063ffffffff16565b90506000611dd88483611449565b905047611de482611fa1565b6000611df04783611449565b90506000611e13611e0c600a548861144990919063ffffffff16565b8390611461565b90506000611e2c600a548361145590919063ffffffff16565b90508015611e4d57602254611e4d90879083906001600160a01b03166120fb565b600b54600090611e629061095d856002611455565b90508015611ea6576021546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611ea4573d6000803e3d6000fd5b505b600d54600090611ebb9061095d866002611455565b90508015611eff576023546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611efd573d6000803e3d6000fd5b505b4715611f40576020546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611f3e573d6000803e3d6000fd5b505b50506018805460ff191690555050505050505050565b6009546000906001600160a01b0390811690831603611f7857506010546106f7565b6009546001600160a01b0390811690841603611f975750600f546106f7565b5060115492915050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611fd657611fd66124fd565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561202f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120539190612513565b81600181518110612066576120666124fd565b6001600160a01b03928316602091820292909201015260085461208c91309116846111c8565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac947906120c5908590600090869030904290600401612530565b600060405180830381600087803b1580156120df57600080fd5b505af11580156120f3573d6000803e3d6000fd5b505050505050565b6008546121139030906001600160a01b0316856111c8565b60085460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0383811660848301524260a48301529091169063f305d71990849060c40160606040518083038185885af1158015612181573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906120f391906125a1565b600060208083528351808285015260005b818110156121d3578581018301518582016040015282016121b7565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461220957600080fd5b50565b6000806040838503121561221f57600080fd5b823561222a816121f4565b946020939093013593505050565b60008060006060848603121561224d57600080fd5b8335612258816121f4565b92506020840135612268816121f4565b929592945050506040919091013590565b60006020828403121561228b57600080fd5b5035919050565b6000602082840312156122a457600080fd5b8135610760816121f4565b6000806000606084860312156122c457600080fd5b505081359360208301359350604090920135919050565b801515811461220957600080fd5b600080604083850312156122fc57600080fd5b8235612307816121f4565b91506020830135612317816122db565b809150509250929050565b600080600080600060a0868803121561233a57600080fd5b8535612345816121f4565b94506020860135612355816121f4565b93506040860135612365816121f4565b92506060860135612375816121f4565b91506080860135612385816121f4565b809150509295509295909350565b6000806000606084860312156123a857600080fd5b83356123b3816122db565b95602085013595506040909401359392505050565b600080604083850312156123db57600080fd5b82356123e6816121f4565b91506020830135612317816121f4565b600080600080600080600080610100898b03121561241357600080fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b60006020828403121561247d57600080fd5b8151610760816122db565b634e487b7160e01b600052601160045260246000fd5b818103818111156106f7576106f7612488565b80820281158282048414176106f7576106f7612488565b6000826124e557634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156106f7576106f7612488565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561252557600080fd5b8151610760816121f4565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156125805784516001600160a01b03168352938301939183019160010161255b565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156125b657600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c7c445a3e444fbcc129f94fa1788358b9687d906aae9b00d21de68e1d94c0e3164736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102135760003560e01c80638cd4426d11610118578063cf7d036e116100a0578063e94dd17c1161006f578063e94dd17c14610643578063ea3d02ec14610663578063ef40a67014610679578063f2fde38b146106a6578063f4e0d9ac146106c657600080fd5b8063cf7d036e1461059d578063dd62ed3e146105bd578063e28be0cb14610603578063e2d6f94c1461062357600080fd5b80639fb05d37116100e75780639fb05d37146104fd578063a0821be31461051d578063a8aa1b311461053d578063a9059cbb1461055d578063b6b55f251461057d57600080fd5b80638cd4426d146104875780639358928b146104a757806395d89b41146104bc57806398d2c57e146104e757600080fd5b8063420516ec1161019b57806378109e541161016a57806378109e54146103fd5780637cca52fe146104135780637d1db4a514610429578063817b1cd21461043f578063893d20e81461045557600080fd5b8063420516ec1461037757806348ff2b8b1461038d5780636514b9ca146103ad57806370a08231146103c757600080fd5b8063293230b8116101e2578063293230b8146102d55780632e1a7d4d146102ec5780632f54bf6e1461030c578063313ce5671461033b57806334c5d2ce1461035757600080fd5b806306fdde031461021f578063095ea7b31461026657806318160ddd1461029657806323b872dd146102b557600080fd5b3661021a57005b600080fd5b34801561022b57600080fd5b5060408051808201909152600c81526b2432b0bb32b71029b2bb32b760a11b60208201525b60405161025d91906121a6565b60405180910390f35b34801561027257600080fd5b5061028661028136600461220c565b6106e6565b604051901515815260200161025d565b3480156102a257600080fd5b506001545b60405190815260200161025d565b3480156102c157600080fd5b506102866102d0366004612238565b6106fd565b3480156102e157600080fd5b506102ea610767565b005b3480156102f857600080fd5b506102ea610307366004612279565b6107d8565b34801561031857600080fd5b50610286610327366004612292565b6000546001600160a01b0391821691161490565b34801561034757600080fd5b506040516009815260200161025d565b34801561036357600080fd5b506102ea6103723660046122af565b61091e565b34801561038357600080fd5b506102a760145481565b34801561039957600080fd5b506102ea6103a83660046122e9565b610a88565b3480156103b957600080fd5b506016546102869060ff1681565b3480156103d357600080fd5b506102a76103e2366004612292565b6001600160a01b031660009081526005602052604090205490565b34801561040957600080fd5b506102a760045481565b34801561041f57600080fd5b506102a760035481565b34801561043557600080fd5b506102a760025481565b34801561044b57600080fd5b506102a7601e5481565b34801561046157600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161025d565b34801561049357600080fd5b506102ea6104a236600461220c565b610b07565b3480156104b357600080fd5b506102a7610b83565b3480156104c857600080fd5b50604080518082019091526002815261483760f01b6020820152610250565b3480156104f357600080fd5b506102a760155481565b34801561050957600080fd5b506102ea610518366004612322565b610bf4565b34801561052957600080fd5b506102a7610538366004612292565b610d02565b34801561054957600080fd5b5060095461046f906001600160a01b031681565b34801561056957600080fd5b5061028661057836600461220c565b610d2f565b34801561058957600080fd5b506102ea610598366004612279565b610d3c565b3480156105a957600080fd5b506102ea6105b8366004612393565b610e99565b3480156105c957600080fd5b506102a76105d83660046123c8565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561060f57600080fd5b506013546102869062010000900460ff1681565b34801561062f57600080fd5b506102ea61063e3660046123f6565b610ee6565b34801561064f57600080fd5b506102ea61065e3660046122af565b61101f565b34801561066f57600080fd5b506102a7601c5481565b34801561068557600080fd5b506102a7610694366004612292565b601d6020526000908152604090205481565b3480156106b257600080fd5b506102ea6106c1366004612292565b6110be565b3480156106d257600080fd5b506102ea6106e1366004612292565b61113c565b60006106f33384846111c8565b5060015b92915050565b600061070a8484846112ec565b61075c8433610757856040518060600160405280602881526020016125d0602891396001600160a01b038a166000908152600660209081526040808320338452909152902054919061141d565b6111c8565b5060015b9392505050565b6000546001600160a01b0316331461079a5760405162461bcd60e51b81526004016107919061244b565b60405180910390fd5b6013805461ff001916610100179055604051429033907f340c369ced7c3a65b67543c4f1e839173c42d01b38931b0c01b18c89a1d1ba4b90600090a3565b336000908152601d602052604090205481111561084d5760405162461bcd60e51b815260206004820152602d60248201527f45524332303a2043616e6e6f7420756e7374616b65206d6f7265207468616e2060448201526c185b5bdd5b9d081cdd185ad959609a1b6064820152608401610791565b601f5460405163d8a9bf2960e01b8152336004820152602481018390526001600160a01b039091169063d8a9bf2990604401600060405180830381600087803b15801561089957600080fd5b505af11580156108ad573d6000803e3d6000fd5b5050336000908152601d60205260409020546108cc9250905082611449565b336000908152601d6020526040902055601e546108e99082611449565b601e556040514290829033907ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b56890600090a450565b6000546001600160a01b031633146109485760405162461bcd60e51b81526004016107919061244b565b60006109696127106109638661095d60015490565b90611455565b90611461565b905060006109806127106109638661095d60015490565b905060006109976127106109638661095d60015490565b905060006109af6103e8610963600561095d60015490565b90508084101580156109c15750808310155b80156109cd5750808210155b610a375760405162461bcd60e51b815260206004820152603560248201527f45524332303a206d61782054587320616e64206d61782057616c6c65742063616044820152746e6e6f74206265206c657373207468616e202e352560581b6064820152608401610791565b6002849055600383905560048290556040514281528390839086907fbd5acdd9cd7346c04cee822893f228a65a948bc41357408255ab8f36c446349f9060200160405180910390a450505050505050565b6000546001600160a01b03163314610ab25760405162461bcd60e51b81526004016107919061244b565b6001600160a01b038216600081815260076020526040808220805460ff19168515159081179091559051429391927ff61420caae4661cdd9554a2c8b6c89fc9f30f94abccb1da76abb2ec99783821191a45050565b60205460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610b5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7e919061246b565b505050565b60056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461dead60009081527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba546001549192610bef929091610be99190611449565b90611449565b905090565b6000546001600160a01b03163314610c1e5760405162461bcd60e51b81526004016107919061244b565b602180546001600160a01b03199081166001600160a01b038881169182179093556022805483168885169081179091556020805484168886169081178255602380548616898816908117909155602480549096169688169687179095556000848152600783526040808220805460ff199081166001908117909255868452828420805482168317905597835281832080548916821790559782529081902080549096169096179094559351428152929390927f358f3926f41536f5fa6926b5b6945502e5fdfb85b1876c473d06606ed0fae9ca910160405180910390a45050505050565b6001600160a01b0381166000908152601d602090815260408083205460059092528220546106f791611449565b60006106f33384846112ec565b336000908152601d6020908152604080832054600590925290912054610d6191611449565b811115610dc85760405162461bcd60e51b815260206004820152602f60248201527f45524332303a2043616e6e6f74207374616b65206d6f7265207468616e20617660448201526e61696c61626c652062616c616e636560881b6064820152608401610791565b601f5460405163773a0f0960e01b8152336004820152602481018390526001600160a01b039091169063773a0f0990604401600060405180830381600087803b158015610e1457600080fd5b505af1158015610e28573d6000803e3d6000fd5b5050336000908152601d6020526040902054610e47925090508261146d565b336000908152601d6020526040902055601e54610e64908261146d565b601e556040514290829033907f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1590600090a450565b6000546001600160a01b03163314610ec35760405162461bcd60e51b81526004016107919061244b565b60138054931515620100000262ff00001990941693909317909255601555601c55565b6000546001600160a01b03163314610f105760405162461bcd60e51b81526004016107919061244b565b600a889055600b879055600e869055600d849055600c859055600f83905560108290556011819055601254610f46906005611461565b600f5411158015610f665750601254610f60906005611461565b60105411155b8015610f815750601254610f7b906005611461565b60115411155b610fd95760405162461bcd60e51b815260206004820152602360248201527f45524332303a20666565732063616e6e6f74206265206d6f7265207468616e2060448201526232302560e81b6064820152608401610791565b4282847fdddb43af0ad29e5d9d3cb393fd94e8f11ac2c069da19545bac6ee6baf3ddc9898460405161100d91815260200190565b60405180910390a45050505050505050565b6000546001600160a01b031633146110495760405162461bcd60e51b81526004016107919061244b565b601983905560015461106490620186a0906109639085611455565b601a5560015461107d90620186a0906109639084611455565b601b556040514281528190839085907f3af591b474e55c209cfbc3da369b6762366e3015997314ac10bd5c3198d26fb39060200160405180910390a4505050565b6000546001600160a01b031633146110e85760405162461bcd60e51b81526004016107919061244b565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6000546001600160a01b031633146111665760405162461bcd60e51b81526004016107919061244b565b601f80546001600160a01b0319166001600160a01b038316908117909155600081815260076020526040808220805460ff19166001179055514292917f23481943b6ef3dff645af874fbb24781bf224a02312f9cb308880e03e0a9ddee91a350565b6001600160a01b03831661122a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610791565b6001600160a01b03821661128b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610791565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6112f7838383611479565b61130183836115b8565b61130c83838361165a565b61131783838361184e565b611322838383611948565b61132d838383611af8565b6113378383611b5e565b6001600160a01b03831660009081526005602052604090205461135a9082611449565b6001600160a01b0384166000908152600560205260408120919091556113808484611b81565b61138a5781611395565b611395848484611bc7565b6001600160a01b0384166000908152600560205260409020549091506113bb908261146d565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061140f9085815260200190565b60405180910390a350505050565b600081848411156114415760405162461bcd60e51b815260040161079191906121a6565b505050900390565b6000610760828461249e565b600061076082846124b1565b600061076082846124c8565b600061076082846124ea565b6001600160a01b0383166114dd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610791565b6001600160a01b03821661153f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610791565b6001600160a01b038316600090815260056020526040902054811115610b7e5760405162461bcd60e51b815260206004820152602860248201527f45524332303a2062656c6f7720617661696c61626c652062616c616e636520746044820152671a1c995cda1bdb1960c21b6064820152608401610791565b6001600160a01b03821660009081526007602052604090205460ff161580156115fa57506001600160a01b03811660009081526007602052604090205460ff16155b1561165657601354610100900460ff166116565760405162461bcd60e51b815260206004820152601d60248201527f45524332303a2054726164696e67206973206e6f7420616c6c6f7765640000006044820152606401610791565b5050565b6001600160a01b0383166000908152601d602052604090205415611713576001600160a01b038316600090815260056020908152604080832054601d909252909120546116a890839061146d565b11156117135760405162461bcd60e51b815260206004820152603460248201527f45524332303a2065786365656473206d6178696d756d20616c6c6f776564206e60448201527337ba1031bab93932b73a363c9039ba30b5b2b21760611b6064820152608401610791565b6009546001600160a01b038481169116146117bb576003548111158061175157506001600160a01b03831660009081526007602052604090205460ff165b8061177457506001600160a01b03821660009081526007602052604090205460ff165b6117bb5760405162461bcd60e51b8152602060048201526018602482015277115490cc8c0e881d1e081b1a5b5a5d08195e18d95959195960421b6044820152606401610791565b600254811115806117e457506001600160a01b03831660009081526007602052604090205460ff165b8061180757506001600160a01b03821660009081526007602052604090205460ff165b610b7e5760405162461bcd60e51b8152602060048201526018602482015277115490cc8c0e881d1e081b1a5b5a5d08195e18d95959195960421b6044820152606401610791565b6001600160a01b03831660009081526007602052604090205460ff1615801561189057506001600160a01b03821660009081526007602052604090205460ff16155b80156118aa57506009546001600160a01b03838116911614155b80156118c157506001600160a01b03821661dead14155b15610b7e576004546001600160a01b0383166000908152600560205260409020546118ec908361146d565b1115610b7e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2065786365656473206d6178696d756d2077616c6c657420616d60448201526437bab73a1760d91b6064820152608401610791565b60135462010000900460ff168015611963575060185460ff16155b15610b7e576009546001600160a01b03838116911614801561199e57506001600160a01b03831660009081526007602052604090205460ff16155b156119b5576014546119b190600161146d565b6014555b6009546001600160a01b0384811691161480156119eb57506001600160a01b03821660009081526007602052604090205460ff16155b80156119f95750601c548110155b15611a045760006014555b6015546014541115611a1e576016805460ff191660011790555b60165460ff168015611a4957506001600160a01b03821660009081526007602052604090205460ff16155b8015611a6e57506001600160a01b03831660009081526007602052604090205460ff16155b15610b7e576009546001600160a01b03848116911614611adb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a2048374164617074657220707572636861736520726571756972604482015261195960f21b6064820152608401610791565b601c548110610b7e5760006014556016805460ff19169055505050565b6009546001600160a01b038381169116148015611b2e57506001600160a01b03831660009081526007602052604090205460ff16155b8015611b3c5750601b548110155b15610b7e57600160176000828254611b5491906124ea565b9091555050505050565b611b688282611cbe565b1561165657611b78601a54611d5d565b60006017555050565b6001600160a01b03821660009081526007602052604081205460ff161580156107605750506001600160a01b031660009081526007602052604090205460ff1615919050565b600080611bd48585611f56565b1115611cb7576000611bf7611be98686611f56565b60125461095d908690611461565b30600090815260056020526040902054909150611c14908261146d565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c659085815260200190565b60405180910390a3600e5415611ca557602454600e54601254611ca59230926001600160a01b0390911691611ca0919061095d908990611461565b6112ec565b611caf8382611449565b915050610760565b5092915050565b601a5430600090815260056020526040812054601854919211159060ff16158015611ceb575060135460ff165b8015611cfe5750601354610100900460ff165b8015611d2357506001600160a01b03841660009081526007602052604090205460ff16155b8015611d3c57506009546001600160a01b038481169116145b8015611d4c575060195460175410155b8015611d555750805b949350505050565b6001601860006101000a81548160ff0219169083151502179055506000611dad600261095d600d54611da7600c54611da7600b54611da76001600a5461146d90919063ffffffff16565b9061146d565b90506000611dca82610963600a548661145590919063ffffffff16565b90506000611dd88483611449565b905047611de482611fa1565b6000611df04783611449565b90506000611e13611e0c600a548861144990919063ffffffff16565b8390611461565b90506000611e2c600a548361145590919063ffffffff16565b90508015611e4d57602254611e4d90879083906001600160a01b03166120fb565b600b54600090611e629061095d856002611455565b90508015611ea6576021546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611ea4573d6000803e3d6000fd5b505b600d54600090611ebb9061095d866002611455565b90508015611eff576023546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611efd573d6000803e3d6000fd5b505b4715611f40576020546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611f3e573d6000803e3d6000fd5b505b50506018805460ff191690555050505050505050565b6009546000906001600160a01b0390811690831603611f7857506010546106f7565b6009546001600160a01b0390811690841603611f975750600f546106f7565b5060115492915050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611fd657611fd66124fd565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561202f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120539190612513565b81600181518110612066576120666124fd565b6001600160a01b03928316602091820292909201015260085461208c91309116846111c8565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac947906120c5908590600090869030904290600401612530565b600060405180830381600087803b1580156120df57600080fd5b505af11580156120f3573d6000803e3d6000fd5b505050505050565b6008546121139030906001600160a01b0316856111c8565b60085460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0383811660848301524260a48301529091169063f305d71990849060c40160606040518083038185885af1158015612181573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906120f391906125a1565b600060208083528351808285015260005b818110156121d3578581018301518582016040015282016121b7565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461220957600080fd5b50565b6000806040838503121561221f57600080fd5b823561222a816121f4565b946020939093013593505050565b60008060006060848603121561224d57600080fd5b8335612258816121f4565b92506020840135612268816121f4565b929592945050506040919091013590565b60006020828403121561228b57600080fd5b5035919050565b6000602082840312156122a457600080fd5b8135610760816121f4565b6000806000606084860312156122c457600080fd5b505081359360208301359350604090920135919050565b801515811461220957600080fd5b600080604083850312156122fc57600080fd5b8235612307816121f4565b91506020830135612317816122db565b809150509250929050565b600080600080600060a0868803121561233a57600080fd5b8535612345816121f4565b94506020860135612355816121f4565b93506040860135612365816121f4565b92506060860135612375816121f4565b91506080860135612385816121f4565b809150509295509295909350565b6000806000606084860312156123a857600080fd5b83356123b3816122db565b95602085013595506040909401359392505050565b600080604083850312156123db57600080fd5b82356123e6816121f4565b91506020830135612317816121f4565b600080600080600080600080610100898b03121561241357600080fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b60006020828403121561247d57600080fd5b8151610760816122db565b634e487b7160e01b600052601160045260246000fd5b818103818111156106f7576106f7612488565b80820281158282048414176106f7576106f7612488565b6000826124e557634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156106f7576106f7612488565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561252557600080fd5b8151610760816121f4565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156125805784516001600160a01b03168352938301939183019160010161255b565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156125b657600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c7c445a3e444fbcc129f94fa1788358b9687d906aae9b00d21de68e1d94c0e3164736f6c63430008130033

Deployed Bytecode Sourcemap

5131:17020:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9627:67;;;;;;;;;;-1:-1:-1;9687:5:0;;;;;;;;;;;;-1:-1:-1;;;9687:5:0;;;;9627:67;;;;;;;:::i;:::-;;;;;;;;10411:133;;;;;;;;;;-1:-1:-1;10411:133:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;10411:133:0;1023:187:1;9934:84:0;;;;;;;;;;-1:-1:-1;10004:12:0;;9934:84;;;1361:25:1;;;1349:2;1334:18;9934:84:0;1215:177:1;21496:309:0;;;;;;;;;;-1:-1:-1;21496:309:0;;;;;:::i;:::-;;:::i;19065:142::-;;;;;;;;;;;;;:::i;:::-;;12367:408;;;;;;;;;;-1:-1:-1;12367:408:0;;;;;:::i;:::-;;:::i;3723:87::-;;;;;;;;;;-1:-1:-1;3723:87:0;;;;;:::i;:::-;3778:4;3803:5;-1:-1:-1;;;;;3792:16:0;;;3803:5;;3792:16;;3723:87;9777:67;;;;;;;;;;-1:-1:-1;9777:67:0;;5354:1;2437:36:1;;2425:2;2410:18;9777:67:0;2295:184:1;13638:671:0;;;;;;;;;;-1:-1:-1;13638:671:0;;;;;:::i;:::-;;:::i;6323:29::-;;;;;;;;;;;;;;;;19764:192;;;;;;;;;;-1:-1:-1;19764:192:0;;;;;:::i;:::-;;:::i;6401:38::-;;;;;;;;;;-1:-1:-1;6401:38:0;;;;;;;;10024:103;;;;;;;;;;-1:-1:-1;10024:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;10107:18:0;10090:7;10107:18;;;:9;:18;;;;;;;10024:103;5566:63;;;;;;;;;;;;;;;;5497:62;;;;;;;;;;;;;;;;5430:60;;;;;;;;;;;;;;;;6847:26;;;;;;;;;;;;;;;;9850:78;;;;;;;;;;-1:-1:-1;9902:7:0;9920:5;-1:-1:-1;;;;;9920:5:0;9850:78;;;-1:-1:-1;;;;;3479:32:1;;;3461:51;;3449:2;3434:18;9850:78:0;3315:203:1;19964:140:0;;;;;;;;;;-1:-1:-1;19964:140:0;;;;;:::i;:::-;;:::i;10681:138::-;;;;;;;;;;;;;:::i;9700:71::-;;;;;;;;;;-1:-1:-1;9762:7:0;;;;;;;;;;;;-1:-1:-1;;;9762:7:0;;;;9700:71;;6359:35;;;;;;;;;;;;;;;;19215:541;;;;;;;;;;-1:-1:-1;19215:541:0;;;;;:::i;:::-;;:::i;10550:125::-;;;;;;;;;;-1:-1:-1;10550:125:0;;;;;:::i;:::-;;:::i;5829:19::-;;;;;;;;;;-1:-1:-1;5829:19:0;;;;-1:-1:-1;;;;;5829:19:0;;;10133:139;;;;;;;;;;-1:-1:-1;10133:139:0;;;;;:::i;:::-;;:::i;11925:434::-;;;;;;;;;;-1:-1:-1;11925:434:0;;;;;:::i;:::-;;:::i;15219:189::-;;;;;;;;;;-1:-1:-1;15219:189:0;;;;;:::i;:::-;;:::i;10278:127::-;;;;;;;;;;-1:-1:-1;10278:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;10376:18:0;;;10359:7;10376:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10278:127;6288:28;;;;;;;;;;-1:-1:-1;6288:28:0;;;;;;;;;;;13008:622;;;;;;;;;;-1:-1:-1;13008:622:0;;;;;:::i;:::-;;:::i;20112:415::-;;;;;;;;;;-1:-1:-1;20112:415:0;;;;;:::i;:::-;;:::i;6683:37::-;;;;;;;;;;;;;;;;6793:47;;;;;;;;;;-1:-1:-1;6793:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;3816:111;;;;;;;;;;-1:-1:-1;3816:111:0;;;;;:::i;:::-;;:::i;12783:217::-;;;;;;;;;;-1:-1:-1;12783:217:0;;;;;:::i;:::-;;:::i;10411:133::-;10486:4;10493:37;10502:10;10514:7;10523:6;10493:8;:37::i;:::-;-1:-1:-1;10538:4:0;10411:133;;;;;:::o;21496:309::-;21594:4;21611:36;21621:6;21629:9;21640:6;21611:9;:36::i;:::-;21658:117;21667:6;21675:10;21687:87;21723:6;21687:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21687:19:0;;;;;;:11;:19;;;;;;;;21707:10;21687:31;;;;;;;;;:87;:35;:87::i;:::-;21658:8;:117::i;:::-;-1:-1:-1;21793:4:0;21496:309;;;;;;:::o;19065:142::-;3778:4;3803:5;-1:-1:-1;;;;;3803:5:0;3690:10;3792:16;3674:38;;;;-1:-1:-1;;;3674:38:0;;;;;;;:::i;:::-;;;;;;;;;19119:14:::1;:21:::0;;-1:-1:-1;;19119:21:0::1;;;::::0;;19156:43:::1;::::0;19183:15:::1;::::0;19171:10:::1;::::0;19156:43:::1;::::0;19119:21;;19156:43:::1;19065:142::o:0;12367:408::-;12461:10;12448:24;;;;:12;:24;;;;;;12438:34;;;12430:92;;;;-1:-1:-1;;;12430:92:0;;6578:2:1;12430: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;;12430:92:0;6376:409:1;12430:92:0;12533:15;;:51;;-1:-1:-1;;;12533:51:0;;12565:10;12533:51;;;6964::1;7031:18;;;7024:34;;;-1:-1:-1;;;;;12533:15:0;;;;:31;;6937:18:1;;12533:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12635:10:0;12622:24;;;;:12;:24;;;;;;:36;;-1:-1:-1;12622:24:0;-1:-1:-1;12651:6:0;12622:28;:36::i;:::-;12608:10;12595:24;;;;:12;:24;;;;;:63;12683:11;;:23;;12699:6;12683:15;:23::i;:::-;12669:11;:37;12722:45;;12751:15;;12743:6;;12731:10;;12722:45;;;;;12367:408;:::o;13638:671::-;3778:4;3803:5;-1:-1:-1;;;;;3803:5:0;3690:10;3792:16;3674:38;;;;-1:-1:-1;;;3674:38:0;;;;;;;:::i;:::-;13738:13:::1;13754:45;13792:5;13755:23;13773:4;13755:13;10004:12:::0;;;9934:84;13755:13:::1;:17:::0;::::1;:23::i;:::-;13754:29:::0;::::1;:45::i;:::-;13738:61;;13801:19;13823:47;13863:5;13824:25;13842:6;13824:13;10004:12:::0;;;9934:84;13823:47:::1;13801:69;;13881:17;13901:48;13942:5;13902:26;13920:7;13902:13;10004:12:::0;;;9934:84;13901:48:::1;13881:68;;13951:13;13967:30;13992:4;13967:20;13985:1;13967:13;10004:12:::0;;;9934:84;13967:30:::1;13951:46;;14025:5;14016;:14;;:38;;;;;14049:5;14034:11;:20;;14016:38;:60;;;;;14071:5;14058:9;:18;;14016:60;14008:126;;;::::0;-1:-1:-1;;;14008:126:0;;7271:2:1;14008: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;;14008:126:0::1;7069:417:1::0;14008:126:0::1;14145:12;:20:::0;;;14167:14:::1;:28:::0;;;14197:15:::1;:27:::0;;;14240:61:::1;::::0;14285:15:::1;1361:25:1::0;;14167:28:0;;14197:27;;14145:20;;14240:61:::1;::::0;1349:2:1;1334:18;14240:61:0::1;;;;;;;13727:582;;;;13638:671:::0;;;:::o;19764:192::-;3778:4;3803:5;-1:-1:-1;;;;;3803:5:0;3690:10;3792:16;3674:38;;;;-1:-1:-1;;;3674:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19848:21:0;::::1;;::::0;;;:11:::1;:21;::::0;;;;;:32;;-1:-1:-1;;19848:32:0::1;::::0;::::1;;::::0;;::::1;::::0;;;19896:52;;19932:15:::1;::::0;19848:32;;19896:52:::1;::::0;::::1;19764:192:::0;;:::o;19964:140::-;20066:20;;20040:56;;-1:-1:-1;;;20040:56:0;;-1:-1:-1;;;;;20066:20:0;;;20040:56;;;6964:51:1;7031:18;;;7024:34;;;20040:25:0;;;;;;6937:18:1;;20040:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19964:140;;:::o;10681:138::-;10107:9;:18;;;;6961:42;10740:7;10107:18;;;;;10757:12;;10740:7;;10757:60;;10107:18;;10757:33;;:12;:16;:33::i;:::-;:37;;:60::i;:::-;10750:67;;10681:138;:::o;19215:541::-;3778:4;3803:5;-1:-1:-1;;;;;3803:5:0;3690:10;3792:16;3674:38;;;;-1:-1:-1;;;3674:38:0;;;;;;;:::i;:::-;19371:18:::1;:31:::0;;-1:-1:-1;;;;;;19371:31:0;;::::1;-1:-1:-1::0;;;;;19371:31:0;;::::1;::::0;;::::1;::::0;;;19404:18:::1;:31:::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;19437:20:::1;:35:::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;19474:16:::1;:27:::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;19503:14:::1;:23:::0;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;19537:23:0;;;:11:::1;:23:::0;;;;;;:30;;-1:-1:-1;;19537:30:0;;::::1;-1:-1:-1::0;19537:30:0;;::::1;::::0;;;19569:23;;;;;;:30;;;::::1;::::0;::::1;::::0;;19601:21;;;;;;:28;;;::::1;::::0;::::1;::::0;;19631:19;;;;;;;:26;;;;::::1;::::0;;::::1;::::0;;;19673:75;;19732:15:::1;1361:25:1::0;;19437:35:0;;19404:31;;19673:75:::1;::::0;1334:18:1;19673:75:0::1;;;;;;;19215:541:::0;;;;;:::o;10550:125::-;-1:-1:-1;;;;;10652:20:0;;10613:7;10652:20;;;:12;:20;;;;;;;;;10630:9;:17;;;;;;:43;;:21;:43::i;10133:139::-;10211:4;10218:40;10228:10;10240:9;10251:6;10218:9;:40::i;11925:434::-;12044:10;12031:24;;;;:12;:24;;;;;;;;;12005:9;:21;;;;;;;:51;;:25;:51::i;:::-;11995:6;:61;;11987:121;;;;-1:-1:-1;;;11987:121:0;;7943:2:1;11987: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;;11987:121:0;7741:411:1;11987:121:0;12119:15;;:50;;-1:-1:-1;;;12119:50:0;;12150:10;12119:50;;;6964:51:1;7031:18;;;7024:34;;;-1:-1:-1;;;;;12119:15:0;;;;:30;;6937:18:1;;12119:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12220:10:0;12207:24;;;;:12;:24;;;;;;:36;;-1:-1:-1;12207:24:0;-1:-1:-1;12236:6:0;12207:28;:36::i;:::-;12193:10;12180:24;;;;:12;:24;;;;;:63;12268:11;;:23;;12284:6;12268:15;:23::i;:::-;12254:11;:37;12307:44;;12335:15;;12327:6;;12315:10;;12307:44;;;;;11925:434;:::o;15219:189::-;3778:4;3803:5;-1:-1:-1;;;;;3803:5:0;3690:10;3792:16;3674:38;;;;-1:-1:-1;;;3674:38:0;;;;;;;:::i;:::-;15321:9:::1;:19:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;15321:19:0;;::::1;::::0;;;::::1;::::0;;;15342:16:::1;:26:::0;15370:18:::1;:30:::0;15219:189::o;13008:622::-;3778:4;3803:5;-1:-1:-1;;;;;3803:5:0;3690:10;3792:16;3674:38;;;;-1:-1:-1;;;3674:38:0;;;;;;;:::i;:::-;13203:12:::1;:25:::0;;;13230:12:::1;:25:::0;;;13257:8:::1;:17:::0;;;13276:10:::1;:21:::0;;;13308:14:::1;:29:::0;;;13339:8:::1;:17:::0;;;13358:7:::1;:15:::0;;;13375:11:::1;:20:::0;;;13426:11:::1;::::0;:18:::1;::::0;13442:1:::1;13426:15;:18::i;:::-;13414:8;;:30;;:63;;;;-1:-1:-1::0;13459:11:0::1;::::0;:18:::1;::::0;13475:1:::1;13459:15;:18::i;:::-;13448:7;;:29;;13414:63;:100;;;;-1:-1:-1::0;13496:11:0::1;::::0;:18:::1;::::0;13512:1:::1;13496:15;:18::i;:::-;13481:11;;:33;;13414:100;13406:148;;;::::0;-1:-1:-1;;;13406:148:0;;8359:2:1;13406: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;;13406:148:0::1;8157:399:1::0;13406:148:0::1;13606:15;13591:5;13583:6;13570:52;13598:6;13570:52;;;;1361:25:1::0;;1349:2;1334:18;;1215:177;13570:52:0::1;;;;;;;;13008:622:::0;;;;;;;;:::o;20112:415::-;3778:4;3803:5;-1:-1:-1;;;;;3803:5:0;3690:10;3792:16;3674:38;;;;-1:-1:-1;;;3674:38:0;;;;;;;:::i;:::-;20241:10:::1;:24:::0;;;20283:12:::1;::::0;:53:::1;::::0;20328:6:::1;::::0;20283:32:::1;::::0;20300:14;20283:16:::1;:32::i;:53::-;20267:13;:69:::0;20365:12:::1;::::0;:54:::1;::::0;20411:6:::1;::::0;20365:33:::1;::::0;20382:15;20365:16:::1;:33::i;:54::-;20348:14;:71:::0;20435:82:::1;::::0;20501:15:::1;1361:25:1::0;;20484:15:0;;20468:14;;20455:11;;20435:82:::1;::::0;1349:2:1;1334:18;20435:82:0::1;;;;;;;20112:415:::0;;;:::o;3816:111::-;3778:4;3803:5;-1:-1:-1;;;;;3803:5:0;3690:10;3792:16;3674:38;;;;-1:-1:-1;;;3674:38:0;;;;;;;:::i;:::-;3882:5:::1;:11:::0;;-1:-1:-1;;;;;;3882:11:0::1;-1:-1:-1::0;;;;;3882:11:0;::::1;::::0;;::::1;::::0;;;3900:25:::1;::::0;3461:51:1;;;3900:25:0::1;::::0;3449:2:1;3434:18;3900:25:0::1;;;;;;;3816:111:::0;:::o;12783:217::-;3778:4;3803:5;-1:-1:-1;;;;;3803:5:0;3690:10;3792:16;3674:38;;;;-1:-1:-1;;;3674:38:0;;;;;;;:::i;:::-;12858:15:::1;:44:::0;;-1:-1:-1;;;;;;12858:44:0::1;-1:-1:-1::0;;;;;12858:44:0;::::1;::::0;;::::1;::::0;;;-1:-1:-1;12904:21:0;;;:11:::1;:21;::::0;;;;;:28;;-1:-1:-1;;12904:28:0::1;-1:-1:-1::0;12904:28:0::1;::::0;;12948:44;12976:15:::1;::::0;12858:44;12948::::1;::::0;::::1;12783:217:::0;:::o;21813:335::-;-1:-1:-1;;;;;21906:19:0;;21898:68;;;;-1:-1:-1;;;21898:68:0;;8979:2:1;21898: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;;21898:68:0;8777:400:1;21898:68:0;-1:-1:-1;;;;;21985:21:0;;21977:68;;;;-1:-1:-1;;;21977:68:0;;9384:2:1;21977: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;;21977:68:0;9182:398:1;21977:68:0;-1:-1:-1;;;;;22056:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;22108:32;;1361:25:1;;;22108:32:0;;1334:18:1;22108:32:0;;;;;;;21813:335;;;:::o;11181:736::-;11270:37;11281:6;11289:9;11300:6;11270:10;:37::i;:::-;11318:38;11338:6;11346:9;11318:19;:38::i;:::-;11367:39;11380:6;11388:9;11399:6;11367:12;:39::i;:::-;11417:41;11432:6;11440:9;11451:6;11417:14;:41::i;:::-;11469;11484:6;11492:9;11503:6;11469:14;:41::i;:::-;11521:43;11538:6;11546:9;11557:6;11521:16;:43::i;:::-;11575:27;11584:6;11592:9;11575:8;:27::i;:::-;-1:-1:-1;;;;;11633:17:0;;;;;;:9;:17;;;;;;:29;;11655:6;11633:21;:29::i;:::-;-1:-1:-1;;;;;11613:17:0;;;;;;:9;:17;;;;;:49;;;;11698:32;11623:6;11720:9;11698:13;:32::i;:::-;:78;;11770:6;11698:78;;;11733:34;11741:6;11749:9;11760:6;11733:7;:34::i;:::-;-1:-1:-1;;;;;11810:20:0;;;;;;:9;:20;;;;;;11673:103;;-1:-1:-1;11810:40:0;;11673:103;11810:24;:40::i;:::-;-1:-1:-1;;;;;11787:20:0;;;;;;;:9;:20;;;;;;;:63;;;;11866:43;;;;;;;;;;11894:14;1361:25:1;;1349:2;1334:18;;1215:177;11866:43:0;;;;;;;;11259:658;11181:736;;;:::o;2055:162::-;2141:7;2187:12;2179:6;;;;2171:29;;;;-1:-1:-1;;;2171:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2209:5:0;;;2055:162::o;842:82::-;900:7;917:5;921:1;917;:5;:::i;930:82::-;988:7;1005:5;1009:1;1005;:5;:::i;1018:82::-;1076:7;1093:5;1097:1;1093;:5;:::i;754:82::-;812:7;829:5;833:1;829;:5;:::i;10827:346::-;-1:-1:-1;;;;;10931:20:0;;10923:70;;;;-1:-1:-1;;;10923:70:0;;10577:2:1;10923: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;;10923:70:0;10375:401:1;10923:70:0;-1:-1:-1;;;;;11012:23:0;;11004:71;;;;-1:-1:-1;;;11004:71:0;;10983:2:1;11004: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;;11004:71:0;10781:399:1;11004:71:0;-1:-1:-1;;;;;10107:18:0;;10090:7;10107:18;;;:9;:18;;;;;;11094:6;:27;;11086:79;;;;-1:-1:-1;;;11086:79:0;;11387:2:1;11086: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;;11086:79:0;11185:404:1;14317:206:0;-1:-1:-1;;;;;14410:19:0;;;;;;:11;:19;;;;;;;;14409:20;:47;;;;-1:-1:-1;;;;;;14434:22:0;;;;;;:11;:22;;;;;;;;14433:23;14409:47;14406:110;;;14466:14;;;;;;;14458:56;;;;-1:-1:-1;;;14458:56:0;;11796:2:1;14458:56:0;;;11778:21:1;11835:2;11815:18;;;11808:30;11874:31;11854:18;;;11847:59;11923:18;;14458:56:0;11594:353:1;14458:56:0;14317:206;;:::o;15973:525::-;-1:-1:-1;;;;;16074:20:0;;16105:1;16074:20;;;:12;:20;;;;;;:33;16071:160;;-1:-1:-1;;;;;16155:17:0;;;;;;:9;:17;;;;;;;;;16129:12;:20;;;;;;;16118:32;;:6;;:10;:32::i;:::-;16117:55;;16109:120;;;;-1:-1:-1;;;16109:120:0;;12154:2:1;16109: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;;16109:120:0;11952:416:1;16109:120:0;16254:4;;-1:-1:-1;;;;;16244:14:0;;;16254:4;;16244:14;16241:131;;16278:14;;16268:6;:24;;:47;;;-1:-1:-1;;;;;;16296:19:0;;;;;;:11;:19;;;;;;;;16268:47;:73;;;-1:-1:-1;;;;;;16319:22:0;;;;;;:11;:22;;;;;;;;16268:73;16260:110;;;;-1:-1:-1;;;16260:110:0;;12575:2:1;16260:110:0;;;12557:21:1;12614:2;12594:18;;;12587:30;-1:-1:-1;;;12633:18:1;;;12626:54;12697:18;;16260:110:0;12373:348:1;16260:110:0;16400:12;;16390:6;:22;;:45;;;-1:-1:-1;;;;;;16416:19:0;;;;;;:11;:19;;;;;;;;16390:45;:71;;;-1:-1:-1;;;;;;16439:22:0;;;;;;:11;:22;;;;;;;;16390:71;16382:108;;;;-1:-1:-1;;;16382:108:0;;12575:2:1;16382:108:0;;;12557:21:1;12614:2;12594:18;;;12587:30;-1:-1:-1;;;12633:18:1;;;12626:54;12697:18;;16382:108:0;12373:348:1;15416:338:0;-1:-1:-1;;;;;15520:19:0;;;;;;:11;:19;;;;;;;;15519:20;:47;;;;-1:-1:-1;;;;;;15544:22:0;;;;;;:11;:22;;;;;;;;15543:23;15519:47;:77;;;;-1:-1:-1;15591:4:0;;-1:-1:-1;;;;;15570:26:0;;;15591:4;;15570:26;;15519:77;:107;;;;-1:-1:-1;;;;;;15600:26:0;;6961:42;15600:26;;15519:107;15516:231;;;15688:15;;-1:-1:-1;;;;;15651:20:0;;;;;;:9;:20;;;;;;:32;;15676:6;15651:24;:32::i;:::-;15650:53;;15642:103;;;;-1:-1:-1;;;15642:103:0;;12928:2:1;15642: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;;15642:103:0;12726:401:1;14531:680:0;14629:9;;;;;;;:22;;;;-1:-1:-1;14643:8:0;;;;14642:9;14629:22;14626:578;;;14680:4;;-1:-1:-1;;;;;14667:17:0;;;14680:4;;14667:17;:41;;;;-1:-1:-1;;;;;;14689:19:0;;;;;;:11;:19;;;;;;;;14688:20;14667:41;14664:95;;;14727:14;;:30;;14754:1;14727:18;:30::i;:::-;14710:14;:47;14664:95;14782:4;;-1:-1:-1;;;;;14772:14:0;;;14782:4;;14772:14;:41;;;;-1:-1:-1;;;;;;14791:22:0;;;;;;:11;:22;;;;;;;;14790:23;14772:41;:73;;;;;14827:18;;14817:6;:28;;14772:73;14769:107;;;14872:1;14847:14;:27;14769:107;14906:16;;14889:14;;:33;14886:65;;;14924:18;:25;;-1:-1:-1;;14924:25:0;14945:4;14924:25;;;14886:65;14964:18;;;;:45;;;;-1:-1:-1;;;;;;14987:22:0;;;;;;:11;:22;;;;;;;;14986:23;14964:45;:69;;;;-1:-1:-1;;;;;;15014:19:0;;;;;;:11;:19;;;;;;;;15013:20;14964:69;14961:242;;;15067:4;;-1:-1:-1;;;;;15057:14:0;;;15067:4;;15057:14;15049:61;;;;-1:-1:-1;;;15049:61:0;;13334:2:1;15049:61:0;;;13316:21:1;13373:2;13353:18;;;13346:30;13412:34;13392:18;;;13385:62;-1:-1:-1;;;13463:18:1;;;13456:32;13505:19;;15049:61:0;13132:398:1;15049:61:0;15125:18;;15115:6;:28;15112:90;;15170:1;15145:14;:27;15174:18;:26;;-1:-1:-1;;15174:26:0;;;14531:680;;;:::o;15762:203::-;15875:4;;-1:-1:-1;;;;;15862:17:0;;;15875:4;;15862:17;:41;;;;-1:-1:-1;;;;;;15884:19:0;;;;;;:11;:19;;;;;;;;15883:20;15862:41;:69;;;;;15917:14;;15907:6;:24;;15862:69;15859:99;;;15954:1;15933:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;15762:203:0;;;:::o;18880:173::-;18956:33;18971:6;18979:9;18956:14;:33::i;:::-;18953:93;;;18991:29;19006:13;;18991:14;:29::i;:::-;19042:1;19022:9;:22;18880:173;;:::o;20535:160::-;-1:-1:-1;;;;;20641:19:0;;20616:4;20641:19;;;:11;:19;;;;;;;;20640:20;:47;;;;-1:-1:-1;;;;;;;20665:22:0;;;;;:11;:22;;;;;;;;20664:23;;20535:160;-1:-1:-1;20535:160:0:o;20930:558::-;21016:7;21072:1;21039:30;21051:6;21059:9;21039:11;:30::i;:::-;:34;21036:430;;;21085:17;21105:59;21133:30;21145:6;21153:9;21133:11;:30::i;:::-;21116:11;;21105:23;;:6;;:10;:23::i;:59::-;21220:4;21202:24;;;;:9;:24;;;;;;21085:79;;-1:-1:-1;21202:39:0;;21085:79;21202:28;:39::i;:::-;21193:4;21175:24;;;;:9;:24;;;;;;;:66;;;;21257:42;;-1:-1:-1;;;;;21257:42:0;;;;;;;21289:9;1361:25:1;;1349:2;1334:18;;1215:177;21257:42:0;;;;;;;;21313:8;;:21;21310:116;;21369:14;;21414:8;;21397:11;;21336:88;;21354:4;;-1:-1:-1;;;;;21369:14:0;;;;21386:37;;21414:8;21386:23;;:6;;:10;:23::i;:37::-;21336:9;:88::i;:::-;21443:21;:6;21454:9;21443:10;:21::i;:::-;21436:28;;;;;21036:430;-1:-1:-1;21474:6:0;20930:558;-1:-1:-1;;20930:558:0:o;18538:334::-;18687:13;;18677:4;18620;10107:18;;;:9;:18;;;;;;18719:8;;18620:4;;-1:-1:-1;18659:41:0;;18719:8;;18718:9;:24;;;;-1:-1:-1;18731:11:0;;;;18718:24;:42;;;;-1:-1:-1;18746:14:0;;;;;;;18718:42;:66;;;;-1:-1:-1;;;;;;18765:19:0;;;;;;:11;:19;;;;;;;;18764:20;18718:66;:101;;;;-1:-1:-1;18815:4:0;;-1:-1:-1;;;;;18802:17:0;;;18815:4;;18802:17;18718:101;:128;;;;;18836:10;;18823:9;;:23;;18718:128;:146;;;;;18850:14;18718:146;18711:153;18538:334;-1:-1:-1;;;;18538:334:0:o;16506:1214::-;6760:4;6749:8;;:15;;;;;;;;;;;;;;;;;;16577:20:::1;16600:82;16680:1;16601:73;16663:10;;16601:57;16643:14;;16601:37;16625:12;;16601:19;16618:1;16601:12;;:16;;:19;;;;:::i;:::-;:23:::0;::::1;:37::i;16600:82::-;16577:105;;16693:32;16728:42;16757:12;16728:24;16739:12;;16728:6;:10;;:24;;;;:::i;:42::-;16693:77:::0;-1:-1:-1;16781:14:0::1;16798:36;:6:::0;16693:77;16798:10:::1;:36::i;:::-;16781:53:::0;-1:-1:-1;16870:21:0::1;16902:24;16781:53:::0;16902:16:::1;:24::i;:::-;16937:20;16960:41;:21;16986:14:::0;16960:25:::1;:41::i;:::-;16937:64;;17012:19;17033:48;17050:30;17067:12;;17050;:16;;:30;;;;:::i;:::-;17033:12:::0;;:16:::1;:48::i;:::-;17012:69;;17092:29;17124;17140:12;;17124:11;:15;;:29;;;;:::i;:::-;17092:61:::0;-1:-1:-1;17167:34:0;;17164:123:::1;;17265:18;::::0;17203:81:::1;::::0;17216:24;;17242:21;;-1:-1:-1;;;;;17265:18:0::1;17203:12;:81::i;:::-;17346:12;::::0;17297:23:::1;::::0;17323:36:::1;::::0;:18:::1;:11:::0;17339:1:::1;17323:15;:18::i;:36::-;17297:62:::0;-1:-1:-1;17373:19:0;;17370:79:::1;;17402:18;::::0;17394:53:::1;::::0;-1:-1:-1;;;;;17402:18:0;;::::1;::::0;17394:53;::::1;;;::::0;17431:15;;17402:18:::1;17394:53:::0;17402:18;17394:53;17431:15;17402:18;17394:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;17370:79;17506:10;::::0;17459:21:::1;::::0;17483:34:::1;::::0;:18:::1;:11:::0;17499:1:::1;17483:15;:18::i;:34::-;17459:58:::0;-1:-1:-1;17531:17:0;;17528:73:::1;;17558:16;::::0;17550:49:::1;::::0;-1:-1:-1;;;;;17558:16:0;;::::1;::::0;17550:49;::::1;;;::::0;17585:13;;17558:16:::1;17550:49:::0;17558:16;17550:49;17585:13;17558:16;17550:49;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;17528:73;17614:21;:34:::0;17611:102:::1;;17658:20;::::0;17650:61:::1;::::0;-1:-1:-1;;;;;17658:20:0;;::::1;::::0;17689:21:::1;17650:61:::0;::::1;;;::::0;17658:20:::1;17650:61:::0;17658:20;17650:61;17689:21;17658:20;17650:61;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;17611:102;-1:-1:-1::0;;6769:8:0;:16;;-1:-1:-1;;6769:16:0;;;-1:-1:-1;;;;;;;;16506:1214:0:o;20703:219::-;20818:4;;20782:7;;-1:-1:-1;;;;;20818:4:0;;;20805:17;;;;20802:38;;-1:-1:-1;20831:7:0;;20824:14;;20802:38;20863:4;;-1:-1:-1;;;;;20863:4:0;;;20853:14;;;;20850:36;;-1:-1:-1;20876:8:0;;20869:15;;20850:36;-1:-1:-1;20903:11:0;;20703:219;;;;:::o;18096:434::-;18186:16;;;18200:1;18186:16;;;;;;;;18162:21;;18186:16;;;;;;;;;;-1:-1:-1;18186:16:0;18162:40;;18231:4;18213;18218:1;18213:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18213:23:0;;;:7;;;;;;;;;;:23;;;;18257:6;;:13;;;-1:-1:-1;;;18257:13:0;;;;:6;;;;;:11;;:13;;;;;18213:7;;18257:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18247:4;18252:1;18247:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18247:23:0;;;:7;;;;;;;;;:23;18313:6;;18281:53;;18298:4;;18313:6;18322:11;18281:8;:53::i;:::-;18345:6;;:177;;-1:-1:-1;;;18345:177:0;;-1:-1:-1;;;;;18345:6:0;;;;:57;;:177;;18417:11;;18345:6;;18459:4;;18486;;18506:15;;18345:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18151:379;18096:434;:::o;17728:360::-;17859:6;;17827:53;;17844:4;;-1:-1:-1;;;;;17859:6:0;17868:11;17827:8;:53::i;:::-;17891:6;;:189;;-1:-1:-1;;;17891:189:0;;17954:4;17891:189;;;15381:34:1;15431:18;;;15424:34;;;17891:6:0;15474:18:1;;;15467:34;;;15517:18;;;15510:34;-1:-1:-1;;;;;15581:15:1;;;15560:19;;;15553:44;18064:15:0;15613:19:1;;;15606:35;17891:6:0;;;;:22;;17921:9;;15315:19:1;;17891: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;3523:813::-;3618:6;3626;3634;3642;3650;3703:3;3691:9;3682:7;3678:23;3674:33;3671:53;;;3720:1;3717;3710:12;3671:53;3759:9;3746:23;3778:31;3803:5;3778:31;:::i;:::-;3828:5;-1:-1:-1;3885:2:1;3870:18;;3857:32;3898:33;3857:32;3898:33;:::i;:::-;3950:7;-1:-1:-1;4009:2:1;3994:18;;3981:32;4022:33;3981:32;4022:33;:::i;:::-;4074:7;-1:-1:-1;4133:2:1;4118:18;;4105:32;4146:33;4105:32;4146:33;:::i;:::-;4198:7;-1:-1:-1;4257:3:1;4242:19;;4229:33;4271;4229;4271;:::i;:::-;4323:7;4313:17;;;3523:813;;;;;;;;:::o;4341:377::-;4415:6;4423;4431;4484:2;4472:9;4463:7;4459:23;4455:32;4452:52;;;4500:1;4497;4490:12;4452:52;4539:9;4526:23;4558:28;4580:5;4558:28;:::i;:::-;4605:5;4657:2;4642:18;;4629:32;;-1:-1:-1;4708:2:1;4693:18;;;4680:32;;4341:377;-1:-1:-1;;;4341:377:1: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;13667:127::-;13728:10;13723:3;13719:20;13716:1;13709:31;13759:4;13756:1;13749:15;13783:4;13780:1;13773:15;13799:251;13869:6;13922:2;13910:9;13901:7;13897:23;13893:32;13890:52;;;13938:1;13935;13928:12;13890:52;13970:9;13964:16;13989:31;14014:5;13989:31;:::i;14055:980::-;14317:4;14365:3;14354:9;14350:19;14396:6;14385:9;14378:25;14422:2;14460:6;14455:2;14444:9;14440:18;14433:34;14503:3;14498:2;14487:9;14483:18;14476:31;14527:6;14562;14556:13;14593:6;14585;14578:22;14631:3;14620:9;14616:19;14609:26;;14670:2;14662:6;14658:15;14644:29;;14691:1;14701:195;14715:6;14712:1;14709:13;14701:195;;;14780:13;;-1:-1:-1;;;;;14776:39:1;14764:52;;14871:15;;;;14836:12;;;;14812:1;14730:9;14701:195;;;-1:-1:-1;;;;;;;14952:32:1;;;;14947:2;14932:18;;14925:60;-1:-1:-1;;;15016:3:1;15001:19;14994:35;14913:3;14055:980;-1:-1:-1;;;14055:980:1:o;15652:306::-;15740:6;15748;15756;15809:2;15797:9;15788:7;15784:23;15780:32;15777:52;;;15825:1;15822;15815:12;15777:52;15854:9;15848:16;15838:26;;15904:2;15893:9;15889:18;15883:25;15873:35;;15948:2;15937:9;15933:18;15927:25;15917:35;;15652:306;;;;;:::o

Swarm Source

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