Token Hatter

Overview ERC20

Price
$0.00 @ 0.000000 AVAX
Fully Diluted Market Cap
Total Supply:
1,000,000,000,000,000 Hatter

Holders:
3,498 addresses
Contract:
0x01c5e2a4af2bd9f62c7d55c6105b8a64e6905be50x01c5E2a4af2bd9f62c7d55C6105b8a64e6905be5

Decimals:
9

Social Profiles:
Not Available, Update ?

Balance
155,426,559,693,652.212666748 Hatter

Value
$0.00
0x01c5e2a4af2bd9f62c7d55c6105b8a64e6905be5
Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
Hatter

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-11-22
*/

/**
 *Submitted for verification at snowtrace.io on 2021-11-21
*/

/**
SPDX-License-Identifier: Unlicensed
*/

pragma solidity ^0.8.0;

/**
 * SAFEMATH LIBRARY
 */
library SafeMath {
    
    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 {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            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 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 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 IBEP20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    /**
     * Function modifier to require caller to be contract owner
     */
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    /**
     * Function modifier to require caller to be authorized
     */
    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    /**
     * Authorize address. Owner only
     */
    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    /**
     * Remove address' authorization. Owner only
     */
    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

    /**
     * Check if address is owner
     */
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    /**
     * Return address' authorization status
     */
    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    /**
     * Transfer ownership to new address. Caller must be owner. Leaves old owner authorized
     */
    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

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

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

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

    function addLiquidityAVAX(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountAVAXMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountAVAX, uint liquidity);

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

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

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

interface IDividendDistributor {
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
    function process(uint256 gas) external;
}

contract DividendDistributor is IDividendDistributor {
    using SafeMath for uint256;

    address _token;

    struct Share {
        uint256 amount;
        uint256 totalExcluded;// excluded dividend
        uint256 totalRealised;
    }

    IBEP20 BUSD = IBEP20(0xb54f16fB19478766A268F172C9480f8da1a7c9C3);
    address WAVAX = 0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7;
    IDEXRouter router;

    address[] shareholders;
    mapping (address => uint256) shareholderIndexes;
    mapping (address => uint256) shareholderClaims;

    mapping (address => Share) public shares;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;// to be shown in UI
    uint256 public dividendsPerShare;
    uint256 public dividendsPerShareAccuracyFactor = 10 ** 36;

    uint256 public minPeriod = 1 hours;
    uint256 public minDistribution = 1 * (10 ** 18);

    uint256 currentIndex;

    bool initialized;
    modifier initialization() {
        require(!initialized);
        _;
        initialized = true;
    }

    modifier onlyToken() {
        require(msg.sender == _token); _;
    }

    constructor (address _router) {
        router = _router != address(0)
        ? IDEXRouter(_router)
        : IDEXRouter(0x60aE616a2155Ee3d9A68541Ba4544862310933d4);
        _token = msg.sender;
    }

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyToken {
        minPeriod = _minPeriod;
        minDistribution = _minDistribution;
    }

    function setShare(address shareholder, uint256 amount) external override onlyToken {
        if(shares[shareholder].amount > 0){
            distributeDividend(shareholder);
        }

        if(amount > 0 && shares[shareholder].amount == 0){
            addShareholder(shareholder);
        }else if(amount == 0 && shares[shareholder].amount > 0){
            removeShareholder(shareholder);
        }

        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }

    function deposit() external payable override onlyToken {
        uint256 balanceBefore = BUSD.balanceOf(address(this));

        address[] memory path = new address[](2);
        path[0] = WAVAX;
        path[1] = address(BUSD);

        router.swapExactAVAXForTokensSupportingFeeOnTransferTokens{value: msg.value}(
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amount = BUSD.balanceOf(address(this)).sub(balanceBefore);

        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }

    function process(uint256 gas) external override onlyToken {
        uint256 shareholderCount = shareholders.length;

        if(shareholderCount == 0) { return; }

        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();

        uint256 iterations = 0;

        while(gasUsed < gas && iterations < shareholderCount) {
            if(currentIndex >= shareholderCount){
                currentIndex = 0;
            }

            if(shouldDistribute(shareholders[currentIndex])){
                distributeDividend(shareholders[currentIndex]);
            }

            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }

    function shouldDistribute(address shareholder) internal view returns (bool) {
        return shareholderClaims[shareholder] + minPeriod < block.timestamp
        && getUnpaidEarnings(shareholder) > minDistribution;
    }

    function distributeDividend(address shareholder) internal {
        if(shares[shareholder].amount == 0){ return; }

        uint256 amount = getUnpaidEarnings(shareholder);
        if(amount > 0){
            totalDistributed = totalDistributed.add(amount);
            BUSD.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }

    function claimDividend() external {
        distributeDividend(msg.sender);
    }
/*
returns the  unpaid earnings
*/
    function getUnpaidEarnings(address shareholder) public view returns (uint256) {
        if(shares[shareholder].amount == 0){ return 0; }

        uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;

        if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];
        shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
}

contract Hatter is IBEP20, Auth {
    using SafeMath for uint256;

    uint256 public constant MASK = type(uint128).max;
    address BUSD = 0xb54f16fB19478766A268F172C9480f8da1a7c9C3;
    address public WAVAX = 0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    address DEAD_NON_CHECKSUM = 0x000000000000000000000000000000000000dEaD;

    string constant _name = "Hatter";
    string constant _symbol = "Hatter";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1_000_000_000_000_000 * (10 ** _decimals);
    uint256 public _maxTxAmount = _totalSupply.div(200); // 0.55%
	uint256 public _maxWallet = _totalSupply.div(100); // 1%

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) isDividendExempt;
    mapping (address => bool) public _isFree;

    uint256 liquidityFee = 200;
    uint256 buybackFee = 0;
    uint256 reflectionFee = 700;
    uint256 marketingFee = 400;
    uint256 totalFee = 1300;
    uint256 feeDenominator = 10000;

    address public autoLiquidityReceiver;
    address public marketingFeeReceiver=0x57c69c79f303F68D463C11d4dd828dD97c3f49e4;

    uint256 targetLiquidity = 25;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    address public pair;

    uint256 public launchedAt;
    uint256 public launchedAtTimestamp;

    uint256 buybackMultiplierNumerator = 200;
    uint256 buybackMultiplierDenominator = 100;
    uint256 buybackMultiplierTriggeredAt;
    uint256 buybackMultiplierLength = 30 minutes;

    bool public autoBuybackEnabled = false;
    mapping (address => bool) buyBacker;
    uint256 autoBuybackCap;
    uint256 autoBuybackAccumulator;
    uint256 autoBuybackAmount;
    uint256 autoBuybackBlockPeriod;
    uint256 autoBuybackBlockLast;

    DividendDistributor distributor;
    address public distributorAddress;

    uint256 distributorGas = 500000;

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

    constructor (
        address _dexRouter, address _marketingAddress, address _wAVAX
    ) Auth(msg.sender) {
        router = IDEXRouter(_dexRouter);
        WAVAX=_wAVAX;
        pair = IDEXFactory(router.factory()).createPair(_wAVAX, address(this));
        _allowances[address(this)][address(router)] = _totalSupply;
        WAVAX = router.WAVAX();
        distributor = new DividendDistributor(_dexRouter);
        distributorAddress = address(distributor);

        isFeeExempt[msg.sender] = true;
        isTxLimitExempt[msg.sender] = true;
        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;
        buyBacker[msg.sender] = true;

        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = _marketingAddress;

        approve(_dexRouter, _totalSupply);
        approve(address(pair), _totalSupply);
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }
    

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner; }
    modifier onlyBuybacker() { require(buyBacker[msg.sender] == true, ""); _; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

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

    function approveMax(address spender) external returns (bool) {
        return approve(spender, _totalSupply);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != _totalSupply){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }
		 
		// Max  tx check
		address routerAddress = 0x60aE616a2155Ee3d9A68541Ba4544862310933d4;
		bool isBuy=sender== pair|| sender == routerAddress;
        bool isSell=recipient== pair|| recipient == routerAddress;
		
		checkTxLimit(sender, amount);
		
		// Max wallet check excluding pair and router
		if (!isSell && !_isFree[recipient]){
			require((_balances[recipient] + amount) < _maxWallet, "Max wallet has been triggered");
		}
		
		// No swapping on buy and tx
		if (isSell) {
			if(shouldSwapBack()){ swapBack(); }
			if(shouldAutoBuyback()){ triggerAutoBuyback(); }
		}
        //        if(!launched() && recipient == pair){ require(_balances[sender] > 0); launch(); }

        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = shouldTakeFee(sender) ? takeFee(sender, recipient, amount) : amount;

        _balances[recipient] = _balances[recipient].add(amountReceived);

        if(!isDividendExempt[sender]){ try distributor.setShare(sender, _balances[sender]) {} catch {} }
        if(!isDividendExempt[recipient]){ try distributor.setShare(recipient, _balances[recipient]) {} catch {} }

        try distributor.process(distributorGas) {} catch {}

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
//        emit Transfer(sender, recipient, amount);
        return true;
    }



    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }

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

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

    function getMultipliedFee() public view returns (uint256) {
        /**
         * if (launchedAtTimestamp + 1 days > block.timestamp) {
            return totalFee.mul(18000).div(feeDenominator);
        } else if (buybackMultiplierTriggeredAt.add(buybackMultiplierLength) > block.timestamp) {
            uint256 remainingTime = buybackMultiplierTriggeredAt.add(buybackMultiplierLength).sub(block.timestamp);
            uint256 feeIncrease = totalFee.mul(buybackMultiplierNumerator).div(buybackMultiplierDenominator).sub(totalFee);
            return totalFee.add(feeIncrease.mul(remainingTime).div(buybackMultiplierLength));
        }
        */
        return totalFee;
    }

    function takeFee(address sender, address receiver, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount.mul(getTotalFee(receiver == pair)).div(feeDenominator);

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

        return amount.sub(feeAmount);
    }

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

    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

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

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

        uint256 amountAVAX = address(this).balance.sub(balanceBefore);

        uint256 totalAVAXFee = totalFee.sub(dynamicLiquidityFee.div(2));

        uint256 amountAVAXLiquidity = amountAVAX.mul(dynamicLiquidityFee).div(totalAVAXFee).div(2);
        uint256 amountAVAXReflection = amountAVAX.mul(reflectionFee).div(totalAVAXFee);
        uint256 amountAVAXMarketing = amountAVAX.mul(marketingFee).div(totalAVAXFee);

        try distributor.deposit{value: amountAVAXReflection}() {} catch {}
        payable(marketingFeeReceiver).transfer(amountAVAXMarketing);
            
        

        if(amountToLiquify > 0){
            router.addLiquidityAVAX{value: amountAVAXLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountAVAXLiquidity, amountToLiquify);
        }
    }

    function shouldAutoBuyback() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && autoBuybackEnabled
        && autoBuybackBlockLast + autoBuybackBlockPeriod <= block.number // After N blocks from last buyback
        && address(this).balance >= autoBuybackAmount;
    }

    function triggerZeusBuyback(uint256 amount, bool triggerBuybackMultiplier) external authorized {
        buyTokens(amount, DEAD);
        if(triggerBuybackMultiplier){
            buybackMultiplierTriggeredAt = block.timestamp;
            emit BuybackMultiplierActive(buybackMultiplierLength);
        }
    }

    function clearBuybackMultiplier() external authorized {
        buybackMultiplierTriggeredAt = 0;
    }

    function triggerAutoBuyback() internal {
        buyTokens(autoBuybackAmount, DEAD);
        autoBuybackBlockLast = block.number;
        autoBuybackAccumulator = autoBuybackAccumulator.add(autoBuybackAmount);
        if(autoBuybackAccumulator > autoBuybackCap){ autoBuybackEnabled = false; }
    }

    function buyTokens(uint256 amount, address to) internal swapping {
        address[] memory path = new address[](2);
        path[0] = WAVAX;
        path[1] = address(this);

        router.swapExactAVAXForTokensSupportingFeeOnTransferTokens{value: amount}(
            0,
            path,
            to,
            block.timestamp
        );
    }
    
    function Sweep() external onlyOwner {
        uint256 balance = address(this).balance;
        payable(msg.sender).transfer(balance);
    }


    function setAutoBuybackSettings(bool _enabled, uint256 _cap, uint256 _amount, uint256 _period) external authorized {
        autoBuybackEnabled = _enabled;
        autoBuybackCap = _cap;
        autoBuybackAccumulator = 0;
        autoBuybackAmount = _amount;
        autoBuybackBlockPeriod = _period;
        autoBuybackBlockLast = block.number;
    }

    function setBuybackMultiplierSettings(uint256 numerator, uint256 denominator, uint256 length) external authorized {
        require(numerator / denominator <= 2 && numerator > denominator);
        buybackMultiplierNumerator = numerator;
        buybackMultiplierDenominator = denominator;
        buybackMultiplierLength = length;
    }

    function launched() internal view returns (bool) {
        return launchedAt != 0;
    }

    function launch() public authorized {
        require(launchedAt == 0, "Already launched boi");
        launchedAt = block.number;
        launchedAtTimestamp = block.timestamp;
    }
	
	function setMaxWallet(uint256 amount) external authorized {
        require(amount >= _totalSupply / 1000);
        _maxWallet = amount;
    }

    function setTxLimit(uint256 amount) external authorized {
        require(amount >= _totalSupply / 1000);
        _maxTxAmount = amount;
    }

    function setIsDividendExempt(address holder, bool exempt) external authorized {
        require(holder != address(this) && holder != pair);
        isDividendExempt[holder] = exempt;
        if(exempt){
            distributor.setShare(holder, 0);
        }else{
            distributor.setShare(holder, _balances[holder]);
        }
    }

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

    function setIsTxLimitExempt(address holder, bool exempt) external authorized {
        isTxLimitExempt[holder] = exempt;
    }
    
    function setFree(address holder) public onlyOwner {
        _isFree[holder] = true;
    }
    
    function unSetFree(address holder) public onlyOwner {
        _isFree[holder] = false;
    }
    
    function checkFree(address holder) public view onlyOwner returns(bool){
        return _isFree[holder];
    }

    function setFees(uint256 _liquidityFee, uint256 _buybackFee, uint256 _reflectionFee, uint256 _marketingFee, uint256 _feeDenominator) external authorized {
        liquidityFee = _liquidityFee;
        buybackFee = _buybackFee;
        reflectionFee = _reflectionFee;
        marketingFee = _marketingFee;
        totalFee = _liquidityFee.add(_buybackFee).add(_reflectionFee).add(_marketingFee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator/4);
    }

    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver) external authorized {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }

    function setTargetLiquidity(uint256 _target, uint256 _denominator) external authorized {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external authorized {
        distributor.setDistributionCriteria(_minPeriod, _minDistribution);
    }

    function setDistributorSettings(uint256 gas) external authorized {
        require(gas < 750000);
        distributorGas = gas;
    }

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

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }

    event AutoLiquify(uint256 amountAVAX, uint256 amountBOG);
    event BuybackMultiplierActive(uint256 duration);
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_dexRouter","type":"address"},{"internalType":"address","name":"_marketingAddress","type":"address"},{"internalType":"address","name":"_wAVAX","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountAVAX","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"duration","type":"uint256"}],"name":"BuybackMultiplierActive","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MASK","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Sweep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"WAVAX","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isFree","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoBuybackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"checkFree","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearBuybackMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"distributorAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMultipliedFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"selling","type":"bool"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAtTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_cap","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"setAutoBuybackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"name":"setBuybackMultiplierSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_buybackFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"setFree","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"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"},{"internalType":"bool","name":"triggerBuybackMultiplier","type":"bool"}],"name":"triggerZeusBuyback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"unSetFree","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600280546001600160a01b031990811673b54f16fb19478766a268f172c9480f8da1a7c9c31790915560038054821673b31f66aa3c1e785363f0875a1b74e27b85fd66c717905560048054821661dead9081179091556005805483169055600680549092161790556200007a6009600a620006c1565b6200008d9066038d7ea4c6800062000780565b600755620000ad60c86007546200053e60201b620015451790919060201c565b600855620000cd60646007546200053e60201b620015451790919060201c565b60095560c8601081905560006011556102bc601255610190601355610514601455612710601555601780546001600160a01b0319167357c69c79f303f68d463c11d4dd828dd97c3f49e417905560196018819055606490819055601e91909155601f556107086021556022805460ff199081169091556207a120602b55602c8054909116600117905560075462000168906107d09062000655565b602d553480156200017857600080fd5b5060405162003bb538038062003bb58339810160408190526200019b916200060b565b60008054336001600160a01b031991821681178355825260016020818152604093849020805460ff1916909217909155601a805483166001600160a01b038881169182179092556003805490941691861691909117909255825163c45a015560e01b81529251919263c45a01559260048083019392829003018186803b1580156200022557600080fd5b505afa1580156200023a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002609190620005ed565b6040516364e329cb60e11b81526001600160a01b038381166004830152306024830152919091169063c9c6539690604401602060405180830381600087803b158015620002ac57600080fd5b505af1158015620002c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e79190620005ed565b601b80546001600160a01b0319166001600160a01b03928316179055600754306000908152600b60209081526040808320601a8054871685529083529281902093909355905482516339d94ae160e11b815292519316926373b295c2926004808201939291829003018186803b1580156200036157600080fd5b505afa15801562000376573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200039c9190620005ed565b600380546001600160a01b0319166001600160a01b03929092169190911790556040518390620003cc90620005c2565b6001600160a01b039091168152602001604051809103906000f080158015620003f9573d6000803e3d6000fd5b50602980546001600160a01b039283166001600160a01b03199182168117909255602a80548216909217909155336000818152600c60209081526040808320805460ff199081166001908117909255600d84528285208054821683179055601b5488168552600e845282852080548216831790553085528285208054821683179055600454881685528285208054821683179055858552602390935292208054909116909117905560168054831690911790556017805492851692909116919091179055600754620004cd90849062000555565b50601b54600754620004e9916001600160a01b03169062000555565b50600754336000818152600a6020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050620007b8565b60006200054c828462000655565b90505b92915050565b336000818152600b602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590620005b19086815260200190565b60405180910390a350600192915050565b610e588062002d5d83390190565b80516001600160a01b0381168114620005e857600080fd5b919050565b6000602082840312156200060057600080fd5b6200054c82620005d0565b6000806000606084860312156200062157600080fd5b6200062c84620005d0565b92506200063c60208501620005d0565b91506200064c60408501620005d0565b90509250925092565b6000826200067357634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115620006b95781600019048211156200069d576200069d620007a2565b80851615620006ab57918102915b93841c93908002906200067d565b509250929050565b60006200054c60ff841683600082620006dd575060016200054f565b81620006ec575060006200054f565b8160018114620007055760028114620007105762000730565b60019150506200054f565b60ff841115620007245762000724620007a2565b50506001821b6200054f565b5060208310610133831016604e8410600b841016171562000755575081810a6200054f565b62000761838362000678565b8060001904821115620007785762000778620007a2565b029392505050565b60008160001904831182151516156200079d576200079d620007a2565b500290565b634e487b7160e01b600052601160045260246000fd5b61259580620007c86000396000f3fe60806040526004361061036f5760003560e01c806382247ec0116101c6578063d51ed1c8116100f7578063f1f3bca311610095578063f708a64f1161006f578063f708a64f14610a06578063f84ba65d14610a26578063f887ea4014610a46578063fe9fbb8014610a6657600080fd5b8063f1f3bca3146109a6578063f2fde38b146109c6578063f5cfec0a146109e657600080fd5b8063df20fd49116100d1578063df20fd4914610922578063e91f214e14610942578063e96fada214610966578063f0b37c041461098657600080fd5b8063d51ed1c8146108a7578063d806d12f146108c7578063dd62ed3e146108dc57600080fd5b8063a8aa1b3111610164578063b6a5d7de1161013e578063b6a5d7de1461083b578063bf56b3711461085b578063c6d2577d14610871578063ca33e64c1461088757600080fd5b8063a8aa1b31146107e6578063a9059cbb14610806578063b210b06d1461082657600080fd5b806395d89b41116101a057806395d89b41146103fb5780639d1944f514610786578063a4b45c00146107a6578063a51af4c5146107c657600080fd5b806382247ec014610732578063893d20e81461074857806389ef69f61461076657600080fd5b80632d48e896116102a05780635d0044ca1161023e5780637088fb7f116102185780637088fb7f1461069957806370a08231146106ae57806373b295c2146106e45780637d1db4a51461071c57600080fd5b80635d0044ca1461063f578063658d4b7f1461065f5780636ddd17131461067f57600080fd5b80633425c0011161027a5780633425c001146105c55780633bb8a8d4146105e5578063571ac8b0146105ff5780635c85974f1461061f57600080fd5b80632d48e8961461055a5780632f54bf6e1461057a578063313ce567146105a957600080fd5b80631161ae391161030d5780632375ce40116102e75780632375ce40146104d557806323b872dd146104f5578063296020e7146105155780632b112e491461054557600080fd5b80631161ae391461048057806318160ddd146104a0578063201e7991146104b557600080fd5b806304a66b481161034957806304a66b48146103db57806306fdde03146103fb57806307c89fe814610430578063095ea7b31461046057600080fd5b806301339c211461037b5780630445b66714610392578063048c7baf146103bb57600080fd5b3661037657005b600080fd5b34801561038757600080fd5b50610390610a86565b005b34801561039e57600080fd5b506103a8602d5481565b6040519081526020015b60405180910390f35b3480156103c757600080fd5b506103906103d6366004612230565b610b05565b3480156103e757600080fd5b506103906103f6366004612321565b610b53565b34801561040757600080fd5b5060408051808201825260068152652430ba3a32b960d11b602082015290516103b291906123d5565b34801561043c57600080fd5b5061045061044b366004612101565b610bc9565b60405190151581526020016103b2565b34801561046c57600080fd5b5061045061047b3660046121cd565b610c17565b34801561048c57600080fd5b5061045061049b3660046122a5565b610c83565b3480156104ac57600080fd5b506007546103a8565b3480156104c157600080fd5b506103906104d03660046122a5565b610c97565b3480156104e157600080fd5b506103906104f03660046122c7565b610cc7565b34801561050157600080fd5b50610450610510366004612157565b610d1c565b34801561052157600080fd5b50610450610530366004612101565b600f6020526000908152604090205460ff1681565b34801561055157600080fd5b506103a8610de0565b34801561056657600080fd5b506103906105753660046122a5565b610e32565b34801561058657600080fd5b50610450610595366004612101565b6000546001600160a01b0391821691161490565b3480156105b557600080fd5b50604051600981526020016103b2565b3480156105d157600080fd5b506103906105e0366004612101565b610ec1565b3480156105f157600080fd5b506022546104509060ff1681565b34801561060b57600080fd5b5061045061061a366004612101565b610f0c565b34801561062b57600080fd5b5061039061063a366004612269565b610f20565b34801561064b57600080fd5b5061039061065a366004612269565b610f66565b34801561066b57600080fd5b5061039061067a366004612198565b610fac565b34801561068b57600080fd5b50602c546104509060ff1681565b3480156106a557600080fd5b50610390610ffc565b3480156106ba57600080fd5b506103a86106c9366004612101565b6001600160a01b03166000908152600a602052604090205490565b3480156106f057600080fd5b50600354610704906001600160a01b031681565b6040516001600160a01b0390911681526020016103b2565b34801561072857600080fd5b506103a860085481565b34801561073e57600080fd5b506103a860095481565b34801561075457600080fd5b506000546001600160a01b0316610704565b34801561077257600080fd5b50610390610781366004612101565b611059565b34801561079257600080fd5b506103906107a1366004612269565b6110a7565b3480156107b257600080fd5b506103906107c136600461211e565b6110e0565b3480156107d257600080fd5b50602a54610704906001600160a01b031681565b3480156107f257600080fd5b50601b54610704906001600160a01b031681565b34801561081257600080fd5b506104506108213660046121cd565b611133565b34801561083257600080fd5b50610390611140565b34801561084757600080fd5b50610390610856366004612101565b61116c565b34801561086757600080fd5b506103a8601c5481565b34801561087d57600080fd5b506103a8601d5481565b34801561089357600080fd5b50601654610704906001600160a01b031681565b3480156108b357600080fd5b506103a86108c2366004612269565b6111bd565b3480156108d357600080fd5b506014546103a8565b3480156108e857600080fd5b506103a86108f736600461211e565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205490565b34801561092e57600080fd5b5061039061093d366004612214565b611201565b34801561094e57600080fd5b506103a86fffffffffffffffffffffffffffffffff81565b34801561097257600080fd5b50601754610704906001600160a01b031681565b34801561099257600080fd5b506103906109a1366004612101565b61123d565b3480156109b257600080fd5b506103a86109c13660046121f9565b611288565b3480156109d257600080fd5b506103906109e1366004612101565b6112bd565b3480156109f257600080fd5b50610390610a01366004612282565b611353565b348015610a1257600080fd5b50610390610a21366004612198565b6113d3565b348015610a3257600080fd5b50610390610a41366004612198565b6114d7565b348015610a5257600080fd5b50601a54610704906001600160a01b031681565b348015610a7257600080fd5b50610450610a81366004612101565b611527565b610a8f33611527565b610ab45760405162461bcd60e51b8152600401610aab9061244a565b60405180910390fd5b601c5415610afb5760405162461bcd60e51b8152602060048201526014602482015273416c7265616479206c61756e6368656420626f6960601b6044820152606401610aab565b43601c5542601d55565b610b0e33611527565b610b2a5760405162461bcd60e51b8152600401610aab9061244a565b6022805460ff191694151594909417909355602491909155600060255560265560275543602855565b610b5c33611527565b610b785760405162461bcd60e51b8152600401610aab9061244a565b6010859055601184905560128390556013829055610ba282610b9c85818989611551565b90611551565b6014556015819055610bb56004826124c3565b60145410610bc257600080fd5b5050505050565b600080546001600160a01b03163314610bf45760405162461bcd60e51b8152600401610aab9061242a565b506001600160a01b0381166000908152600f602052604090205460ff165b919050565b336000818152600b602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610c729086815260200190565b60405180910390a350600192915050565b600082610c8f836111bd565b119392505050565b610ca033611527565b610cbc5760405162461bcd60e51b8152600401610aab9061244a565b601891909155601955565b610cd033611527565b610cec5760405162461bcd60e51b8152600401610aab9061244a565b6002610cf883856124c3565b11158015610d0557508183115b610d0e57600080fd5b601e92909255601f55602155565b6007546001600160a01b0384166000908152600b60209081526040808320338452909152812054909114610dcb576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600b82528381203382529091529190912054610da691849061155d565b6001600160a01b0385166000908152600b602090815260408083203384529091529020555b610dd6848484611589565b90505b9392505050565b6005546001600160a01b03166000908152600a6020526040812054610e2d906004546001600160a01b03166000908152600a6020526040902054610e2790600754906119aa565b906119aa565b905090565b610e3b33611527565b610e575760405162461bcd60e51b8152600401610aab9061244a565b6029546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b158015610ea557600080fd5b505af1158015610eb9573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610eeb5760405162461bcd60e51b8152600401610aab9061242a565b6001600160a01b03166000908152600f60205260409020805460ff19169055565b6000610f1a82600754610c17565b92915050565b610f2933611527565b610f455760405162461bcd60e51b8152600401610aab9061244a565b6103e8600754610f5591906124c3565b811015610f6157600080fd5b600855565b610f6f33611527565b610f8b5760405162461bcd60e51b8152600401610aab9061244a565b6103e8600754610f9b91906124c3565b811015610fa757600080fd5b600955565b610fb533611527565b610fd15760405162461bcd60e51b8152600401610aab9061244a565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146110265760405162461bcd60e51b8152600401610aab9061242a565b6040514790339082156108fc029083906000818181858888f19350505050158015611055573d6000803e3d6000fd5b5050565b6000546001600160a01b031633146110835760405162461bcd60e51b8152600401610aab9061242a565b6001600160a01b03166000908152600f60205260409020805460ff19166001179055565b6110b033611527565b6110cc5760405162461bcd60e51b8152600401610aab9061244a565b620b71b081106110db57600080fd5b602b55565b6110e933611527565b6111055760405162461bcd60e51b8152600401610aab9061244a565b601680546001600160a01b039384166001600160a01b03199182161790915560178054929093169116179055565b6000610dd9338484611589565b61114933611527565b6111655760405162461bcd60e51b8152600401610aab9061244a565b6000602055565b6000546001600160a01b031633146111965760405162461bcd60e51b8152600401610aab9061242a565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6000610f1a6111ca610de0565b601b546001600160a01b03166000908152600a60205260409020546111fb906111f49060026119b6565b85906119b6565b90611545565b61120a33611527565b6112265760405162461bcd60e51b8152600401610aab9061244a565b602c805460ff191692151592909217909155602d55565b6000546001600160a01b031633146112675760405162461bcd60e51b8152600401610aab9061242a565b6001600160a01b03166000908152600160205260409020805460ff19169055565b600043601c54600161129a91906124ab565b106112a757505060145490565b81156112b557505060145490565b505060145490565b6000546001600160a01b031633146112e75760405162461bcd60e51b8152600401610aab9061242a565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b61135c33611527565b6113785760405162461bcd60e51b8152600401610aab9061244a565b60045461138f9083906001600160a01b03166119c2565b8015611055574260209081556021546040519081527f39d2389ec5c1fa77b2c0d374bc61b6d7bd97ccba280fcdeb4e9c7644898d7c3a910160405180910390a15050565b6113dc33611527565b6113f85760405162461bcd60e51b8152600401610aab9061244a565b6001600160a01b038216301480159061141f5750601b546001600160a01b03838116911614155b61142857600080fd5b6001600160a01b0382166000908152600e60205260409020805460ff1916821580159190911790915561148e57602954604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca9690604401610e8b565b6029546001600160a01b038381166000818152600a602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401610e8b565b6114e033611527565b6114fc5760405162461bcd60e51b8152600401610aab9061244a565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205460ff1690565b6000610dd982846124c3565b6000610dd982846124ab565b600081848411156115815760405162461bcd60e51b8152600401610aab91906123d5565b505050900390565b602e5460009060ff16156115a9576115a2848484611acb565b9050610dd9565b601b547360ae616a2155ee3d9a68541ba4544862310933d4906000906001600160a01b03878116911614806115ef5750816001600160a01b0316866001600160a01b0316145b601b549091506000906001600160a01b03878116911614806116225750826001600160a01b0316866001600160a01b0316145b905061162e8786611b6e565b8015801561165557506001600160a01b0386166000908152600f602052604090205460ff16155b156116ce576009546001600160a01b0387166000908152600a60205260409020546116819087906124ab565b106116ce5760405162461bcd60e51b815260206004820152601d60248201527f4d61782077616c6c657420686173206265656e207472696767657265640000006044820152606401610aab565b80156116fe576116dc611bd7565b156116e9576116e9611c26565b6116f1611f94565b156116fe576116fe611fef565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038a166000908152600a909152919091205461175091879061155d565b6001600160a01b0388166000908152600a6020908152604080832093909355600c90529081205460ff16156117855785611790565b611790888888612036565b6001600160a01b0388166000908152600a60205260409020549091506117b69082611551565b6001600160a01b038089166000908152600a6020908152604080832094909455918b168152600e909152205460ff1661185a576029546001600160a01b038981166000818152600a602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561184757600080fd5b505af1925050508015611858575060015b505b6001600160a01b0387166000908152600e602052604090205460ff166118eb576029546001600160a01b038881166000818152600a602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b1580156118d857600080fd5b505af19250505080156118e9575060015b505b602954602b546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c479916119239160040190815260200190565b600060405180830381600087803b15801561193d57600080fd5b505af192505050801561194e575060015b50866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161199491815260200190565b60405180910390a3506001979650505050505050565b6000610dd98284612504565b6000610dd982846124e5565b602e805460ff19166001179055604080516002808252606082018352600092602083019080368337505060035482519293506001600160a01b031691839150600090611a1057611a10612531565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611a4457611a44612531565b6001600160a01b039283166020918202929092010152601a5460405163c57559dd60e01b815291169063c57559dd908590611a8a906000908690889042906004016123a0565b6000604051808303818588803b158015611aa357600080fd5b505af1158015611ab7573d6000803e3d6000fd5b5050602e805460ff19169055505050505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600a90915291822054611b1c91849061155d565b6001600160a01b038086166000908152600a60205260408082209390935590851681522054611b4b9083611551565b6001600160a01b0384166000908152600a60205260409020555060019392505050565b60085481111580611b9757506001600160a01b0382166000908152600d602052604090205460ff165b6110555760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610aab565b601b546000906001600160a01b03163314801590611bf85750602e5460ff16155b8015611c065750602c5460ff165b8015610e2d575050602d54306000908152600a6020526040902054101590565b602e805460ff19166001179055601854601954600091611c4591610c83565b611c5157601054611c54565b60005b90506000611c7860026111fb6014546111fb86602d546119b690919063ffffffff16565b90506000611c9182602d546119aa90919063ffffffff16565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611ccb57611ccb612531565b6001600160a01b039283166020918202929092010152600354825191169082906001908110611cfc57611cfc612531565b6001600160a01b039283166020918202929092010152601a54604051633b158ab160e11b81524792919091169063762b156290611d4690869060009087903090429060040161246f565b600060405180830381600087803b158015611d6057600080fd5b505af1158015611d74573d6000803e3d6000fd5b505050506000611d8d82476119aa90919063ffffffff16565b90506000611da8611d9f886002611545565b601454906119aa565b90506000611dbd60026111fb8481878d6119b6565b90506000611dda836111fb601254876119b690919063ffffffff16565b90506000611df7846111fb601354886119b690919063ffffffff16565b9050602960009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015611e4957600080fd5b505af193505050508015611e5b575060015b506017546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611e96573d6000803e3d6000fd5b508815611f7e57601a54601654604051637c8d9fb960e11b8152306004820152602481018c905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f91b3f7290859060c4016060604051808303818588803b158015611f0857600080fd5b505af1158015611f1c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f4191906122f3565b505060408051858152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050602e805460ff191690555050505050505050565b601b546000906001600160a01b03163314801590611fb55750602e5460ff16155b8015611fc3575060225460ff165b8015611fde575043602754602854611fdb91906124ab565b11155b8015610e2d57505060265447101590565b60265460045461200891906001600160a01b03166119c2565b4360285560265460255461201b91611551565b60258190556024541015612034576022805460ff191690555b565b601554601b54600091829161206891906111fb90612061906001600160a01b03898116911614611288565b86906119b6565b306000908152600a60205260409020549091506120859082611551565b306000818152600a6020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906120d69085815260200190565b60405180910390a36120e883826119aa565b95945050505050565b80358015158114610c1257600080fd5b60006020828403121561211357600080fd5b8135610dd981612547565b6000806040838503121561213157600080fd5b823561213c81612547565b9150602083013561214c81612547565b809150509250929050565b60008060006060848603121561216c57600080fd5b833561217781612547565b9250602084013561218781612547565b929592945050506040919091013590565b600080604083850312156121ab57600080fd5b82356121b681612547565b91506121c4602084016120f1565b90509250929050565b600080604083850312156121e057600080fd5b82356121eb81612547565b946020939093013593505050565b60006020828403121561220b57600080fd5b610dd9826120f1565b6000806040838503121561222757600080fd5b6121eb836120f1565b6000806000806080858703121561224657600080fd5b61224f856120f1565b966020860135965060408601359560600135945092505050565b60006020828403121561227b57600080fd5b5035919050565b6000806040838503121561229557600080fd5b823591506121c4602084016120f1565b600080604083850312156122b857600080fd5b50508035926020909101359150565b6000806000606084860312156122dc57600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561230857600080fd5b8351925060208401519150604084015190509250925092565b600080600080600060a0868803121561233957600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600081518084526020808501945080840160005b838110156123955781516001600160a01b031687529582019590820190600101612370565b509495945050505050565b8481526080602082015260006123b9608083018661235c565b6001600160a01b03949094166040830152506060015292915050565b600060208083528351808285015260005b81811015612402578581018301518582016040015282016123e6565b81811115612414576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b85815284602082015260a06040820152600061248e60a083018661235c565b6001600160a01b0394909416606083015250608001529392505050565b600082198211156124be576124be61251b565b500190565b6000826124e057634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156124ff576124ff61251b565b500290565b6000828210156125165761251661251b565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461255c57600080fd5b5056fea2646970667358221220715feae6e536f4698d98a6982f6dcc5ed89179d3926202c84937dc95d2e19e5664736f6c634300080700336080604052600180546001600160a01b031990811673b54f16fb19478766a268f172c9480f8da1a7c9c3179091556002805490911673b31f66aa3c1e785363f0875a1b74e27b85fd66c71790556ec097ce7bc90715b34b9f1000000000600c55610e10600d55670de0b6b3a7640000600e5534801561007d57600080fd5b50604051610e58380380610e5883398101604081905261009c916100f6565b6001600160a01b0381166100c4577360ae616a2155ee3d9a68541ba4544862310933d46100c6565b805b600380546001600160a01b03929092166001600160a01b0319928316179055600080549091163317905550610126565b60006020828403121561010857600080fd5b81516001600160a01b038116811461011f57600080fd5b9392505050565b610d23806101356000396000f3fe6080604052600436106100dd5760003560e01c8063ce7c2ac21161007f578063efca2eed11610059578063efca2eed14610224578063f0fc6bca1461023a578063ffb2c4791461024f578063ffd49c841461026f57600080fd5b8063ce7c2ac2146101af578063d0e30db014610206578063e2d2e2191461020e57600080fd5b80632d48e896116100bb5780632d48e8961461014d5780633a98ef391461016d5780634fab0ae814610183578063997664d71461019957600080fd5b806311ce023d146100e257806314b6ca961461010b57806328fd31981461012d575b600080fd5b3480156100ee57600080fd5b506100f8600c5481565b6040519081526020015b60405180910390f35b34801561011757600080fd5b5061012b610126366004610b16565b610285565b005b34801561013957600080fd5b506100f8610148366004610afb565b6103fd565b34801561015957600080fd5b5061012b610168366004610b94565b610486565b34801561017957600080fd5b506100f860085481565b34801561018f57600080fd5b506100f8600e5481565b3480156101a557600080fd5b506100f860095481565b3480156101bb57600080fd5b506101eb6101ca366004610afb565b60076020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610102565b61012b6104a8565b34801561021a57600080fd5b506100f8600b5481565b34801561023057600080fd5b506100f8600a5481565b34801561024657600080fd5b5061012b6106f5565b34801561025b57600080fd5b5061012b61026a366004610b62565b610700565b34801561027b57600080fd5b506100f8600d5481565b6000546001600160a01b0316331461029c57600080fd5b6001600160a01b038216600090815260076020526040902054156102c3576102c382610800565b6000811180156102e957506001600160a01b038216600090815260076020526040902054155b1561034f57600480546001600160a01b0384166000818152600560205260408120839055600183018455929092527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319169091179055610382565b8015801561037457506001600160a01b03821660009081526007602052604090205415155b15610382576103828261092b565b6001600160a01b0382166000908152600760205260409020546008546103b39183916103ad91610a40565b90610a53565b6008556001600160a01b03821660009081526007602052604090208190556103da81610a5f565b6001600160a01b0390921660009081526007602052604090206001019190915550565b6001600160a01b03811660009081526007602052604081205461042257506000919050565b6001600160a01b03821660009081526007602052604081205461044490610a5f565b6001600160a01b038416600090815260076020526040902060010154909150808211610474575060009392505050565b61047e8282610a40565b949350505050565b6000546001600160a01b0316331461049d57600080fd5b600d91909155600e55565b6000546001600160a01b031633146104bf57600080fd5b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b15801561050357600080fd5b505afa158015610517573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053b9190610b7b565b6040805160028082526060820183529293506000929091602083019080368337505060025482519293506001600160a01b03169183915060009061058157610581610cd7565b6001600160a01b03928316602091820292909201015260018054835192169183919081106105b1576105b1610cd7565b6001600160a01b03928316602091820292909201015260035460405163c57559dd60e01b815291169063c57559dd9034906105f790600090869030904290600401610bb6565b6000604051808303818588803b15801561061057600080fd5b505af1158015610624573d6000803e3d6000fd5b50506001546040516370a0823160e01b8152306004820152600094506106b393508692506001600160a01b03909116906370a082319060240160206040518083038186803b15801561067557600080fd5b505afa158015610689573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ad9190610b7b565b90610a40565b6009549091506106c39082610a53565b600955600854600c546106ed916106e4916106de9085610a82565b90610a8e565b600b5490610a53565b600b55505050565b6106fe33610800565b565b6000546001600160a01b0316331461071757600080fd5b60045480610723575050565b6000805a905060005b848310801561073a57508381105b156107f95783600f541061074e576000600f555b6107806004600f548154811061076657610766610cd7565b6000918252602090912001546001600160a01b0316610a9a565b156107b7576107b76004600f548154811061079d5761079d610cd7565b6000918252602090912001546001600160a01b0316610800565b6107cc6107c55a8490610a40565b8490610a53565b92505a600f805491935060006107e183610c90565b919050555080806107f190610c90565b91505061072c565b5050505050565b6001600160a01b0381166000908152600760205260409020546108205750565b600061082b826103fd565b9050801561092757600a546108409082610a53565b600a5560015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb90604401602060405180830381600087803b15801561089157600080fd5b505af11580156108a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c99190610b40565b506001600160a01b038216600090815260066020908152604080832042905560079091529020600201546108fd9082610a53565b6001600160a01b03831660009081526007602052604090206002810191909155546103da90610a5f565b5050565b6004805461093b90600190610c79565b8154811061094b5761094b610cd7565b60009182526020808320909101546001600160a01b038481168452600590925260409092205460048054929093169291811061098957610989610cd7565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600591829052604081205460048054919392916109d590600190610c79565b815481106109e5576109e5610cd7565b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610a1b57610a1b610cc1565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610a4c8284610c79565b9392505050565b6000610a4c8284610c20565b6000610a7c600c546106de600b5485610a8290919063ffffffff16565b92915050565b6000610a4c8284610c5a565b6000610a4c8284610c38565b600d546001600160a01b03821660009081526006602052604081205490914291610ac49190610c20565b108015610a7c5750600e54610ad8836103fd565b1192915050565b80356001600160a01b0381168114610af657600080fd5b919050565b600060208284031215610b0d57600080fd5b610a4c82610adf565b60008060408385031215610b2957600080fd5b610b3283610adf565b946020939093013593505050565b600060208284031215610b5257600080fd5b81518015158114610a4c57600080fd5b600060208284031215610b7457600080fd5b5035919050565b600060208284031215610b8d57600080fd5b5051919050565b60008060408385031215610ba757600080fd5b50508035926020909101359150565b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015610c005784516001600160a01b031683529383019391830191600101610bdb565b50506001600160a01b039690961660408501525050506060015292915050565b60008219821115610c3357610c33610cab565b500190565b600082610c5557634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615610c7457610c74610cab565b500290565b600082821015610c8b57610c8b610cab565b500390565b6000600019821415610ca457610ca4610cab565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea2646970667358221220a11b21a4834de23230af7eddf958947c47be858966d47a49485a5ba5715bbc8164736f6c6343000807003300000000000000000000000060ae616a2155ee3d9a68541ba4544862310933d400000000000000000000000057c69c79f303f68d463c11d4dd828dd97c3f49e4000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c7

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000060aE616a2155Ee3d9A68541Ba4544862310933d400000000000000000000000057c69c79f303F68D463C11d4dd828dD97c3f49e4000000000000000000000000B31f66AA3C1e785363F0875A1B74E27b85FD66c7

-----Decoded View---------------
Arg [0] : _dexRouter (address): 0x60ae616a2155ee3d9a68541ba4544862310933d4
Arg [1] : _marketingAddress (address): 0x57c69c79f303f68d463c11d4dd828dd97c3f49e4
Arg [2] : _wAVAX (address): 0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 00000000000000000000000060aE616a2155Ee3d9A68541Ba4544862310933d4
Arg [1] : 00000000000000000000000057c69c79f303F68D463C11d4dd828dD97c3f49e4
Arg [2] : 000000000000000000000000B31f66AA3C1e785363F0875A1B74E27b85FD66c7


Deployed ByteCode Sourcemap

12788:16378:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25689:187;;;;;;;;;;;;;:::i;:::-;;15035:50;;;;;;;;;;;;;;;;;;;10271:25:1;;;10259:2;10244:18;15035:50:0;;;;;;;;24874:359;;;;;;;;;;-1:-1:-1;24874:359:0;;;;;:::i;:::-;;:::i;27139:496::-;;;;;;;;;;-1:-1:-1;27139:496:0;;;;;:::i;:::-;;:::i;16540:80::-;;;;;;;;;;-1:-1:-1;16612:5:0;;;;;;;;;;;-1:-1:-1;;;16612:5:0;;;;16540:80;;;;16612:5;16540:80;:::i;27020:111::-;;;;;;;;;;-1:-1:-1;27020:111:0;;;;;:::i;:::-;;:::i;:::-;;;7028:14:1;;7021:22;7003:41;;6991:2;6976:18;27020:111:0;6863:187:1;17043:216:0;;;;;;;;;;-1:-1:-1;17043:216:0;;;;;:::i;:::-;;:::i;28894:150::-;;;;;;;;;;-1:-1:-1;28894:150:0;;;;;:::i;:::-;;:::i;16270:88::-;;;;;;;;;;-1:-1:-1;16343:12:0;;16270:88;;28043:183;;;;;;;;;;-1:-1:-1;28043:183:0;;;;;:::i;:::-;;:::i;25241:342::-;;;;;;;;;;-1:-1:-1;25241:342:0;;;;;:::i;:::-;;:::i;17556:365::-;;;;;;;;;;-1:-1:-1;17556:365:0;;;;;:::i;:::-;;:::i;13832:40::-;;;;;;;;;;-1:-1:-1;13832:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;28569:142;;;;;;;;;;;;;:::i;28234:183::-;;;;;;;;;;-1:-1:-1;28234:183:0;;;;;:::i;:::-;;:::i;4599:103::-;;;;;;;;;;-1:-1:-1;4599:103:0;;;;;:::i;:::-;4654:4;4689:5;-1:-1:-1;;;;;4678:16:0;;;4689:5;;4678:16;;4599:103;16364:80;;;;;;;;;;-1:-1:-1;16364:80:0;;13367:1;11289:36:1;;11277:2;11262:18;16364:80:0;11147:184:1;26914:94:0;;;;;;;;;;-1:-1:-1;26914:94:0;;;;;:::i;:::-;;:::i;14619:38::-;;;;;;;;;;-1:-1:-1;14619:38:0;;;;;;;;17267:117;;;;;;;;;;-1:-1:-1;17267:117:0;;;;;:::i;:::-;;:::i;26035:145::-;;;;;;;;;;-1:-1:-1;26035:145:0;;;;;:::i;:::-;;:::i;25882:::-;;;;;;;;;;-1:-1:-1;25882:145:0;;;;;:::i;:::-;;:::i;26543:120::-;;;;;;;;;;-1:-1:-1;26543:120:0;;;;;:::i;:::-;;:::i;14998:30::-;;;;;;;;;;-1:-1:-1;14998:30:0;;;;;;;;24722:142;;;;;;;;;;;;;:::i;16791:105::-;;;;;;;;;;-1:-1:-1;16791:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;16875:18:0;16857:7;16875:18;;;:9;:18;;;;;;;16791:105;12981:65;;;;;;;;;;-1:-1:-1;12981:65:0;;;;-1:-1:-1;;;;;12981:65:0;;;;;;-1:-1:-1;;;;;5425:32:1;;;5407:51;;5395:2;5380:18;12981:65:0;5261:203:1;13448:51:0;;;;;;;;;;;;;;;;13512:49;;;;;;;;;;;;;;;;16626:78;;;;;;;;;;-1:-1:-1;16678:7:0;16696:5;-1:-1:-1;;;;;16696:5:0;16626:78;;26811:91;;;;;;;;;;-1:-1:-1;26811:91:0;;;;;:::i;:::-;;:::i;28425:136::-;;;;;;;;;;-1:-1:-1;28425:136:0;;;;;:::i;:::-;;:::i;27643:228::-;;;;;;;;;;-1:-1:-1;27643:228:0;;;;;:::i;:::-;;:::i;14916:33::-;;;;;;;;;;-1:-1:-1;14916:33:0;;;;-1:-1:-1;;;;;14916:33:0;;;14324:19;;;;;;;;;;-1:-1:-1;14324:19:0;;;;-1:-1:-1;;;;;14324:19:0;;;17392:156;;;;;;;;;;-1:-1:-1;17392:156:0;;;;;:::i;:::-;;:::i;23923:105::-;;;;;;;;;;;;;:::i;4272:94::-;;;;;;;;;;-1:-1:-1;4272:94:0;;;;;:::i;:::-;;:::i;14352:25::-;;;;;;;;;;;;;;;;14384:34;;;;;;;;;;;;;;;;14079:36;;;;;;;;;;-1:-1:-1;14079:36:0;;;;-1:-1:-1;;;;;14079:36:0;;;28719:167;;;;;;;;;;-1:-1:-1;28719:167:0;;;;;:::i;:::-;;:::i;20302:691::-;;;;;;;;;;-1:-1:-1;20977:8:0;;20302:691;;16902:133;;;;;;;;;;-1:-1:-1;16902:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;17004:19:0;;;16986:7;17004:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;16902:133;27879:156;;;;;;;;;;-1:-1:-1;27879:156:0;;;;;:::i;:::-;;:::i;12862:48::-;;;;;;;;;;-1:-1:-1;12862:48:0;12893:17;12862:48;;14122:78;;;;;;;;;;-1:-1:-1;14122:78:0;;;;-1:-1:-1;;;;;14122:78:0;;;4442:97;;;;;;;;;;-1:-1:-1;4442:97:0;;;;;:::i;:::-;;:::i;20090:204::-;;;;;;;;;;-1:-1:-1;20090:204:0;;;;;:::i;:::-;;:::i;4999:173::-;;;;;;;;;;-1:-1:-1;4999:173:0;;;;;:::i;:::-;;:::i;23599:316::-;;;;;;;;;;-1:-1:-1;23599:316:0;;;;;:::i;:::-;;:::i;26188:347::-;;;;;;;;;;-1:-1:-1;26188:347:0;;;;;:::i;:::-;;:::i;26671:128::-;;;;;;;;;;-1:-1:-1;26671:128:0;;;;;:::i;:::-;;:::i;14293:24::-;;;;;;;;;;-1:-1:-1;14293:24:0;;;;-1:-1:-1;;;;;14293:24:0;;;4773:107;;;;;;;;;;-1:-1:-1;4773:107:0;;;;;:::i;:::-;;:::i;25689:187::-;4157:24;4170:10;4157:12;:24::i;:::-;4149:48;;;;-1:-1:-1;;;4149:48:0;;;;;;;:::i;:::-;;;;;;;;;25744:10:::1;::::0;:15;25736:48:::1;;;::::0;-1:-1:-1;;;25736:48:0;;9304:2:1;25736:48:0::1;::::0;::::1;9286:21:1::0;9343:2;9323:18;;;9316:30;-1:-1:-1;;;9362:18:1;;;9355:50;9422:18;;25736:48:0::1;9102:344:1::0;25736:48:0::1;25808:12;25795:10;:25:::0;25853:15:::1;25831:19;:37:::0;25689:187::o;24874:359::-;4157:24;4170:10;4157:12;:24::i;:::-;4149:48;;;;-1:-1:-1;;;4149:48:0;;;;;;;:::i;:::-;25000:18:::1;:29:::0;;-1:-1:-1;;25000:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;25040:14:::1;:21:::0;;;;-1:-1:-1;25072:22:0::1;:26:::0;25109:17:::1;:27:::0;25147:22:::1;:32:::0;25213:12:::1;25190:20;:35:::0;24874:359::o;27139:496::-;4157:24;4170:10;4157:12;:24::i;:::-;4149:48;;;;-1:-1:-1;;;4149:48:0;;;;;;;:::i;:::-;27303:12:::1;:28:::0;;;27342:10:::1;:24:::0;;;27377:13:::1;:30:::0;;;27418:12:::1;:28:::0;;;27468:69:::1;27433:13:::0;27468:50:::1;27393:14:::0;27468:50;27318:13;27355:11;27468:17:::1;:30::i;:::-;:34:::0;::::1;:50::i;:69::-;27457:8;:80:::0;27548:14:::1;:32:::0;;;27610:16:::1;27625:1;27565:15:::0;27610:16:::1;:::i;:::-;27599:8;;:27;27591:36;;;::::0;::::1;;27139:496:::0;;;;;:::o;27020:111::-;27085:4;4689:5;;-1:-1:-1;;;;;4689:5:0;3996:10;4678:16;3980:38;;;;-1:-1:-1;;;3980:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;27108:15:0;::::1;;::::0;;;:7:::1;:15;::::0;;;;;::::1;;4020:1;27020:111:::0;;;:::o;17043:216::-;17147:10;17118:4;17135:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;17135:32:0;;;;;;;;;;:41;;;17192:37;17118:4;;17135:32;;17192:37;;;;17170:6;10271:25:1;;10259:2;10244:18;;10125:177;17192:37:0;;;;;;;;-1:-1:-1;17247:4:0;17043:216;;;;:::o;28894:150::-;28974:4;29030:6;28998:29;29018:8;28998:19;:29::i;:::-;:38;;28894:150;-1:-1:-1;;;28894:150:0:o;28043:183::-;4157:24;4170:10;4157:12;:24::i;:::-;4149:48;;;;-1:-1:-1;;;4149:48:0;;;;;;;:::i;:::-;28141:15:::1;:25:::0;;;;28177:26:::1;:41:::0;28043:183::o;25241:342::-;4157:24;4170:10;4157:12;:24::i;:::-;4149:48;;;;-1:-1:-1;;;4149:48:0;;;;;;;:::i;:::-;25401:1:::1;25374:23;25386:11:::0;25374:9;:23:::1;:::i;:::-;:28;;:55;;;;;25418:11;25406:9;:23;25374:55;25366:64;;;::::0;::::1;;25441:26;:38:::0;;;;25490:28:::1;:42:::0;25543:23:::1;:32:::0;25241:342::o;17556:365::-;17711:12;;-1:-1:-1;;;;;17676:19:0;;17656:4;17676:19;;;:11;:19;;;;;;;;17696:10;17676:31;;;;;;;;17656:4;;17676:47;17673:181;;17773:69;;;;;;;;;;;-1:-1:-1;;;17773:69:0;;;;;;;;-1:-1:-1;;;;;17773:19:0;;-1:-1:-1;17773:19:0;;;:11;:19;;;;;17793:10;17773:31;;;;;;;;;;:69;;17809:6;;17773:35;:69::i;:::-;-1:-1:-1;;;;;17739:19:0;;;;;;:11;:19;;;;;;;;17759:10;17739:31;;;;;;;:103;17673:181;17873:40;17887:6;17895:9;17906:6;17873:13;:40::i;:::-;17866:47;;17556:365;;;;;;:::o;28569:142::-;28697:4;;-1:-1:-1;;;;;28697:4:0;28622:7;16875:18;;;:9;:18;;;;;;28649:54;;28676:4;;-1:-1:-1;;;;;28676:4:0;16857:7;16875:18;;;:9;:18;;;;;;28649:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;28642:61;;28569:142;:::o;28234:183::-;4157:24;4170:10;4157:12;:24::i;:::-;4149:48;;;;-1:-1:-1;;;4149:48:0;;;;;;;:::i;:::-;28344:11:::1;::::0;:65:::1;::::0;-1:-1:-1;;;28344:65:0;;::::1;::::0;::::1;11068:25:1::0;;;11109:18;;;11102:34;;;-1:-1:-1;;;;;28344:11:0;;::::1;::::0;:35:::1;::::0;11041:18:1;;28344:65:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;28234:183:::0;;:::o;26914:94::-;4654:4;4689:5;-1:-1:-1;;;;;4689:5:0;3996:10;4678:16;3980:38;;;;-1:-1:-1;;;3980:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26977:15:0::1;26995:5;26977:15:::0;;;:7:::1;:15;::::0;;;;:23;;-1:-1:-1;;26977:23:0::1;::::0;;26914:94::o;17267:117::-;17322:4;17346:30;17354:7;17363:12;;17346:7;:30::i;:::-;17339:37;17267:117;-1:-1:-1;;17267:117:0:o;26035:145::-;4157:24;4170:10;4157:12;:24::i;:::-;4149:48;;;;-1:-1:-1;;;4149:48:0;;;;;;;:::i;:::-;26135:4:::1;26120:12;;:19;;;;:::i;:::-;26110:6;:29;;26102:38;;;::::0;::::1;;26151:12;:21:::0;26035:145::o;25882:::-;4157:24;4170:10;4157:12;:24::i;:::-;4149:48;;;;-1:-1:-1;;;4149:48:0;;;;;;;:::i;:::-;25984:4:::1;25969:12;;:19;;;;:::i;:::-;25959:6;:29;;25951:38;;;::::0;::::1;;26000:10;:19:::0;25882:145::o;26543:120::-;4157:24;4170:10;4157:12;:24::i;:::-;4149:48;;;;-1:-1:-1;;;4149:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26627:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;26627:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26543:120::o;24722:142::-;4654:4;4689:5;-1:-1:-1;;;;;4689:5:0;3996:10;4678:16;3980:38;;;;-1:-1:-1;;;3980:38:0;;;;;;;:::i;:::-;24819:37:::1;::::0;24787:21:::1;::::0;24827:10:::1;::::0;24819:37;::::1;;;::::0;24787:21;;24769:15:::1;24819:37:::0;24769:15;24819:37;24787:21;24827:10;24819:37;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;24758:106;24722:142::o:0;26811:91::-;4654:4;4689:5;-1:-1:-1;;;;;4689:5:0;3996:10;4678:16;3980:38;;;;-1:-1:-1;;;3980:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26872:15:0::1;;::::0;;;:7:::1;:15;::::0;;;;:22;;-1:-1:-1;;26872:22:0::1;26890:4;26872:22;::::0;;26811:91::o;28425:136::-;4157:24;4170:10;4157:12;:24::i;:::-;4149:48;;;;-1:-1:-1;;;4149:48:0;;;;;;;:::i;:::-;28515:6:::1;28509:3;:12;28501:21;;;::::0;::::1;;28533:14;:20:::0;28425:136::o;27643:228::-;4157:24;4170:10;4157:12;:24::i;:::-;4149:48;;;;-1:-1:-1;;;4149:48:0;;;;;;;:::i;:::-;27762:21:::1;:46:::0;;-1:-1:-1;;;;;27762:46:0;;::::1;-1:-1:-1::0;;;;;;27762:46:0;;::::1;;::::0;;;27819:20:::1;:44:::0;;;;;::::1;::::0;::::1;;::::0;;27643:228::o;17392:156::-;17472:4;17496:44;17510:10;17522:9;17533:6;17496:13;:44::i;23923:105::-;4157:24;4170:10;4157:12;:24::i;:::-;4149:48;;;;-1:-1:-1;;;4149:48:0;;;;;;;:::i;:::-;24019:1:::1;23988:28;:32:::0;23923:105::o;4272:94::-;4654:4;4689:5;-1:-1:-1;;;;;4689:5:0;3996:10;4678:16;3980:38;;;;-1:-1:-1;;;3980:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4332:19:0::1;;::::0;;;4354:4:::1;4332:19;::::0;;;;;;;:26;;-1:-1:-1;;4332:26:0::1;::::0;;::::1;::::0;;4272:94::o;28719:167::-;28787:7;28814:64;28855:22;:20;:22::i;:::-;28837:4;;-1:-1:-1;;;;;28837:4:0;16857:7;16875:18;;;:9;:18;;;;;;28814:36;;28827:22;;28847:1;28827:19;:22::i;:::-;28814:8;;:12;:36::i;:::-;:40;;:64::i;27879:156::-;4157:24;4170:10;4157:12;:24::i;:::-;4149:48;;;;-1:-1:-1;;;4149:48:0;;;;;;;:::i;:::-;27971:11:::1;:22:::0;;-1:-1:-1;;27971:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;28004:13:::1;:23:::0;27879:156::o;4442:97::-;4654:4;4689:5;-1:-1:-1;;;;;4689:5:0;3996:10;4678:16;3980:38;;;;-1:-1:-1;;;3980:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4504:19:0::1;4526:5;4504:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;4504:27:0::1;::::0;;4442:97::o;20090:204::-;20146:7;20187:12;20169:10;;20182:1;20169:14;;;;:::i;:::-;:30;20166:54;;-1:-1:-1;;20209:8:0;;;20090:204::o;20166:54::-;20233:7;20230:31;;;-1:-1:-1;;20250:8:0;;;20090:204::o;20230:31::-;-1:-1:-1;;20278:8:0;;;20090:204::o;4999:173::-;4654:4;4689:5;-1:-1:-1;;;;;4689:5:0;3996:10;4678:16;3980:38;;;;-1:-1:-1;;;3980:38:0;;;;;;;:::i;:::-;5075:5:::1;:11:::0;;-1:-1:-1;;;;;;5075:11:0::1;-1:-1:-1::0;;;;;5075:11:0;::::1;::::0;;::::1;::::0;;5097:19;;;-1:-1:-1;5097:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;5097:26:0::1;::::0;;::::1;::::0;;;5139:25;;5407:51:1;;;5139:25:0::1;::::0;5380:18:1;5139:25:0::1;;;;;;;4999:173:::0;:::o;23599:316::-;4157:24;4170:10;4157:12;:24::i;:::-;4149:48;;;;-1:-1:-1;;;4149:48:0;;;;;;;:::i;:::-;23723:4:::1;::::0;23705:23:::1;::::0;23715:6;;-1:-1:-1;;;;;23723:4:0::1;23705:9;:23::i;:::-;23742:24;23739:169;;;23813:15;23782:28;:46:::0;;;23872:23:::1;::::0;23848:48:::1;::::0;10271:25:1;;;23848:48:0::1;::::0;10244:18:1;23848:48:0::1;;;;;;;23599:316:::0;;:::o;26188:347::-;4157:24;4170:10;4157:12;:24::i;:::-;4149:48;;;;-1:-1:-1;;;4149:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26285:23:0;::::1;26303:4;26285:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;26322:4:0::1;::::0;-1:-1:-1;;;;;26312:14:0;;::::1;26322:4:::0;::::1;26312:14;;26285:41;26277:50;;;::::0;::::1;;-1:-1:-1::0;;;;;26338:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;26338:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;26382:146:::1;;26407:11;::::0;:31:::1;::::0;-1:-1:-1;;;26407:31:0;;-1:-1:-1;;;;;5885:32:1;;;26407:31:0::1;::::0;::::1;5867:51:1::0;26407:11:0::1;5934:18:1::0;;;5927:34;26407:11:0;;::::1;::::0;:20:::1;::::0;5840:18:1;;26407:31:0::1;5685:282:1::0;26382:146:0::1;26469:11;::::0;-1:-1:-1;;;;;26498:17:0;;::::1;26469:11;26498:17:::0;;;:9:::1;:17;::::0;;;;;;;26469:47;;-1:-1:-1;;;26469:47:0;;::::1;::::0;::::1;5867:51:1::0;;;;5934:18;;;5927:34;26469:11:0;::::1;::::0;:20:::1;::::0;5840:18:1;;26469:47:0::1;5685:282:1::0;26671:128:0;4157:24;4170:10;4157:12;:24::i;:::-;4149:48;;;;-1:-1:-1;;;4149:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26759:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;26759:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26671:128::o;4773:107::-;-1:-1:-1;;;;;4853:19:0;4829:4;4853:19;;;:14;:19;;;;;;;;;4773:107::o;1874:98::-;1932:7;1959:5;1963:1;1959;:5;:::i;1556:98::-;1614:7;1641:5;1645:1;1641;:5;:::i;2086:206::-;2172:7;2233:12;2225:6;;;;2217:29;;;;-1:-1:-1;;;2217:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2268:5:0;;;2086:206::o;17929:1513::-;18041:6;;18021:4;;18041:6;;18038:63;;;18057:41;18072:6;18080:9;18091:6;18057:14;:41::i;:::-;18050:48;;;;18038:63;18221:4;;18154:42;;18130:21;;-1:-1:-1;;;;;18212:13:0;;;18221:4;;18212:13;;:39;;;18238:13;-1:-1:-1;;;;;18228:23:0;:6;-1:-1:-1;;;;;18228:23:0;;18212:39;18286:4;;18201:50;;-1:-1:-1;18262:11:0;;-1:-1:-1;;;;;18274:16:0;;;18286:4;;18274:16;;:45;;;18306:13;-1:-1:-1;;;;;18293:26:0;:9;-1:-1:-1;;;;;18293:26:0;;18274:45;18262:57;;18328:28;18341:6;18349;18328:12;:28::i;:::-;18419:6;18418:7;:30;;;;-1:-1:-1;;;;;;18430:18:0;;;;;;:7;:18;;;;;;;;18429:19;18418:30;18414:133;;;18497:10;;-1:-1:-1;;;;;18464:20:0;;;;;;:9;:20;;;;;;:29;;18487:6;;18464:29;:::i;:::-;18463:44;18455:86;;;;-1:-1:-1;;;18455:86:0;;8946:2:1;18455:86:0;;;8928:21:1;8985:2;8965:18;;;8958:30;9024:31;9004:18;;;8997:59;9073:18;;18455:86:0;8744:353:1;18455:86:0;18591:6;18587:111;;;18608:16;:14;:16::i;:::-;18605:35;;;18627:10;:8;:10::i;:::-;18648:19;:17;:19::i;:::-;18645:48;;;18670:20;:18;:20::i;:::-;18831:53;;;;;;;;;;;-1:-1:-1;;;18831:53:0;;;;;;;;-1:-1:-1;;;;;18831:17:0;;-1:-1:-1;18831:17:0;;;:9;:17;;;;;;;;:53;;18853:6;;18831:21;:53::i;:::-;-1:-1:-1;;;;;18811:17:0;;;;;;:9;:17;;;;;;;;:73;;;;20055:11;:19;;;;;;;;20054:20;18922:67;;18983:6;18922:67;;;18946:34;18954:6;18962:9;18973:6;18946:7;:34::i;:::-;-1:-1:-1;;;;;19025:20:0;;;;;;:9;:20;;;;;;18897:92;;-1:-1:-1;19025:40:0;;18897:92;19025:24;:40::i;:::-;-1:-1:-1;;;;;19002:20:0;;;;;;;:9;:20;;;;;;;;:63;;;;19082:24;;;;;:16;:24;;;;;;;19078:96;;19113:11;;-1:-1:-1;;;;;19142:17:0;;;19113:11;19142:17;;;:9;:17;;;;;;;;19113:47;;-1:-1:-1;;;19113:47:0;;;;;5867:51:1;;;;5934:18;;;5927:34;19113:11:0;;;:20;;5840:18:1;;19113:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19109:63;;-1:-1:-1;;;;;19188:27:0;;;;;;:16;:27;;;;;;;;19184:105;;19222:11;;-1:-1:-1;;;;;19254:20:0;;;19222:11;19254:20;;;:9;:20;;;;;;;;19222:53;;-1:-1:-1;;;19222:53:0;;;;;5867:51:1;;;;5934:18;;;5927:34;19222:11:0;;;:20;;5840:18:1;;19222:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19218:69;;19305:11;;19325:14;;19305:35;;-1:-1:-1;;;;;;19305:35:0;;-1:-1:-1;;;;;19305:11:0;;;;:19;;:35;;;;10271:25:1;;;10259:2;10244:18;;10125:177;19305:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19301:51;19386:9;-1:-1:-1;;;;;19369:43:0;19378:6;-1:-1:-1;;;;;19369:43:0;;19397:14;19369:43;;;;10271:25:1;;10259:2;10244:18;;10125:177;19369:43:0;;;;;;;;-1:-1:-1;19430:4:0;;17929:1513;-1:-1:-1;;;;;;;17929:1513:0:o;1662:98::-;1720:7;1747:5;1751:1;1747;:5;:::i;1768:98::-;1826:7;1853:5;1857:1;1853;:5;:::i;24347:363::-;15142:6;:13;;-1:-1:-1;;15142:13:0;15151:4;15142:13;;;24447:16:::1;::::0;;24461:1:::1;24447:16:::0;;;;;::::1;::::0;;-1:-1:-1;;24447:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;24484:5:0::1;::::0;24474:7;;;;-1:-1:-1;;;;;;24484:5:0::1;::::0;24474:7;;-1:-1:-1;24484:5:0::1;::::0;24474:7:::1;;;;:::i;:::-;;;;;;:15;-1:-1:-1::0;;;;;24474:15:0::1;;;-1:-1:-1::0;;;;;24474:15:0::1;;;::::0;::::1;24518:4;24500;24505:1;24500:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24500:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;24536:6:::1;::::0;:166:::1;::::0;-1:-1:-1;;;24536:166:0;;:6;::::1;::::0;:58:::1;::::0;24602:6;;24536:166:::1;::::0;:6:::1;::::0;24640:4;;24659:2;;24676:15:::1;::::0;24536:166:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;15160:6:0;:14;;-1:-1:-1;;15160:14:0;;;-1:-1:-1;;;;;;24347:363:0:o;19450:332::-;19580:53;;;;;;;;;;;-1:-1:-1;;;19580:53:0;;;;;;;;-1:-1:-1;;;;;19580:17:0;;19543:4;19580:17;;;:9;:17;;;;;;;:53;;19602:6;;19580:21;:53::i;:::-;-1:-1:-1;;;;;19560:17:0;;;;;;;:9;:17;;;;;;:73;;;;19667:20;;;;;;;:32;;19692:6;19667:24;:32::i;:::-;-1:-1:-1;;;;;19644:20:0;;;;;;:9;:20;;;;;:55;-1:-1:-1;19770:4:0;19450:332;;;;;:::o;19794:166::-;19891:12;;19881:6;:22;;:49;;;-1:-1:-1;;;;;;19907:23:0;;;;;;:15;:23;;;;;;;;19881:49;19873:79;;;;-1:-1:-1;;;19873:79:0;;8600:2:1;19873:79:0;;;8582:21:1;8639:2;8619:18;;;8612:30;-1:-1:-1;;;8658:18:1;;;8651:47;8715:18;;19873:79:0;8398:341:1;21381:197:0;21468:4;;21430;;-1:-1:-1;;;;;21468:4:0;21454:10;:18;;;;:38;;-1:-1:-1;21486:6:0;;;;21485:7;21454:38;:62;;;;-1:-1:-1;21505:11:0;;;;21454:62;:116;;;;-1:-1:-1;;21557:13:0;;21547:4;21529:24;;;;:9;:24;;;;;;:41;;;21381:197::o;21586:1679::-;15142:6;:13;;-1:-1:-1;;15142:13:0;15151:4;15142:13;;;21681:15:::1;::::0;21698:26:::1;::::0;15142:6;;21665:60:::1;::::0;:15:::1;:60::i;:::-;:79;;21732:12;;21665:79;;;21728:1;21665:79;21635:109;;21755:23;21781:59;21838:1;21781:52;21824:8;;21781:38;21799:19;21781:13;;:17;;:38;;;;:::i;:59::-;21755:85;;21851:20;21874:34;21892:15;21874:13;;:17;;:34;;;;:::i;:::-;21945:16;::::0;;21959:1:::1;21945:16:::0;;;;;::::1;::::0;;21851:57;;-1:-1:-1;21921:21:0::1;::::0;21945:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;21945:16:0::1;21921:40;;21990:4;21972;21977:1;21972:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21972:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;22016:5:::1;::::0;22006:7;;22016:5;::::1;::::0;22006:4;;22016:5;;22006:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;22006:15:0;;::::1;:7;::::0;;::::1;::::0;;;;;:15;22090:6:::1;::::0;:189:::1;::::0;-1:-1:-1;;;22090:189:0;;22056:21:::1;::::0;22090:6;;;::::1;::::0;:58:::1;::::0;:189:::1;::::0;22163:12;;22032:21:::1;::::0;22206:4;;22233::::1;::::0;22253:15:::1;::::0;22090:189:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22292:18;22313:40;22339:13;22313:21;:25;;:40;;;;:::i;:::-;22292:61:::0;-1:-1:-1;22366:20:0::1;22389:40;22402:26;:19:::0;22426:1:::1;22402:23;:26::i;:::-;22389:8;::::0;;:12:::1;:40::i;:::-;22366:63:::0;-1:-1:-1;22442:27:0::1;22472:60;22530:1;22472:53;22366:63:::0;22472:53;:10;22487:19;22472:14:::1;:35::i;:60::-;22442:90;;22543:28;22574:47;22608:12;22574:29;22589:13;;22574:10;:14;;:29;;;;:::i;:47::-;22543:78;;22632:27;22662:46;22695:12;22662:28;22677:12;;22662:10;:14;;:28;;;;:::i;:46::-;22632:76;;22725:11;;;;;;;;;-1:-1:-1::0;;;;;22725:11:0::1;-1:-1:-1::0;;;;;22725:19:0::1;;22752:20;22725:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;22721:66:::0;22805:20:::1;::::0;22797:59:::1;::::0;-1:-1:-1;;;;;22805:20:0;;::::1;::::0;22797:59;::::1;;;::::0;22836:19;;22805:20:::1;22797:59:::0;22805:20;22797:59;22836:19;22805:20;22797:59;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;22896:19:0;;22893:365:::1;;22931:6;::::0;23107:21:::1;::::0;22931:246:::1;::::0;-1:-1:-1;;;22931:246:0;;23009:4:::1;22931:246;::::0;::::1;6592:34:1::0;6642:18;;;6635:34;;;22931:6:0::1;6685:18:1::0;;;6678:34;;;6728:18;;;6721:34;-1:-1:-1;;;;;23107:21:0;;::::1;6771:19:1::0;;;6764:44;23147:15:0::1;6824:19:1::0;;;6817:35;22931:6:0;::::1;::::0;:23:::1;::::0;22962:19;;6526::1;;22931:246:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;23197:49:0::1;::::0;;11068:25:1;;;11124:2;11109:18;;11102:34;;;23197:49:0::1;::::0;-1:-1:-1;11041:18:1;23197:49:0::1;;;;;;;22893:365;-1:-1:-1::0;;15160:6:0;:14;;-1:-1:-1;;15160:14:0;;;-1:-1:-1;;;;;;;;21586:1679:0:o;23273:318::-;23363:4;;23325;;-1:-1:-1;;;;;23363:4:0;23349:10;:18;;;;:38;;-1:-1:-1;23381:6:0;;;;23380:7;23349:38;:69;;;;-1:-1:-1;23400:18:0;;;;23349:69;:143;;;;;23480:12;23454:22;;23431:20;;:45;;;;:::i;:::-;:61;;23349:143;:234;;;;-1:-1:-1;;23566:17:0;;23541:21;:42;;;23273:318::o;24036:303::-;24096:17;;24115:4;;24086:34;;24096:17;-1:-1:-1;;;;;24115:4:0;24086:9;:34::i;:::-;24154:12;24131:20;:35;24229:17;;24202:22;;:45;;:26;:45::i;:::-;24177:22;:70;;;24286:14;;-1:-1:-1;24258:74:0;;;24303:18;:26;;-1:-1:-1;;24303:26:0;;;24258:74;24036:303::o;21001:372::-;21172:14;;21161:4;;21086:7;;;;21126:61;;21172:14;21126:41;;21137:29;;-1:-1:-1;;;;;21149:16:0;;;21161:4;;21149:16;21137:11;:29::i;:::-;21126:6;;:10;:41::i;:61::-;21245:4;21227:24;;;;:9;:24;;;;;;21106:81;;-1:-1:-1;21227:39:0;;21106:81;21227:28;:39::i;:::-;21218:4;21200:24;;;;:9;:24;;;;;;;:66;;;;21282:42;;-1:-1:-1;;;;;21282:42:0;;;;;;;21314:9;10271:25:1;;10259:2;10244:18;;10125:177;21282:42:0;;;;;;;;21344:21;:6;21355:9;21344:10;:21::i;:::-;21337:28;21001:372;-1:-1:-1;;;;;21001:372:0:o;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:60;;164:1;161;154:12;179:247;238:6;291:2;279:9;270:7;266:23;262:32;259:52;;;307:1;304;297:12;259:52;346:9;333:23;365:31;390:5;365:31;:::i;691:388::-;759:6;767;820:2;808:9;799:7;795:23;791:32;788:52;;;836:1;833;826:12;788:52;875:9;862:23;894:31;919:5;894:31;:::i;:::-;944:5;-1:-1:-1;1001:2:1;986:18;;973:32;1014:33;973:32;1014:33;:::i;:::-;1066:7;1056:17;;;691:388;;;;;:::o;1084:456::-;1161:6;1169;1177;1230:2;1218:9;1209:7;1205:23;1201:32;1198:52;;;1246:1;1243;1236:12;1198:52;1285:9;1272:23;1304:31;1329:5;1304:31;:::i;:::-;1354:5;-1:-1:-1;1411:2:1;1396:18;;1383:32;1424:33;1383:32;1424:33;:::i;:::-;1084:456;;1476:7;;-1:-1:-1;;;1530:2:1;1515:18;;;;1502:32;;1084:456::o;1545:315::-;1610:6;1618;1671:2;1659:9;1650:7;1646:23;1642:32;1639:52;;;1687:1;1684;1677:12;1639:52;1726:9;1713:23;1745:31;1770:5;1745:31;:::i;:::-;1795:5;-1:-1:-1;1819:35:1;1850:2;1835:18;;1819:35;:::i;:::-;1809:45;;1545:315;;;;;:::o;1865:::-;1933:6;1941;1994:2;1982:9;1973:7;1969:23;1965:32;1962:52;;;2010:1;2007;2000:12;1962:52;2049:9;2036:23;2068:31;2093:5;2068:31;:::i;:::-;2118:5;2170:2;2155:18;;;;2142:32;;-1:-1:-1;;;1865:315:1:o;2185:180::-;2241:6;2294:2;2282:9;2273:7;2269:23;2265:32;2262:52;;;2310:1;2307;2300:12;2262:52;2333:26;2349:9;2333:26;:::i;2370:248::-;2435:6;2443;2496:2;2484:9;2475:7;2471:23;2467:32;2464:52;;;2512:1;2509;2502:12;2464:52;2535:26;2551:9;2535:26;:::i;2623:385::-;2706:6;2714;2722;2730;2783:3;2771:9;2762:7;2758:23;2754:33;2751:53;;;2800:1;2797;2790:12;2751:53;2823:26;2839:9;2823:26;:::i;:::-;2813:36;2896:2;2881:18;;2868:32;;-1:-1:-1;2947:2:1;2932:18;;2919:32;;2998:2;2983:18;2970:32;;-1:-1:-1;2623:385:1;-1:-1:-1;;;2623:385:1:o;3013:180::-;3072:6;3125:2;3113:9;3104:7;3100:23;3096:32;3093:52;;;3141:1;3138;3131:12;3093:52;-1:-1:-1;3164:23:1;;3013:180;-1:-1:-1;3013:180:1:o;3198:248::-;3263:6;3271;3324:2;3312:9;3303:7;3299:23;3295:32;3292:52;;;3340:1;3337;3330:12;3292:52;3376:9;3363:23;3353:33;;3405:35;3436:2;3425:9;3421:18;3405:35;:::i;3451:248::-;3519:6;3527;3580:2;3568:9;3559:7;3555:23;3551:32;3548:52;;;3596:1;3593;3586:12;3548:52;-1:-1:-1;;3619:23:1;;;3689:2;3674:18;;;3661:32;;-1:-1:-1;3451:248:1:o;3704:316::-;3781:6;3789;3797;3850:2;3838:9;3829:7;3825:23;3821:32;3818:52;;;3866:1;3863;3856:12;3818:52;-1:-1:-1;;3889:23:1;;;3959:2;3944:18;;3931:32;;-1:-1:-1;4010:2:1;3995:18;;;3982:32;;3704:316;-1:-1:-1;3704:316:1:o;4025:306::-;4113:6;4121;4129;4182:2;4170:9;4161:7;4157:23;4153:32;4150:52;;;4198:1;4195;4188:12;4150:52;4227:9;4221:16;4211:26;;4277:2;4266:9;4262:18;4256:25;4246:35;;4321:2;4310:9;4306:18;4300:25;4290:35;;4025:306;;;;;:::o;4336:454::-;4431:6;4439;4447;4455;4463;4516:3;4504:9;4495:7;4491:23;4487:33;4484:53;;;4533:1;4530;4523:12;4484:53;-1:-1:-1;;4556:23:1;;;4626:2;4611:18;;4598:32;;-1:-1:-1;4677:2:1;4662:18;;4649:32;;4728:2;4713:18;;4700:32;;-1:-1:-1;4779:3:1;4764:19;4751:33;;-1:-1:-1;4336:454:1;-1:-1:-1;4336:454:1:o;4795:461::-;4848:3;4886:5;4880:12;4913:6;4908:3;4901:19;4939:4;4968:2;4963:3;4959:12;4952:19;;5005:2;4998:5;4994:14;5026:1;5036:195;5050:6;5047:1;5044:13;5036:195;;;5115:13;;-1:-1:-1;;;;;5111:39:1;5099:52;;5171:12;;;;5206:15;;;;5147:1;5065:9;5036:195;;;-1:-1:-1;5247:3:1;;4795:461;-1:-1:-1;;;;;4795:461:1:o;7281:510::-;7552:6;7541:9;7534:25;7595:3;7590:2;7579:9;7575:18;7568:31;7515:4;7616:57;7668:3;7657:9;7653:19;7645:6;7616:57;:::i;:::-;-1:-1:-1;;;;;7709:32:1;;;;7704:2;7689:18;;7682:60;-1:-1:-1;7773:2:1;7758:18;7751:34;7608:65;7281:510;-1:-1:-1;;7281:510:1:o;7796:597::-;7908:4;7937:2;7966;7955:9;7948:21;7998:6;7992:13;8041:6;8036:2;8025:9;8021:18;8014:34;8066:1;8076:140;8090:6;8087:1;8084:13;8076:140;;;8185:14;;;8181:23;;8175:30;8151:17;;;8170:2;8147:26;8140:66;8105:10;;8076:140;;;8234:6;8231:1;8228:13;8225:91;;;8304:1;8299:2;8290:6;8279:9;8275:22;8271:31;8264:42;8225:91;-1:-1:-1;8377:2:1;8356:15;-1:-1:-1;;8352:29:1;8337:45;;;;8384:2;8333:54;;7796:597;-1:-1:-1;;;7796:597:1:o;9451:329::-;9653:2;9635:21;;;9692:1;9672:18;;;9665:29;-1:-1:-1;;;9725:2:1;9710:18;;9703:36;9771:2;9756:18;;9451:329::o;9785:335::-;9987:2;9969:21;;;10026:2;10006:18;;;9999:30;-1:-1:-1;;;10060:2:1;10045:18;;10038:41;10111:2;10096:18;;9785:335::o;10307:582::-;10606:6;10595:9;10588:25;10649:6;10644:2;10633:9;10629:18;10622:34;10692:3;10687:2;10676:9;10672:18;10665:31;10569:4;10713:57;10765:3;10754:9;10750:19;10742:6;10713:57;:::i;:::-;-1:-1:-1;;;;;10806:32:1;;;;10801:2;10786:18;;10779:60;-1:-1:-1;10870:3:1;10855:19;10848:35;10705:65;10307:582;-1:-1:-1;;;10307:582:1:o;11336:128::-;11376:3;11407:1;11403:6;11400:1;11397:13;11394:39;;;11413:18;;:::i;:::-;-1:-1:-1;11449:9:1;;11336:128::o;11469:217::-;11509:1;11535;11525:132;;11579:10;11574:3;11570:20;11567:1;11560:31;11614:4;11611:1;11604:15;11642:4;11639:1;11632:15;11525:132;-1:-1:-1;11671:9:1;;11469:217::o;11691:168::-;11731:7;11797:1;11793;11789:6;11785:14;11782:1;11779:21;11774:1;11767:9;11760:17;11756:45;11753:71;;;11804:18;;:::i;:::-;-1:-1:-1;11844:9:1;;11691:168::o;11864:125::-;11904:4;11932:1;11929;11926:8;11923:34;;;11937:18;;:::i;:::-;-1:-1:-1;11974:9:1;;11864:125::o;11994:127::-;12055:10;12050:3;12046:20;12043:1;12036:31;12086:4;12083:1;12076:15;12110:4;12107:1;12100:15;12126:127;12187:10;12182:3;12178:20;12175:1;12168:31;12218:4;12215:1;12208:15;12242:4;12239:1;12232:15;12390:131;-1:-1:-1;;;;;12465:31:1;;12455:42;;12445:70;;12511:1;12508;12501:12;12445:70;12390:131;:::o

Swarm Source

ipfs://a11b21a4834de23230af7eddf958947c47be858966d47a49485a5ba5715bbc81
Loading