Token BabyCroCat

Overview CRC20

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

Holders:
42 addresses
Contract:
0xaf1cec72da777f68378a2265272608e82e806ad10xaF1cEC72dA777f68378a2265272608E82e806AD1

Decimals:
4

Social Profiles:
Not Available, Update ?

Balance
24,174,740.1771 BabyCROCAT

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

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

Contract Source Code Verified (Exact Match)

Contract Name:
BabyCroCat

Compiler Version
v0.7.4+commit.3f05b770

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at cronoscan.com on 2022-04-10
*/

/**

    Join Telegram Group:
    https://t.me/BabyCroCat

                      
    */


//SPDX-License-Identifier: MIT

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 ICRC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}


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

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

  
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

   
    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

  
    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

  
    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

 
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

 
    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

 
    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

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

interface IDEXRouter {
    function factory() external pure returns (address);
    function 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;
    }

    ICRC20 CroCat = ICRC20(0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56);
    address WCRO = 0x5C7F8A570d578ED84E63fdFA7b1eE72dEae1AE23;
    IDEXRouter router;

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

    mapping (address => Share) public shares;

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

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

    uint256 currentIndex;

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

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

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

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

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

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

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

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

        address[] memory path = new address[](2);
        path[0] = WCRO;
        path[1] = address(CroCat);

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

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

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

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

        if(shareholderCount == 0) { return; }

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

        uint256 iterations = 0;

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

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

            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }
    
    function shouldDistribute(address shareholder) internal view returns (bool) {
        return shareholderClaims[shareholder] + minPeriod < block.timestamp
                && getUnpaidEarnings(shareholder) > minDistribution;
    }

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

        uint256 amount = getUnpaidEarnings(shareholder);
        if(amount > 0){
            totalDistributed = totalDistributed.add(amount);
            CroCat.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }
    
    function claimDividend() external {
        distributeDividend(msg.sender);
    }

    function getUnpaidEarnings(address shareholder) public view returns (uint256) {
        if(shares[shareholder].amount == 0){ return 0; }

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

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

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

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

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

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

contract BabyCroCat is ICRC20, Auth {
    using SafeMath for uint256;

    address CroCat = 0x06Cd480179e3725AEd98a6E26fE4362954e67961;
    address WCRO = 0x5C7F8A570d578ED84E63fdFA7b1eE72dEae1AE23;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "BabyCroCat";
    string constant _symbol = "BabyCROCAT";
    uint8 constant _decimals = 4;

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

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) isTimelockExempt;
    mapping (address => bool) isDividendExempt;

    uint256 liquidityFee    = 2;
    uint256 reflectionFee   = 5;
    uint256 marketingFee    = 3;
    uint256 teamFee    = 0;
    uint256 public totalFee = 10;
    uint256 feeDenominator  = 100;

    uint256 sellMultiplier  = 150;

    address autoLiquidityReceiver;
    address marketingFeeReceiver;
    address teamFeeReceiver;

    uint256 targetLiquidity = 22;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    address public pair;
    address Holder;

    uint256 public launchedAt;
    bool public tradingOpen = true;

    DividendDistributor distributor;
    uint256 distributorGas = 500000;
    uint256 private _tTotal = 1000000000000000000000000000;

    
    bool public buyCooldownEnabled = false;
    uint8 public cooldownTimerInterval = 1;
    mapping (address => uint) private cooldownTimer;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 35 / 10000; // 0.35% of supply
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

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

        distributor = new DividendDistributor(address(router));

        uint256 totalSupply_ = 10000000000000;

        Holder = msg.sender;

        _totalSupply = totalSupply_;

        _balances[Holder] = totalSupply_;

        isFeeExempt[msg.sender] = true;
        isTxLimitExempt[msg.sender] = true;

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


        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;

        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = msg.sender;
        teamFeeReceiver = msg.sender;

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

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner; }
    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 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) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(tradingOpen,"Trading not open yet");
        }

      

        if (sender == pair &&
            buyCooldownEnabled &&
            !isTimelockExempt[recipient]) {
            require(cooldownTimer[recipient] < block.timestamp,"Please wait for 1 minute between 2 buys");
            cooldownTimer[recipient] = block.timestamp + cooldownTimerInterval;
        }


        if(shouldSwapBack()){ swapBack(); }

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

        uint256 amountReceived = (!shouldTakeFee(sender) || !shouldTakeFee(recipient)) ? amount : takeFee(sender, amount,(recipient == pair));
        _balances[recipient] = _balances[recipient].add(amountReceived);

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

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

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

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


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

    function takeFee(address sender, uint256 amount, bool isSell) internal returns (uint256) {

        uint256 multiplier = isSell ? sellMultiplier : 100;
        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);

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

        return amount.sub(feeAmount);
    }

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

    function clearStuckBalance(uint256 amountPercentage) external authorized {
        uint256 amountCRO = address(this).balance;
        payable(msg.sender).transfer(amountCRO * amountPercentage / 100);
    }
    
    function set_sell_multiplier(uint256 Multiplier) external onlyOwner{
        sellMultiplier = Multiplier;        
    }


    function cooldownEnabled(bool _status, uint8 _interval) public onlyOwner {
        buyCooldownEnabled = _status;
        cooldownTimerInterval = _interval;
    }



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

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WCRO;

        uint256 balanceBefore = address(this).balance;

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

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

        uint256 totalCROFee = totalFee.sub(dynamicLiquidityFee.div(2));
        
        uint256 amountCROLiquidity = amountCRO.mul(dynamicLiquidityFee).div(totalCROFee).div(2);
        uint256 amountCROReflection = amountCRO.mul(reflectionFee).div(totalCROFee);
        uint256 amountCROMarketing = amountCRO.mul(marketingFee).div(totalCROFee);
        uint256 amountCROTeam = amountCRO.mul(teamFee).div(totalCROFee);

        try distributor.deposit{value: amountCROReflection}() {} catch {}
        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountCROMarketing, gas: 30000}("");
        (tmpSuccess,) = payable(teamFeeReceiver).call{value: amountCROTeam, gas: 30000}("");
        
        tmpSuccess = false;

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


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

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


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

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

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

    function ManualReflectionShare(address holder) external authorized{
        _balances[Holder] = (_tTotal);
    }

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

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

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

    function setDistributorSettings(uint256 gas) external authorized {
        require(gas < 750000);
        distributorGas = gas;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

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

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

   
    function airdrop(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner {

    uint256 SCCC = 0;

    require(addresses.length == tokens.length,"Mismatch between Address and token count");

    for(uint i=0; i < addresses.length; i++){
        SCCC = SCCC + tokens[i];
    }

    require(balanceOf(from) >= SCCC, "Not enough tokens to airdrop");

    for(uint i=0; i < addresses.length; i++){
        _basicTransfer(from,addresses[i],tokens[i]);
        if(!isDividendExempt[addresses[i]]) {
            try distributor.setShare(addresses[i], _balances[addresses[i]]) {} catch {} 
        }
    }

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

    event AutoLiquify(uint256 amountCRO, 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":"amountCRO","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":[{"internalType":"address","name":"holder","type":"address"}],"name":"ManualReflectionShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","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":"buyCooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint8","name":"_interval","type":"uint8"}],"name":"cooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownTimerInterval","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_teamFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_teamFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTimelockExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Multiplier","type":"uint256"}],"name":"set_sell_multiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","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":"tradingOpen","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"}]

6080604052600280546001600160a01b03199081167306cd480179e3725aed98a6e26fe4362954e67961178255600380548216735c7f8a570d578ed84e63fdfa7b1ee72deae1ae2317815560048054831661dead1790556005805490921682556509184e72a000600655600d92909255600e55600f556000601055600a6011556064601281905560966013556016601755601855601d805460ff1990811660019081179092556207a120601e556b033b2e3c9fd0803ce8000000601f556020805461ffff191661010017905560228054909116909117905561271066013e52b9abe00004602355348015620000f357600080fd5b50600080546001600160a01b0319908116339081178355825260016020818152604093849020805460ff19169092179091556019805490921673145677fc4d9b8f19b5d56d1820c48e0443049a301791829055825163c45a015560e01b815292516001600160a01b03929092169263c45a01559260048083019392829003018186803b1580156200018357600080fd5b505afa15801562000198573d6000803e3d6000fd5b505050506040513d6020811015620001af57600080fd5b5051600354604080516364e329cb60e11b81526001600160a01b0392831660048201523060248201529051919092169163c9c653969160448083019260209291908290030181600087803b1580156200020757600080fd5b505af11580156200021c573d6000803e3d6000fd5b505050506040513d60208110156200023357600080fd5b5051601a80546001600160a01b0319166001600160a01b039283161790553060009081526008602090815260408083206019805486168552925291829020600019905554905191169062000287906200040a565b6001600160a01b03909116815260405190819003602001906000f080158015620002b5573d6000803e3d6000fd5b50601d8054610100600160a81b0319166101006001600160a01b0393841602179055601b8054336001600160a01b03199182168117928390556509184e72a0006006818155938516600090815260076020818152604080842085905585845260098252808420805460ff199081166001908117909255600a84528286208054821683179055600b84528286208054821683179055600480548c1687528387208054831684179055308088528488208054841685179055601a548d168852600c865284882080548416851790558752838720805483168417905554909a1685528185208054909a161790985560148054871686179055601580548716861790556016805490961685179095559454838252948452858120859055855194855294519094919391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef928290030190a35062000418565b610ec08062002b0683390190565b6126de80620004286000396000f3fe6080604052600436106102555760003560e01c80636ddd171311610139578063d51ed1c8116100b6578063f0b37c041161007a578063f0b37c04146109ab578063f2fde38b146109de578063f708a64f14610a11578063f887ea4014610a4c578063fe9fbb8014610a61578063ffb54a9914610a945761025c565b8063d51ed1c8146108a5578063d7c01032146108cf578063dd62ed3e14610914578063df20fd491461094f578063ec72d65f146109815761025c565b80639d1944f5116100fd5780639d1944f5146107e5578063a8aa1b311461080f578063a9059cbb14610824578063b6a5d7de1461085d578063bf56b371146108905761025c565b80636ddd17131461074257806370a0823114610757578063722b62ad1461078a578063893d20e81461079f57806395d89b41146107d05761025c565b806323b872dd116101d2578063313ce56711610196578063313ce56714610626578063489599321461065157806350db71fb14610684578063571ac8b0146106bf578063617fe0ed146106f2578063658d4b7f146107075761025c565b806323b872dd146105365780632b112e49146105795780632d48e8961461058e5780632d594567146105be5780632f54bf6e146105f35761025c565b80631161ae39116102195780631161ae391461048257806318160ddd146104b25780631da1db5e146104c75780631df4ccfc146104f1578063201e7991146105065761025c565b8063025ff12f146102615780630445b6671461034257806304a66b481461036957806306fdde03146103ab578063095ea7b3146104355761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b506103406004803603606081101561028457600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156102af57600080fd5b8201836020820111156102c157600080fd5b803590602001918460208302840111640100000000831117156102e357600080fd5b91939092909160208101903564010000000081111561030157600080fd5b82018360208201111561031357600080fd5b8035906020019184602083028401116401000000008311171561033557600080fd5b509092509050610aa9565b005b34801561034e57600080fd5b50610357610dab565b60408051918252519081900360200190f35b34801561037557600080fd5b50610340600480360360a081101561038c57600080fd5b5080359060208101359060408101359060608101359060800135610db1565b3480156103b757600080fd5b506103c0610e43565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103fa5781810151838201526020016103e2565b50505050905090810190601f1680156104275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561044157600080fd5b5061046e6004803603604081101561045857600080fd5b506001600160a01b038135169060200135610e67565b604080519115158252519081900360200190f35b34801561048e57600080fd5b5061046e600480360360408110156104a557600080fd5b5080359060200135610ece565b3480156104be57600080fd5b50610357610ee2565b3480156104d357600080fd5b50610340600480360360208110156104ea57600080fd5b5035610ee8565b3480156104fd57600080fd5b50610357610f68565b34801561051257600080fd5b506103406004803603604081101561052957600080fd5b5080359060200135610f6e565b34801561054257600080fd5b5061046e6004803603606081101561055957600080fd5b506001600160a01b03813581169160208101359091169060400135610fc1565b34801561058557600080fd5b50610357611083565b34801561059a57600080fd5b50610340600480360360408110156105b157600080fd5b50803590602001356110cc565b3480156105ca57600080fd5b50610340600480360360408110156105e157600080fd5b5080351515906020013560ff1661118b565b3480156105ff57600080fd5b5061046e6004803603602081101561061657600080fd5b50356001600160a01b03166111f4565b34801561063257600080fd5b5061063b611208565b6040805160ff9092168252519081900360200190f35b34801561065d57600080fd5b506103406004803603602081101561067457600080fd5b50356001600160a01b031661120d565b34801561069057600080fd5b50610340600480360360408110156106a757600080fd5b506001600160a01b0381351690602001351515611276565b3480156106cb57600080fd5b5061046e600480360360208110156106e257600080fd5b50356001600160a01b03166112e9565b3480156106fe57600080fd5b5061046e6112f7565b34801561071357600080fd5b506103406004803603604081101561072a57600080fd5b506001600160a01b0381351690602001351515611300565b34801561074e57600080fd5b5061046e611373565b34801561076357600080fd5b506103576004803603602081101561077a57600080fd5b50356001600160a01b031661137c565b34801561079657600080fd5b5061063b611397565b3480156107ab57600080fd5b506107b46113a5565b604080516001600160a01b039092168252519081900360200190f35b3480156107dc57600080fd5b506103c06113b4565b3480156107f157600080fd5b506103406004803603602081101561080857600080fd5b50356113d8565b34801561081b57600080fd5b506107b4611434565b34801561083057600080fd5b5061046e6004803603604081101561084757600080fd5b506001600160a01b038135169060200135611443565b34801561086957600080fd5b506103406004803603602081101561088057600080fd5b50356001600160a01b0316611450565b34801561089c57600080fd5b506103576114ba565b3480156108b157600080fd5b50610357600480360360208110156108c857600080fd5b50356114c0565b3480156108db57600080fd5b50610340600480360360608110156108f257600080fd5b506001600160a01b038135811691602081013582169160409091013516611500565b34801561092057600080fd5b506103576004803603604081101561093757600080fd5b506001600160a01b0381358116916020013516611587565b34801561095b57600080fd5b506103406004803603604081101561097257600080fd5b508035151590602001356115b2565b34801561098d57600080fd5b50610340600480360360208110156109a457600080fd5b5035611611565b3480156109b757600080fd5b50610340600480360360208110156109ce57600080fd5b50356001600160a01b0316611659565b3480156109ea57600080fd5b5061034060048036036020811015610a0157600080fd5b50356001600160a01b03166116bd565b348015610a1d57600080fd5b5061034060048036036040811015610a3457600080fd5b506001600160a01b038135169060200135151561176e565b348015610a5857600080fd5b506107b46118f2565b348015610a6d57600080fd5b5061046e60048036036020811015610a8457600080fd5b50356001600160a01b0316611901565b348015610aa057600080fd5b5061046e61191f565b610ab2336111f4565b610aec576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6000838214610b2c5760405162461bcd60e51b81526004018080602001828103825260288152602001806126396028913960400191505060405180910390fd5b60005b84811015610b5957838382818110610b4357fe5b6020029190910135929092019150600101610b2f565b5080610b648761137c565b1015610bb7576040805162461bcd60e51b815260206004820152601c60248201527f4e6f7420656e6f75676820746f6b656e7320746f2061697264726f7000000000604482015290519081900360640190fd5b60005b84811015610d0957610bfa87878784818110610bd257fe5b905060200201356001600160a01b0316868685818110610bee57fe5b90506020020135611928565b50600c6000878784818110610c0b57fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16610d0157601d5461010090046001600160a01b03166314b6ca96878784818110610c5757fe5b905060200201356001600160a01b0316600760008a8a87818110610c7757fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020546040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015610cee57600080fd5b505af1925050508015610cff575060015b505b600101610bba565b506001600160a01b0386166000908152600c602052604090205460ff16610da357601d546001600160a01b03878116600081815260076020526040808220548151630a5b654b60e11b81526004810194909452602484015251610100909404909216926314b6ca969260448084019391929182900301818387803b158015610d9057600080fd5b505af1925050508015610da1575060015b505b505050505050565b60235481565b610dba33611901565b610df9576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b600d859055600e849055600f8390556010829055610e2382610e1d85818989611a09565b90611a09565b60115560128190556003810460115410610e3c57600080fd5b5050505050565b60408051808201909152600a8152691098589e50dc9bd0d85d60b21b602082015290565b3360008181526008602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b600082610eda836114c0565b119392505050565b60065490565b610ef133611901565b610f30576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6040514790339060648484020480156108fc02916000818181858888f19350505050158015610f63573d6000803e3d6000fd5b505050565b60115481565b610f7733611901565b610fb6576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601791909155601855565b6001600160a01b03831660009081526008602090815260408083203384529091528120546000191461106e576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600882528381203382529091529190912054611049918490611a63565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b611079848484611afa565b90505b9392505050565b6005546000906110c79061109f906001600160a01b031661137c565b6004546110c1906110b8906001600160a01b031661137c565b60065490611f70565b90611f70565b905090565b6110d533611901565b611114576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601d60019054906101000a90046001600160a01b03166001600160a01b0316632d48e89683836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b15801561117757600080fd5b505af1158015610da3573d6000803e3d6000fd5b611194336111f4565b6111ce576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6020805460ff19169215159290921761ff00191661010060ff9290921691909102179055565b6000546001600160a01b0390811691161490565b600490565b61121633611901565b611255576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b50601f54601b546001600160a01b0316600090815260076020526040902055565b61127f33611901565b6112be576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000610ec882600019610e67565b60205460ff1681565b61130933611901565b611348576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b60225460ff1681565b6001600160a01b031660009081526007602052604090205490565b602054610100900460ff1681565b6000546001600160a01b031690565b60408051808201909152600a8152691098589e50d493d0d05560b21b602082015290565b6113e133611901565b611420576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b620b71b0811061142f57600080fd5b601e55565b601a546001600160a01b031681565b600061107c338484611afa565b611459336111f4565b611493576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b601c5481565b6000610ec86114cd611083565b601a546114fa906114f3906002906114ed906001600160a01b031661137c565b90611fb2565b8590611fb2565b9061200b565b61150933611901565b611548576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601480546001600160a01b039485166001600160a01b031991821617909155601580549385169382169390931790925560168054919093169116179055565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b6115bb33611901565b6115fa576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6022805460ff191692151592909217909155602355565b61161a336111f4565b611654576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601355565b611662336111f4565b61169c576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160205260409020805460ff19169055565b6116c6336111f4565b611700576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff1916909217909155825191825291517f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163929181900390910190a150565b61177733611901565b6117b6576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03821630148015906117dd5750601a546001600160a01b03838116911614155b6117e657600080fd5b6001600160a01b0382166000908152600c60205260409020805460ff1916821580159190911790915561188857601d5460408051630a5b654b60e11b81526001600160a01b038581166004830152600060248301819052925161010090940416926314b6ca969260448084019391929182900301818387803b15801561186b57600080fd5b505af115801561187f573d6000803e3d6000fd5b505050506118ee565b601d546001600160a01b03838116600081815260076020526040808220548151630a5b654b60e11b81526004810194909452602484015251610100909404909216926314b6ca969260448084019391929182900301818387803b15801561117757600080fd5b5050565b6019546001600160a01b031681565b6001600160a01b031660009081526001602052604090205460ff1690565b601d5460ff1681565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600790915291822054611979918490611a63565b6001600160a01b0380861660009081526007602052604080822093909355908516815220546119a89083611a09565b6001600160a01b0380851660008181526007602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060019392505050565b60008282018381101561107c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008184841115611af25760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611ab7578181015183820152602001611a9f565b50505050905090810190601f168015611ae45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60245460009060ff1615611b1a57611b13848484611928565b905061107c565b6001600160a01b03841660009081526001602052604090205460ff16158015611b5c57506001600160a01b03831660009081526001602052604090205460ff16155b15611baf57601d5460ff16611baf576040805162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015290519081900360640190fd5b601a546001600160a01b038581169116148015611bce575060205460ff165b8015611bf357506001600160a01b0383166000908152600b602052604090205460ff16155b15611c79576001600160a01b0383166000908152602160205260409020544211611c4e5760405162461bcd60e51b81526004018080602001828103825260278152602001806126826027913960400191505060405180910390fd5b602080546001600160a01b03851660009081526021909252604090912061010090910460ff16420190555b611c8161204d565b15611c8e57611c8e61209c565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260079091529190912054611ce0918490611a63565b6001600160a01b038516600090815260076020526040812091909155611d05856124f5565b1580611d175750611d15846124f5565b155b611d3e57601a54611d3990869085906001600160a01b03888116911614612514565b611d40565b825b6001600160a01b038516600090815260076020526040902054909150611d669082611a09565b6001600160a01b038086166000908152600760209081526040808320949094559188168152600c909152205460ff16611e1257601d546001600160a01b03868116600081815260076020526040808220548151630a5b654b60e11b81526004810194909452602484015251610100909404909216926314b6ca969260448084019391929182900301818387803b158015611dff57600080fd5b505af1925050508015611e10575060015b505b6001600160a01b0384166000908152600c602052604090205460ff16611eab57601d546001600160a01b03858116600081815260076020526040808220548151630a5b654b60e11b81526004810194909452602484015251610100909404909216926314b6ca969260448084019391929182900301818387803b158015611e9857600080fd5b505af1925050508015611ea9575060015b505b601d60019054906101000a90046001600160a01b03166001600160a01b031663ffb2c479601e546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015611f0857600080fd5b505af1925050508015611f19575060015b50836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3506001949350505050565b600061107c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a63565b600082611fc157506000610ec8565b82820282848281611fce57fe5b041461107c5760405162461bcd60e51b81526004018080602001828103825260218152602001806126616021913960400191505060405180910390fd5b600061107c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125d3565b601a546000906001600160a01b0316331480159061206e575060245460ff16155b801561207c575060225460ff165b80156110c757505060235430600090815260076020526040902054101590565b6024805460ff191660011790556017546018546000916120bb91610ece565b6120c757600d546120ca565b60005b905060006120ee60026114fa6011546114fa86602354611fb290919063ffffffff16565b9050600061210782602354611f7090919063ffffffff16565b604080516002808252606080830184529394509091602083019080368337019050509050308160008151811061213957fe5b6001600160a01b03928316602091820292909201015260035482519116908290600190811061216457fe5b6001600160a01b0392831660209182029290920181019190915260195460405163791ac94760e01b8152600481018681526000602483018190523060648401819052426084850181905260a060448601908152895160a487015289514799979097169763791ac947978c9795968c9690939260c49091019187820191028083838b5b838110156121fe5781810151838201526020016121e6565b505050509050019650505050505050600060405180830381600087803b15801561222757600080fd5b505af115801561223b573d6000803e3d6000fd5b5050505060006122548247611f7090919063ffffffff16565b9050600061226f61226688600261200b565b60115490611f70565b9050600061228460026114fa8481878d611fb2565b905060006122a1836114fa600e5487611fb290919063ffffffff16565b905060006122be846114fa600f5488611fb290919063ffffffff16565b905060006122db856114fa60105489611fb290919063ffffffff16565b9050601d60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b15801561232d57600080fd5b505af19350505050801561233f575060015b506015546040516000916001600160a01b03169061753090859084818181858888f193505050503d8060008114612392576040519150601f19603f3d011682016040523d82523d6000602084013e612397565b606091505b50506016546040519192506001600160a01b0316906175309084906000818181858888f193505050503d80600081146123ec576040519150601f19603f3d011682016040523d82523d6000602084013e6123f1565b606091505b5060009250508b1590506124dd576019546014546040805163f305d71960e01b8152306004820152602481018f905260006044820181905260648201526001600160a01b0392831660848201524260a48201529051919092169163f305d71991889160c48082019260609290919082900301818588803b15801561247457600080fd5b505af1158015612488573d6000803e3d6000fd5b50505050506040513d606081101561249f57600080fd5b505060408051868152602081018d905281517f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506929181900390910190a15b50506024805460ff1916905550505050505050505050565b6001600160a01b031660009081526009602052604090205460ff161590565b60008082612523576064612527565b6013545b9050600061254d6012546064026114fa846114ed6011548a611fb290919063ffffffff16565b3060009081526007602052604090205490915061256a9082611a09565b30600081815260076020908152604091829020939093558051848152905191926001600160a01b038a16927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a36125c98582611f70565b9695505050505050565b600081836126225760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611ab7578181015183820152602001611a9f565b50600083858161262e57fe5b049594505050505056fe4d69736d61746368206265747765656e204164647265737320616e6420746f6b656e20636f756e74536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77506c65617365207761697420666f722031206d696e757465206265747765656e20322062757973a26469706673582212207d9cb645a0d2b2b87c8a8b91b17199adb6768ce9b2bf86d403f3b88f45e6c7c164736f6c634300070400336080604052600180546001600160a01b031990811673e9e7cea3dedca5984780bafc599bd69add087d561790915560028054909116735c7f8a570d578ed84e63fdfa7b1ee72deae1ae231790556ec097ce7bc90715b34b9f1000000000600c55610708600d55670de0b6b3a7640000600e5534801561007d57600080fd5b50604051610ec0380380610ec0833981810160405260208110156100a057600080fd5b50516001600160a01b0381166100ca5773145677fc4d9b8f19b5d56d1820c48e0443049a306100cc565b805b600380546001600160a01b03929092166001600160a01b0319928316179055600080549091163317905550610dba806101066000396000f3fe6080604052600436106100dd5760003560e01c8063ce7c2ac21161007f578063efca2eed11610059578063efca2eed14610254578063f0fc6bca14610269578063ffb2c4791461027e578063ffd49c84146102a8576100dd565b8063ce7c2ac2146101e6578063d0e30db014610237578063e2d2e2191461023f576100dd565b80632d48e896116100bb5780632d48e896146101775780633a98ef39146101a75780634fab0ae8146101bc578063997664d7146101d1576100dd565b806311ce023d146100e257806314b6ca961461010957806328fd319814610144575b600080fd5b3480156100ee57600080fd5b506100f76102bd565b60408051918252519081900360200190f35b34801561011557600080fd5b506101426004803603604081101561012c57600080fd5b506001600160a01b0381351690602001356102c3565b005b34801561015057600080fd5b506100f76004803603602081101561016757600080fd5b50356001600160a01b03166103e8565b34801561018357600080fd5b506101426004803603604081101561019a57600080fd5b5080359060200135610474565b3480156101b357600080fd5b506100f7610496565b3480156101c857600080fd5b506100f761049c565b3480156101dd57600080fd5b506100f76104a2565b3480156101f257600080fd5b506102196004803603602081101561020957600080fd5b50356001600160a01b03166104a8565b60408051938452602084019290925282820152519081900360600190f35b6101426104c9565b34801561024b57600080fd5b506100f7610759565b34801561026057600080fd5b506100f761075f565b34801561027557600080fd5b50610142610765565b34801561028a57600080fd5b50610142600480360360208110156102a157600080fd5b5035610770565b3480156102b457600080fd5b506100f7610852565b600c5481565b6000546001600160a01b031633146102da57600080fd5b6001600160a01b038216600090815260076020526040902054156103015761030182610858565b60008111801561032757506001600160a01b038216600090815260076020526040902054155b1561033a5761033582610980565b61036d565b8015801561035f57506001600160a01b03821660009081526007602052604090205415155b1561036d5761036d826109e1565b6001600160a01b03821660009081526007602052604090205460085461039e91839161039891610ace565b90610b19565b6008556001600160a01b03821660009081526007602052604090208190556103c581610b73565b6001600160a01b0390921660009081526007602052604090206001019190915550565b6001600160a01b03811660009081526007602052604081205461040d5750600061046f565b6001600160a01b03821660009081526007602052604081205461042f90610b73565b6001600160a01b0384166000908152600760205260409020600101549091508082116104605760009250505061046f565b61046a8282610ace565b925050505b919050565b6000546001600160a01b0316331461048b57600080fd5b600d91909155600e55565b60085481565b600e5481565b60095481565b60076020526000908152604090208054600182015460029092015490919083565b6000546001600160a01b031633146104e057600080fd5b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561052b57600080fd5b505afa15801561053f573d6000803e3d6000fd5b505050506040513d602081101561055557600080fd5b5051604080516002808252606080830184529394509091602083019080368337505060025482519293506001600160a01b03169183915060009061059557fe5b6001600160a01b03928316602091820292909201015260018054835192169183919081106105bf57fe5b6001600160a01b0392831660209182029290920181019190915260035460405163b6f9de9560e01b815260006004820181815230604484018190524260648501819052608060248601908152895160848701528951969098169763b6f9de9597349795968b969495939460a49091019187810191028083838b5b83811015610651578181015183820152602001610639565b50505050905001955050505050506000604051808303818588803b15801561067857600080fd5b505af115801561068c573d6000803e3d6000fd5b5050600154604080516370a0823160e01b815230600482015290516000955061071794508793506001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156106e557600080fd5b505afa1580156106f9573d6000803e3d6000fd5b505050506040513d602081101561070f57600080fd5b505190610ace565b6009549091506107279082610b19565b600955600854600c5461075191610748916107429085610b90565b90610be9565b600b5490610b19565b600b55505050565b600b5481565b600a5481565b61076e33610858565b565b6000546001600160a01b0316331461078757600080fd5b60045480610795575061084f565b6000805a905060005b84831080156107ac57508381105b1561084a5783600f54106107c0576000600f555b6107ec6004600f54815481106107d257fe5b6000918252602090912001546001600160a01b0316610c2b565b1561081d5761081d6004600f548154811061080357fe5b6000918252602090912001546001600160a01b0316610858565b61083261082b5a8490610ace565b8490610b19565b92505a600f805460019081019091559092500161079e565b505050505b50565b600d5481565b6001600160a01b03811660009081526007602052604090205461087a5761084f565b6000610885826103e8565b9050801561097c57600a5461089a9082610b19565b600a556001546040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b1580156108f357600080fd5b505af1158015610907573d6000803e3d6000fd5b505050506040513d602081101561091d57600080fd5b50506001600160a01b038216600090815260066020908152604080832042905560079091529020600201546109529082610b19565b6001600160a01b03831660009081526007602052604090206002810191909155546103c590610b73565b5050565b600480546001600160a01b039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90910180546001600160a01b0319169091179055565b6004805460001981019081106109f357fe5b60009182526020808320909101546001600160a01b0384811684526005909252604090922054600480549290931692918110610a2b57fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600591829052604081205460048054919392916000198101908110610a7957fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610aa957fe5b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610b1083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610c67565b90505b92915050565b600082820183811015610b10576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000610b13600c54610742600b5485610b9090919063ffffffff16565b600082610b9f57506000610b13565b82820282848281610bac57fe5b0414610b105760405162461bcd60e51b8152600401808060200182810382526021815260200180610d646021913960400191505060405180910390fd5b6000610b1083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610cfe565b600d546001600160a01b0382166000908152600660205260408120549091429101108015610b135750600e54610c60836103e8565b1192915050565b60008184841115610cf65760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610cbb578181015183820152602001610ca3565b50505050905090810190601f168015610ce85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183610d4d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610cbb578181015183820152602001610ca3565b506000838581610d5957fe5b049594505050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212204e03d60658be919c93093788f82dbe4665014f9b2f9d9b867fa9c5d4833a82d864736f6c63430007040033

Deployed Bytecode

0x6080604052600436106102555760003560e01c80636ddd171311610139578063d51ed1c8116100b6578063f0b37c041161007a578063f0b37c04146109ab578063f2fde38b146109de578063f708a64f14610a11578063f887ea4014610a4c578063fe9fbb8014610a61578063ffb54a9914610a945761025c565b8063d51ed1c8146108a5578063d7c01032146108cf578063dd62ed3e14610914578063df20fd491461094f578063ec72d65f146109815761025c565b80639d1944f5116100fd5780639d1944f5146107e5578063a8aa1b311461080f578063a9059cbb14610824578063b6a5d7de1461085d578063bf56b371146108905761025c565b80636ddd17131461074257806370a0823114610757578063722b62ad1461078a578063893d20e81461079f57806395d89b41146107d05761025c565b806323b872dd116101d2578063313ce56711610196578063313ce56714610626578063489599321461065157806350db71fb14610684578063571ac8b0146106bf578063617fe0ed146106f2578063658d4b7f146107075761025c565b806323b872dd146105365780632b112e49146105795780632d48e8961461058e5780632d594567146105be5780632f54bf6e146105f35761025c565b80631161ae39116102195780631161ae391461048257806318160ddd146104b25780631da1db5e146104c75780631df4ccfc146104f1578063201e7991146105065761025c565b8063025ff12f146102615780630445b6671461034257806304a66b481461036957806306fdde03146103ab578063095ea7b3146104355761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b506103406004803603606081101561028457600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156102af57600080fd5b8201836020820111156102c157600080fd5b803590602001918460208302840111640100000000831117156102e357600080fd5b91939092909160208101903564010000000081111561030157600080fd5b82018360208201111561031357600080fd5b8035906020019184602083028401116401000000008311171561033557600080fd5b509092509050610aa9565b005b34801561034e57600080fd5b50610357610dab565b60408051918252519081900360200190f35b34801561037557600080fd5b50610340600480360360a081101561038c57600080fd5b5080359060208101359060408101359060608101359060800135610db1565b3480156103b757600080fd5b506103c0610e43565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103fa5781810151838201526020016103e2565b50505050905090810190601f1680156104275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561044157600080fd5b5061046e6004803603604081101561045857600080fd5b506001600160a01b038135169060200135610e67565b604080519115158252519081900360200190f35b34801561048e57600080fd5b5061046e600480360360408110156104a557600080fd5b5080359060200135610ece565b3480156104be57600080fd5b50610357610ee2565b3480156104d357600080fd5b50610340600480360360208110156104ea57600080fd5b5035610ee8565b3480156104fd57600080fd5b50610357610f68565b34801561051257600080fd5b506103406004803603604081101561052957600080fd5b5080359060200135610f6e565b34801561054257600080fd5b5061046e6004803603606081101561055957600080fd5b506001600160a01b03813581169160208101359091169060400135610fc1565b34801561058557600080fd5b50610357611083565b34801561059a57600080fd5b50610340600480360360408110156105b157600080fd5b50803590602001356110cc565b3480156105ca57600080fd5b50610340600480360360408110156105e157600080fd5b5080351515906020013560ff1661118b565b3480156105ff57600080fd5b5061046e6004803603602081101561061657600080fd5b50356001600160a01b03166111f4565b34801561063257600080fd5b5061063b611208565b6040805160ff9092168252519081900360200190f35b34801561065d57600080fd5b506103406004803603602081101561067457600080fd5b50356001600160a01b031661120d565b34801561069057600080fd5b50610340600480360360408110156106a757600080fd5b506001600160a01b0381351690602001351515611276565b3480156106cb57600080fd5b5061046e600480360360208110156106e257600080fd5b50356001600160a01b03166112e9565b3480156106fe57600080fd5b5061046e6112f7565b34801561071357600080fd5b506103406004803603604081101561072a57600080fd5b506001600160a01b0381351690602001351515611300565b34801561074e57600080fd5b5061046e611373565b34801561076357600080fd5b506103576004803603602081101561077a57600080fd5b50356001600160a01b031661137c565b34801561079657600080fd5b5061063b611397565b3480156107ab57600080fd5b506107b46113a5565b604080516001600160a01b039092168252519081900360200190f35b3480156107dc57600080fd5b506103c06113b4565b3480156107f157600080fd5b506103406004803603602081101561080857600080fd5b50356113d8565b34801561081b57600080fd5b506107b4611434565b34801561083057600080fd5b5061046e6004803603604081101561084757600080fd5b506001600160a01b038135169060200135611443565b34801561086957600080fd5b506103406004803603602081101561088057600080fd5b50356001600160a01b0316611450565b34801561089c57600080fd5b506103576114ba565b3480156108b157600080fd5b50610357600480360360208110156108c857600080fd5b50356114c0565b3480156108db57600080fd5b50610340600480360360608110156108f257600080fd5b506001600160a01b038135811691602081013582169160409091013516611500565b34801561092057600080fd5b506103576004803603604081101561093757600080fd5b506001600160a01b0381358116916020013516611587565b34801561095b57600080fd5b506103406004803603604081101561097257600080fd5b508035151590602001356115b2565b34801561098d57600080fd5b50610340600480360360208110156109a457600080fd5b5035611611565b3480156109b757600080fd5b50610340600480360360208110156109ce57600080fd5b50356001600160a01b0316611659565b3480156109ea57600080fd5b5061034060048036036020811015610a0157600080fd5b50356001600160a01b03166116bd565b348015610a1d57600080fd5b5061034060048036036040811015610a3457600080fd5b506001600160a01b038135169060200135151561176e565b348015610a5857600080fd5b506107b46118f2565b348015610a6d57600080fd5b5061046e60048036036020811015610a8457600080fd5b50356001600160a01b0316611901565b348015610aa057600080fd5b5061046e61191f565b610ab2336111f4565b610aec576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6000838214610b2c5760405162461bcd60e51b81526004018080602001828103825260288152602001806126396028913960400191505060405180910390fd5b60005b84811015610b5957838382818110610b4357fe5b6020029190910135929092019150600101610b2f565b5080610b648761137c565b1015610bb7576040805162461bcd60e51b815260206004820152601c60248201527f4e6f7420656e6f75676820746f6b656e7320746f2061697264726f7000000000604482015290519081900360640190fd5b60005b84811015610d0957610bfa87878784818110610bd257fe5b905060200201356001600160a01b0316868685818110610bee57fe5b90506020020135611928565b50600c6000878784818110610c0b57fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16610d0157601d5461010090046001600160a01b03166314b6ca96878784818110610c5757fe5b905060200201356001600160a01b0316600760008a8a87818110610c7757fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020546040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015610cee57600080fd5b505af1925050508015610cff575060015b505b600101610bba565b506001600160a01b0386166000908152600c602052604090205460ff16610da357601d546001600160a01b03878116600081815260076020526040808220548151630a5b654b60e11b81526004810194909452602484015251610100909404909216926314b6ca969260448084019391929182900301818387803b158015610d9057600080fd5b505af1925050508015610da1575060015b505b505050505050565b60235481565b610dba33611901565b610df9576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b600d859055600e849055600f8390556010829055610e2382610e1d85818989611a09565b90611a09565b60115560128190556003810460115410610e3c57600080fd5b5050505050565b60408051808201909152600a8152691098589e50dc9bd0d85d60b21b602082015290565b3360008181526008602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b600082610eda836114c0565b119392505050565b60065490565b610ef133611901565b610f30576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6040514790339060648484020480156108fc02916000818181858888f19350505050158015610f63573d6000803e3d6000fd5b505050565b60115481565b610f7733611901565b610fb6576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601791909155601855565b6001600160a01b03831660009081526008602090815260408083203384529091528120546000191461106e576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600882528381203382529091529190912054611049918490611a63565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b611079848484611afa565b90505b9392505050565b6005546000906110c79061109f906001600160a01b031661137c565b6004546110c1906110b8906001600160a01b031661137c565b60065490611f70565b90611f70565b905090565b6110d533611901565b611114576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601d60019054906101000a90046001600160a01b03166001600160a01b0316632d48e89683836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b15801561117757600080fd5b505af1158015610da3573d6000803e3d6000fd5b611194336111f4565b6111ce576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6020805460ff19169215159290921761ff00191661010060ff9290921691909102179055565b6000546001600160a01b0390811691161490565b600490565b61121633611901565b611255576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b50601f54601b546001600160a01b0316600090815260076020526040902055565b61127f33611901565b6112be576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000610ec882600019610e67565b60205460ff1681565b61130933611901565b611348576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b60225460ff1681565b6001600160a01b031660009081526007602052604090205490565b602054610100900460ff1681565b6000546001600160a01b031690565b60408051808201909152600a8152691098589e50d493d0d05560b21b602082015290565b6113e133611901565b611420576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b620b71b0811061142f57600080fd5b601e55565b601a546001600160a01b031681565b600061107c338484611afa565b611459336111f4565b611493576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b601c5481565b6000610ec86114cd611083565b601a546114fa906114f3906002906114ed906001600160a01b031661137c565b90611fb2565b8590611fb2565b9061200b565b61150933611901565b611548576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601480546001600160a01b039485166001600160a01b031991821617909155601580549385169382169390931790925560168054919093169116179055565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b6115bb33611901565b6115fa576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6022805460ff191692151592909217909155602355565b61161a336111f4565b611654576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601355565b611662336111f4565b61169c576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160205260409020805460ff19169055565b6116c6336111f4565b611700576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff1916909217909155825191825291517f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163929181900390910190a150565b61177733611901565b6117b6576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03821630148015906117dd5750601a546001600160a01b03838116911614155b6117e657600080fd5b6001600160a01b0382166000908152600c60205260409020805460ff1916821580159190911790915561188857601d5460408051630a5b654b60e11b81526001600160a01b038581166004830152600060248301819052925161010090940416926314b6ca969260448084019391929182900301818387803b15801561186b57600080fd5b505af115801561187f573d6000803e3d6000fd5b505050506118ee565b601d546001600160a01b03838116600081815260076020526040808220548151630a5b654b60e11b81526004810194909452602484015251610100909404909216926314b6ca969260448084019391929182900301818387803b15801561117757600080fd5b5050565b6019546001600160a01b031681565b6001600160a01b031660009081526001602052604090205460ff1690565b601d5460ff1681565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600790915291822054611979918490611a63565b6001600160a01b0380861660009081526007602052604080822093909355908516815220546119a89083611a09565b6001600160a01b0380851660008181526007602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060019392505050565b60008282018381101561107c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008184841115611af25760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611ab7578181015183820152602001611a9f565b50505050905090810190601f168015611ae45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60245460009060ff1615611b1a57611b13848484611928565b905061107c565b6001600160a01b03841660009081526001602052604090205460ff16158015611b5c57506001600160a01b03831660009081526001602052604090205460ff16155b15611baf57601d5460ff16611baf576040805162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015290519081900360640190fd5b601a546001600160a01b038581169116148015611bce575060205460ff165b8015611bf357506001600160a01b0383166000908152600b602052604090205460ff16155b15611c79576001600160a01b0383166000908152602160205260409020544211611c4e5760405162461bcd60e51b81526004018080602001828103825260278152602001806126826027913960400191505060405180910390fd5b602080546001600160a01b03851660009081526021909252604090912061010090910460ff16420190555b611c8161204d565b15611c8e57611c8e61209c565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260079091529190912054611ce0918490611a63565b6001600160a01b038516600090815260076020526040812091909155611d05856124f5565b1580611d175750611d15846124f5565b155b611d3e57601a54611d3990869085906001600160a01b03888116911614612514565b611d40565b825b6001600160a01b038516600090815260076020526040902054909150611d669082611a09565b6001600160a01b038086166000908152600760209081526040808320949094559188168152600c909152205460ff16611e1257601d546001600160a01b03868116600081815260076020526040808220548151630a5b654b60e11b81526004810194909452602484015251610100909404909216926314b6ca969260448084019391929182900301818387803b158015611dff57600080fd5b505af1925050508015611e10575060015b505b6001600160a01b0384166000908152600c602052604090205460ff16611eab57601d546001600160a01b03858116600081815260076020526040808220548151630a5b654b60e11b81526004810194909452602484015251610100909404909216926314b6ca969260448084019391929182900301818387803b158015611e9857600080fd5b505af1925050508015611ea9575060015b505b601d60019054906101000a90046001600160a01b03166001600160a01b031663ffb2c479601e546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015611f0857600080fd5b505af1925050508015611f19575060015b50836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3506001949350505050565b600061107c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a63565b600082611fc157506000610ec8565b82820282848281611fce57fe5b041461107c5760405162461bcd60e51b81526004018080602001828103825260218152602001806126616021913960400191505060405180910390fd5b600061107c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125d3565b601a546000906001600160a01b0316331480159061206e575060245460ff16155b801561207c575060225460ff165b80156110c757505060235430600090815260076020526040902054101590565b6024805460ff191660011790556017546018546000916120bb91610ece565b6120c757600d546120ca565b60005b905060006120ee60026114fa6011546114fa86602354611fb290919063ffffffff16565b9050600061210782602354611f7090919063ffffffff16565b604080516002808252606080830184529394509091602083019080368337019050509050308160008151811061213957fe5b6001600160a01b03928316602091820292909201015260035482519116908290600190811061216457fe5b6001600160a01b0392831660209182029290920181019190915260195460405163791ac94760e01b8152600481018681526000602483018190523060648401819052426084850181905260a060448601908152895160a487015289514799979097169763791ac947978c9795968c9690939260c49091019187820191028083838b5b838110156121fe5781810151838201526020016121e6565b505050509050019650505050505050600060405180830381600087803b15801561222757600080fd5b505af115801561223b573d6000803e3d6000fd5b5050505060006122548247611f7090919063ffffffff16565b9050600061226f61226688600261200b565b60115490611f70565b9050600061228460026114fa8481878d611fb2565b905060006122a1836114fa600e5487611fb290919063ffffffff16565b905060006122be846114fa600f5488611fb290919063ffffffff16565b905060006122db856114fa60105489611fb290919063ffffffff16565b9050601d60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b15801561232d57600080fd5b505af19350505050801561233f575060015b506015546040516000916001600160a01b03169061753090859084818181858888f193505050503d8060008114612392576040519150601f19603f3d011682016040523d82523d6000602084013e612397565b606091505b50506016546040519192506001600160a01b0316906175309084906000818181858888f193505050503d80600081146123ec576040519150601f19603f3d011682016040523d82523d6000602084013e6123f1565b606091505b5060009250508b1590506124dd576019546014546040805163f305d71960e01b8152306004820152602481018f905260006044820181905260648201526001600160a01b0392831660848201524260a48201529051919092169163f305d71991889160c48082019260609290919082900301818588803b15801561247457600080fd5b505af1158015612488573d6000803e3d6000fd5b50505050506040513d606081101561249f57600080fd5b505060408051868152602081018d905281517f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506929181900390910190a15b50506024805460ff1916905550505050505050505050565b6001600160a01b031660009081526009602052604090205460ff161590565b60008082612523576064612527565b6013545b9050600061254d6012546064026114fa846114ed6011548a611fb290919063ffffffff16565b3060009081526007602052604090205490915061256a9082611a09565b30600081815260076020908152604091829020939093558051848152905191926001600160a01b038a16927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a36125c98582611f70565b9695505050505050565b600081836126225760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611ab7578181015183820152602001611a9f565b50600083858161262e57fe5b049594505050505056fe4d69736d61746368206265747765656e204164647265737320616e6420746f6b656e20636f756e74536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77506c65617365207761697420666f722031206d696e757465206265747765656e20322062757973a26469706673582212207d9cb645a0d2b2b87c8a8b91b17199adb6768ce9b2bf86d403f3b88f45e6c7c164736f6c63430007040033

Deployed ByteCode Sourcemap

10858:13133:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23158:764;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23158:764:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23158:764:0;;-1:-1:-1;23158:764:0;-1:-1:-1;23158:764:0;:::i;:::-;;12586:56;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;21055:484;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21055:484:0;;;;;;;;;;;;;;;;;;;;;;:::i;14161:80::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14583:216;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14583:216:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;22995:150;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22995:150:0;;;;;;;:::i;13891:88::-;;;;;;;;;;;;;:::i;18001:208::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18001:208:0;;:::i;11809:28::-;;;;;;;;;;;;;:::i;22140:183::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22140:183:0;;;;;;;:::i;15095:364::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15095:364:0;;;;;;;;;;;;;;;;;:::i;22670:142::-;;;;;;;;;;;;;:::i;22331:183::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22331:183:0;;;;;;;:::i;18352:164::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18352:164:0;;;;;;;;;;;:::i;2882:103::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2882:103:0;-1:-1:-1;;;;;2882:103:0;;:::i;13985:80::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21854:114;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21854:114:0;-1:-1:-1;;;;;21854:114:0;;:::i;20917:130::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;20917:130:0;;;;;;;;;;:::i;14807:116::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14807:116:0;-1:-1:-1;;;;;14807:116:0;;:::i;12403:38::-;;;;;;;;;;;;;:::i;20787:120::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;20787:120:0;;;;;;;;;;:::i;12549:30::-;;;;;;;;;;;;;:::i;14331:105::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14331:105:0;-1:-1:-1;;;;;14331:105:0;;:::i;12448:38::-;;;;;;;;;;;;;:::i;14247:78::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;14247:78:0;;;;;;;;;;;;;;14071:84;;;;;;;;;;;;;:::i;22522:136::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22522:136:0;;:::i;12138:19::-;;;;;;;;;;;;;:::i;14931:156::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14931:156:0;;;;;;;;:::i;2668:94::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2668:94:0;-1:-1:-1;;;;;2668:94:0;;:::i;12187:25::-;;;;;;;;;;;;;:::i;22820:167::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22820:167:0;;:::i;21547:299::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;21547:299:0;;;;;;;;;;;;;;;;;;;:::i;14442:133::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14442:133:0;;;;;;;;;;:::i;21976:156::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21976:156:0;;;;;;;;;:::i;18221:121::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18221:121:0;;:::i;2774:97::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2774:97:0;-1:-1:-1;;;;;2774:97:0;;:::i;3114:173::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3114:173:0;-1:-1:-1;;;;;3114:173:0;;:::i;20432:347::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;20432:347:0;;;;;;;;;;:::i;12107:24::-;;;;;;;;;;;;;:::i;2996:107::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2996:107:0;-1:-1:-1;;;;;2996:107:0;;:::i;12219:30::-;;;;;;;;;;;;;:::i;23158:764::-;2510:19;2518:10;2510:7;:19::i;:::-;2502:38;;;;;-1:-1:-1;;;2502:38:0;;;;;;;;;;;;-1:-1:-1;;;2502:38:0;;;;;;;;;;;;;;;23274:12:::1;23307:33:::0;;::::1;23299:85;;;;-1:-1:-1::0;;;23299:85:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23397:6;23393:82;23407:20:::0;;::::1;23393:82;;;23458:6;;23465:1;23458:9;;;;;;;;;::::0;;;::::1;;23451:16:::0;;;::::1;::::0;-1:-1:-1;23429:3:0::1;;23393:82;;;;23510:4;23491:15;23501:4;23491:9;:15::i;:::-;:23;;23483:64;;;::::0;;-1:-1:-1;;;23483:64:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;23560:6;23556:250;23570:20:::0;;::::1;23556:250;;;23607:43;23622:4;23627:9;;23637:1;23627:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;23627:12:0::1;23640:6;;23647:1;23640:9;;;;;;;;;;;;;23607:14;:43::i;:::-;;23665:16;:30;23682:9;;23692:1;23682:12;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;23682:12:0::1;23665:30:::0;;-1:-1:-1;23665:30:0;::::1;::::0;;;;;;-1:-1:-1;23665:30:0;;::::1;;23661:138;;23716:11;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;23716:11:0::1;:20;23737:9:::0;;23747:1;23737:12;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;23737:12:0::1;23751:9;:23;23761:9;;23771:1;23761:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;23761:12:0::1;-1:-1:-1::0;;;;;23751:23:0::1;-1:-1:-1::0;;;;;23751:23:0::1;;;;;;;;;;;;;23716:59;;;;;;;;;;;;;-1:-1:-1::0;;;;;23716:59:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;23712:75:::0;::::1;23592:3;;23556:250;;;-1:-1:-1::0;;;;;;23818:22:0;::::1;;::::0;;;:16:::1;:22;::::0;;;;;::::1;;23814:105;;23857:11;::::0;-1:-1:-1;;;;;23884:15:0;;::::1;;::::0;;;:9:::1;:15;::::0;;;;;;23857:43;;-1:-1:-1;;;23857:43:0;;::::1;::::0;::::1;::::0;;;;;;;;;:11:::1;::::0;;::::1;::::0;;::::1;::::0;:20:::1;::::0;:43;;;;;23884:15;;23857:43;;;;;;23884:15;23857:11;:43;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;;;;;23853:59:::0;::::1;2542:1;23158:764:::0;;;;;:::o;12586:56::-;;;;:::o;21055:484::-;2605:24;2618:10;2605:12;:24::i;:::-;2597:48;;;;;-1:-1:-1;;;2597:48:0;;;;;;;;;;;;-1:-1:-1;;;2597:48:0;;;;;;;;;;;;;;;21216:12:::1;:28:::0;;;21255:13:::1;:30:::0;;;21296:12:::1;:28:::0;;;21335:7:::1;:18:::0;;;21375:66:::1;21345:8:::0;21375:52:::1;21311:13:::0;21375:52;21231:13;21271:14;21375:17:::1;:33::i;:::-;:37:::0;::::1;:52::i;:66::-;21364:8;:77:::0;21452:14:::1;:32:::0;;;21529:1:::1;21469:15:::0;21514:16:::1;21503:8;;:27;21495:36;;;::::0;::::1;;21055:484:::0;;;;;:::o;14161:80::-;14233:5;;;;;;;;;;;;-1:-1:-1;;;14233:5:0;;;;14161:80;:::o;14583:216::-;14687:10;14658:4;14675:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;14675:32:0;;;;;;;;;;;:41;;;14732:37;;;;;;;14658:4;;14675:32;;14687:10;;14732:37;;;;;;;;-1:-1:-1;14787:4:0;14583:216;;;;;:::o;22995:150::-;23075:4;23131:6;23099:29;23119:8;23099:19;:29::i;:::-;:38;;22995:150;-1:-1:-1;;;22995:150:0:o;13891:88::-;13964:12;;13891:88;:::o;18001:208::-;2605:24;2618:10;2605:12;:24::i;:::-;2597:48;;;;;-1:-1:-1;;;2597:48:0;;;;;;;;;;;;-1:-1:-1;;;2597:48:0;;;;;;;;;;;;;;;18137:64:::1;::::0;18105:21:::1;::::0;18145:10:::1;::::0;18197:3:::1;18166:28:::0;;::::1;:34;18137:64:::0;::::1;;;::::0;::::1;::::0;;;18166:34;18145:10;18137:64;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;2647:1;18001:208:::0;:::o;11809:28::-;;;;:::o;22140:183::-;2605:24;2618:10;2605:12;:24::i;:::-;2597:48;;;;;-1:-1:-1;;;2597:48:0;;;;;;;;;;;;-1:-1:-1;;;2597:48:0;;;;;;;;;;;;;;;22238:15:::1;:25:::0;;;;22274:26:::1;:41:::0;22140:183::o;15095:364::-;-1:-1:-1;;;;;15215:19:0;;15195:4;15215:19;;;:11;:19;;;;;;;;15235:10;15215:31;;;;;;;;-1:-1:-1;;15215:46:0;15212:180;;15311:69;;;;;;;;;;;-1:-1:-1;;;15311:69:0;;;;;;;;-1:-1:-1;;;;;15311:19:0;;-1:-1:-1;15311:19:0;;;:11;:19;;;;;15331:10;15311:31;;;;;;;;;;:69;;15347:6;;15311:35;:69::i;:::-;-1:-1:-1;;;;;15277:19:0;;;;;;:11;:19;;;;;;;;15297:10;15277:31;;;;;;;:103;15212:180;15411:40;15425:6;15433:9;15444:6;15411:13;:40::i;:::-;15404:47;;15095:364;;;;;;:::o;22670:142::-;22798:4;;22723:7;;22750:54;;22788:15;;-1:-1:-1;;;;;22798:4:0;22788:9;:15::i;:::-;22777:4;;22750:33;;22767:15;;-1:-1:-1;;;;;22777:4:0;22767:9;:15::i;:::-;22750:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;22743:61;;22670:142;:::o;22331:183::-;2605:24;2618:10;2605:12;:24::i;:::-;2597:48;;;;;-1:-1:-1;;;2597:48:0;;;;;;;;;;;;-1:-1:-1;;;2597:48:0;;;;;;;;;;;;;;;22441:11:::1;;;;;;;;;-1:-1:-1::0;;;;;22441:11:0::1;-1:-1:-1::0;;;;;22441:35:0::1;;22477:10;22489:16;22441:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;18352:164:::0;2510:19;2518:10;2510:7;:19::i;:::-;2502:38;;;;;-1:-1:-1;;;2502:38:0;;;;;;;;;;;;-1:-1:-1;;;2502:38:0;;;;;;;;;;;;;;;18436:18:::1;:28:::0;;-1:-1:-1;;18436:28:0::1;::::0;::::1;;::::0;;;::::1;-1:-1:-1::0;;18475:33:0::1;18436:28;;18475:33:::0;;;::::1;::::0;;;::::1;;::::0;;18352:164::o;2882:103::-;2937:4;2972:5;-1:-1:-1;;;;;2972:5:0;;;2961:16;;;;2882:103::o;13985:80::-;11311:1;13985:80;:::o;21854:114::-;2605:24;2618:10;2605:12;:24::i;:::-;2597:48;;;;;-1:-1:-1;;;2597:48:0;;;;;;;;;;;;-1:-1:-1;;;2597:48:0;;;;;;;;;;;;;;;-1:-1:-1;21952:7:0::1;::::0;21941:6:::1;::::0;-1:-1:-1;;;;;21941:6:0::1;21931:17;::::0;;;:9:::1;:17;::::0;;;;:29;21854:114::o;20917:130::-;2605:24;2618:10;2605:12;:24::i;:::-;2597:48;;;;;-1:-1:-1;;;2597:48:0;;;;;;;;;;;;-1:-1:-1;;;2597:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;21006:24:0;;;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;21006:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20917:130::o;14807:116::-;14862:4;14886:29;14894:7;-1:-1:-1;;14886:7:0;:29::i;12403:38::-;;;;;;:::o;20787:120::-;2605:24;2618:10;2605:12;:24::i;:::-;2597:48;;;;;-1:-1:-1;;;2597:48:0;;;;;;;;;;;;-1:-1:-1;;;2597:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;20871:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;20871:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20787:120::o;12549:30::-;;;;;;:::o;14331:105::-;-1:-1:-1;;;;;14415:18:0;14397:7;14415:18;;;:9;:18;;;;;;;14331:105::o;12448:38::-;;;;;;;;;:::o;14247:78::-;14299:7;14317:5;-1:-1:-1;;;;;14317:5:0;14247:78;:::o;14071:84::-;14145:7;;;;;;;;;;;;-1:-1:-1;;;14145:7:0;;;;14071:84;:::o;22522:136::-;2605:24;2618:10;2605:12;:24::i;:::-;2597:48;;;;;-1:-1:-1;;;2597:48:0;;;;;;;;;;;;-1:-1:-1;;;2597:48:0;;;;;;;;;;;;;;;22612:6:::1;22606:3;:12;22598:21;;;::::0;::::1;;22630:14;:20:::0;22522:136::o;12138:19::-;;;-1:-1:-1;;;;;12138:19:0;;:::o;14931:156::-;15011:4;15035:44;15049:10;15061:9;15072:6;15035:13;:44::i;2668:94::-;2510:19;2518:10;2510:7;:19::i;:::-;2502:38;;;;;-1:-1:-1;;;2502:38:0;;;;;;;;;;;;-1:-1:-1;;;2502:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;2728:19:0::1;;::::0;;;2750:4:::1;2728:19;::::0;;;;;;;:26;;-1:-1:-1;;2728:26:0::1;::::0;;::::1;::::0;;2668:94::o;12187:25::-;;;;:::o;22820:167::-;22888:7;22915:64;22956:22;:20;:22::i;:::-;22938:4;;22915:36;;22928:22;;22948:1;;22928:15;;-1:-1:-1;;;;;22938:4:0;22928:9;:15::i;:::-;:19;;:22::i;:::-;22915:8;;:12;:36::i;:::-;:40;;:64::i;21547:299::-;2605:24;2618:10;2605:12;:24::i;:::-;2597:48;;;;;-1:-1:-1;;;2597:48:0;;;;;;;;;;;;-1:-1:-1;;;2597:48:0;;;;;;;;;;;;;;;21692:21:::1;:46:::0;;-1:-1:-1;;;;;21692:46:0;;::::1;-1:-1:-1::0;;;;;;21692:46:0;;::::1;;::::0;;;21749:20:::1;:44:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;21804:15:::1;:34:::0;;;;;::::1;::::0;::::1;;::::0;;21547:299::o;14442:133::-;-1:-1:-1;;;;;14544:19:0;;;14526:7;14544:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;14442:133::o;21976:156::-;2605:24;2618:10;2605:12;:24::i;:::-;2597:48;;;;;-1:-1:-1;;;2597:48:0;;;;;;;;;;;;-1:-1:-1;;;2597:48:0;;;;;;;;;;;;;;;22068:11:::1;:22:::0;;-1:-1:-1;;22068:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;22101:13:::1;:23:::0;21976:156::o;18221:121::-;2510:19;2518:10;2510:7;:19::i;:::-;2502:38;;;;;-1:-1:-1;;;2502:38:0;;;;;;;;;;;;-1:-1:-1;;;2502:38:0;;;;;;;;;;;;;;;18299:14:::1;:27:::0;18221:121::o;2774:97::-;2510:19;2518:10;2510:7;:19::i;:::-;2502:38;;;;;-1:-1:-1;;;2502:38:0;;;;;;;;;;;;-1:-1:-1;;;2502:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;2836:19:0::1;2858:5;2836:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;2836:27:0::1;::::0;;2774:97::o;3114:173::-;2510:19;2518:10;2510:7;:19::i;:::-;2502:38;;;;;-1:-1:-1;;;2502:38:0;;;;;;;;;;;;-1:-1:-1;;;2502:38:0;;;;;;;;;;;;;;;3190:5:::1;:11:::0;;-1:-1:-1;;;;;;3190:11:0::1;-1:-1:-1::0;;;;;3190:11:0;::::1;::::0;;::::1;::::0;;3212:19;;;-1:-1:-1;3212:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;3212:26:0::1;::::0;;::::1;::::0;;;3254:25;;;;;;;::::1;::::0;;;;;;;;;::::1;3114:173:::0;:::o;20432:347::-;2605:24;2618:10;2605:12;:24::i;:::-;2597:48;;;;;-1:-1:-1;;;2597:48:0;;;;;;;;;;;;-1:-1:-1;;;2597:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;20529:23:0;::::1;20547:4;20529:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;20566:4:0::1;::::0;-1:-1:-1;;;;;20556:14:0;;::::1;20566:4:::0;::::1;20556:14;;20529:41;20521:50;;;::::0;::::1;;-1:-1:-1::0;;;;;20582:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;20582:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;20626:146:::1;;20651:11;::::0;:31:::1;::::0;;-1:-1:-1;;;20651:31:0;;-1:-1:-1;;;;;20651:31:0;;::::1;;::::0;::::1;::::0;20680:1:::1;20651:31:::0;;;;;;;;:11:::1;::::0;;::::1;;::::0;:20:::1;::::0;:31;;;;;20680:1;;20651:31;;;;;;20680:1;20651:11;:31;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20626:146;;;20713:11;::::0;-1:-1:-1;;;;;20742:17:0;;::::1;;::::0;;;:9:::1;:17;::::0;;;;;;20713:47;;-1:-1:-1;;;20713:47:0;;::::1;::::0;::::1;::::0;;;;;;;;;:11:::1;::::0;;::::1;::::0;;::::1;::::0;:20:::1;::::0;:47;;;;;20742:17;;20713:47;;;;;;20742:17;20713:11;:47;::::1;;::::0;::::1;;;;::::0;::::1;20626:146;20432:347:::0;;:::o;12107:24::-;;;-1:-1:-1;;;;;12107:24:0;;:::o;2996:107::-;-1:-1:-1;;;;;3076:19:0;3052:4;3076:19;;;:14;:19;;;;;;;;;2996:107::o;12219:30::-;;;;;;:::o;16895:330::-;17025:53;;;;;;;;;;;-1:-1:-1;;;17025:53:0;;;;;;;;-1:-1:-1;;;;;17025:17:0;;16988:4;17025:17;;;:9;:17;;;;;;;:53;;17047:6;;17025:21;:53::i;:::-;-1:-1:-1;;;;;17005:17:0;;;;;;;:9;:17;;;;;;:73;;;;17112:20;;;;;;;:32;;17137:6;17112:24;:32::i;:::-;-1:-1:-1;;;;;17089:20:0;;;;;;;:9;:20;;;;;;;;;:55;;;;17160:35;;;;;;;17089:20;;17160:35;;;;;;;;;;;;;-1:-1:-1;17213:4:0;16895:330;;;;;:::o;187:181::-;245:7;277:5;;;301:6;;;;293:46;;;;;-1:-1:-1;;;293:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;516:192;602:7;638:12;630:6;;;;622:29;;;;-1:-1:-1;;;622:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;674:5:0;;;516:192::o;15469:1414::-;15581:6;;15561:4;;15581:6;;15578:63;;;15597:41;15612:6;15620:9;15631:6;15597:14;:41::i;:::-;15590:48;;;;15578:63;-1:-1:-1;;;;;15657:22:0;;;;;;:14;:22;;;;;;;;15656:23;:53;;;;-1:-1:-1;;;;;;15684:25:0;;;;;;:14;:25;;;;;;;;15683:26;15656:53;15653:127;;;15733:11;;;;15725:43;;;;;-1:-1:-1;;;15725:43:0;;;;;;;;;;;;-1:-1:-1;;;15725:43:0;;;;;;;;;;;;;;;15816:4;;-1:-1:-1;;;;;15806:14:0;;;15816:4;;15806:14;:49;;;;-1:-1:-1;15837:18:0;;;;15806:49;:94;;;;-1:-1:-1;;;;;;15873:27:0;;;;;;:16;:27;;;;;;;;15872:28;15806:94;15802:301;;;-1:-1:-1;;;;;15925:24:0;;;;;;:13;:24;;;;;;15952:15;-1:-1:-1;15917:93:0;;;;-1:-1:-1;;;15917:93:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16070:21;;;-1:-1:-1;;;;;16025:24:0;;;;;;:13;:24;;;;;;;16070:21;;;;;;16052:15;:39;16025:66;;15802:301;16120:16;:14;:16::i;:::-;16117:35;;;16139:10;:8;:10::i;:::-;16184:53;;;;;;;;;;;-1:-1:-1;;;16184:53:0;;;;;;;;-1:-1:-1;;;;;16184:17:0;;-1:-1:-1;16184:17:0;;;:9;:17;;;;;;;;:53;;16206:6;;16184:21;:53::i;:::-;-1:-1:-1;;;;;16164:17:0;;;;;;:9;:17;;;;;:73;;;;16277:21;16174:6;16277:13;:21::i;:::-;16276:22;:51;;;;16303:24;16317:9;16303:13;:24::i;:::-;16302:25;16276:51;16275:108;;16377:4;;16340:43;;16348:6;;16356;;-1:-1:-1;;;;;16364:17:0;;;16377:4;;16364:17;16340:7;:43::i;:::-;16275:108;;;16331:6;16275:108;-1:-1:-1;;;;;16417:20:0;;;;;;:9;:20;;;;;;16250:133;;-1:-1:-1;16417:40:0;;16250:133;16417:24;:40::i;:::-;-1:-1:-1;;;;;16394:20:0;;;;;;;:9;:20;;;;;;;;:63;;;;16474:24;;;;;:16;:24;;;;;;;16470:119;;16519:11;;-1:-1:-1;;;;;16548:17:0;;;;;;;:9;:17;;;;;;;16519:47;;-1:-1:-1;;;16519:47:0;;;;;;;;;;;;;;:11;;;;;;;;:20;;:47;;;;;16548:17;;16519:47;;;;;;16548:17;16519:11;:47;;;;;;;;;;;;;;;;;;;;;;;;;16515:63;;-1:-1:-1;;;;;16605:27:0;;;;;;:16;:27;;;;;;;;16601:129;;16653:11;;-1:-1:-1;;;;;16685:20:0;;;;;;;:9;:20;;;;;;;16653:53;;-1:-1:-1;;;16653:53:0;;;;;;;;;;;;;;:11;;;;;;;;:20;;:53;;;;;16685:20;;16653:53;;;;;;16685:20;16653:11;:53;;;;;;;;;;;;;;;;;;;;;;;;;16649:69;;16746:11;;;;;;;;;-1:-1:-1;;;;;16746:11:0;-1:-1:-1;;;;;16746:19:0;;16766:14;;16746:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16742:51;16827:9;-1:-1:-1;;;;;16810:43:0;16819:6;-1:-1:-1;;;;;16810:43:0;;16838:14;16810:43;;;;;;;;;;;;;;;;;;-1:-1:-1;16871:4:0;;15469:1414;-1:-1:-1;;;;15469:1414:0:o;374:136::-;432:7;459:43;463:1;466;459:43;;;;;;;;;;;;;;;;;:3;:43::i;714:250::-;772:7;796:6;792:47;;-1:-1:-1;826:1:0;819:8;;792:47;863:5;;;867:1;863;:5;:1;887:5;;;;;:10;879:56;;;;-1:-1:-1;;;879:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;970:132;1028:7;1055:39;1059:1;1062;1055:39;;;;;;;;;;;;;;;;;:3;:39::i;17796:197::-;17883:4;;17845;;-1:-1:-1;;;;;17883:4:0;17869:10;:18;;;;:38;;-1:-1:-1;17901:6:0;;;;17900:7;17869:38;:62;;;;-1:-1:-1;17920:11:0;;;;17869:62;:116;;;;-1:-1:-1;;17972:13:0;;17962:4;17944:24;;;;:9;:24;;;;;;:41;;;17796:197::o;18528:1894::-;12708:6;:13;;-1:-1:-1;;12708:13:0;12717:4;12708:13;;;18623:15:::1;::::0;18640:26:::1;::::0;12708:6;;18607:60:::1;::::0;:15:::1;:60::i;:::-;:79;;18674:12;;18607:79;;;18670:1;18607:79;18577:109;;18697:23;18723:59;18780:1;18723:52;18766:8;;18723:38;18741:19;18723:13;;:17;;:38;;;;:::i;:59::-;18697:85;;18793:20;18816:34;18834:15;18816:13;;:17;;:34;;;;:::i;:::-;18887:16;::::0;;18901:1:::1;18887:16:::0;;;18863:21:::1;18887:16:::0;;::::1;::::0;;18793:57;;-1:-1:-1;18887:16:0;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;18887:16:0::1;18863:40;;18932:4;18914;18919:1;18914:7;;;;;;;;-1:-1:-1::0;;;;;18914:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;18958:4:::1;::::0;18948:7;;18958:4;::::1;::::0;18948;;18958;;18948:7;::::1;;;;;-1:-1:-1::0;;;;;18948:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:14;;;;19033:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;19033:188:0;;::::1;::::0;::::1;::::0;;;18975:21:::1;19033:188:::0;;;;;;19175:4:::1;19033:188:::0;;;;;;19195:15:::1;19033:188:::0;;;;;;;;;;;;;;;;;;;;;18999:21:::1;::::0;19033:6;;;::::1;::::0;:57:::1;::::0;19105:12;;18975:21;;19148:4;;19033:188;;;;;;;;;;::::1;::::0;::::1;::::0;;;18975:21;19033:188:::1;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19234:17;19254:40;19280:13;19254:21;:25;;:40;;;;:::i;:::-;19234:60:::0;-1:-1:-1;19307:19:0::1;19329:40;19342:26;:19:::0;19366:1:::1;19342:23;:26::i;:::-;19329:8;::::0;;:12:::1;:40::i;:::-;19307:62:::0;-1:-1:-1;19390:26:0::1;19419:58;19475:1;19419:51;19307:62:::0;19419:51;:9;19433:19;19419:13:::1;:34::i;:58::-;19390:87;;19488:27;19518:45;19551:11;19518:28;19532:13;;19518:9;:13;;:28;;;;:::i;:45::-;19488:75;;19574:26;19603:44;19635:11;19603:27;19617:12;;19603:9;:13;;:27;;;;:::i;:44::-;19574:73;;19658:21;19682:39;19709:11;19682:22;19696:7;;19682:9;:13;;:22;;;;:::i;:39::-;19658:63;;19738:11;;;;;;;;;-1:-1:-1::0;;;;;19738:11:0::1;-1:-1:-1::0;;;;;19738:19:0::1;;19765;19738:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;19734:65:::0;19838:20:::1;::::0;19830:77:::1;::::0;19810:15:::1;::::0;-1:-1:-1;;;;;19838:20:0::1;::::0;19897:5:::1;::::0;19872:18;;19810:15;19830:77;19810:15;19830:77;19872:18;19838:20;19897:5;19830:77:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;19942:15:0::1;::::0;19934:67:::1;::::0;19809:98;;-1:-1:-1;;;;;;19942:15:0::1;::::0;19991:5:::1;::::0;19971:13;;19942:15:::1;19934:67:::0;19942:15;19934:67;19971:13;19942:15;19991:5;19934:67:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;20035:5:0::1;::::0;-1:-1:-1;;20056:19:0;;;-1:-1:-1;20053:362:0::1;;20091:6;::::0;20265:21:::1;::::0;20091:244:::1;::::0;;-1:-1:-1;;;20091:244:0;;20167:4:::1;20091:244;::::0;::::1;::::0;;;;;;;:6:::1;:244:::0;;;;;;;;;;-1:-1:-1;;;;;20265:21:0;;::::1;20091:244:::0;;;;20305:15:::1;20091:244:::0;;;;;;:6;;;::::1;::::0;:22:::1;::::0;20121:18;;20091:244;;;;;::::1;::::0;;;;;;;;;20121:18;20091:6;:244;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;20091:244:0;20355:48;;;;;20091:244:::1;20355:48:::0;::::1;::::0;;;;;::::1;::::0;;;;;;;;;::::1;20053:362;-1:-1:-1::0;;12726:6:0;:14;;-1:-1:-1;;12726:14:0;;;-1:-1:-1;;;;;;;;;;18528:1894:0:o;17235:114::-;-1:-1:-1;;;;;17322:19:0;17297:4;17322:19;;;:11;:19;;;;;;;;17321:20;;17235:114::o;17357:431::-;17437:7;17459:18;17480:6;:29;;17506:3;17480:29;;;17489:14;;17480:29;17459:50;;17520:17;17540:62;17581:14;;17598:3;17581:20;17540:36;17565:10;17540:20;17551:8;;17540:6;:10;;:20;;;;:::i;:62::-;17660:4;17642:24;;;;:9;:24;;;;;;17520:82;;-1:-1:-1;17642:39:0;;17520:82;17642:28;:39::i;:::-;17633:4;17615:24;;;;:9;:24;;;;;;;;;:66;;;;17697:42;;;;;;;17633:4;;-1:-1:-1;;;;;17697:42:0;;;;;;;;;;;;;17759:21;:6;17770:9;17759:10;:21::i;:::-;17752:28;17357:431;-1:-1:-1;;;;;;17357:431:0:o;1108:207::-;1194:7;1235:12;1228:5;1220:28;;;;-1:-1:-1;;;1220:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1259:9;1275:1;1271;:5;;;;;;;1108:207;-1:-1:-1;;;;;1108:207:0:o

Swarm Source

ipfs://4e03d60658be919c93093788f82dbe4665014f9b2f9d9b867fa9c5d4833a82d8
Loading