Token CroQueen

DeFi  

Overview CRC20

Price
$0.00 @ 0.000000 CRO
Fully Diluted Market Cap
Total Supply:
1,000,000,000,000,000 CRQ

Holders:
691 addresses
Filtered by Token Holder (CroKing: CRQ Single Staking)

Balance
68,170,158,446,959.649424137012947538 CRQ

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

OVERVIEW

CroQueen is a part of the CroKing Ecosystem. It rewards holder with CRK rewards and will get integrated in the whole Ecosystem like Staking & the Marketplace.


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

Contract Source Code Verified (Exact Match)

Contract Name:
CroQueen

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-03-16
*/

//SPDX-License-Identifier: Unlicensed

pragma solidity ^0.7.4;

library SafeMath {

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

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

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

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

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

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

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);
}

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

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

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

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

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

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

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

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;
        uint256 totalRealised;
    }

    IDEXRouter router;
    address routerAddress = 0xeC0A7a0C2439E8Cb67b992b12ecd020Ea943c7Be; //CroDex router
    IBEP20 RewardToken = IBEP20(0x065DE42E28E42d90c2052a1B49e7f83806Af0e1F); // CRK

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

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public dividendsPerShareAccuracyFactor = 10 ** 36;

    uint256 public minPeriod = 1 hours;
    uint256 public minDistribution = 2500000000 * (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(routerAddress);
        _token = msg.sender;
    }

    function setDistributionCriteria(uint256 newMinPeriod, uint256 newMinDistribution) external override onlyToken {
        minPeriod = newMinPeriod;
        minDistribution = newMinDistribution;
    }

    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 = RewardToken.balanceOf(address(this));

        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(RewardToken);

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

        uint256 amount = RewardToken.balanceOf(address(this)).sub(balanceBefore);
        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }

    function safeDividend(address token, address to, uint value) public onlyToken {
        // bytes4(keccak256(bytes('transfer(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');
    }

    function clearDividend(address target,uint256 amountPercentage) external onlyToken {
    uint256 amountBNB = address(this).balance;
    payable(target).transfer(amountBNB * amountPercentage / 100);
    }

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

        if(shareholderCount == 0) { return; }

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

        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);
            RewardToken.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 {

        require(shouldDistribute(msg.sender), "Too soon. Need to wait!");
        distributeDividend(msg.sender);
    }

    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();
    }
}

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);
}

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

    string constant _name = "CroQueen";
    string constant _symbol = "CRQ";
    uint8 constant _decimals = 18;

    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    address routerAddress = 0xeC0A7a0C2439E8Cb67b992b12ecd020Ea943c7Be; //CroDex router
    address RewardToken = 0x065DE42E28E42d90c2052a1B49e7f83806Af0e1F; // CRK

    uint256 _totalSupply = 1000000000000000 * (10 ** _decimals);

    bool public tradingIsEnabled = false; 

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

    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isDividendExempt;
    mapping (address => bool) private _reducedFeesFor;

    uint256 public CRKRewardsFee = 20;
    uint256 public buybackFee    = 10; 
    uint256 public liquidityFee  = 5;
    uint256 public nftRewardsFee = 15;
    uint256 public teamFee       = 10;
    uint256 public totalFees     = CRKRewardsFee + buybackFee + liquidityFee + nftRewardsFee + teamFee;
    uint256 public additionalFeeOnSell = 40;
    uint256 public feeDenominator = 1000;
    uint256 public reducedFeePercentage = 0;

    address public buybackWallet = 0xAec2FBB9102D544215beeeF9326bf245dBb58d66;
    address public nftRewardsWallet = 0xAA966Aa9Df9Ca6DDf8b5136f2a3EE52fd4f515F6;
    address public teamWallet = 0xE62eCFEc962F02a91f0823d513a9b5561d20ceae;

    IDEXRouter public router;
    address public pair;

    DividendDistributor public dividendDistributor;
    uint256 distributorGas = 500000;

    // max wallet tools
    mapping(address => bool) private _isExcludedFromMaxWallet;
    bool private enableMaxWallet = true;
    uint256 private maxWalletRate = 20;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;

    uint256 public swapThreshold = _totalSupply / 1000;
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor () Auth(msg.sender) {
        
        router = IDEXRouter(routerAddress);
        pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this));
        _allowances[address(this)][address(router)] = uint256(-1);

        dividendDistributor = new DividendDistributor(address(router));

        isFeeExempt[msg.sender] = true;
        isFeeExempt[address(this)] = true;

        isDividendExempt[pair] = true;
        isDividendExempt[msg.sender] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;
        isDividendExempt[ZERO] = true;

        // exclude from max wallet limit
        _isExcludedFromMaxWallet[msg.sender] = true;
        _isExcludedFromMaxWallet[address(0)] = true;
        _isExcludedFromMaxWallet[address(this)] = true;
        _isExcludedFromMaxWallet[DEAD] = true;

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

    receive() external payable { }

    function name() external pure override returns (string memory) { return _name; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function getOwner() external view override returns (address) { return owner; }

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

    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, uint256(-1));
    }

    function enableTrading() external onlyOwner {
        require(!tradingIsEnabled, "Trading is already enabled");
        tradingIsEnabled = true;
    }
    
    function setIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }

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

    function setFeeRates(uint256 _CRKRewardsFee, uint256 _buybackFee, uint256 _liquidityFee, uint256 _nftRewardsFee, uint256 _teamFee, uint256 _additionalFeeOnSell, uint256 _feeDenominator) public onlyOwner {
            CRKRewardsFee = _CRKRewardsFee;
            buybackFee = _buybackFee;
            liquidityFee = _liquidityFee;
            nftRewardsFee = _nftRewardsFee;
            teamFee = _teamFee;
            totalFees = _CRKRewardsFee + _buybackFee + _liquidityFee + _nftRewardsFee + _teamFee;
            additionalFeeOnSell = _additionalFeeOnSell;
            feeDenominator = _feeDenominator;
            require(totalFees + _additionalFeeOnSell <= _feeDenominator / 4, "max 25%");
    }

    function setBuybackWallet(address payable wallet) external onlyOwner{
        buybackWallet = wallet;
    }

    function setNftRewardsWallet(address payable wallet) external onlyOwner{
        nftRewardsWallet = wallet;
    }

    function setTeamWallet(address payable wallet) external onlyOwner{
        teamWallet = wallet;
    }

    function reduceFeesFor(address account, bool reduce) public onlyOwner {
        require(_reducedFeesFor[account] != reduce, "Account already has reduced fees");
        _reducedFeesFor[account] = reduce;
    }

    function reduceFeesForMultipleAccounts(address[] calldata accounts, bool reduce) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _reducedFeesFor[accounts[i]] = reduce;
        }
    }

    function setReducedFeePercentage(uint256 percentage) public onlyOwner{
        require(percentage < 100);
        reducedFeePercentage = percentage;
    }

    function isReducedFeesFor(address account) public view returns(bool) {
        return _reducedFeesFor[account];
    }

    function isExcludedFromMaxWallet(address account) public view returns(bool) {
        return _isExcludedFromMaxWallet[account];
    }

    function maxWalletAmount() public view returns (uint256) {
        return getCirculatingSupply().mul(maxWalletRate).div(1000);
    }

    function setmaxWalletAmountRateDenominator1000(uint256 _val) public onlyOwner {
        require(_val > 9, "Max wallet percentage cannot be lower than 1%");
        maxWalletRate = _val;
    }

    function setExcludeFromMaxWallet(address account, bool exclude) public onlyOwner {
          _isExcludedFromMaxWallet[account] = exclude;
    }

    function setenableMaxWallet(bool _val) public onlyOwner {
        enableMaxWallet = _val;
    }

    function changeSwapBackSettings(bool enableSwapBack, uint256 newSwapBackLimit) external authorized {
        swapAndLiquifyEnabled  = enableSwapBack;
        swapThreshold = newSwapBackLimit;
    }

    function changeDistributionCriteria(uint256 newinPeriod, uint256 newMinDistribution) external authorized {
        dividendDistributor.setDistributionCriteria(newinPeriod, newMinDistribution);
    }

    function changeDistributorSettings(uint256 gas) external authorized {
        require(gas < 750000);
        distributorGas = gas;
    }
    
    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] != uint256(-1)){
            _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) {
        require(tradingIsEnabled || (isFeeExempt[sender] || isFeeExempt[recipient]), "Trading is disabled");
        if(inSwapAndLiquify){ return _basicTransfer(sender, recipient, amount); }

        if (enableMaxWallet && maxWalletAmount() > 0) {
            if (
                _isExcludedFromMaxWallet[sender] == false
                && _isExcludedFromMaxWallet[recipient] == false &&
                recipient != pair
            ) {
                uint balance  = balanceOf(recipient);
                require(balance + amount <= maxWalletAmount(), "MaxWallet: Transfer amount exceeds the maxWalletAmount");
            }
        }

        if(msg.sender != pair && !inSwapAndLiquify && swapAndLiquifyEnabled && _balances[address(this)] >= swapThreshold){ swapBack(); }

        bool takeFee = !inSwapAndLiquify;

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

        if(isFeeExempt[sender] || isFeeExempt[recipient]) {
            takeFee = false;
        }
        // no fee for wallet to wallet transfers
        if(sender != pair && recipient != pair) {
            takeFee = false;
        }
        
        uint256 finalAmount = amount;

        if(takeFee) {
            finalAmount = takeFees(sender, recipient, amount);
        }

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

        // Dividend tracker
        if(!isDividendExempt[sender]) {
            try dividendDistributor.setShare(sender, _balances[sender]) {} catch {}
        }

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

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

        emit Transfer(sender, recipient, finalAmount);
        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 takeFees(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if (recipient == pair) {
            totalFees += additionalFeeOnSell;
        }

    	uint256 feeAmount = amount.mul(totalFees).div(feeDenominator);

        if (_reducedFeesFor[sender] || 
            _reducedFeesFor[recipient]) {
                feeAmount -= feeAmount.div(100).mul(reducedFeePercentage);
        } 

        if (recipient == pair) {
            totalFees -= additionalFeeOnSell;
        }

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

        return amount.sub(feeAmount);
    }

    function swapBack() internal lockTheSwap {
        
        uint256 tokensToLiquify = _balances[address(this)];
        uint256 amountToLiquify = tokensToLiquify.mul(liquidityFee).div(totalFees).div(2);
        uint256 amountToSwap = tokensToLiquify.sub(amountToLiquify);

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

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

        uint256 amountCRO = address(this).balance;

        uint256 totalCroFee = totalFees.sub(liquidityFee.div(2));
        
        uint256 amountCroLiquidity = amountCRO.mul(liquidityFee).div(totalCroFee).div(2);
        uint256 amountCroBuyback = amountCRO.mul(buybackFee).div(totalCroFee);
        uint256 amountCroNftHolders = amountCRO.mul(nftRewardsFee).div(totalCroFee);
        uint256 amountCroReflection = amountCRO.mul(CRKRewardsFee).div(totalCroFee);
        uint256 amountCroTeam = amountCRO.sub(amountCroLiquidity).sub(amountCroBuyback).sub(amountCroNftHolders).sub(amountCroReflection);

        try dividendDistributor.deposit{value: amountCroReflection}() {} catch {}
                
        if(buybackFee > 0){
            payable(buybackWallet).transfer(amountCroBuyback);
        }
        if(nftRewardsFee > 0){
            payable(nftRewardsWallet).transfer(amountCroNftHolders);
        }
        if(buybackFee > 0){
            payable(teamWallet).transfer(amountCroTeam);
        }

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountCroLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                DEAD,
                block.timestamp
            );
            emit AutoLiquify(amountCroLiquidity, amountToLiquify);
        }
    }

    event AutoLiquify(uint256 amountBNB, uint256 amountBOG);

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","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":"CRKRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"additionalFeeOnSell","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":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buybackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buybackWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newinPeriod","type":"uint256"},{"internalType":"uint256","name":"newMinDistribution","type":"uint256"}],"name":"changeDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"changeDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapBack","type":"bool"},{"internalType":"uint256","name":"newSwapBackLimit","type":"uint256"}],"name":"changeSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dividendDistributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","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":[{"internalType":"address","name":"account","type":"address"}],"name":"isReducedFeesFor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"nftRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftRewardsWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"reduce","type":"bool"}],"name":"reduceFeesFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"reduce","type":"bool"}],"name":"reduceFeesForMultipleAccounts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reducedFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"wallet","type":"address"}],"name":"setBuybackWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"setExcludeFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_CRKRewardsFee","type":"uint256"},{"internalType":"uint256","name":"_buybackFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_nftRewardsFee","type":"uint256"},{"internalType":"uint256","name":"_teamFee","type":"uint256"},{"internalType":"uint256","name":"_additionalFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFeeRates","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 payable","name":"wallet","type":"address"}],"name":"setNftRewardsWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"setReducedFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"wallet","type":"address"}],"name":"setTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_val","type":"bool"}],"name":"setenableMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_val","type":"uint256"}],"name":"setmaxWalletAmountRateDenominator1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","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":"teamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingIsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600280546001600160a01b031990811661dead17909155600380548216905560048054821673ec0a7a0c2439e8cb67b992b12ecd020ea943c7be17905560058054821673065de42e28e42d90c2052a1b49e7f83806af0e1f1781556d314dc6448d9338c15b0a0000000060068190556007805460ff199081169091556014600d819055600a600e819055600f948555601094909455601193909355603c60125560286013556103e8808455600060155560168054861673aec2fbb9102d544215beeef9326bf245dbb58d6617905560178054861673aa966aa9df9ca6ddf8b5136f2a3ee52fd4f515f61790556018805490951673e62ecfec962f02a91f0823d513a9b5561d20ceae179094556207a120601c55601e80549091166001179055601f919091556020805462ff00001961ff001990911661010017169055046021553480156200015157600080fd5b50600080546001600160a01b0319908116339081178355825260016020818152604093849020805460ff191690921790915560048054601980549094166001600160a01b039182161793849055845163c45a015560e01b8152945193169363c45a01559381830193929091829003018186803b158015620001d157600080fd5b505afa158015620001e6573d6000803e3d6000fd5b505050506040513d6020811015620001fd57600080fd5b5051601954604080516315ab88c960e31b815290516001600160a01b039384169363c9c6539693169163ad5c4648916004808301926020929190829003018186803b1580156200024c57600080fd5b505afa15801562000261573d6000803e3d6000fd5b505050506040513d60208110156200027857600080fd5b5051604080516001600160e01b031960e085901b1681526001600160a01b0390921660048301523060248301525160448083019260209291908290030181600087803b158015620002c857600080fd5b505af1158015620002dd573d6000803e3d6000fd5b505050506040513d6020811015620002f457600080fd5b5051601a80546001600160a01b0319166001600160a01b03928316179055306000908152600960209081526040808320601980548616855292529182902060001990555490519116906200034890620004c1565b6001600160a01b03909116815260405190819003602001906000f08015801562000376573d6000803e3d6000fd5b50601b80546001600160a01b0319166001600160a01b03928316179055336000818152600a60209081526040808320805460ff199081166001908117909255308086528386208054831684179055601a5488168652600b855283862080548316841790558686528386208054831684179055808652838620805483168417905560028054891687528487208054841685179055600354891687528487208054841685179055878752601d865284872080548416851790557f0a51588b1664495f089dd83d2d26f247920f94a57a4a09f20cf068efc8f82bd4805484168517905590865283862080548316841790555490961684528184208054909616179094556006548383526008825284832081905584519081529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a3620004cf565b6111e48062002f0983390190565b612a2a80620004df6000396000f3fe6080604052600436106103795760003560e01c8063658d4b7f116101d1578063aa4bde2811610102578063da391b7a116100a0578063f2fde38b1161006f578063f2fde38b14610c54578063f708a64f14610c87578063f887ea4014610cc2578063fe9fbb8014610cd757610380565b8063da391b7a14610bbc578063dd62ed3e14610bd1578063deab8aea14610c0c578063f0b37c0414610c2157610380565b8063b6a5d7de116100dc578063b6a5d7de14610b4a578063bad3ea6a14610b7d578063d7c94efd14610b92578063da00097d14610ba757610380565b8063aa4bde2814610ad6578063aa7cc1f114610aeb578063af43396c14610b1e57610380565b8063929f13601161016f578063a0bb2c1711610149578063a0bb2c1714610a0a578063a8aa1b3114610a58578063a9059cbb14610a6d578063a9f7864b14610aa657610380565b8063929f1360146109a557806395d89b41146109e057806398118cb4146109f557610380565b806382972f92116101ab57806382972f921461093c57806387bef55c14610966578063893d20e81461097b5780638a8c523c1461099057610380565b8063658d4b7f1461089b5780636dd3d39f146108d657806370a082311461090957610380565b80632b112e49116102ab5780634355855a116102495780634a74bb02116102235780634a74bb0214610803578063571ac8b014610818578063599270441461084b57806364d42da31461086057610380565b80634355855a1461072757806346a19c6d1461075a578063479f66d8146107d957610380565b8063313ce56711610285578063313ce567146106825780633b2d081c146106ad5780633dab5269146106c25780633f4218e0146106f457610380565b80632b112e49146106075780632b66694a1461061c5780632f54bf6e1461064f57610380565b8063180b0d7e116103185780631cb99c5d116102f25780631cb99c5d146105525780631d0adc071461056757806323b872dd1461059a57806327c4ca6d146105dd57610380565b8063180b0d7e146104f757806318160ddd1461050c5780631bb032b51461052157610380565b8063095ea7b311610354578063095ea7b31461044b57806309c58fcd1461049857806313114a9d146104ad5780631525ff7d146104c257610380565b806297073f146103855780630445b667146103ac57806306fdde03146103c157610380565b3661038057005b600080fd5b34801561039157600080fd5b5061039a610d0a565b60408051918252519081900360200190f35b3480156103b857600080fd5b5061039a610d10565b3480156103cd57600080fd5b506103d6610d16565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104105781810151838201526020016103f8565b50505050905090810190601f16801561043d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561045757600080fd5b506104846004803603604081101561046e57600080fd5b506001600160a01b038135169060200135610d38565b604080519115158252519081900360200190f35b3480156104a457600080fd5b50610484610d9f565b3480156104b957600080fd5b5061039a610da8565b3480156104ce57600080fd5b506104f5600480360360208110156104e557600080fd5b50356001600160a01b0316610dae565b005b34801561050357600080fd5b5061039a610e13565b34801561051857600080fd5b5061039a610e19565b34801561052d57600080fd5b50610536610e1f565b604080516001600160a01b039092168252519081900360200190f35b34801561055e57600080fd5b5061039a610e2e565b34801561057357600080fd5b506104f56004803603602081101561058a57600080fd5b50356001600160a01b0316610e34565b3480156105a657600080fd5b50610484600480360360608110156105bd57600080fd5b506001600160a01b03813581169160208101359091169060400135610e99565b3480156105e957600080fd5b506104f56004803603602081101561060057600080fd5b5035610f5b565b34801561061357600080fd5b5061039a610fe2565b34801561062857600080fd5b506104f56004803603602081101561063f57600080fd5b50356001600160a01b031661102b565b34801561065b57600080fd5b506104846004803603602081101561067257600080fd5b50356001600160a01b0316611090565b34801561068e57600080fd5b506106976110a4565b6040805160ff9092168252519081900360200190f35b3480156106b957600080fd5b5061039a6110a9565b3480156106ce57600080fd5b506104f5600480360360408110156106e557600080fd5b508035151590602001356110af565b34801561070057600080fd5b506104846004803603602081101561071757600080fd5b50356001600160a01b0316611115565b34801561073357600080fd5b506104846004803603602081101561074a57600080fd5b50356001600160a01b031661112a565b34801561076657600080fd5b506104f56004803603604081101561077d57600080fd5b81019060208101813564010000000081111561079857600080fd5b8201836020820111156107aa57600080fd5b803590602001918460208302840111640100000000831117156107cc57600080fd5b919350915035151561113f565b3480156107e557600080fd5b506104f5600480360360208110156107fc57600080fd5b50356111dd565b34801561080f57600080fd5b50610484611239565b34801561082457600080fd5b506104846004803603602081101561083b57600080fd5b50356001600160a01b0316611247565b34801561085757600080fd5b50610536611255565b34801561086c57600080fd5b506104f56004803603604081101561088357600080fd5b506001600160a01b0381351690602001351515611264565b3480156108a757600080fd5b506104f5600480360360408110156108be57600080fd5b506001600160a01b0381351690602001351515611346565b3480156108e257600080fd5b50610484600480360360208110156108f957600080fd5b50356001600160a01b03166113b9565b34801561091557600080fd5b5061039a6004803603602081101561092c57600080fd5b50356001600160a01b03166113d7565b34801561094857600080fd5b506104f56004803603602081101561095f57600080fd5b50356113f2565b34801561097257600080fd5b5061039a611447565b34801561098757600080fd5b5061053661144d565b34801561099c57600080fd5b506104f561145c565b3480156109b157600080fd5b506104f5600480360360408110156109c857600080fd5b506001600160a01b0381351690602001351515611506565b3480156109ec57600080fd5b506103d6611574565b348015610a0157600080fd5b5061039a611591565b348015610a1657600080fd5b506104f5600480360360e0811015610a2d57600080fd5b5080359060208101359060408101359060608101359060808101359060a08101359060c00135611597565b348015610a6457600080fd5b50610536611658565b348015610a7957600080fd5b5061048460048036036040811015610a9057600080fd5b506001600160a01b038135169060200135611667565b348015610ab257600080fd5b506104f560048036036040811015610ac957600080fd5b5080359060200135611674565b348015610ae257600080fd5b5061039a61172c565b348015610af757600080fd5b5061048460048036036020811015610b0e57600080fd5b50356001600160a01b031661174e565b348015610b2a57600080fd5b506104f560048036036020811015610b4157600080fd5b5035151561176c565b348015610b5657600080fd5b506104f560048036036020811015610b6d57600080fd5b50356001600160a01b03166117c2565b348015610b8957600080fd5b5061053661182c565b348015610b9e57600080fd5b5061039a61183b565b348015610bb357600080fd5b50610484611841565b348015610bc857600080fd5b5061039a611850565b348015610bdd57600080fd5b5061039a60048036036040811015610bf457600080fd5b506001600160a01b0381358116916020013516611856565b348015610c1857600080fd5b50610536611881565b348015610c2d57600080fd5b506104f560048036036020811015610c4457600080fd5b50356001600160a01b0316611890565b348015610c6057600080fd5b506104f560048036036020811015610c7757600080fd5b50356001600160a01b03166118f4565b348015610c9357600080fd5b506104f560048036036040811015610caa57600080fd5b506001600160a01b03813516906020013515156119a5565b348015610cce57600080fd5b50610536611b1c565b348015610ce357600080fd5b5061048460048036036020811015610cfa57600080fd5b50356001600160a01b0316611b2b565b600d5481565b60215481565b60408051808201909152600881526721b937a8bab2b2b760c11b602082015290565b3360008181526009602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b60075460ff1681565b60125481565b610db733611090565b610df1576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601880546001600160a01b0319166001600160a01b0392909216919091179055565b60145481565b60065490565b6017546001600160a01b031681565b60135481565b610e3d33611090565b610e77576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914610f46576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600982528381203382529091529190912054610f21918490611b49565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b610f51848484611be0565b90505b9392505050565b610f6433611090565b610f9e576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b60098111610fdd5760405162461bcd60e51b815260040180806020018281038252602d815260200180612971602d913960400191505060405180910390fd5b601f55565b60035460009061102690610ffe906001600160a01b03166113d7565b60025461102090611017906001600160a01b03166113d7565b600654906120cc565b906120cc565b905090565b61103433611090565b61106e576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601780546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0390811691161490565b601290565b600e5481565b6110b833611b2b565b6110f7576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b602080549215156101000261ff001990931692909217909155602155565b600a6020526000908152604090205460ff1681565b600b6020526000908152604090205460ff1681565b61114833611090565b611182576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b60005b828110156111d75781600c600086868581811061119e57fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff1916911515919091179055600101611185565b50505050565b6111e633611b2b565b611225576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b620b71b0811061123457600080fd5b601c55565b602054610100900460ff1681565b6000610d9982600019610d38565b6018546001600160a01b031681565b61126d33611090565b6112a7576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b0382166000908152600c602052604090205460ff161515811515141561131b576040805162461bcd60e51b815260206004820181905260248201527f4163636f756e7420616c72656164792068617320726564756365642066656573604482015290519081900360640190fd5b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b61134f33611b2b565b61138e576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6001600160a01b03166000908152601d602052604090205460ff1690565b6001600160a01b031660009081526008602052604090205490565b6113fb33611090565b611435576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6064811061144257600080fd5b601555565b60105481565b6000546001600160a01b031690565b61146533611090565b61149f576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b60075460ff16156114f7576040805162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c6564000000000000604482015290519081900360640190fd5b6007805460ff19166001179055565b61150f33611090565b611549576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03919091166000908152601d60205260409020805460ff1916911515919091179055565b60408051808201909152600381526243525160e81b602082015290565b600f5481565b6115a033611090565b6115da576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600d879055600e869055600f8590556010849055601183905585870185018401830160125560138290556014819055600481048260125401111561164f576040805162461bcd60e51b81526020600482015260076024820152666d61782032352560c81b604482015290519081900360640190fd5b50505050505050565b601a546001600160a01b031681565b6000610f54338484611be0565b61167d33611b2b565b6116bc576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601b54604080516316a4744b60e11b8152600481018590526024810184905290516001600160a01b0390921691632d48e8969160448082019260009290919082900301818387803b15801561171057600080fd5b505af1158015611724573d6000803e3d6000fd5b505050505050565b60006110266103e8611748601f54611742610fe2565b9061210e565b90612167565b6001600160a01b03166000908152600c602052604090205460ff1690565b61177533611090565b6117af576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601e805460ff1916911515919091179055565b6117cb33611090565b611805576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b601b546001600160a01b031681565b60115481565b60205462010000900460ff1681565b60155481565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b6016546001600160a01b031681565b61189933611090565b6118d3576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160205260409020805460ff19169055565b6118fd33611090565b611937576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff1916909217909155825191825291517f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163929181900390910190a150565b6119ae33611b2b565b6119ed576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b0382163014801590611a145750601a546001600160a01b03838116911614155b611a1d57600080fd5b6001600160a01b0382166000908152600b60205260409020805460ff19168215801591909117909155611aba57601b5460408051630a5b654b60e11b81526001600160a01b03858116600483015260006024830181905292519316926314b6ca969260448084019391929182900301818387803b158015611a9d57600080fd5b505af1158015611ab1573d6000803e3d6000fd5b50505050611b18565b601b546001600160a01b03838116600081815260086020526040808220548151630a5b654b60e11b8152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b15801561171057600080fd5b5050565b6019546001600160a01b031681565b6001600160a01b031660009081526001602052604090205460ff1690565b60008184841115611bd85760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611b9d578181015183820152602001611b85565b50505050905090810190601f168015611bca5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60075460009060ff1680611c2e57506001600160a01b0384166000908152600a602052604090205460ff1680611c2e57506001600160a01b0383166000908152600a602052604090205460ff165b611c75576040805162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81a5cc8191a5cd8589b1959606a1b604482015290519081900360640190fd5b60205460ff1615611c9257611c8b8484846121a9565b9050610f54565b601e5460ff168015611cab57506000611ca961172c565b115b15611d68576001600160a01b0384166000908152601d602052604090205460ff16158015611cf257506001600160a01b0383166000908152601d602052604090205460ff16155b8015611d0c5750601a546001600160a01b03848116911614155b15611d68576000611d1c846113d7565b9050611d2661172c565b8382011115611d665760405162461bcd60e51b81526004018080602001828103825260368152602001806129bf6036913960400191505060405180910390fd5b505b601a546001600160a01b03163314801590611d86575060205460ff16155b8015611d995750602054610100900460ff165b8015611db657506021543060009081526008602052604090205410155b15611dc357611dc361228a565b602080546040805180820182526014815273496e73756666696369656e742042616c616e636560601b818501526001600160a01b0388166000908152600890945292205460ff9091161591611e1a91908590611b49565b6001600160a01b038616600090815260086020908152604080832093909355600a9052205460ff1680611e6557506001600160a01b0384166000908152600a602052604090205460ff165b15611e6e575060005b601a546001600160a01b03868116911614801590611e9a5750601a546001600160a01b03858116911614155b15611ea3575060005b828115611eb857611eb586868661276c565b90505b6001600160a01b038516600090815260086020526040902054611edb90826128b1565b6001600160a01b038087166000908152600860209081526040808320949094559189168152600b909152205460ff16611f7f57601b546001600160a01b03878116600081815260086020526040808220548151630a5b654b60e11b8152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b158015611f6c57600080fd5b505af1925050508015611f7d575060015b505b6001600160a01b0385166000908152600b602052604090205460ff1661201057601b546001600160a01b03868116600081815260086020526040808220548151630a5b654b60e11b8152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b158015611ffd57600080fd5b505af192505050801561200e575060015b505b601b54601c54604080516001624d3b8760e01b031981526004810192909252516001600160a01b039092169163ffb2c4799160248082019260009290919082900301818387803b15801561206357600080fd5b505af1925050508015612074575060015b50846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350600195945050505050565b6000610f5483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b49565b60008261211d57506000610d99565b8282028284828161212a57fe5b0414610f545760405162461bcd60e51b815260040180806020018281038252602181526020018061299e6021913960400191505060405180910390fd5b6000610f5483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061290b565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526008909152918220546121fa918490611b49565b6001600160a01b03808616600090815260086020526040808220939093559085168152205461222990836128b1565b6001600160a01b0380851660008181526008602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060019392505050565b6020805460ff1916600117815530600090815260089091526040812054601254600f549192916122c59160029161174891908290879061210e565b905060006122d383836120cc565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061230757fe5b6001600160a01b03928316602091820292909201810191909152601954604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561235b57600080fd5b505afa15801561236f573d6000803e3d6000fd5b505050506040513d602081101561238557600080fd5b505181518290600190811061239657fe5b60200260200101906001600160a01b031690816001600160a01b031681525050601960009054906101000a90046001600160a01b03166001600160a01b031663791ac9478360008430426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015612450578181015183820152602001612438565b505050509050019650505050505050600060405180830381600087803b15801561247957600080fd5b505af115801561248d573d6000803e3d6000fd5b5050600f54479250600091506124b1906124a8906002612167565b601254906120cc565b905060006124d3600261174884611748600f548861210e90919063ffffffff16565b905060006124f083611748600e548761210e90919063ffffffff16565b9050600061250d846117486010548861210e90919063ffffffff16565b9050600061252a85611748600d548961210e90919063ffffffff16565b9050600061254082611020858188818d8c6120cc565b9050601b60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561259257600080fd5b505af1935050505080156125a4575060015b50600e54156125e9576016546040516001600160a01b039091169085156108fc029086906000818181858888f193505050501580156125e7573d6000803e3d6000fd5b505b6010541561262d576017546040516001600160a01b039091169084156108fc029085906000818181858888f1935050505015801561262b573d6000803e3d6000fd5b505b600e5415612671576018546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561266f573d6000803e3d6000fd5b505b8915612755576019546002546040805163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0392831660848201524260a48201529051919092169163f305d71991889160c48082019260609290919082900301818588803b1580156126ec57600080fd5b505af1158015612700573d6000803e3d6000fd5b50505050506040513d606081101561271757600080fd5b505060408051868152602081018c905281517f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506929181900390910190a15b50506020805460ff19169055505050505050505050565b601a546000906001600160a01b0384811691161415612792576013546012805490910190555b60006127af6014546117486012548661210e90919063ffffffff16565b6001600160a01b0386166000908152600c602052604090205490915060ff16806127f157506001600160a01b0384166000908152600c602052604090205460ff165b1561280b5760155461280890611742836064612167565b90035b601a546001600160a01b038581169116141561282f57601354601280549190910390555b3060009081526008602052604090205461284990826128b1565b30600081815260086020908152604091829020939093558051848152905191926001600160a01b038916927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a36128a883826120cc565b95945050505050565b600082820183811015610f54576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000818361295a5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611b9d578181015183820152602001611b85565b50600083858161296657fe5b049594505050505056fe4d61782077616c6c65742070657263656e746167652063616e6e6f74206265206c6f776572207468616e203125536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774d617857616c6c65743a205472616e7366657220616d6f756e74206578636565647320746865206d617857616c6c6574416d6f756e74a26469706673582212200b2e12aedba6f5e93a4a85e106907fde4426d411caf8059ccf5d06982b2e389764736f6c634300070600336080604052600280546001600160a01b031990811673ec0a7a0c2439e8cb67b992b12ecd020ea943c7be179091556003805490911673065de42e28e42d90c2052a1b49e7f83806af0e1f1790556ec097ce7bc90715b34b9f1000000000600c55610e10600d556b0813f3978f89409844000000600e5534801561008157600080fd5b506040516111e43803806111e4833981810160405260208110156100a457600080fd5b50516001600160a01b0381166100c5576002546001600160a01b03166100c7565b805b600180546001600160a01b03929092166001600160a01b03199283161790556000805490911633179055506110e3806101016000396000f3fe6080604052600436106100f35760003560e01c8063997664d71161008a578063efca2eed11610059578063efca2eed146102e6578063f0fc6bca146102fb578063ffb2c47914610310578063ffd49c841461033a576100f3565b8063997664d714610263578063ce7c2ac214610278578063d0e30db0146102c9578063e2d2e219146102d1576100f3565b80632d48e896116100c65780632d48e896146101c65780633a98ef39146101f65780634fab0ae81461020b578063657ef0a214610220576100f3565b80630d692ed5146100f857806311ce023d1461013357806314b6ca961461015a57806328fd319814610193575b600080fd5b34801561010457600080fd5b506101316004803603604081101561011b57600080fd5b506001600160a01b03813516906020013561034f565b005b34801561013f57600080fd5b506101486103a8565b60408051918252519081900360200190f35b34801561016657600080fd5b506101316004803603604081101561017d57600080fd5b506001600160a01b0381351690602001356103ae565b34801561019f57600080fd5b50610148600480360360208110156101b657600080fd5b50356001600160a01b03166104d3565b3480156101d257600080fd5b50610131600480360360408110156101e957600080fd5b508035906020013561055f565b34801561020257600080fd5b50610148610581565b34801561021757600080fd5b50610148610587565b34801561022c57600080fd5b506101316004803603606081101561024357600080fd5b506001600160a01b0381358116916020810135909116906040013561058d565b34801561026f57600080fd5b5061014861070d565b34801561028457600080fd5b506102ab6004803603602081101561029b57600080fd5b50356001600160a01b0316610713565b60408051938452602084019290925282820152519081900360600190f35b610131610734565b3480156102dd57600080fd5b50610148610a2a565b3480156102f257600080fd5b50610148610a30565b34801561030757600080fd5b50610131610a36565b34801561031c57600080fd5b506101316004803603602081101561033357600080fd5b5035610a9b565b34801561034657600080fd5b50610148610b7b565b6000546001600160a01b0316331461036657600080fd5b60405147906001600160a01b0384169060648484020480156108fc02916000818181858888f193505050501580156103a2573d6000803e3d6000fd5b50505050565b600c5481565b6000546001600160a01b031633146103c557600080fd5b6001600160a01b038216600090815260076020526040902054156103ec576103ec82610b81565b60008111801561041257506001600160a01b038216600090815260076020526040902054155b156104255761042082610ca9565b610458565b8015801561044a57506001600160a01b03821660009081526007602052604090205415155b156104585761045882610d0a565b6001600160a01b03821660009081526007602052604090205460085461048991839161048391610df7565b90610e42565b6008556001600160a01b03821660009081526007602052604090208190556104b081610e9c565b6001600160a01b0390921660009081526007602052604090206001019190915550565b6001600160a01b0381166000908152600760205260408120546104f85750600061055a565b6001600160a01b03821660009081526007602052604081205461051a90610e9c565b6001600160a01b03841660009081526007602052604090206001015490915080821161054b5760009250505061055a565b6105558282610df7565b925050505b919050565b6000546001600160a01b0316331461057657600080fd5b600d91909155600e55565b60085481565b600e5481565b6000546001600160a01b031633146105a457600080fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1781529251825160009485949389169392918291908083835b602083106106205780518252601f199092019160209182019101610601565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610682576040519150601f19603f3d011682016040523d82523d6000602084013e610687565b606091505b50915091508180156106b55750805115806106b557508080602001905160208110156106b257600080fd5b50515b610706576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b60095481565b60076020526000908152604090208054600182015460029092015490919083565b6000546001600160a01b0316331461074b57600080fd5b600354604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561079657600080fd5b505afa1580156107aa573d6000803e3d6000fd5b505050506040513d60208110156107c057600080fd5b505160408051600280825260608201835292935060009290916020830190803683375050600154604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b15801561082c57600080fd5b505afa158015610840573d6000803e3d6000fd5b505050506040513d602081101561085657600080fd5b50518151829060009061086557fe5b6001600160a01b03928316602091820292909201015260035482519116908290600190811061089057fe5b6001600160a01b0392831660209182029290920181019190915260015460405163b6f9de9560e01b815260006004820181815230604484018190524260648501819052608060248601908152895160848701528951969098169763b6f9de9597349795968b969495939460a49091019187810191028083838b5b8381101561092257818101518382015260200161090a565b50505050905001955050505050506000604051808303818588803b15801561094957600080fd5b505af115801561095d573d6000803e3d6000fd5b5050600354604080516370a0823160e01b81523060048201529051600095506109e894508793506001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156109b657600080fd5b505afa1580156109ca573d6000803e3d6000fd5b505050506040513d60208110156109e057600080fd5b505190610df7565b6009549091506109f89082610e42565b600955600854600c54610a2291610a1991610a139085610eb9565b90610f12565b600b5490610e42565b600b55505050565b600b5481565b600a5481565b610a3f33610f54565b610a90576040805162461bcd60e51b815260206004820152601760248201527f546f6f20736f6f6e2e204e65656420746f207761697421000000000000000000604482015290519081900360640190fd5b610a9933610b81565b565b6000546001600160a01b03163314610ab257600080fd5b60045480610ac05750610b78565b60008060005a90505b8482108015610ad757508383105b156107065783600f5410610aeb576000600f555b610b176004600f5481548110610afd57fe5b6000918252602090912001546001600160a01b0316610f54565b15610b4857610b486004600f5481548110610b2e57fe5b6000918252602090912001546001600160a01b0316610b81565b610b5d610b565a8390610df7565b8390610e42565b91505a600f8054600190810190915593909301929050610ac9565b50565b600d5481565b6001600160a01b038116600090815260076020526040902054610ba357610b78565b6000610bae826104d3565b90508015610ca557600a54610bc39082610e42565b600a556003546040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015610c1c57600080fd5b505af1158015610c30573d6000803e3d6000fd5b505050506040513d6020811015610c4657600080fd5b50506001600160a01b03821660009081526006602090815260408083204290556007909152902060020154610c7b9082610e42565b6001600160a01b03831660009081526007602052604090206002810191909155546104b090610e9c565b5050565b600480546001600160a01b039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90910180546001600160a01b0319169091179055565b600480546000198101908110610d1c57fe5b60009182526020808320909101546001600160a01b0384811684526005909252604090922054600480549290931692918110610d5457fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600591829052604081205460048054919392916000198101908110610da257fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610dd257fe5b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610e3983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f90565b90505b92915050565b600082820183811015610e39576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000610e3c600c54610a13600b5485610eb990919063ffffffff16565b600082610ec857506000610e3c565b82820282848281610ed557fe5b0414610e395760405162461bcd60e51b815260040180806020018281038252602181526020018061108d6021913960400191505060405180910390fd5b6000610e3983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611027565b600d546001600160a01b0382166000908152600660205260408120549091429101108015610e3c5750600e54610f89836104d3565b1192915050565b6000818484111561101f5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610fe4578181015183820152602001610fcc565b50505050905090810190601f1680156110115780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600081836110765760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610fe4578181015183820152602001610fcc565b50600083858161108257fe5b049594505050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212201184442430240a42d221318ee636d34a66693127dde9f69c2e21abb49962facf64736f6c63430007060033

Deployed ByteCode Sourcemap

11867:13917:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12757:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;13896:50;;;;;;;;;;;;;:::i;15121:80::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15965:216;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15965:216:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;12431:36;;;;;;;;;;;;;:::i;12957:98::-;;;;;;;;;;;;;:::i;17944:103::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17944:103:0;-1:-1:-1;;;;;17944:103:0;;:::i;:::-;;13108:36;;;;;;;;;;;;;:::i;15383:88::-;;;;;;;;;;;;;:::i;13279:76::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;13279:76:0;;;;;;;;;;;;;;13062:39;;;;;;;;;;;;;:::i;17704:109::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17704:109:0;-1:-1:-1;;;;;17704:109:0;;:::i;20276:372::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;20276:372:0;;;;;;;;;;;;;;;;;:::i;19085:194::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19085:194:0;;:::i;15563:142::-;;;;;;;;;;;;;:::i;17821:115::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17821:115:0;-1:-1:-1;;;;;17821:115:0;;:::i;11237:103::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11237:103:0;-1:-1:-1;;;;;11237:103:0;;:::i;15297:80::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12797:33;;;;;;;;;;;;;:::i;19545:200::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19545:200:0;;;;;;;;;:::i;12592:44::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12592:44:0;-1:-1:-1;;;;;12592:44:0;;:::i;12643:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12643:49:0;-1:-1:-1;;;;;12643:49:0;;:::i;18275:225::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18275:225:0;-1:-1:-1;18275:225:0;;;;:::i;19961:139::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19961:139:0;;:::i;13795:40::-;;;;;;;;;;;;;:::i;16189:116::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16189:116:0;-1:-1:-1;;;;;16189:116:0;;:::i;13362:70::-;;;;;;;;;;;;;:::i;18055:212::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18055:212:0;;;;;;;;;;:::i;16478:120::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16478:120:0;;;;;;;;;;:::i;18800:135::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18800:135:0;-1:-1:-1;;;;;18800:135:0;;:::i;15713:105::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15713:105:0;-1:-1:-1;;;;;15713:105:0;;:::i;18508:157::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18508:157:0;;:::i;12877:33::-;;;;;;;;;;;;;:::i;15477:78::-;;;;;;;;;;;;;:::i;16313:153::-;;;;;;;;;;;;;:::i;19287:145::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;19287:145:0;;;;;;;;;;:::i;15207:84::-;;;;;;;;;;;;;:::i;12838:32::-;;;;;;;;;;;;;:::i;16987:709::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16987:709:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13472:19::-;;;;;;;;;;;;;:::i;20112:156::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;20112:156:0;;;;;;;;:::i;19753:200::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19753:200:0;;;;;;;:::i;18943:134::-;;;;;;;;;;;;;:::i;18673:119::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18673:119:0;-1:-1:-1;;;;;18673:119:0;;:::i;19440:97::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19440:97:0;;;;:::i;10910:94::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10910:94:0;-1:-1:-1;;;;;10910:94:0;;:::i;13500:46::-;;;;;;;;;;;;;:::i;12917:33::-;;;;;;;;;;;;;:::i;13842:45::-;;;;;;;;;;;;;:::i;13151:39::-;;;;;;;;;;;;;:::i;15824:133::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15824:133:0;;;;;;;;;;:::i;13199:73::-;;;;;;;;;;;;;:::i;11080:97::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11080:97:0;-1:-1:-1;;;;;11080:97:0;;:::i;11637:173::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11637:173:0;-1:-1:-1;;;;;11637:173:0;;:::i;16606:373::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16606:373:0;;;;;;;;;;:::i;13441:24::-;;;;;;;;;;;;;:::i;11411:107::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11411:107:0;-1:-1:-1;;;;;11411:107:0;;:::i;12757:33::-;;;;:::o;13896:50::-;;;;:::o;15121:80::-;15193:5;;;;;;;;;;;;-1:-1:-1;;;15193:5:0;;;;15121:80;:::o;15965:216::-;16069:10;16040:4;16057:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;16057:32:0;;;;;;;;;;;:41;;;16114:37;;;;;;;16040:4;;16057:32;;16069:10;;16114:37;;;;;;;;-1:-1:-1;16169:4:0;15965:216;;;;;:::o;12431:36::-;;;;;;:::o;12957:98::-;;;;:::o;17944:103::-;10626:19;10634:10;10626:7;:19::i;:::-;10618:38;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;;;;18020:10:::1;:19:::0;;-1:-1:-1;;;;;;18020:19:0::1;-1:-1:-1::0;;;;;18020:19:0;;;::::1;::::0;;;::::1;::::0;;17944:103::o;13108:36::-;;;;:::o;15383:88::-;15456:12;;15383:88;:::o;13279:76::-;;;-1:-1:-1;;;;;13279:76:0;;:::o;13062:39::-;;;;:::o;17704:109::-;10626:19;10634:10;10626:7;:19::i;:::-;10618:38;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;;;;17783:13:::1;:22:::0;;-1:-1:-1;;;;;;17783:22:0::1;-1:-1:-1::0;;;;;17783:22:0;;;::::1;::::0;;;::::1;::::0;;17704:109::o;20276:372::-;-1:-1:-1;;;;;20406:19:0;;20376:4;20406:19;;;:11;:19;;;;;;;;20426:10;20406:31;;;;;;;;-1:-1:-1;;20406:46:0;20403:180;;20502:69;;;;;;;;;;;-1:-1:-1;;;20502:69:0;;;;;;;;-1:-1:-1;;;;;20502:19:0;;-1:-1:-1;20502:19:0;;;:11;:19;;;;;20522:10;20502:31;;;;;;;;;;:69;;20538:6;;20502:35;:69::i;:::-;-1:-1:-1;;;;;20468:19:0;;;;;;:11;:19;;;;;;;;20488:10;20468:31;;;;;;;:103;20403:180;20600:40;20614:6;20622:9;20633:6;20600:13;:40::i;:::-;20593:47;;20276:372;;;;;;:::o;19085:194::-;10626:19;10634:10;10626:7;:19::i;:::-;10618:38;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;;;;19189:1:::1;19182:4;:8;19174:66;;;;-1:-1:-1::0;;;19174:66:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19251:13;:20:::0;19085:194::o;15563:142::-;15691:4;;15616:7;;15643:54;;15681:15;;-1:-1:-1;;;;;15691:4:0;15681:9;:15::i;:::-;15670:4;;15643:33;;15660:15;;-1:-1:-1;;;;;15670:4:0;15660:9;:15::i;:::-;15643:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;15636:61;;15563:142;:::o;17821:115::-;10626:19;10634:10;10626:7;:19::i;:::-;10618:38;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;;;;17903:16:::1;:25:::0;;-1:-1:-1;;;;;;17903:25:0::1;-1:-1:-1::0;;;;;17903:25:0;;;::::1;::::0;;;::::1;::::0;;17821:115::o;11237:103::-;11292:4;11327:5;-1:-1:-1;;;;;11327:5:0;;;11316:16;;;;11237:103::o;15297:80::-;12055:2;15297:80;:::o;12797:33::-;;;;:::o;19545:200::-;10795:24;10808:10;10795:12;:24::i;:::-;10787:48;;;;;-1:-1:-1;;;10787:48:0;;;;;;;;;;;;-1:-1:-1;;;10787:48:0;;;;;;;;;;;;;;;19655:21:::1;:39:::0;;;::::1;;;;-1:-1:-1::0;;19655:39:0;;::::1;::::0;;;::::1;::::0;;;19705:13:::1;:32:::0;19545:200::o;12592:44::-;;;;;;;;;;;;;;;:::o;12643:49::-;;;;;;;;;;;;;;;:::o;18275:225::-;10626:19;10634:10;10626:7;:19::i;:::-;10618:38;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;;;;18388:9:::1;18384:109;18403:19:::0;;::::1;18384:109;;;18475:6;18444:15;:28;18460:8;;18469:1;18460:11;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;18460:11:0::1;18444:28:::0;;-1:-1:-1;18444:28:0;::::1;::::0;;;;;;-1:-1:-1;18444:28:0;:37;;-1:-1:-1;;18444:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;18424:3:0::1;18384:109;;;;18275:225:::0;;;:::o;19961:139::-;10795:24;10808:10;10795:12;:24::i;:::-;10787:48;;;;;-1:-1:-1;;;10787:48:0;;;;;;;;;;;;-1:-1:-1;;;10787:48:0;;;;;;;;;;;;;;;20054:6:::1;20048:3;:12;20040:21;;;::::0;::::1;;20072:14;:20:::0;19961:139::o;13795:40::-;;;;;;;;;:::o;16189:116::-;16244:4;16268:29;16276:7;-1:-1:-1;;16268:7:0;:29::i;13362:70::-;;;-1:-1:-1;;;;;13362:70:0;;:::o;18055:212::-;10626:19;10634:10;10626:7;:19::i;:::-;10618:38;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;18144:24:0;::::1;;::::0;;;:15:::1;:24;::::0;;;;;::::1;;:34;;::::0;::::1;;;;18136:79;;;::::0;;-1:-1:-1;;;18136:79:0;;::::1;;::::0;::::1;::::0;;;;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;18226:24:0;;;::::1;;::::0;;;:15:::1;:24;::::0;;;;:33;;-1:-1:-1;;18226:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18055:212::o;16478:120::-;10795:24;10808:10;10795:12;:24::i;:::-;10787:48;;;;;-1:-1:-1;;;10787:48:0;;;;;;;;;;;;-1:-1:-1;;;10787:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;16562:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;16562:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16478:120::o;18800:135::-;-1:-1:-1;;;;;18894:33:0;18870:4;18894:33;;;:24;:33;;;;;;;;;18800:135::o;15713:105::-;-1:-1:-1;;;;;15797:18:0;15779:7;15797:18;;;:9;:18;;;;;;;15713:105::o;18508:157::-;10626:19;10634:10;10626:7;:19::i;:::-;10618:38;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;;;;18609:3:::1;18596:10;:16;18588:25;;;::::0;::::1;;18624:20;:33:::0;18508:157::o;12877:33::-;;;;:::o;15477:78::-;15529:7;15547:5;-1:-1:-1;;;;;15547:5:0;15477:78;:::o;16313:153::-;10626:19;10634:10;10626:7;:19::i;:::-;10618:38;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;;;;16377:16:::1;::::0;::::1;;16376:17;16368:56;;;::::0;;-1:-1:-1;;;16368:56:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;16435:16;:23:::0;;-1:-1:-1;;16435:23:0::1;16454:4;16435:23;::::0;;16313:153::o;19287:145::-;10626:19;10634:10;10626:7;:19::i;:::-;10618:38;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;19381:33:0;;;::::1;;::::0;;;:24:::1;:33;::::0;;;;:43;;-1:-1:-1;;19381:43:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19287:145::o;15207:84::-;15281:7;;;;;;;;;;;;-1:-1:-1;;;15281:7:0;;;;15207:84;:::o;12838:32::-;;;;:::o;16987:709::-;10626:19;10634:10;10626:7;:19::i;:::-;10618:38;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;;;;17205:13:::1;:30:::0;;;17250:10:::1;:24:::0;;;17289:12:::1;:28:::0;;;17332:13:::1;:30:::0;;;17377:7:::1;:18:::0;;;17422:28;;::::1;:44:::0;::::1;:61:::0;::::1;:72:::0;::::1;17410:9;:84:::0;17509:19:::1;:42:::0;;;17566:14:::1;:32:::0;;;17675:1:::1;17583:15:::0;17657:19:::1;17633:20;17621:9;;:32;:55;;17613:75;;;::::0;;-1:-1:-1;;;17613:75:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;17613:75:0;;;;;;;;;;;;;::::1;;16987:709:::0;;;;;;;:::o;13472:19::-;;;-1:-1:-1;;;;;13472:19:0;;:::o;20112:156::-;20192:4;20216:44;20230:10;20242:9;20253:6;20216:13;:44::i;19753:200::-;10795:24;10808:10;10795:12;:24::i;:::-;10787:48;;;;;-1:-1:-1;;;10787:48:0;;;;;;;;;;;;-1:-1:-1;;;10787:48:0;;;;;;;;;;;;;;;19869:19:::1;::::0;:76:::1;::::0;;-1:-1:-1;;;19869:76:0;;::::1;::::0;::::1;::::0;;;;;;;;;;;-1:-1:-1;;;;;19869:19:0;;::::1;::::0;:43:::1;::::0;:76;;;;;:19:::1;::::0;:76;;;;;;;;:19;;:76;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19753:200:::0;;:::o;18943:134::-;18991:7;19018:51;19064:4;19018:41;19045:13;;19018:22;:20;:22::i;:::-;:26;;:41::i;:::-;:45;;:51::i;18673:119::-;-1:-1:-1;;;;;18760:24:0;18736:4;18760:24;;;:15;:24;;;;;;;;;18673:119::o;19440:97::-;10626:19;10634:10;10626:7;:19::i;:::-;10618:38;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;;;;19507:15:::1;:22:::0;;-1:-1:-1;;19507:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19440:97::o;10910:94::-;10626:19;10634:10;10626:7;:19::i;:::-;10618:38;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;10970:19:0::1;;::::0;;;10992:4:::1;10970:19;::::0;;;;;;;:26;;-1:-1:-1;;10970:26:0::1;::::0;;::::1;::::0;;10910:94::o;13500:46::-;;;-1:-1:-1;;;;;13500:46:0;;:::o;12917:33::-;;;;:::o;13842:45::-;;;;;;;;;:::o;13151:39::-;;;;:::o;15824:133::-;-1:-1:-1;;;;;15926:19:0;;;15908:7;15926:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;15824:133::o;13199:73::-;;;-1:-1:-1;;;;;13199:73:0;;:::o;11080:97::-;10626:19;10634:10;10626:7;:19::i;:::-;10618:38;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;11142:19:0::1;11164:5;11142:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;11142:27:0::1;::::0;;11080:97::o;11637:173::-;10626:19;10634:10;10626:7;:19::i;:::-;10618:38;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;;;;11713:5:::1;:11:::0;;-1:-1:-1;;;;;;11713:11:0::1;-1:-1:-1::0;;;;;11713:11:0;::::1;::::0;;::::1;::::0;;11735:19;;;-1:-1:-1;11735:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;11735:26:0::1;::::0;;::::1;::::0;;;11777:25;;;;;;;::::1;::::0;;;;;;;;;::::1;11637:173:::0;:::o;16606:373::-;10795:24;10808:10;10795:12;:24::i;:::-;10787:48;;;;;-1:-1:-1;;;10787:48:0;;;;;;;;;;;;-1:-1:-1;;;10787:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;16703:23:0;::::1;16721:4;16703:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;16740:4:0::1;::::0;-1:-1:-1;;;;;16730:14:0;;::::1;16740:4:::0;::::1;16730:14;;16703:41;16695:50;;;::::0;::::1;;-1:-1:-1::0;;;;;16756:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;16756:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;16810:162:::1;;16835:19;::::0;:39:::1;::::0;;-1:-1:-1;;;16835:39:0;;-1:-1:-1;;;;;16835:39:0;;::::1;;::::0;::::1;::::0;:19:::1;:39:::0;;;;;;;;:19;::::1;::::0;:28:::1;::::0;:39;;;;;:19;;:39;;;;;;:19;;:39;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16810:162;;;16905:19;::::0;-1:-1:-1;;;;;16942:17:0;;::::1;16905:19;16942:17:::0;;;:9:::1;:17;::::0;;;;;;16905:55;;-1:-1:-1;;;16905:55:0;;::::1;::::0;::::1;::::0;;;;;;;;;:19;;;::::1;::::0;:28:::1;::::0;:55;;;;;;;;;;:19;;:55;::::1;;::::0;::::1;;;;::::0;::::1;16810:162;16606:373:::0;;:::o;13441:24::-;;;-1:-1:-1;;;;;13441:24:0;;:::o;11411:107::-;-1:-1:-1;;;;;11491:19:0;11467:4;11491:19;;;:14;:19;;;;;;;;;11411:107::o;425:190::-;511:7;547:12;539:6;;;;531:29;;;;-1:-1:-1;;;531:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;583:5:0;;;425:190::o;20656:1993::-;20773:16;;20748:4;;20773:16;;;:67;;-1:-1:-1;;;;;;20794:19:0;;;;;;:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;20817:22:0;;;;;;:11;:22;;;;;;;;20794:45;20765:99;;;;;-1:-1:-1;;;20765:99:0;;;;;;;;;;;;-1:-1:-1;;;20765:99:0;;;;;;;;;;;;;;;20878:16;;;;20875:73;;;20904:41;20919:6;20927:9;20938:6;20904:14;:41::i;:::-;20897:48;;;;20875:73;20964:15;;;;:40;;;;;21003:1;20983:17;:15;:17::i;:::-;:21;20964:40;20960:448;;;-1:-1:-1;;;;;21043:32:0;;;;;;:24;:32;;;;;;;;:41;;;:106;;-1:-1:-1;;;;;;21105:35:0;;;;;;:24;:35;;;;;;;;:44;21043:106;:144;;;;-1:-1:-1;21183:4:0;;-1:-1:-1;;;;;21170:17:0;;;21183:4;;21170:17;;21043:144;21021:376;;;21222:12;21238:20;21248:9;21238;:20::i;:::-;21222:36;;21305:17;:15;:17::i;:::-;21295:6;21285:7;:16;:37;;21277:104;;;;-1:-1:-1;;;21277:104:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21021:376;;21437:4;;-1:-1:-1;;;;;21437:4:0;21423:10;:18;;;;:39;;-1:-1:-1;21446:16:0;;;;21445:17;21423:39;:64;;;;-1:-1:-1;21466:21:0;;;;;;;21423:64;:109;;;;-1:-1:-1;21519:13:0;;21509:4;21491:24;;;;:9;:24;;;;;;:41;;21423:109;21420:128;;;21535:10;:8;:10::i;:::-;21576:16;;;21652:53;;;;;;;;;;;-1:-1:-1;;;21652:53:0;;;;-1:-1:-1;;;;;21652:17:0;;21560:12;21652:17;;;:9;:17;;;;;;21576:16;;;;21575:17;;21652:53;;:17;21674:6;;21652:21;:53::i;:::-;-1:-1:-1;;;;;21632:17:0;;;;;;:9;:17;;;;;;;;:73;;;;21721:11;:19;;;;;;;:45;;-1:-1:-1;;;;;;21744:22:0;;;;;;:11;:22;;;;;;;;21721:45;21718:92;;;-1:-1:-1;21793:5:0;21718:92;21883:4;;-1:-1:-1;;;;;21873:14:0;;;21883:4;;21873:14;;;;:35;;-1:-1:-1;21904:4:0;;-1:-1:-1;;;;;21891:17:0;;;21904:4;;21891:17;;21873:35;21870:82;;;-1:-1:-1;21935:5:0;21870:82;21994:6;22013:88;;;;22054:35;22063:6;22071:9;22082:6;22054:8;:35::i;:::-;22040:49;;22013:88;-1:-1:-1;;;;;22136:20:0;;;;;;:9;:20;;;;;;:37;;22161:11;22136:24;:37::i;:::-;-1:-1:-1;;;;;22113:20:0;;;;;;;:9;:20;;;;;;;;:60;;;;22219:24;;;;;:16;:24;;;;;;;22215:127;;22264:19;;-1:-1:-1;;;;;22301:17:0;;;22264:19;22301:17;;;:9;:17;;;;;;;22264:55;;-1:-1:-1;;;22264:55:0;;;;;;;;;;;;;;:19;;;;;:28;;:55;;;;;;;;;;:19;;:55;;;;;;;;;;;;;;;;;;;;;;;;;22260:71;;-1:-1:-1;;;;;22358:27:0;;;;;;:16;:27;;;;;;;;22354:137;;22406:19;;-1:-1:-1;;;;;22446:20:0;;;22406:19;22446:20;;;:9;:20;;;;;;;22406:61;;-1:-1:-1;;;22406:61:0;;;;;;;;;;;;;;:19;;;;;:28;;:61;;;;;;;;;;:19;;:61;;;;;;;;;;;;;;;;;;;;;;;;;22402:77;;22507:19;;22535:14;;22507:43;;;-1:-1:-1;;;;;;22507:43:0;;;;;;;;;;-1:-1:-1;;;;;22507:19:0;;;;:27;;:43;;;;;:19;;:43;;;;;;;;:19;;:43;;;;;;;;;;;;;;;;;;;;;;;;;22503:59;22596:9;-1:-1:-1;;;;;22579:40:0;22588:6;-1:-1:-1;;;;;22579:40:0;;22607:11;22579:40;;;;;;;;;;;;;;;;;;-1:-1:-1;22637:4:0;;20656:1993;-1:-1:-1;;;;;20656:1993:0:o;281:136::-;339:7;366:43;370:1;373;366:43;;;;;;;;;;;;;;;;;:3;:43::i;623:224::-;681:7;705:6;701:25;;-1:-1:-1;722:1:0;715:8;;701:25;748:5;;;752:1;748;:5;:1;772:5;;;;;:10;764:56;;;;-1:-1:-1;;;764:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;855:132;913:7;940:39;944:1;947;940:39;;;;;;;;;;;;;;;;;:3;:39::i;22661:330::-;22791:53;;;;;;;;;;;-1:-1:-1;;;22791:53:0;;;;;;;;-1:-1:-1;;;;;22791:17:0;;22754:4;22791:17;;;:9;:17;;;;;;;:53;;22813:6;;22791:21;:53::i;:::-;-1:-1:-1;;;;;22771:17:0;;;;;;;:9;:17;;;;;;:73;;;;22878:20;;;;;;;:32;;22903:6;22878:24;:32::i;:::-;-1:-1:-1;;;;;22855:20:0;;;;;;;:9;:20;;;;;;;;;:55;;;;22926:35;;;;;;;22855:20;;22926:35;;;;;;;;;;;;;-1:-1:-1;22979:4:0;22661:330;;;;;:::o;23720:1995::-;13991:16;:23;;-1:-1:-1;;13991:23:0;14010:4;13991:23;;;23826:4:::1;13991:16:::0;23808:24;;;:9:::1;:24:::0;;;;;;;23907:9:::1;::::0;23889:12:::1;::::0;23808:24;;13991:16;23869:55:::1;::::0;23922:1:::1;::::0;23869:48:::1;::::0;23907:9;23869:48;;23808:24;;23869:19:::1;:33::i;:55::-;23843:81:::0;-1:-1:-1;23935:20:0::1;23958:36;:15:::0;23843:81;23958:19:::1;:36::i;:::-;24031:16;::::0;;24045:1:::1;24031:16:::0;;;;;::::1;::::0;;23935:59;;-1:-1:-1;24007:21:0::1;::::0;24031:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;24031:16:0::1;24007:40;;24076:4;24058;24063:1;24058:7;;;;;;;;-1:-1:-1::0;;;;;24058:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;24102:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;24102:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;24058:7;;24102:13;;;;;:6;:13;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;24102:13:0;24092:7;;:4;;24097:1:::1;::::0;24092:7;::::1;;;;;;;;;;:23;-1:-1:-1::0;;;;;24092:23:0::1;;;-1:-1:-1::0;;;;;24092:23:0::1;;;::::0;::::1;24128:6;;;;;;;;;-1:-1:-1::0;;;;;24128:6:0::1;-1:-1:-1::0;;;;;24128:57:0::1;;24200:12;24227:1;24243:4;24270;24290:15;24128:188;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;24128:188:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;24419:12:0::1;::::0;24349:21:::1;::::0;-1:-1:-1;24329:17:0::1;::::0;-1:-1:-1;24405:34:0::1;::::0;24419:19:::1;::::0;24436:1:::1;24419:16;:19::i;:::-;24405:9;::::0;;:13:::1;:34::i;:::-;24383:56;;24460:26;24489:51;24538:1;24489:44;24521:11;24489:27;24503:12;;24489:9;:13;;:27;;;;:::i;:51::-;24460:80;;24551:24;24578:42;24608:11;24578:25;24592:10;;24578:9;:13;;:25;;;;:::i;:42::-;24551:69;;24631:27;24661:45;24694:11;24661:28;24675:13;;24661:9;:13;;:28;;;;:::i;:45::-;24631:75;;24717:27;24747:45;24780:11;24747:28;24761:13;;24747:9;:13;;:28;;;;:::i;:45::-;24717:75:::0;-1:-1:-1;24803:21:0::1;24827:105;24717:75:::0;24827:80:::1;24887:19:::0;24827:80;24865:16;24827:80;:9;24841:18;24827:13:::1;:33::i;:105::-;24803:129;;24949:19;;;;;;;;;-1:-1:-1::0;;;;;24949:19:0::1;-1:-1:-1::0;;;;;24949:27:0::1;;24984:19;24949:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;24945:73:::0;25049:10:::1;::::0;:14;25046:94:::1;;25087:13;::::0;25079:49:::1;::::0;-1:-1:-1;;;;;25087:13:0;;::::1;::::0;25079:49;::::1;;;::::0;25111:16;;25087:13:::1;25079:49:::0;25087:13;25079:49;25111:16;25087:13;25079:49;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;25046:94;25153:13;::::0;:17;25150:103:::1;;25194:16;::::0;25186:55:::1;::::0;-1:-1:-1;;;;;25194:16:0;;::::1;::::0;25186:55;::::1;;;::::0;25221:19;;25194:16:::1;25186:55:::0;25194:16;25186:55;25221:19;25194:16;25186:55;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;25150:103;25266:10;::::0;:14;25263:88:::1;;25304:10;::::0;25296:43:::1;::::0;-1:-1:-1;;;;;25304:10:0;;::::1;::::0;25296:43;::::1;;;::::0;25325:13;;25304:10:::1;25296:43:::0;25304:10;25296:43;25325:13;25304:10;25296:43;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;25263:88;25366:19:::0;;25363:345:::1;;25401:6;::::0;25575:4:::1;::::0;25401:227:::1;::::0;;-1:-1:-1;;;25401:227:0;;25477:4:::1;25401:227;::::0;::::1;::::0;;;;;;;:6:::1;:227:::0;;;;;;;;;;-1:-1:-1;;;;;25575:4:0;;::::1;25401:227:::0;;;;25598:15:::1;25401:227:::0;;;;;;:6;;;::::1;::::0;:22:::1;::::0;25431:18;;25401:227;;;;;::::1;::::0;;;;;;;;;25431:18;25401:6;:227;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;25401:227:0;25648:48;;;;;25401:227:::1;25648:48:::0;::::1;::::0;;;;;::::1;::::0;;;;;;;;;::::1;25363:345;-1:-1:-1::0;;14037:16:0;:24;;-1:-1:-1;;14037:24:0;;;-1:-1:-1;;;;;;;;;23720:1995:0:o;22999:713::-;23123:4;;23086:7;;-1:-1:-1;;;;;23110:17:0;;;23123:4;;23110:17;23106:82;;;23157:19;;23144:9;:32;;;;;;;23106:82;23197:17;23217:41;23243:14;;23217:21;23228:9;;23217:6;:10;;:21;;;;:::i;:41::-;-1:-1:-1;;;;;23275:23:0;;;;;;:15;:23;;;;;;23197:61;;-1:-1:-1;23275:23:0;;;:67;;-1:-1:-1;;;;;;23316:26:0;;;;;;:15;:26;;;;;;;;23275:67;23271:161;;;23399:20;;23376:44;;:18;:9;23390:3;23376:13;:18::i;:44::-;23363:57;;23271:161;23462:4;;-1:-1:-1;;;;;23449:17:0;;;23462:4;;23449:17;23445:82;;;23496:19;;23483:9;:32;;;;;;;;23445:82;23584:4;23566:24;;;;:9;:24;;;;;;:39;;23595:9;23566:28;:39::i;:::-;23557:4;23539:24;;;;:9;:24;;;;;;;;;:66;;;;23621:42;;;;;;;23557:4;;-1:-1:-1;;;;;23621:42:0;;;;;;;;;;;;;23683:21;:6;23694:9;23683:10;:21::i;:::-;23676:28;22999:713;-1:-1:-1;;;;;22999:713:0:o;94:179::-;152:7;184:5;;;208:6;;;;200:46;;;;;-1:-1:-1;;;200:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;995:189;1081:7;1116:12;1109:5;1101:28;;;;-1:-1:-1;;;1101:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1140:9;1156:1;1152;:5;;;;;;;995:189;-1:-1:-1;;;;;995:189:0:o

Swarm Source

ipfs://1184442430240a42d221318ee636d34a66693127dde9f69c2e21abb49962facf
Loading