ETH Price: $3,268.93 (-1.26%)
Gas: 10 Gwei

Token

ALPHA CENTAURI LAUNCHPAD ($PROXIMA)
 

Overview

Max Total Supply

1,000,000,000 $PROXIMA

Holders

63

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
19,800,000 $PROXIMA

Value
$0.00
0x14ccbacec1f7dd883b8409517915e72f56f130d6
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
ALPHACENTAURILAUNCHPAD

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-01-15
*/

/**        "ALPHA CENTAURI LAUNCHPAD"

TELEGRAM ; https://t.me/AlphaCentauriLaunchpad
WEBSITE  ; https://alphacentaurilaunchpad.com/
TWITTER  ; https://twitter.com/AClaunchpad
 *
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity 0.8.13;


                                

/**
 * Standard SafeMath, stripped down to just add/sub/mul/div
 */
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) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
}

/**
 * ERC20 standard interface.
 */
interface IERC20 {
    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;

    constructor(address _owner) {
         owner = _owner;
     }

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

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

    /**
     * Transfer ownership to new address. Caller must be deployer. Leaves old deployer authorized
     */
    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        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 setRewardToken(address newRewardToken) external;
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit(uint256 amount) external;
    function claimDividend(address shareholder) external;
    function getDividendsClaimedOf (address shareholder) external returns (uint256);
    function process(uint256 gas) external;
}

contract DividendDistributor is IDividendDistributor {
    using SafeMath for uint256;

    address public _token;
    address public _owner;

    address public RewardToken;


    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalClaimed;
    }

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

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalClaimed;
    uint256 public dividendsPerShare;
    uint256 private dividendsPerShareAccuracyFactor = 10 ** 36;

    uint256 public minPeriod;
    uint256 public minDistribution;

    uint256 currentIndex;
    bool initialized;

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

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

    modifier onlyOwner() {
        require(msg.sender == _owner); _;
    }

    constructor (address owner) {
        _token = msg.sender;
        _owner = owner;
    }

    receive() external payable { }

    function setRewardToken(address newRewardToken) external override onlyToken {
        RewardToken = newRewardToken;
    }

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

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

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

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

    function deposit(uint256 amount) external override onlyToken {
        
        if (amount > 0) {        
            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 iterations = 0;
        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();

        while(gasUsed < gas && iterations < shareholderCount) {

            if(currentIndex >= shareholderCount){ currentIndex = 0; }

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

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

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

        uint256 amount = getClaimableDividendOf(shareholder);
        if(amount > 0){
            totalClaimed = totalClaimed.add(amount);
            shares[shareholder].totalClaimed = shares[shareholder].totalClaimed.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
            IERC20(RewardToken).transfer(shareholder, amount);
        }
    }

    function claimDividend(address shareholder) external override onlyToken {
        distributeDividend(shareholder);
    }

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

    function manualSend(uint256 amount, address holder) external onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        payable(holder).transfer(amount > 0 ? amount : contractETHBalance);
    }
   
    function getDividendsClaimedOf (address shareholder) external view returns (uint256) {
        require (shares[shareholder].amount > 0, "You're not a Proxima shareholder!");
        return shares[shareholder].totalClaimed;
    }
}

contract ALPHACENTAURILAUNCHPAD is IERC20, Auth {
    using SafeMath for uint256;

    address public RewardToken;

    string private constant _name = "ALPHA CENTAURI LAUNCHPAD";
    string private constant _symbol = "$PROXIMA";
    uint8 private constant _decimals = 9;
    
    uint256 private _totalSupply = 1000000000 * (10 ** _decimals);

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

    address private WETH;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    bool public limitsInEffect = true;
    //bool public antiBot = true;

    //mapping (address => bool) private bots; 
    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isDividendExempt;

    uint256 public launchedAt;

    uint256 public burnFeeBuy = 10;
    uint256 public rewardFeeBuy = 40;
    uint256 public lpFeeBuy = 0;
    uint256 public marketingFeeBuy = 40;


    uint256 public rewardFeeSell = 40;
    uint256 public lpFeeSell = 0;
    uint256 public marketingFeeSell = 30;
    uint256 public burnFeeSell = 30;
    
    uint public feeDenominator = 1000;

    uint256 public totalFeeBuy = burnFeeBuy.add(lpFeeBuy).add(rewardFeeBuy).add(marketingFeeBuy);
    uint256 public totalFeeSell = burnFeeSell.add(lpFeeSell).add(rewardFeeSell).add(marketingFeeSell); 

    IDEXRouter public router;
    address public pair;

    DividendDistributor public distributor;
    uint256 public distributorGas = 0;

    address payable public marketingWallet = payable(0x59414621a029dB10d97c6d188AA0f0EA619b8242);
    address payable public deadWallet = payable(0x000000000000000000000000000000000000dEaD);

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

    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    uint256 public maxTx = _totalSupply.div(200);
    uint256 public maxWallet = _totalSupply.div(300);
    uint256 public swapThreshold = _totalSupply.div(250);

    constructor (
        address _owner        
    ) Auth(_owner) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
            
        WETH = router.WETH();
        
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        
        _allowances[address(this)][address(router)] = type(uint256).max;

        distributor = new DividendDistributor(_owner);
        
        isFeeExempt[_owner] = true;
        isFeeExempt[marketingWallet] = true;             
        isFeeExempt[deadWallet] = true;

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


        isTxLimitExempt[_owner] = true;
        isTxLimitExempt[pair] = true;
        isTxLimitExempt[DEAD] = true;    


        _balances[_owner] = _totalSupply;
    
        emit Transfer(address(0), _owner, _totalSupply);
    }

    receive() external payable { }

    function _updateRewardToken(address newRewardToken) internal {
        distributor.setRewardToken(newRewardToken);
    }

    function updateRewardToken(address newRewardToken) external onlyOwner {
        RewardToken = newRewardToken;
        _updateRewardToken(newRewardToken);
    }

    function changeDistributor(DividendDistributor newDistributor) external onlyOwner {
        distributor = newDistributor;
    }

    function changeFees(uint256 newBurnFeeBuy, uint256 newBurnFeeSell, uint256 newRewardFeeBuy, uint256 newRewardFeeSell, uint256 newLpFeeBuy, uint256 newLpFeeSell,
        uint256 newMarketingFeeBuy, uint256 newMarketingFeeSell) external onlyOwner {

        rewardFeeBuy = newRewardFeeBuy;
        lpFeeBuy = newLpFeeBuy;
        marketingFeeBuy = newMarketingFeeBuy;
        burnFeeBuy = newBurnFeeBuy;

        rewardFeeSell = newRewardFeeSell;
        lpFeeSell = newLpFeeSell;
        marketingFeeSell = newMarketingFeeSell;
        burnFeeSell = newBurnFeeSell;

        totalFeeBuy = burnFeeBuy.add(lpFeeBuy).add(rewardFeeBuy).add(marketingFeeBuy);
        totalFeeSell = burnFeeSell.add(lpFeeSell).add(rewardFeeSell).add(marketingFeeSell);

        require(totalFeeBuy <= 20, "don't be greedy dev");
        require(totalFeeSell <= 20, "don't be greedy dev");
    } 

    function changeMaxTx(uint256 newMaxTx) external onlyOwner {
        maxTx = newMaxTx;
    }

    function changeMaxWallet(uint256 newMaxWallet) external onlyOwner {
        maxWallet  = newMaxWallet;
    }

    function removeLimits(bool) external onlyOwner {            
        limitsInEffect = false;
    }
    
    function changeIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function changeIsTxLimitExempt(address holder, bool exempt) external onlyOwner {      
        isTxLimitExempt[holder] = exempt;
    }

    function setMarketingWallet(address payable newMarketingWallet) external onlyOwner {
        marketingWallet = payable(newMarketingWallet);
    }

    function setDeadWallet(address payable newDeadWallet) external onlyOwner {
        deadWallet = payable(newDeadWallet);
    }

    function setOwnerWallet(address payable newOwnerWallet) external onlyOwner {
        owner = newOwnerWallet;
    }     

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

    function setDistributionCriteria(uint256 newMinPeriod, uint256 newMinDistribution) external onlyOwner {
        distributor.setDistributionCriteria(newMinPeriod, newMinDistribution);        
    }

    // function setBots(address[] memory bots_) external onlyOwner {
    //     for (uint i = 0; i < bots_.length; i++) {
    //         bots[bots_[i]] = true;
    //     }
    // }

    // function delBot(address notbot) external onlyOwner {
    //     bots[notbot] = false;
    // }

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

    function setIsDividendExempt(address holder, bool exempt) external onlyOwner {
        _setIsDividendExempt(holder, exempt);
    }

    function changeDistributorGas(uint256 _distributorGas) external onlyOwner {
        distributorGas = _distributorGas;
    }           

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

    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, type(uint256).max);
    }

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

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

        return _transfer(sender, recipient, amount);
    }

    function _transfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        if (sender!= owner && recipient!= owner) require(tradingActive, "Trading not yet active."); //transfers disabled before tradingActive
       // require([sender] && [recipient]);

        if(inSwapAndLiquify){ return _basicTransfer(sender, recipient, amount); }

        require(amount <= maxTx || isTxLimitExempt[sender], "tx");

        if(!isTxLimitExempt[recipient])
        {
            require(_balances[recipient].add(amount) <= maxWallet, "wallet");
        }

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

        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        
        uint256 finalAmount = !isFeeExempt[sender] && !isFeeExempt[recipient] ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(finalAmount);

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

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

        if (distributorGas > 0) {
            try distributor.process(distributorGas) {} catch {}
        }

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

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }  
    
    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeApplicable = pair == recipient ? totalFeeSell : totalFeeBuy;
        uint256 feeAmount = amount.mul(feeApplicable).div(feeDenominator);

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

        return amount.sub(feeAmount);
    }

    function swapBack() internal lockTheSwap {
        
        uint256 numTokensToSwap = _balances[address(this)];
        uint256 amountForLp = numTokensToSwap.mul(lpFeeSell).div(totalFeeSell).div(2);
        uint256 amountForRewardToken = numTokensToSwap.mul(rewardFeeSell).div(totalFeeSell);
        uint256 amountForBurnToken = numTokensToSwap.mul(burnFeeSell).div(totalFeeSell);
        uint256 amountToSwapForEth = numTokensToSwap.sub(amountForLp).sub(amountForRewardToken).sub(amountForBurnToken);
        

        swapTokensForEth(amountToSwapForEth);

        if (address(RewardToken) == address(this)) {
            IERC20(RewardToken).transfer(address(distributor), amountForRewardToken);
            distributor.deposit(amountForRewardToken);
        }

        if (address(RewardToken) != address(this)) {
            swapTokensForRewardToken(amountForRewardToken);
        }

    }

    function swapTokensForRewardToken(uint256 tokenAmount) private {
        address[] memory path = new address[](3);
        path[0] = address(this);
        path[1] = WETH;
        path[2] = RewardToken;

        router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 dividends = IERC20(RewardToken).balanceOf(address(this));

        bool success = IERC20(RewardToken).transfer(address(distributor), dividends);

        if (success) {
            distributor.deposit(dividends);            
        }     
    }

    function swapTokensForEth(uint256 tokenAmount) private {

        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance;
        uint256 amountToken = address(this).balance;
        uint256 marketingBalance = amountETH.mul(marketingFeeSell).div(totalFeeSell);
        uint256 deadBalance = amountToken.mul(burnFeeSell).div(totalFeeSell);

        uint256 amountEthLiquidity = amountETH.mul(lpFeeSell).div(totalFeeSell).div(2);

        if(amountETH > 0){          
            payable(marketingWallet).transfer(marketingBalance);
        }        
        if(amountToken > 0){          
            payable(deadWallet).transfer(deadBalance); 
            
        }        

        if(amountEthLiquidity > 0){
            router.addLiquidityETH{value: amountEthLiquidity}(
                address(this),
                amountEthLiquidity,
                0,
                0,
                0x000000000000000000000000000000000000dEaD,
                block.timestamp
            );
        }      
    }

    function manualSwapBack() external onlyOwner {
        swapBack();
    }

    function manualSendEth() external onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        uint256 contractTokenBalance = address(this).balance;

        uint256 marketingBalanceETH = contractETHBalance.mul(marketingFeeSell).div(totalFeeSell);
        uint256 deadBalanceToken = contractTokenBalance.mul(burnFeeSell).div(totalFeeSell);
        if(contractETHBalance > 0){          
            
            payable(marketingWallet).transfer(marketingBalanceETH);
        }
        if(contractTokenBalance > 0){          
            payable(deadWallet).transfer(deadBalanceToken); 
            
        }
    }

    //once enabled, cannot be reversed
    function openTrading() external onlyOwner {
        launchedAt = block.number;
        tradingActive = true;
    }      

    //dividend functions
    function claimDividend() external {
        distributor.claimDividend(msg.sender);
    }
    
    function claimDividend(address holder) external onlyOwner {
        distributor.claimDividend(holder);
    }
    
    function getClaimableDividendOf(address shareholder) public view returns (uint256) {
        return distributor.getClaimableDividendOf(shareholder);
    }

    function getTotalDividends() external view returns (uint256) {
        return distributor.totalDividends();
    }    

    function getTotalClaimed() external view returns (uint256) {
        return distributor.totalClaimed();
    }

    function getDividendsClaimedOf (address shareholder) external view returns (uint256) {
        return distributor.getDividendsClaimedOf(shareholder);
    }

    function manualProcessGas(uint256 manualGas) external onlyOwner {
        distributor.process(manualGas);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"RewardToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnFeeBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnFeeSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract DividendDistributor","name":"newDistributor","type":"address"}],"name":"changeDistributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_distributorGas","type":"uint256"}],"name":"changeDistributorGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBurnFeeBuy","type":"uint256"},{"internalType":"uint256","name":"newBurnFeeSell","type":"uint256"},{"internalType":"uint256","name":"newRewardFeeBuy","type":"uint256"},{"internalType":"uint256","name":"newRewardFeeSell","type":"uint256"},{"internalType":"uint256","name":"newLpFeeBuy","type":"uint256"},{"internalType":"uint256","name":"newLpFeeSell","type":"uint256"},{"internalType":"uint256","name":"newMarketingFeeBuy","type":"uint256"},{"internalType":"uint256","name":"newMarketingFeeSell","type":"uint256"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxTx","type":"uint256"}],"name":"changeMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxWallet","type":"uint256"}],"name":"changeMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapBack","type":"bool"},{"internalType":"uint256","name":"newSwapBackLimit","type":"uint256"}],"name":"changeSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributorGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getClaimableDividendOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getDividendsClaimedOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","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":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpFeeBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpFeeSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"manualGas","type":"uint256"}],"name":"manualProcessGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSendEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFeeBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","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":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"}],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardFeeBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardFeeSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"newDeadWallet","type":"address"}],"name":"setDeadWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMinPeriod","type":"uint256"},{"internalType":"uint256","name":"newMinDistribution","type":"uint256"}],"name":"setDistributionCriteria","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 payable","name":"newMarketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwnerWallet","type":"address"}],"name":"setOwnerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFeeBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeSell","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":"tradingActive","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":"newRewardToken","type":"address"}],"name":"updateRewardToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a62000720565b6200002290633b9aca0062000731565b600255600780546001600160a01b03191661dead179055600880546001600160a81b031916600160a01b179055600a600d8190556028600e8190556000600f819055601082905560118290556012819055601e60138190556014556103e8601555620000ba92620000a69183918391620017b962000509602090811b91909117901c565b6200050960201b620017b91790919060201c565b601655620000e9601354620000a6601154620000a66012546014546200050960201b620017b91790919060201c565b6017556000601b55601c80546001600160a01b0319167359414621a029db10d97c6d188aa0f0ea619b8242179055601d8054600162ffff0160a01b031916750100000000000000000000000000000000000000dead179055600254620001609060c86200181862000579602090811b91909117901c565b601e556200018161012c6002546200057960201b620018181790919060201c565b601f55620001a160fa6002546200057960201b620018181790919060201c565b602055348015620001b157600080fd5b50604051620043a4380380620043a4833981016040819052620001d49162000753565b600080546001600160a01b03199081166001600160a01b0384161790915560188054737a250d5630b4cf539739df2c5dacb4c659f2488d921682179055604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa1580156200024d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000273919062000753565b600680546001600160a01b0319166001600160a01b039283161790556018546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa158015620002d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f8919062000753565b6006546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af11580156200034a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000370919062000753565b601980546001600160a01b0319166001600160a01b0392831617905530600090815260046020908152604080832060185490941683529290528190206000199055518190620003bf90620005ff565b6001600160a01b039091168152602001604051809103906000f080158015620003ec573d6000803e3d6000fd5b50601a80546001600160a01b0319166001600160a01b039283161790558181166000818152600960209081526040808320805460ff199081166001908117909255601c54871685528285208054821683179055601d548716855282852080548216831790556019805488168652600b85528386208054831684179055308652838620805483168417905560078054891687528487208054841685179055878752600a865284872080548416851790559054881686528386208054831684179055549096168452818420805490961617909455600254838352600382528483208190559351938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35062000814565b6000806200051883856200077e565b905083811015620005705760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064015b60405180910390fd5b90505b92915050565b60006200057083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620005c360201b60201c565b60008183620005e75760405162461bcd60e51b815260040162000567919062000799565b506000620005f68486620007f1565b95945050505050565b610ff480620033b083390190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006645781600019048211156200064857620006486200060d565b808516156200065657918102915b93841c939080029062000628565b509250929050565b6000826200067d5750600162000573565b816200068c5750600062000573565b8160018114620006a55760028114620006b057620006d0565b600191505062000573565b60ff841115620006c457620006c46200060d565b50506001821b62000573565b5060208310610133831016604e8410600b8410161715620006f5575081810a62000573565b62000701838362000623565b80600019048211156200071857620007186200060d565b029392505050565b60006200057060ff8416836200066c565b60008160001904831182151516156200074e576200074e6200060d565b500290565b6000602082840312156200076657600080fd5b81516001600160a01b03811681146200057057600080fd5b600082198211156200079457620007946200060d565b500190565b600060208083528351808285015260005b81811015620007c857858101830151858201604001528201620007aa565b81811115620007db576000604083870101525b50601f01601f1916929092016040019392505050565b6000826200080f57634e487b7160e01b600052601260045260246000fd5b500490565b612b8c80620008246000396000f3fe6080604052600436106103e85760003560e01c806366eb378511610208578063a8aa1b3111610118578063f0fc6bca116100ab578063f887ea401161007a578063f887ea4014610bc5578063f8b45b0514610be5578063f8cf31cb14610bfb578063fabe628314610c1b578063fb5f27fb14610c3b57600080fd5b8063f0fc6bca14610b50578063f1e9f1e514610b65578063f2fde38b14610b85578063f708a64f14610ba557600080fd5b8063bf56b371116100e7578063bf56b37114610abf578063bfe1092814610ad5578063c9567bf914610af5578063dd62ed3e14610b0a57600080fd5b8063a8aa1b3114610a3e578063a9059cbb14610a5e578063bb542ef014610a7e578063bbc0c74214610a9e57600080fd5b8063778c61521161019b578063893d20e81161016a578063893d20e81461097f5780638b42507f1461099d5780638ecc37fb146109cd57806395d89b41146109ed578063a3a2e89e14610a1e57600080fd5b8063778c6152146108ff578063802cd15f1461091f578063819340311461093f57806385141a771461095f57600080fd5b8063736a83a1116101d7578063736a83a1146108865780637437681e1461089b57806374e8d732146108b157806375f0a874146108c757600080fd5b806366eb37851461081057806367ee5f091461082557806370a082311461083a57806372648fec1461087057600080fd5b80632d48e896116103035780634a62bb6511610296578063571ac8b011610265578063571ac8b01461077a5780635cc33f741461079a5780635d098b38146107ba57806360e71962146107da57806361a60d57146107f057600080fd5b80634a62bb651461070c5780634a74bb021461072d57806352645cd71461074e578063531484161461076457600080fd5b80633f4218e0116102d25780633f4218e014610676578063400343e7146106a65780634355855a146106c657806345ca0b4b146106f657600080fd5b80632d48e896146105eb5780632f54bf6e1461060b578063313ce5671461063a5780633dab52691461065657600080fd5b806316d9962b1161037b5780631deff2161161034a5780631deff2161461058b578063234a2daa146105a057806323b872dd146105b65780632b112e49146105d657600080fd5b806316d9962b1461052057806317090ec814610540578063180b0d7e1461056057806318160ddd1461057657600080fd5b806310075a69116103b757806310075a69146104be57806313374e7a146104d457806315674e8e146104ea57806315f7e05e1461050057600080fd5b80630445b667146103f457806306fdde031461041d578063095ea7b31461046c5780630b006d601461049c57600080fd5b366103ef57005b600080fd5b34801561040057600080fd5b5061040a60205481565b6040519081526020015b60405180910390f35b34801561042957600080fd5b5060408051808201909152601881527f414c5048412043454e5441555249204c41554e4348504144000000000000000060208201525b6040516104149190612791565b34801561047857600080fd5b5061048c6104873660046127fb565b610c51565b6040519015158152602001610414565b3480156104a857600080fd5b506104bc6104b7366004612827565b610cbe565b005b3480156104ca57600080fd5b5061040a60105481565b3480156104e057600080fd5b5061040a60135481565b3480156104f657600080fd5b5061040a600d5481565b34801561050c57600080fd5b506104bc61051b366004612840565b610cf6565b34801561052c57600080fd5b506104bc61053b366004612827565b610d83565b34801561054c57600080fd5b506104bc61055b36600461286b565b610db2565b34801561056c57600080fd5b5061040a60155481565b34801561058257600080fd5b5060025461040a565b34801561059757600080fd5b506104bc610dec565b3480156105ac57600080fd5b5061040a60145481565b3480156105c257600080fd5b5061048c6105d1366004612888565b610ee1565b3480156105e257600080fd5b5061040a610fa3565b3480156105f757600080fd5b506104bc6106063660046128c9565b610ff5565b34801561061757600080fd5b5061048c610626366004612840565b6000546001600160a01b0391821691161490565b34801561064657600080fd5b5060405160098152602001610414565b34801561066257600080fd5b506104bc6106713660046128eb565b611089565b34801561068257600080fd5b5061048c610691366004612840565b60096020526000908152604090205460ff1681565b3480156106b257600080fd5b506104bc6106c1366004612909565b6110d5565b3480156106d257600080fd5b5061048c6106e1366004612840565b600b6020526000908152604090205460ff1681565b34801561070257600080fd5b5061040a600f5481565b34801561071857600080fd5b5060085461048c90600160a01b900460ff1681565b34801561073957600080fd5b50601d5461048c90600160a81b900460ff1681565b34801561075a57600080fd5b5061040a60125481565b34801561077057600080fd5b5061040a60175481565b34801561078657600080fd5b5061048c610795366004612840565b611205565b3480156107a657600080fd5b5061040a6107b5366004612840565b611213565b3480156107c657600080fd5b506104bc6107d5366004612840565b611283565b3480156107e657600080fd5b5061040a601b5481565b3480156107fc57600080fd5b506104bc61080b366004612840565b6112cf565b34801561081c57600080fd5b506104bc61131b565b34801561083157600080fd5b5061040a61134f565b34801561084657600080fd5b5061040a610855366004612840565b6001600160a01b031660009081526003602052604090205490565b34801561087c57600080fd5b5061040a600e5481565b34801561089257600080fd5b5061040a6113bd565b3480156108a757600080fd5b5061040a601e5481565b3480156108bd57600080fd5b5061040a60115481565b3480156108d357600080fd5b50601c546108e7906001600160a01b031681565b6040516001600160a01b039091168152602001610414565b34801561090b57600080fd5b506104bc61091a366004612827565b611407565b34801561092b57600080fd5b506104bc61093a366004612840565b611436565b34801561094b57600080fd5b506104bc61095a366004612827565b611482565b34801561096b57600080fd5b50601d546108e7906001600160a01b031681565b34801561098b57600080fd5b506000546001600160a01b03166108e7565b3480156109a957600080fd5b5061048c6109b8366004612840565b600a6020526000908152604090205460ff1681565b3480156109d957600080fd5b5061040a6109e8366004612840565b6114e0565b3480156109f957600080fd5b506040805180820190915260088152672450524f58494d4160c01b602082015261045f565b348015610a2a57600080fd5b506104bc610a3936600461295e565b611513565b348015610a4a57600080fd5b506019546108e7906001600160a01b031681565b348015610a6a57600080fd5b5061048c610a793660046127fb565b611568565b348015610a8a57600080fd5b506104bc610a99366004612840565b611575565b348015610aaa57600080fd5b50601d5461048c90600160b01b900460ff1681565b348015610acb57600080fd5b5061040a600c5481565b348015610ae157600080fd5b50601a546108e7906001600160a01b031681565b348015610b0157600080fd5b506104bc6115c1565b348015610b1657600080fd5b5061040a610b25366004612997565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610b5c57600080fd5b506104bc611604565b348015610b7157600080fd5b506001546108e7906001600160a01b031681565b348015610b9157600080fd5b506104bc610ba0366004612840565b61165d565b348015610bb157600080fd5b506104bc610bc036600461295e565b6116db565b348015610bd157600080fd5b506018546108e7906001600160a01b031681565b348015610bf157600080fd5b5061040a601f5481565b348015610c0757600080fd5b506104bc610c16366004612840565b611713565b348015610c2757600080fd5b506104bc610c3636600461295e565b611764565b348015610c4757600080fd5b5061040a60165481565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610cac9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610cf15760405162461bcd60e51b8152600401610ce8906129c5565b60405180910390fd5b601f55565b6000546001600160a01b03163314610d205760405162461bcd60e51b8152600401610ce8906129c5565b601a54604051630afbf02f60e11b81526001600160a01b038381166004830152909116906315f7e05e906024015b600060405180830381600087803b158015610d6857600080fd5b505af1158015610d7c573d6000803e3d6000fd5b5050505050565b6000546001600160a01b03163314610dad5760405162461bcd60e51b8152600401610ce8906129c5565b601b55565b6000546001600160a01b03163314610ddc5760405162461bcd60e51b8152600401610ce8906129c5565b506008805460ff60a01b19169055565b6000546001600160a01b03163314610e165760405162461bcd60e51b8152600401610ce8906129c5565b60175460135447914791600091610e3891610e3290869061185a565b90611818565b90506000610e57601754610e326014548661185a90919063ffffffff16565b90508315610e9b57601c546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015610e99573d6000803e3d6000fd5b505b8215610edb57601d546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610d7c573d6000803e3d6000fd5b50505050565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610f8e576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600482528381203382529091529190912054610f699184906118dc565b6001600160a01b03851660009081526004602090815260408083203384529091529020555b610f99848484611916565b90505b9392505050565b6008546001600160a01b0316600090815260036020526040812054610ff0906007546001600160a01b0316600090815260036020526040902054610fea9060025490611dd9565b90611dd9565b905090565b6000546001600160a01b0316331461101f5760405162461bcd60e51b8152600401610ce8906129c5565b601a546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b15801561106d57600080fd5b505af1158015611081573d6000803e3d6000fd5b505050505050565b6000546001600160a01b031633146110b35760405162461bcd60e51b8152600401610ce8906129c5565b601d8054921515600160a81b0260ff60a81b1990931692909217909155602055565b6000546001600160a01b031633146110ff5760405162461bcd60e51b8152600401610ce8906129c5565b600e869055600f8490556010829055600d889055601185905560128390556013819055601487905561113d8261113788818c896117b9565b906117b9565b6016819055506111666013546111376011546111376012546014546117b990919063ffffffff16565b601755601654601410156111b25760405162461bcd60e51b81526020600482015260136024820152723237b713ba1031329033b932b2b23c903232bb60691b6044820152606401610ce8565b601460175411156111fb5760405162461bcd60e51b81526020600482015260136024820152723237b713ba1031329033b932b2b23c903232bb60691b6044820152606401610ce8565b5050505050505050565b6000610cb882600019610c51565b601a54604051631730cfdd60e21b81526001600160a01b0383811660048301526000921690635cc33f74906024015b602060405180830381865afa15801561125f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb891906129e5565b6000546001600160a01b031633146112ad5760405162461bcd60e51b8152600401610ce8906129c5565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146112f95760405162461bcd60e51b8152600401610ce8906129c5565b601d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146113455760405162461bcd60e51b8152600401610ce8906129c5565b61134d611e1b565b565b601a546040805163997664d760e01b815290516000926001600160a01b03169163997664d79160048083019260209291908290030181865afa158015611399573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff091906129e5565b601a546040805163d54ad2a160e01b815290516000926001600160a01b03169163d54ad2a19160048083019260209291908290030181865afa158015611399573d6000803e3d6000fd5b6000546001600160a01b031633146114315760405162461bcd60e51b8152600401610ce8906129c5565b601e55565b6000546001600160a01b031633146114605760405162461bcd60e51b8152600401610ce8906129c5565b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114ac5760405162461bcd60e51b8152600401610ce8906129c5565b601a546040516001624d3b8760e01b03198152600481018390526001600160a01b039091169063ffb2c47990602401610d4e565b601a54604051638ecc37fb60e01b81526001600160a01b0383811660048301526000921690638ecc37fb90602401611242565b6000546001600160a01b0316331461153d5760405162461bcd60e51b8152600401610ce8906129c5565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000610f9c338484611916565b6000546001600160a01b0316331461159f5760405162461bcd60e51b8152600401610ce8906129c5565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146115eb5760405162461bcd60e51b8152600401610ce8906129c5565b43600c55601d805460ff60b01b1916600160b01b179055565b601a54604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e90602401600060405180830381600087803b15801561164957600080fd5b505af1158015610edb573d6000803e3d6000fd5b6000546001600160a01b031633146116875760405162461bcd60e51b8152600401610ce8906129c5565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6000546001600160a01b031633146117055760405162461bcd60e51b8152600401610ce8906129c5565b61170f8282611fd5565b5050565b6000546001600160a01b0316331461173d5760405162461bcd60e51b8152600401610ce8906129c5565b600180546001600160a01b0319166001600160a01b038316179055611761816120b4565b50565b6000546001600160a01b0316331461178e5760405162461bcd60e51b8152600401610ce8906129c5565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000806117c68385612a14565b905083811015610f9c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610ce8565b6000610f9c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120e6565b60008260000361186c57506000610cb8565b60006118788385612a2c565b9050826118858583612a4b565b14610f9c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610ce8565b600081848411156119005760405162461bcd60e51b8152600401610ce89190612791565b50600061190d8486612a6d565b95945050505050565b600080546001600160a01b0385811691161480159061194357506000546001600160a01b03848116911614155b156119a157601d54600160b01b900460ff166119a15760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f7420796574206163746976652e0000000000000000006044820152606401610ce8565b601d54600160a01b900460ff16156119c5576119be848484612114565b9050610f9c565b601e54821115806119ee57506001600160a01b0384166000908152600a602052604090205460ff165b611a1f5760405162461bcd60e51b81526020600482015260026024820152610e8f60f31b6044820152606401610ce8565b6001600160a01b0383166000908152600a602052604090205460ff16611a9c57601f546001600160a01b038416600090815260036020526040902054611a6590846117b9565b1115611a9c5760405162461bcd60e51b81526020600482015260066024820152651dd85b1b195d60d21b6044820152606401610ce8565b6019546001600160a01b03163314801590611ac15750601d54600160a01b900460ff16155b8015611ad65750601d54600160a81b900460ff165b8015611af5575060208054306000908152600390925260409091205410155b15611b0257611b02611e1b565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260039091529190912054611b549184906118dc565b6001600160a01b038516600090815260036020908152604080832093909355600990529081205460ff16158015611ba457506001600160a01b03841660009081526009602052604090205460ff16155b611bae5782611bb9565b611bb98585856121fa565b6001600160a01b038516600090815260036020526040902054909150611bdf90826117b9565b6001600160a01b038086166000908152600360209081526040808320949094559188168152600b909152205460ff16611c8357601a546001600160a01b0386811660008181526003602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015611c7057600080fd5b505af1925050508015611c81575060015b505b6001600160a01b0384166000908152600b602052604090205460ff16611d1457601a546001600160a01b0385811660008181526003602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015611d0157600080fd5b505af1925050508015611d12575060015b505b601b5415611d8157601a54601b546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c47991611d549160040190815260200190565b600060405180830381600087803b158015611d6e57600080fd5b505af1925050508015611d7f575060015b505b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611dc691815260200190565b60405180910390a3506001949350505050565b6000610f9c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506118dc565b601d805460ff60a01b1916600160a01b17905530600090815260036020526040812054601754601254919291611e5c91600291610e3291908290879061185a565b90506000611e7b601754610e326011548661185a90919063ffffffff16565b90506000611e9a601754610e326014548761185a90919063ffffffff16565b90506000611eae82610fea85818989611dd9565b9050611eb9816122c7565b600154306001600160a01b0390911603611fa657600154601a5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810186905291169063a9059cbb906044016020604051808303816000875af1158015611f22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f469190612a84565b50601a5460405163b6b55f2560e01b8152600481018590526001600160a01b039091169063b6b55f2590602401600060405180830381600087803b158015611f8d57600080fd5b505af1158015611fa1573d6000803e3d6000fd5b505050505b6001546001600160a01b03163014611fc157611fc183612530565b5050601d805460ff60a01b19169055505050565b6001600160a01b0382163014801590611ffc57506019546001600160a01b03838116911614155b61200557600080fd5b6001600160a01b0382166000908152600b60205260409020805460ff1916821580159190911790915561206b57601a54604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca9690604401611053565b601a546001600160a01b0383811660008181526003602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401611053565b601a54604051638aee812760e01b81526001600160a01b03838116600483015290911690638aee812790602401610d4e565b600081836121075760405162461bcd60e51b8152600401610ce89190612791565b50600061190d8486612a4b565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526003909152918220546121659184906118dc565b6001600160a01b03808616600090815260036020526040808220939093559085168152205461219490836117b9565b6001600160a01b0380851660008181526003602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906121e89086815260200190565b60405180910390a35060019392505050565b60195460009081906001600160a01b0385811691161461221c57601654612220565b6017545b9050600061223d601554610e32848761185a90919063ffffffff16565b3060009081526003602052604090205490915061225a90826117b9565b30600081815260036020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906122ab9085815260200190565b60405180910390a36122bd8482611dd9565b9695505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106122fc576122fc612aa1565b6001600160a01b03928316602091820292909201015260065482519116908290600190811061232d5761232d612aa1565b6001600160a01b03928316602091820292909201015260185460405163791ac94760e01b815291169063791ac94790612373908590600090869030904290600401612ab7565b600060405180830381600087803b15801561238d57600080fd5b505af11580156123a1573d6000803e3d6000fd5b50506017546013544793504792506000916123c191610e3290869061185a565b905060006123e0601754610e326014548661185a90919063ffffffff16565b905060006124046002610e32601754610e326012548a61185a90919063ffffffff16565b9050841561244857601c546040516001600160a01b039091169084156108fc029085906000818181858888f19350505050158015612446573d6000803e3d6000fd5b505b831561248a57601d546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015612488573d6000803e3d6000fd5b505b80156125275760185460405163f305d71960e01b815230600482015260248101839052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156124fe573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906125239190612b28565b5050505b50505050505050565b6040805160038082526080820190925260009160208201606080368337019050509050308160008151811061256757612567612aa1565b6001600160a01b03928316602091820292909201015260065482519116908290600190811061259857612598612aa1565b6001600160a01b0392831660209182029290920101526001548251911690829060029081106125c9576125c9612aa1565b6001600160a01b039283166020918202929092010152601854604051635c11d79560e01b8152911690635c11d7959061260f908590600090869030904290600401612ab7565b600060405180830381600087803b15801561262957600080fd5b505af115801561263d573d6000803e3d6000fd5b50506001546040516370a0823160e01b8152306004820152600093506001600160a01b0390911691506370a0823190602401602060405180830381865afa15801561268c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126b091906129e5565b600154601a5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905292935060009291169063a9059cbb906044016020604051808303816000875af115801561270b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061272f9190612a84565b90508015610edb57601a5460405163b6b55f2560e01b8152600481018490526001600160a01b039091169063b6b55f2590602401600060405180830381600087803b15801561277d57600080fd5b505af11580156111fb573d6000803e3d6000fd5b600060208083528351808285015260005b818110156127be578581018301518582016040015282016127a2565b818111156127d0576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461176157600080fd5b6000806040838503121561280e57600080fd5b8235612819816127e6565b946020939093013593505050565b60006020828403121561283957600080fd5b5035919050565b60006020828403121561285257600080fd5b8135610f9c816127e6565b801515811461176157600080fd5b60006020828403121561287d57600080fd5b8135610f9c8161285d565b60008060006060848603121561289d57600080fd5b83356128a8816127e6565b925060208401356128b8816127e6565b929592945050506040919091013590565b600080604083850312156128dc57600080fd5b50508035926020909101359150565b600080604083850312156128fe57600080fd5b82356128198161285d565b600080600080600080600080610100898b03121561292657600080fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b6000806040838503121561297157600080fd5b823561297c816127e6565b9150602083013561298c8161285d565b809150509250929050565b600080604083850312156129aa57600080fd5b82356129b5816127e6565b9150602083013561298c816127e6565b60208082526006908201526510a7bbb732b960d11b604082015260600190565b6000602082840312156129f757600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115612a2757612a276129fe565b500190565b6000816000190483118215151615612a4657612a466129fe565b500290565b600082612a6857634e487b7160e01b600052601260045260246000fd5b500490565b600082821015612a7f57612a7f6129fe565b500390565b600060208284031215612a9657600080fd5b8151610f9c8161285d565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612b075784516001600160a01b031683529383019391830191600101612ae2565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612b3d57600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212201ea02a17af1ece6f6ac2fb38d1b3d94e617b66c2509fc3e15425e38a3ffe1d2564736f6c634300080d003360806040526ec097ce7bc90715b34b9f1000000000600b5534801561002357600080fd5b50604051610ff4380380610ff483398101604081905261004291610075565b60008054336001600160a01b031991821617909155600180549091166001600160a01b03929092169190911790556100a5565b60006020828403121561008757600080fd5b81516001600160a01b038116811461009e57600080fd5b9392505050565b610f40806100b46000396000f3fe6080604052600436106101235760003560e01c8063997664d7116100a0578063e2d2e21911610064578063e2d2e2191461032b578063ecd0c0c314610341578063f1e9f1e514610361578063ffb2c47914610381578063ffd49c84146103a157600080fd5b8063997664d714610250578063b2bdfa7b14610266578063b6b55f251461029e578063ce7c2ac2146102be578063d54ad2a11461031557600080fd5b80633a98ef39116100e75780633a98ef39146101e45780634fab0ae8146101fa5780635cc33f74146102105780638aee8127146102305780638ecc37fb1461019157600080fd5b80631014edf51461012f57806314b6ca961461015157806315f7e05e1461017157806328fd3198146101915780632d48e896146101c457600080fd5b3661012a57005b600080fd5b34801561013b57600080fd5b5061014f61014a366004610d1c565b6103b7565b005b34801561015d57600080fd5b5061014f61016c366004610d48565b610417565b34801561017d57600080fd5b5061014f61018c366004610d72565b61058f565b34801561019d57600080fd5b506101b16101ac366004610d72565b6105b2565b6040519081526020015b60405180910390f35b3480156101d057600080fd5b5061014f6101df366004610d8d565b61063d565b3480156101f057600080fd5b506101b160075481565b34801561020657600080fd5b506101b1600d5481565b34801561021c57600080fd5b506101b161022b366004610d72565b61065f565b34801561023c57600080fd5b5061014f61024b366004610d72565b6106f2565b34801561025c57600080fd5b506101b160085481565b34801561027257600080fd5b50600154610286906001600160a01b031681565b6040516001600160a01b0390911681526020016101bb565b3480156102aa57600080fd5b5061014f6102b9366004610daf565b61072b565b3480156102ca57600080fd5b506102fa6102d9366004610d72565b60066020526000908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016101bb565b34801561032157600080fd5b506101b160095481565b34801561033757600080fd5b506101b1600a5481565b34801561034d57600080fd5b50600054610286906001600160a01b031681565b34801561036d57600080fd5b50600254610286906001600160a01b031681565b34801561038d57600080fd5b5061014f61039c366004610daf565b610785565b3480156103ad57600080fd5b506101b1600c5481565b6001546001600160a01b031633146103ce57600080fd5b476001600160a01b0382166108fc846103e757826103e9565b845b6040518115909202916000818181858888f19350505050158015610411573d6000803e3d6000fd5b50505050565b6000546001600160a01b0316331461042e57600080fd5b6001600160a01b038216600090815260066020526040902054156104555761045582610889565b60008111801561047b57506001600160a01b038216600090815260066020526040902054155b156104e157600380546001600160a01b0384166000818152600460205260408120839055600183018455929092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b0319169091179055610514565b8015801561050657506001600160a01b03821660009081526006602052604090205415155b1561051457610514826109b3565b6001600160a01b03821660009081526006602052604090205460075461054591839161053f91610ac8565b90610b13565b6007556001600160a01b038216600090815260066020526040902081905561056c81610b72565b6001600160a01b0390921660009081526006602052604090206001019190915550565b6000546001600160a01b031633146105a657600080fd5b6105af81610889565b50565b6001600160a01b03811660009081526006602052604081205481036105d957506000919050565b6001600160a01b0382166000908152600660205260408120546105fb90610b72565b6001600160a01b03841660009081526006602052604090206001015490915080821161062b575060009392505050565b6106358282610ac8565b949350505050565b6000546001600160a01b0316331461065457600080fd5b600c91909155600d55565b6001600160a01b0381166000908152600660205260408120546106d35760405162461bcd60e51b815260206004820152602160248201527f596f75277265206e6f7420612050726f78696d61207368617265686f6c6465726044820152602160f81b60648201526084015b60405180910390fd5b506001600160a01b031660009081526006602052604090206002015490565b6000546001600160a01b0316331461070957600080fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461074257600080fd5b80156105af576008546107559082610b13565b600855600754600b5461077f91610776916107709085610b8f565b90610c11565b600a5490610b13565b600a5550565b6000546001600160a01b0316331461079c57600080fd5b60035460008190036107ac575050565b60008060005a90505b84821080156107c357508383105b156108825783600e54106107d7576000600e555b6108096003600e54815481106107ef576107ef610dc8565b6000918252602090912001546001600160a01b0316610c53565b15610840576108406003600e548154811061082657610826610dc8565b6000918252602090912001546001600160a01b0316610889565b61085561084e5a8390610ac8565b8390610b13565b91505a600e8054919250600061086a83610df4565b9190505550828061087a90610df4565b9350506107b5565b5050505050565b6001600160a01b03811660009081526006602052604081205490036108ab5750565b60006108b6826105b2565b905080156109af576009546108cb9082610b13565b6009556001600160a01b0382166000908152600660205260409020600201546108f49082610b13565b6001600160a01b038316600090815260066020526040902060028101919091555461091e90610b72565b6001600160a01b038381166000818152600660205260409081902060010193909355600254925163a9059cbb60e01b815260048101919091526024810184905291169063a9059cbb906044016020604051808303816000875af1158015610989573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ad9190610e0d565b505b5050565b600380546109c390600190610e2f565b815481106109d3576109d3610dc8565b60009182526020808320909101546001600160a01b0384811684526004909252604090922054600380549290931692918110610a1157610a11610dc8565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260049182905260408120546003805491939291610a5d90600190610e2f565b81548110610a6d57610a6d610dc8565b60009182526020808320909101546001600160a01b031683528201929092526040019020556003805480610aa357610aa3610e46565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610b0a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610c98565b90505b92915050565b600080610b208385610e5c565b905083811015610b0a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106ca565b6000610b0d600b54610770600a5485610b8f90919063ffffffff16565b600082600003610ba157506000610b0d565b6000610bad8385610e74565b905082610bba8583610e93565b14610b0a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016106ca565b6000610b0a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610cd2565b600c546001600160a01b03821660009081526005602052604081205490914291610c7d9190610e5c565b108015610b0d5750600d54610c91836105b2565b1192915050565b60008184841115610cbc5760405162461bcd60e51b81526004016106ca9190610eb5565b506000610cc98486610e2f565b95945050505050565b60008183610cf35760405162461bcd60e51b81526004016106ca9190610eb5565b506000610cc98486610e93565b80356001600160a01b0381168114610d1757600080fd5b919050565b60008060408385031215610d2f57600080fd5b82359150610d3f60208401610d00565b90509250929050565b60008060408385031215610d5b57600080fd5b610d6483610d00565b946020939093013593505050565b600060208284031215610d8457600080fd5b610b0a82610d00565b60008060408385031215610da057600080fd5b50508035926020909101359150565b600060208284031215610dc157600080fd5b5035919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201610e0657610e06610dde565b5060010190565b600060208284031215610e1f57600080fd5b81518015158114610b0a57600080fd5b600082821015610e4157610e41610dde565b500390565b634e487b7160e01b600052603160045260246000fd5b60008219821115610e6f57610e6f610dde565b500190565b6000816000190483118215151615610e8e57610e8e610dde565b500290565b600082610eb057634e487b7160e01b600052601260045260246000fd5b500490565b600060208083528351808285015260005b81811015610ee257858101830151858201604001528201610ec6565b81811115610ef4576000604083870101525b50601f01601f191692909201604001939250505056fea2646970667358221220a70271b471d8c3b0224654d99782d9e5e84a1a8055b79dd8c81e7a713bc17a3c64736f6c634300080d00330000000000000000000000009190dbca4b36ae372e8f111944542dac0833d22d

Deployed Bytecode

0x6080604052600436106103e85760003560e01c806366eb378511610208578063a8aa1b3111610118578063f0fc6bca116100ab578063f887ea401161007a578063f887ea4014610bc5578063f8b45b0514610be5578063f8cf31cb14610bfb578063fabe628314610c1b578063fb5f27fb14610c3b57600080fd5b8063f0fc6bca14610b50578063f1e9f1e514610b65578063f2fde38b14610b85578063f708a64f14610ba557600080fd5b8063bf56b371116100e7578063bf56b37114610abf578063bfe1092814610ad5578063c9567bf914610af5578063dd62ed3e14610b0a57600080fd5b8063a8aa1b3114610a3e578063a9059cbb14610a5e578063bb542ef014610a7e578063bbc0c74214610a9e57600080fd5b8063778c61521161019b578063893d20e81161016a578063893d20e81461097f5780638b42507f1461099d5780638ecc37fb146109cd57806395d89b41146109ed578063a3a2e89e14610a1e57600080fd5b8063778c6152146108ff578063802cd15f1461091f578063819340311461093f57806385141a771461095f57600080fd5b8063736a83a1116101d7578063736a83a1146108865780637437681e1461089b57806374e8d732146108b157806375f0a874146108c757600080fd5b806366eb37851461081057806367ee5f091461082557806370a082311461083a57806372648fec1461087057600080fd5b80632d48e896116103035780634a62bb6511610296578063571ac8b011610265578063571ac8b01461077a5780635cc33f741461079a5780635d098b38146107ba57806360e71962146107da57806361a60d57146107f057600080fd5b80634a62bb651461070c5780634a74bb021461072d57806352645cd71461074e578063531484161461076457600080fd5b80633f4218e0116102d25780633f4218e014610676578063400343e7146106a65780634355855a146106c657806345ca0b4b146106f657600080fd5b80632d48e896146105eb5780632f54bf6e1461060b578063313ce5671461063a5780633dab52691461065657600080fd5b806316d9962b1161037b5780631deff2161161034a5780631deff2161461058b578063234a2daa146105a057806323b872dd146105b65780632b112e49146105d657600080fd5b806316d9962b1461052057806317090ec814610540578063180b0d7e1461056057806318160ddd1461057657600080fd5b806310075a69116103b757806310075a69146104be57806313374e7a146104d457806315674e8e146104ea57806315f7e05e1461050057600080fd5b80630445b667146103f457806306fdde031461041d578063095ea7b31461046c5780630b006d601461049c57600080fd5b366103ef57005b600080fd5b34801561040057600080fd5b5061040a60205481565b6040519081526020015b60405180910390f35b34801561042957600080fd5b5060408051808201909152601881527f414c5048412043454e5441555249204c41554e4348504144000000000000000060208201525b6040516104149190612791565b34801561047857600080fd5b5061048c6104873660046127fb565b610c51565b6040519015158152602001610414565b3480156104a857600080fd5b506104bc6104b7366004612827565b610cbe565b005b3480156104ca57600080fd5b5061040a60105481565b3480156104e057600080fd5b5061040a60135481565b3480156104f657600080fd5b5061040a600d5481565b34801561050c57600080fd5b506104bc61051b366004612840565b610cf6565b34801561052c57600080fd5b506104bc61053b366004612827565b610d83565b34801561054c57600080fd5b506104bc61055b36600461286b565b610db2565b34801561056c57600080fd5b5061040a60155481565b34801561058257600080fd5b5060025461040a565b34801561059757600080fd5b506104bc610dec565b3480156105ac57600080fd5b5061040a60145481565b3480156105c257600080fd5b5061048c6105d1366004612888565b610ee1565b3480156105e257600080fd5b5061040a610fa3565b3480156105f757600080fd5b506104bc6106063660046128c9565b610ff5565b34801561061757600080fd5b5061048c610626366004612840565b6000546001600160a01b0391821691161490565b34801561064657600080fd5b5060405160098152602001610414565b34801561066257600080fd5b506104bc6106713660046128eb565b611089565b34801561068257600080fd5b5061048c610691366004612840565b60096020526000908152604090205460ff1681565b3480156106b257600080fd5b506104bc6106c1366004612909565b6110d5565b3480156106d257600080fd5b5061048c6106e1366004612840565b600b6020526000908152604090205460ff1681565b34801561070257600080fd5b5061040a600f5481565b34801561071857600080fd5b5060085461048c90600160a01b900460ff1681565b34801561073957600080fd5b50601d5461048c90600160a81b900460ff1681565b34801561075a57600080fd5b5061040a60125481565b34801561077057600080fd5b5061040a60175481565b34801561078657600080fd5b5061048c610795366004612840565b611205565b3480156107a657600080fd5b5061040a6107b5366004612840565b611213565b3480156107c657600080fd5b506104bc6107d5366004612840565b611283565b3480156107e657600080fd5b5061040a601b5481565b3480156107fc57600080fd5b506104bc61080b366004612840565b6112cf565b34801561081c57600080fd5b506104bc61131b565b34801561083157600080fd5b5061040a61134f565b34801561084657600080fd5b5061040a610855366004612840565b6001600160a01b031660009081526003602052604090205490565b34801561087c57600080fd5b5061040a600e5481565b34801561089257600080fd5b5061040a6113bd565b3480156108a757600080fd5b5061040a601e5481565b3480156108bd57600080fd5b5061040a60115481565b3480156108d357600080fd5b50601c546108e7906001600160a01b031681565b6040516001600160a01b039091168152602001610414565b34801561090b57600080fd5b506104bc61091a366004612827565b611407565b34801561092b57600080fd5b506104bc61093a366004612840565b611436565b34801561094b57600080fd5b506104bc61095a366004612827565b611482565b34801561096b57600080fd5b50601d546108e7906001600160a01b031681565b34801561098b57600080fd5b506000546001600160a01b03166108e7565b3480156109a957600080fd5b5061048c6109b8366004612840565b600a6020526000908152604090205460ff1681565b3480156109d957600080fd5b5061040a6109e8366004612840565b6114e0565b3480156109f957600080fd5b506040805180820190915260088152672450524f58494d4160c01b602082015261045f565b348015610a2a57600080fd5b506104bc610a3936600461295e565b611513565b348015610a4a57600080fd5b506019546108e7906001600160a01b031681565b348015610a6a57600080fd5b5061048c610a793660046127fb565b611568565b348015610a8a57600080fd5b506104bc610a99366004612840565b611575565b348015610aaa57600080fd5b50601d5461048c90600160b01b900460ff1681565b348015610acb57600080fd5b5061040a600c5481565b348015610ae157600080fd5b50601a546108e7906001600160a01b031681565b348015610b0157600080fd5b506104bc6115c1565b348015610b1657600080fd5b5061040a610b25366004612997565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610b5c57600080fd5b506104bc611604565b348015610b7157600080fd5b506001546108e7906001600160a01b031681565b348015610b9157600080fd5b506104bc610ba0366004612840565b61165d565b348015610bb157600080fd5b506104bc610bc036600461295e565b6116db565b348015610bd157600080fd5b506018546108e7906001600160a01b031681565b348015610bf157600080fd5b5061040a601f5481565b348015610c0757600080fd5b506104bc610c16366004612840565b611713565b348015610c2757600080fd5b506104bc610c3636600461295e565b611764565b348015610c4757600080fd5b5061040a60165481565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610cac9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610cf15760405162461bcd60e51b8152600401610ce8906129c5565b60405180910390fd5b601f55565b6000546001600160a01b03163314610d205760405162461bcd60e51b8152600401610ce8906129c5565b601a54604051630afbf02f60e11b81526001600160a01b038381166004830152909116906315f7e05e906024015b600060405180830381600087803b158015610d6857600080fd5b505af1158015610d7c573d6000803e3d6000fd5b5050505050565b6000546001600160a01b03163314610dad5760405162461bcd60e51b8152600401610ce8906129c5565b601b55565b6000546001600160a01b03163314610ddc5760405162461bcd60e51b8152600401610ce8906129c5565b506008805460ff60a01b19169055565b6000546001600160a01b03163314610e165760405162461bcd60e51b8152600401610ce8906129c5565b60175460135447914791600091610e3891610e3290869061185a565b90611818565b90506000610e57601754610e326014548661185a90919063ffffffff16565b90508315610e9b57601c546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015610e99573d6000803e3d6000fd5b505b8215610edb57601d546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610d7c573d6000803e3d6000fd5b50505050565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610f8e576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600482528381203382529091529190912054610f699184906118dc565b6001600160a01b03851660009081526004602090815260408083203384529091529020555b610f99848484611916565b90505b9392505050565b6008546001600160a01b0316600090815260036020526040812054610ff0906007546001600160a01b0316600090815260036020526040902054610fea9060025490611dd9565b90611dd9565b905090565b6000546001600160a01b0316331461101f5760405162461bcd60e51b8152600401610ce8906129c5565b601a546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b15801561106d57600080fd5b505af1158015611081573d6000803e3d6000fd5b505050505050565b6000546001600160a01b031633146110b35760405162461bcd60e51b8152600401610ce8906129c5565b601d8054921515600160a81b0260ff60a81b1990931692909217909155602055565b6000546001600160a01b031633146110ff5760405162461bcd60e51b8152600401610ce8906129c5565b600e869055600f8490556010829055600d889055601185905560128390556013819055601487905561113d8261113788818c896117b9565b906117b9565b6016819055506111666013546111376011546111376012546014546117b990919063ffffffff16565b601755601654601410156111b25760405162461bcd60e51b81526020600482015260136024820152723237b713ba1031329033b932b2b23c903232bb60691b6044820152606401610ce8565b601460175411156111fb5760405162461bcd60e51b81526020600482015260136024820152723237b713ba1031329033b932b2b23c903232bb60691b6044820152606401610ce8565b5050505050505050565b6000610cb882600019610c51565b601a54604051631730cfdd60e21b81526001600160a01b0383811660048301526000921690635cc33f74906024015b602060405180830381865afa15801561125f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb891906129e5565b6000546001600160a01b031633146112ad5760405162461bcd60e51b8152600401610ce8906129c5565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146112f95760405162461bcd60e51b8152600401610ce8906129c5565b601d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146113455760405162461bcd60e51b8152600401610ce8906129c5565b61134d611e1b565b565b601a546040805163997664d760e01b815290516000926001600160a01b03169163997664d79160048083019260209291908290030181865afa158015611399573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff091906129e5565b601a546040805163d54ad2a160e01b815290516000926001600160a01b03169163d54ad2a19160048083019260209291908290030181865afa158015611399573d6000803e3d6000fd5b6000546001600160a01b031633146114315760405162461bcd60e51b8152600401610ce8906129c5565b601e55565b6000546001600160a01b031633146114605760405162461bcd60e51b8152600401610ce8906129c5565b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114ac5760405162461bcd60e51b8152600401610ce8906129c5565b601a546040516001624d3b8760e01b03198152600481018390526001600160a01b039091169063ffb2c47990602401610d4e565b601a54604051638ecc37fb60e01b81526001600160a01b0383811660048301526000921690638ecc37fb90602401611242565b6000546001600160a01b0316331461153d5760405162461bcd60e51b8152600401610ce8906129c5565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000610f9c338484611916565b6000546001600160a01b0316331461159f5760405162461bcd60e51b8152600401610ce8906129c5565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146115eb5760405162461bcd60e51b8152600401610ce8906129c5565b43600c55601d805460ff60b01b1916600160b01b179055565b601a54604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e90602401600060405180830381600087803b15801561164957600080fd5b505af1158015610edb573d6000803e3d6000fd5b6000546001600160a01b031633146116875760405162461bcd60e51b8152600401610ce8906129c5565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6000546001600160a01b031633146117055760405162461bcd60e51b8152600401610ce8906129c5565b61170f8282611fd5565b5050565b6000546001600160a01b0316331461173d5760405162461bcd60e51b8152600401610ce8906129c5565b600180546001600160a01b0319166001600160a01b038316179055611761816120b4565b50565b6000546001600160a01b0316331461178e5760405162461bcd60e51b8152600401610ce8906129c5565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000806117c68385612a14565b905083811015610f9c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610ce8565b6000610f9c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120e6565b60008260000361186c57506000610cb8565b60006118788385612a2c565b9050826118858583612a4b565b14610f9c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610ce8565b600081848411156119005760405162461bcd60e51b8152600401610ce89190612791565b50600061190d8486612a6d565b95945050505050565b600080546001600160a01b0385811691161480159061194357506000546001600160a01b03848116911614155b156119a157601d54600160b01b900460ff166119a15760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f7420796574206163746976652e0000000000000000006044820152606401610ce8565b601d54600160a01b900460ff16156119c5576119be848484612114565b9050610f9c565b601e54821115806119ee57506001600160a01b0384166000908152600a602052604090205460ff165b611a1f5760405162461bcd60e51b81526020600482015260026024820152610e8f60f31b6044820152606401610ce8565b6001600160a01b0383166000908152600a602052604090205460ff16611a9c57601f546001600160a01b038416600090815260036020526040902054611a6590846117b9565b1115611a9c5760405162461bcd60e51b81526020600482015260066024820152651dd85b1b195d60d21b6044820152606401610ce8565b6019546001600160a01b03163314801590611ac15750601d54600160a01b900460ff16155b8015611ad65750601d54600160a81b900460ff165b8015611af5575060208054306000908152600390925260409091205410155b15611b0257611b02611e1b565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260039091529190912054611b549184906118dc565b6001600160a01b038516600090815260036020908152604080832093909355600990529081205460ff16158015611ba457506001600160a01b03841660009081526009602052604090205460ff16155b611bae5782611bb9565b611bb98585856121fa565b6001600160a01b038516600090815260036020526040902054909150611bdf90826117b9565b6001600160a01b038086166000908152600360209081526040808320949094559188168152600b909152205460ff16611c8357601a546001600160a01b0386811660008181526003602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015611c7057600080fd5b505af1925050508015611c81575060015b505b6001600160a01b0384166000908152600b602052604090205460ff16611d1457601a546001600160a01b0385811660008181526003602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015611d0157600080fd5b505af1925050508015611d12575060015b505b601b5415611d8157601a54601b546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c47991611d549160040190815260200190565b600060405180830381600087803b158015611d6e57600080fd5b505af1925050508015611d7f575060015b505b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611dc691815260200190565b60405180910390a3506001949350505050565b6000610f9c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506118dc565b601d805460ff60a01b1916600160a01b17905530600090815260036020526040812054601754601254919291611e5c91600291610e3291908290879061185a565b90506000611e7b601754610e326011548661185a90919063ffffffff16565b90506000611e9a601754610e326014548761185a90919063ffffffff16565b90506000611eae82610fea85818989611dd9565b9050611eb9816122c7565b600154306001600160a01b0390911603611fa657600154601a5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810186905291169063a9059cbb906044016020604051808303816000875af1158015611f22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f469190612a84565b50601a5460405163b6b55f2560e01b8152600481018590526001600160a01b039091169063b6b55f2590602401600060405180830381600087803b158015611f8d57600080fd5b505af1158015611fa1573d6000803e3d6000fd5b505050505b6001546001600160a01b03163014611fc157611fc183612530565b5050601d805460ff60a01b19169055505050565b6001600160a01b0382163014801590611ffc57506019546001600160a01b03838116911614155b61200557600080fd5b6001600160a01b0382166000908152600b60205260409020805460ff1916821580159190911790915561206b57601a54604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca9690604401611053565b601a546001600160a01b0383811660008181526003602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401611053565b601a54604051638aee812760e01b81526001600160a01b03838116600483015290911690638aee812790602401610d4e565b600081836121075760405162461bcd60e51b8152600401610ce89190612791565b50600061190d8486612a4b565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526003909152918220546121659184906118dc565b6001600160a01b03808616600090815260036020526040808220939093559085168152205461219490836117b9565b6001600160a01b0380851660008181526003602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906121e89086815260200190565b60405180910390a35060019392505050565b60195460009081906001600160a01b0385811691161461221c57601654612220565b6017545b9050600061223d601554610e32848761185a90919063ffffffff16565b3060009081526003602052604090205490915061225a90826117b9565b30600081815260036020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906122ab9085815260200190565b60405180910390a36122bd8482611dd9565b9695505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106122fc576122fc612aa1565b6001600160a01b03928316602091820292909201015260065482519116908290600190811061232d5761232d612aa1565b6001600160a01b03928316602091820292909201015260185460405163791ac94760e01b815291169063791ac94790612373908590600090869030904290600401612ab7565b600060405180830381600087803b15801561238d57600080fd5b505af11580156123a1573d6000803e3d6000fd5b50506017546013544793504792506000916123c191610e3290869061185a565b905060006123e0601754610e326014548661185a90919063ffffffff16565b905060006124046002610e32601754610e326012548a61185a90919063ffffffff16565b9050841561244857601c546040516001600160a01b039091169084156108fc029085906000818181858888f19350505050158015612446573d6000803e3d6000fd5b505b831561248a57601d546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015612488573d6000803e3d6000fd5b505b80156125275760185460405163f305d71960e01b815230600482015260248101839052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156124fe573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906125239190612b28565b5050505b50505050505050565b6040805160038082526080820190925260009160208201606080368337019050509050308160008151811061256757612567612aa1565b6001600160a01b03928316602091820292909201015260065482519116908290600190811061259857612598612aa1565b6001600160a01b0392831660209182029290920101526001548251911690829060029081106125c9576125c9612aa1565b6001600160a01b039283166020918202929092010152601854604051635c11d79560e01b8152911690635c11d7959061260f908590600090869030904290600401612ab7565b600060405180830381600087803b15801561262957600080fd5b505af115801561263d573d6000803e3d6000fd5b50506001546040516370a0823160e01b8152306004820152600093506001600160a01b0390911691506370a0823190602401602060405180830381865afa15801561268c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126b091906129e5565b600154601a5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905292935060009291169063a9059cbb906044016020604051808303816000875af115801561270b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061272f9190612a84565b90508015610edb57601a5460405163b6b55f2560e01b8152600481018490526001600160a01b039091169063b6b55f2590602401600060405180830381600087803b15801561277d57600080fd5b505af11580156111fb573d6000803e3d6000fd5b600060208083528351808285015260005b818110156127be578581018301518582016040015282016127a2565b818111156127d0576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461176157600080fd5b6000806040838503121561280e57600080fd5b8235612819816127e6565b946020939093013593505050565b60006020828403121561283957600080fd5b5035919050565b60006020828403121561285257600080fd5b8135610f9c816127e6565b801515811461176157600080fd5b60006020828403121561287d57600080fd5b8135610f9c8161285d565b60008060006060848603121561289d57600080fd5b83356128a8816127e6565b925060208401356128b8816127e6565b929592945050506040919091013590565b600080604083850312156128dc57600080fd5b50508035926020909101359150565b600080604083850312156128fe57600080fd5b82356128198161285d565b600080600080600080600080610100898b03121561292657600080fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b6000806040838503121561297157600080fd5b823561297c816127e6565b9150602083013561298c8161285d565b809150509250929050565b600080604083850312156129aa57600080fd5b82356129b5816127e6565b9150602083013561298c816127e6565b60208082526006908201526510a7bbb732b960d11b604082015260600190565b6000602082840312156129f757600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115612a2757612a276129fe565b500190565b6000816000190483118215151615612a4657612a466129fe565b500290565b600082612a6857634e487b7160e01b600052601260045260246000fd5b500490565b600082821015612a7f57612a7f6129fe565b500390565b600060208284031215612a9657600080fd5b8151610f9c8161285d565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612b075784516001600160a01b031683529383019391830191600101612ae2565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612b3d57600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212201ea02a17af1ece6f6ac2fb38d1b3d94e617b66c2509fc3e15425e38a3ffe1d2564736f6c634300080d0033

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

0000000000000000000000009190dbca4b36ae372e8f111944542dac0833d22d

-----Decoded View---------------
Arg [0] : _owner (address): 0x9190DBca4B36Ae372e8F111944542dAC0833D22D

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000009190dbca4b36ae372e8f111944542dac0833d22d


Deployed Bytecode Sourcemap

11661:15994:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13931:52;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;13931:52:0;;;;;;;;19098:80;;;;;;;;;;-1:-1:-1;19170:5:0;;;;;;;;;;;;;;;;;19098:80;;;;;;;:::i;19524:216::-;;;;;;;;;;-1:-1:-1;19524:216:0;;;;;:::i;:::-;;:::i;:::-;;;1419:14:1;;1412:22;1394:41;;1382:2;1367:18;19524:216:0;1254:187:1;16417:110:0;;;;;;;;;;-1:-1:-1;16417:110:0;;;;;:::i;:::-;;:::i;:::-;;12791:35;;;;;;;;;;;;;;;;12912:36;;;;;;;;;;;;;;;;12681:30;;;;;;;;;;;;;;;;26842:110;;;;;;;;;;-1:-1:-1;26842:110:0;;;;;:::i;:::-;;:::i;18534:125::-;;;;;;;;;;-1:-1:-1;18534:125:0;;;;;:::i;:::-;;:::i;16535:100::-;;;;;;;;;;-1:-1:-1;16535:100:0;;;;;:::i;:::-;;:::i;12999:33::-;;;;;;;;;;;;;;;;18828:88;;;;;;;;;;-1:-1:-1;18901:12:0;;18828:88;;25888:647;;;;;;;;;;;;;:::i;12955:31::-;;;;;;;;;;;;;;;;20038:366;;;;;;;;;;-1:-1:-1;20038:366:0;;;;;:::i;:::-;;:::i;18678:142::-;;;;;;;;;;;;;:::i;17547:198::-;;;;;;;;;;-1:-1:-1;17547:198:0;;;;;:::i;:::-;;:::i;2979:103::-;;;;;;;;;;-1:-1:-1;2979:103:0;;;;;:::i;:::-;3034:4;3069:5;-1:-1:-1;;;;;3058:16:0;;;3069:5;;3058:16;;2979:103;18922:80;;;;;;;;;;-1:-1:-1;18922:80:0;;11937:1;3108:36:1;;3096:2;3081:18;18922:80:0;2966:184:1;17340:199:0;;;;;;;;;;-1:-1:-1;17340:199:0;;;;;:::i;:::-;;:::i;12483:44::-;;;;;;;;;;-1:-1:-1;12483:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15419:888;;;;;;;;;;-1:-1:-1;15419:888:0;;;;;:::i;:::-;;:::i;12589:49::-;;;;;;;;;;-1:-1:-1;12589:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12757:27;;;;;;;;;;;;;;;;12358:33;;;;;;;;;;-1:-1:-1;12358:33:0;;;;-1:-1:-1;;;12358:33:0;;;;;;13616:40;;;;;;;;;;-1:-1:-1;13616:40:0;;;;-1:-1:-1;;;13616:40:0;;;;;;12877:28;;;;;;;;;;;;;;;;13140:97;;;;;;;;;;;;;;;;19748:122;;;;;;;;;;-1:-1:-1;19748:122:0;;;;;:::i;:::-;;:::i;27374:157::-;;;;;;;;;;-1:-1:-1;27374:157:0;;;;;:::i;:::-;;:::i;16921:147::-;;;;;;;;;;-1:-1:-1;16921:147:0;;;;;:::i;:::-;;:::i;13351:33::-;;;;;;;;;;;;;;;;17076:127;;;;;;;;;;-1:-1:-1;17076:127:0;;;;;:::i;:::-;;:::i;25806:74::-;;;;;;;;;;;;;:::i;27128:115::-;;;;;;;;;;;;;:::i;19268:105::-;;;;;;;;;;-1:-1:-1;19268:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;19352:18:0;19334:7;19352:18;;;:9;:18;;;;;;;19268:105;12718:32;;;;;;;;;;;;;;;;27255:111;;;;;;;;;;;;;:::i;13825:44::-;;;;;;;;;;;;;;;;12837:33;;;;;;;;;;;;;;;;13393:92;;;;;;;;;;-1:-1:-1;13393:92:0;;;;-1:-1:-1;;;;;13393:92:0;;;;;;-1:-1:-1;;;;;4575:32:1;;;4557:51;;4545:2;4530:18;13393:92:0;4395:219:1;16316:93:0;;;;;;;;;;-1:-1:-1;16316:93:0;;;;;:::i;:::-;;:::i;15282:129::-;;;;;;;;;;-1:-1:-1;15282:129:0;;;;;:::i;:::-;;:::i;27539:113::-;;;;;;;;;;-1:-1:-1;27539:113:0;;;;;:::i;:::-;;:::i;13492:87::-;;;;;;;;;;-1:-1:-1;13492:87:0;;;;-1:-1:-1;;;;;13492:87:0;;;19184:78;;;;;;;;;;-1:-1:-1;19236:7:0;19254:5;-1:-1:-1;;;;;19254:5:0;19184:78;;12534:48;;;;;;;;;;-1:-1:-1;12534:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;26964:156;;;;;;;;;;-1:-1:-1;26964:156:0;;;;;:::i;:::-;;:::i;19008:84::-;;;;;;;;;;-1:-1:-1;19082:7:0;;;;;;;;;;;;-1:-1:-1;;;19082:7:0;;;;19008:84;;16647:122;;;;;;;;;;-1:-1:-1;16647:122:0;;;;;:::i;:::-;;:::i;13278:19::-;;;;;;;;;;-1:-1:-1;13278:19:0;;;;-1:-1:-1;;;;;13278:19:0;;;19878:152;;;;;;;;;;-1:-1:-1;19878:152:0;;;;;:::i;:::-;;:::i;17211:116::-;;;;;;;;;;-1:-1:-1;17211:116:0;;;;;:::i;:::-;;:::i;13663:33::-;;;;;;;;;;-1:-1:-1;13663:33:0;;;;-1:-1:-1;;;13663:33:0;;;;;;12647:25;;;;;;;;;;;;;;;;13306:38;;;;;;;;;;-1:-1:-1;13306:38:0;;;;-1:-1:-1;;;;;13306:38:0;;;26583:117;;;;;;;;;;;;;:::i;19379:133::-;;;;;;;;;;-1:-1:-1;19379:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;19481:19:0;;;19463:7;19481:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;19379:133;26740:90;;;;;;;;;;;;;:::i;11751:26::-;;;;;;;;;;-1:-1:-1;11751:26:0;;;;-1:-1:-1;;;;;11751:26:0;;;3207:136;;;;;;;;;;-1:-1:-1;3207:136:0;;;;;:::i;:::-;;:::i;18394:132::-;;;;;;;;;;-1:-1:-1;18394:132:0;;;;;:::i;:::-;;:::i;13247:24::-;;;;;;;;;;-1:-1:-1;13247:24:0;;;;-1:-1:-1;;;;;13247:24:0;;;13876:48;;;;;;;;;;;;;;;;15112:162;;;;;;;;;;-1:-1:-1;15112:162:0;;;;;:::i;:::-;;:::i;16777:136::-;;;;;;;;;;-1:-1:-1;16777:136:0;;;;;:::i;:::-;;:::i;13041:92::-;;;;;;;;;;;;;;;;19524:216;19628:10;19599:4;19616:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;19616:32:0;;;;;;;;;;:41;;;19673:37;19599:4;;19616:32;;19673:37;;;;19651:6;160:25:1;;148:2;133:18;;14:177;19673:37:0;;;;;;;;-1:-1:-1;19728:4:0;19524:216;;;;;:::o;16417:110::-;3034:4;3069:5;-1:-1:-1;;;;;3069:5:0;2886:10;3058:16;2870:38;;;;-1:-1:-1;;;2870:38:0;;;;;;;:::i;:::-;;;;;;;;;16494:9:::1;:25:::0;16417:110::o;26842:::-;3034:4;3069:5;-1:-1:-1;;;;;3069:5:0;2886:10;3058:16;2870:38;;;;-1:-1:-1;;;2870:38:0;;;;;;;:::i;:::-;26911:11:::1;::::0;:33:::1;::::0;-1:-1:-1;;;26911:33:0;;-1:-1:-1;;;;;4575:32:1;;;26911:33:0::1;::::0;::::1;4557:51:1::0;26911:11:0;;::::1;::::0;:25:::1;::::0;4530:18:1;;26911:33:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;26842:110:::0;:::o;18534:125::-;3034:4;3069:5;-1:-1:-1;;;;;3069:5:0;2886:10;3058:16;2870:38;;;;-1:-1:-1;;;2870:38:0;;;;;;;:::i;:::-;18619:14:::1;:32:::0;18534:125::o;16535:100::-;3034:4;3069:5;-1:-1:-1;;;;;3069:5:0;2886:10;3058:16;2870:38;;;;-1:-1:-1;;;2870:38:0;;;;;;;:::i;:::-;-1:-1:-1;16605:14:0::1;:22:::0;;-1:-1:-1;;;;16605:22:0::1;::::0;;16535:100::o;25888:647::-;3034:4;3069:5;-1:-1:-1;;;;;3069:5:0;2886:10;3058:16;2870:38;;;;-1:-1:-1;;;2870:38:0;;;;;;;:::i;:::-;26144:12:::1;::::0;26122:16:::1;::::0;25972:21:::1;::::0;26035::::1;::::0;25943:26:::1;::::0;26099:58:::1;::::0;:40:::1;::::0;25972:21;;26099:22:::1;:40::i;:::-;:44:::0;::::1;:58::i;:::-;26069:88;;26168:24;26195:55;26237:12;;26195:37;26220:11;;26195:20;:24;;:37;;;;:::i;:55::-;26168:82:::0;-1:-1:-1;26264:22:0;;26261:131:::1;;26334:15;::::0;26326:54:::1;::::0;-1:-1:-1;;;;;26334:15:0;;::::1;::::0;26326:54;::::1;;;::::0;26360:19;;26334:15:::1;26326:54:::0;26334:15;26326:54;26360:19;26334:15;26326:54;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;26261:131;26405:24:::0;;26402:126:::1;;26463:10;::::0;26455:46:::1;::::0;-1:-1:-1;;;;;26463:10:0;;::::1;::::0;26455:46;::::1;;;::::0;26484:16;;26463:10:::1;26455:46:::0;26463:10;26455:46;26484:16;26463:10;26455:46;::::1;;;;;;;;;;;;;::::0;::::1;;;;26402:126;25932:603;;;;25888:647::o:0;20038:366::-;-1:-1:-1;;;;;20158:19:0;;20138:4;20158:19;;;:11;:19;;;;;;;;20178:10;20158:31;;;;;;;;-1:-1:-1;;20158:52:0;20155:186;;20260:69;;;;;;;;;;;-1:-1:-1;;;20260:69:0;;;;;;;;-1:-1:-1;;;;;20260:19:0;;-1:-1:-1;20260:19:0;;;:11;:19;;;;;20280:10;20260:31;;;;;;;;;;:69;;20296:6;;20260:35;:69::i;:::-;-1:-1:-1;;;;;20226:19:0;;;;;;:11;:19;;;;;;;;20246:10;20226:31;;;;;;;:103;20155:186;20360:36;20370:6;20378:9;20389:6;20360:9;:36::i;:::-;20353:43;;20038:366;;;;;;:::o;18678:142::-;18806:4;;-1:-1:-1;;;;;18806:4:0;18731:7;19352:18;;;:9;:18;;;;;;18758:54;;18785:4;;-1:-1:-1;;;;;18785:4:0;19334:7;19352:18;;;:9;:18;;;;;;18758:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;18751:61;;18678:142;:::o;17547:198::-;3034:4;3069:5;-1:-1:-1;;;;;3069:5:0;2886:10;3058:16;2870:38;;;;-1:-1:-1;;;2870:38:0;;;;;;;:::i;:::-;17660:11:::1;::::0;:69:::1;::::0;-1:-1:-1;;;17660:69:0;;::::1;::::0;::::1;6865:25:1::0;;;6906:18;;;6899:34;;;-1:-1:-1;;;;;17660:11:0;;::::1;::::0;:35:::1;::::0;6838:18:1;;17660:69:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17547:198:::0;;:::o;17340:199::-;3034:4;3069:5;-1:-1:-1;;;;;3069:5:0;2886:10;3058:16;2870:38;;;;-1:-1:-1;;;2870:38:0;;;;;;;:::i;:::-;17449:21:::1;:39:::0;;;::::1;;-1:-1:-1::0;;;17449:39:0::1;-1:-1:-1::0;;;;17449:39:0;;::::1;::::0;;;::::1;::::0;;;17499:13:::1;:32:::0;17340:199::o;15419:888::-;3034:4;3069:5;-1:-1:-1;;;;;3069:5:0;2886:10;3058:16;2870:38;;;;-1:-1:-1;;;2870:38:0;;;;;;;:::i;:::-;15678:12:::1;:30:::0;;;15719:8:::1;:22:::0;;;15752:15:::1;:36:::0;;;15799:10:::1;:26:::0;;;15838:13:::1;:32:::0;;;15881:9:::1;:24:::0;;;15916:16:::1;:38:::0;;;15965:11:::1;:28:::0;;;16020:63:::1;15770:18:::0;16020:42:::1;15693:15:::0;16020:42;15812:13;15730:11;16020:14:::1;:24::i;:::-;:28:::0;::::1;:42::i;:63::-;16006:11;:77;;;;16109:67;16159:16;;16109:45;16140:13;;16109:26;16125:9;;16109:11;;:15;;:26;;;;:::i;:67::-;16094:12;:82:::0;16197:11:::1;::::0;16212:2:::1;-1:-1:-1::0;16197:17:0::1;16189:49;;;::::0;-1:-1:-1;;;16189:49:0;;7146:2:1;16189:49:0::1;::::0;::::1;7128:21:1::0;7185:2;7165:18;;;7158:30;-1:-1:-1;;;7204:18:1;;;7197:49;7263:18;;16189:49:0::1;6944:343:1::0;16189:49:0::1;16273:2;16257:12;;:18;;16249:50;;;::::0;-1:-1:-1;;;16249:50:0;;7146:2:1;16249:50:0::1;::::0;::::1;7128:21:1::0;7185:2;7165:18;;;7158:30;-1:-1:-1;;;7204:18:1;;;7197:49;7263:18;;16249:50:0::1;6944:343:1::0;16249:50:0::1;15419:888:::0;;;;;;;;:::o;19748:122::-;19803:4;19827:35;19835:7;-1:-1:-1;;19827:7:0;:35::i;27374:157::-;27477:11;;:46;;-1:-1:-1;;;27477:46:0;;-1:-1:-1;;;;;4575:32:1;;;27477:46:0;;;4557:51:1;27450:7:0;;27477:11;;:33;;4530:18:1;;27477:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;16921:147::-;3034:4;3069:5;-1:-1:-1;;;;;3069:5:0;2886:10;3058:16;2870:38;;;;-1:-1:-1;;;2870:38:0;;;;;;;:::i;:::-;17015:15:::1;:45:::0;;-1:-1:-1;;;;;;17015:45:0::1;-1:-1:-1::0;;;;;17015:45:0;;;::::1;::::0;;;::::1;::::0;;16921:147::o;17076:127::-;3034:4;3069:5;-1:-1:-1;;;;;3069:5:0;2886:10;3058:16;2870:38;;;;-1:-1:-1;;;2870:38:0;;;;;;;:::i;:::-;17160:10:::1;:35:::0;;-1:-1:-1;;;;;;17160:35:0::1;-1:-1:-1::0;;;;;17160:35:0;;;::::1;::::0;;;::::1;::::0;;17076:127::o;25806:74::-;3034:4;3069:5;-1:-1:-1;;;;;3069:5:0;2886:10;3058:16;2870:38;;;;-1:-1:-1;;;2870:38:0;;;;;;;:::i;:::-;25862:10:::1;:8;:10::i;:::-;25806:74::o:0;27128:115::-;27207:11;;:28;;;-1:-1:-1;;;27207:28:0;;;;27180:7;;-1:-1:-1;;;;;27207:11:0;;:26;;:28;;;;;;;;;;;;;;:11;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;27255:111::-;27332:11;;:26;;;-1:-1:-1;;;27332:26:0;;;;27305:7;;-1:-1:-1;;;;;27332:11:0;;:24;;:26;;;;;;;;;;;;;;:11;:26;;;;;;;;;;;;;;16316:93;3034:4;3069:5;-1:-1:-1;;;;;3069:5:0;2886:10;3058:16;2870:38;;;;-1:-1:-1;;;2870:38:0;;;;;;;:::i;:::-;16385:5:::1;:16:::0;16316:93::o;15282:129::-;3034:4;3069:5;-1:-1:-1;;;;;3069:5:0;2886:10;3058:16;2870:38;;;;-1:-1:-1;;;2870:38:0;;;;;;;:::i;:::-;15375:11:::1;:28:::0;;-1:-1:-1;;;;;;15375:28:0::1;-1:-1:-1::0;;;;;15375:28:0;;;::::1;::::0;;;::::1;::::0;;15282:129::o;27539:113::-;3034:4;3069:5;-1:-1:-1;;;;;3069:5:0;2886:10;3058:16;2870:38;;;;-1:-1:-1;;;2870:38:0;;;;;;;:::i;:::-;27614:11:::1;::::0;:30:::1;::::0;-1:-1:-1;;;;;;27614:30:0;;::::1;::::0;::::1;160:25:1::0;;;-1:-1:-1;;;;;27614:11:0;;::::1;::::0;:19:::1;::::0;133:18:1;;27614:30:0::1;14:177:1::0;26964:156:0;27065:11;;:47;;-1:-1:-1;;;27065:47:0;;-1:-1:-1;;;;;4575:32:1;;;27065:47:0;;;4557:51:1;27038:7:0;;27065:11;;:34;;4530:18:1;;27065:47:0;4395:219:1;16647:122:0;3034:4;3069:5;-1:-1:-1;;;;;3069:5:0;2886:10;3058:16;2870:38;;;;-1:-1:-1;;;2870:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16733:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;16733:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16647:122::o;19878:152::-;19958:4;19982:40;19992:10;20004:9;20015:6;19982:9;:40::i;17211:116::-;3034:4;3069:5;-1:-1:-1;;;;;3069:5:0;2886:10;3058:16;2870:38;;;;-1:-1:-1;;;2870:38:0;;;;;;;:::i;:::-;17297:5:::1;:22:::0;;-1:-1:-1;;;;;;17297:22:0::1;-1:-1:-1::0;;;;;17297:22:0;;;::::1;::::0;;;::::1;::::0;;17211:116::o;26583:117::-;3034:4;3069:5;-1:-1:-1;;;;;3069:5:0;2886:10;3058:16;2870:38;;;;-1:-1:-1;;;2870:38:0;;;;;;;:::i;:::-;26649:12:::1;26636:10;:25:::0;26672:13:::1;:20:::0;;-1:-1:-1;;;;26672:20:0::1;-1:-1:-1::0;;;26672:20:0::1;::::0;;26583:117::o;26740:90::-;26785:11;;:37;;-1:-1:-1;;;26785:37:0;;26811:10;26785:37;;;4557:51:1;-1:-1:-1;;;;;26785:11:0;;;;:25;;4530:18:1;;26785:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3207:136;3034:4;3069:5;-1:-1:-1;;;;;3069:5:0;2886:10;3058:16;2870:38;;;;-1:-1:-1;;;2870:38:0;;;;;;;:::i;:::-;3283:5:::1;:11:::0;;-1:-1:-1;;;;;;3283:11:0::1;-1:-1:-1::0;;;;;3283:11:0;::::1;::::0;;::::1;::::0;;;3310:25:::1;::::0;4557:51:1;;;3310:25:0::1;::::0;4545:2:1;4530:18;3310:25:0::1;;;;;;;3207:136:::0;:::o;18394:132::-;3034:4;3069:5;-1:-1:-1;;;;;3069:5:0;2886:10;3058:16;2870:38;;;;-1:-1:-1;;;2870:38:0;;;;;;;:::i;:::-;18482:36:::1;18503:6;18511;18482:20;:36::i;:::-;18394:132:::0;;:::o;15112:162::-;3034:4;3069:5;-1:-1:-1;;;;;3069:5:0;2886:10;3058:16;2870:38;;;;-1:-1:-1;;;2870:38:0;;;;;;;:::i;:::-;15193:11:::1;:28:::0;;-1:-1:-1;;;;;;15193:28:0::1;-1:-1:-1::0;;;;;15193:28:0;::::1;;::::0;;15232:34:::1;15193:28:::0;15232:18:::1;:34::i;:::-;15112:162:::0;:::o;16777:136::-;3034:4;3069:5;-1:-1:-1;;;;;3069:5:0;2886:10;3058:16;2870:38;;;;-1:-1:-1;;;2870:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16873:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;16873:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16777:136::o;393:181::-;451:7;;483:5;487:1;483;:5;:::i;:::-;471:17;;512:1;507;:6;;499:46;;;;-1:-1:-1;;;499:46:0;;8164:2:1;499:46:0;;;8146:21:1;8203:2;8183:18;;;8176:30;8242:29;8222:18;;;8215:57;8289:18;;499:46:0;7962:351:1;1176:132:0;1234:7;1261:39;1265:1;1268;1261:39;;;;;;;;;;;;;;;;;:3;:39::i;920:250::-;978:7;1002:1;1007;1002:6;998:47;;-1:-1:-1;1032:1:0;1025:8;;998:47;1057:9;1069:5;1073:1;1069;:5;:::i;:::-;1057:17;-1:-1:-1;1102:1:0;1093:5;1097:1;1057:17;1093:5;:::i;:::-;:10;1085:56;;;;-1:-1:-1;;;1085:56:0;;8915:2:1;1085:56:0;;;8897:21:1;8954:2;8934:18;;;8927:30;8993:34;8973:18;;;8966:62;-1:-1:-1;;;9044:18:1;;;9037:31;9085:19;;1085:56:0;8713:397:1;722:192:0;808:7;844:12;836:6;;;;828:29;;;;-1:-1:-1;;;828:29:0;;;;;;;;:::i;:::-;-1:-1:-1;868:9:0;880:5;884:1;880;:5;:::i;:::-;868:17;722:192;-1:-1:-1;;;;;722:192:0:o;20412:1516::-;20500:4;20530:5;;-1:-1:-1;;;;;20521:14:0;;;20530:5;;20521:14;;;;:35;;-1:-1:-1;20551:5:0;;-1:-1:-1;;;;;20539:17:0;;;20551:5;;20539:17;;20521:35;20517:90;;;20566:13;;-1:-1:-1;;;20566:13:0;;;;20558:49;;;;-1:-1:-1;;;20558:49:0;;9447:2:1;20558:49:0;;;9429:21:1;9486:2;9466:18;;;9459:30;9525:25;9505:18;;;9498:53;9568:18;;20558:49:0;9245:347:1;20558:49:0;20710:16;;-1:-1:-1;;;20710:16:0;;;;20707:73;;;20736:41;20751:6;20759:9;20770:6;20736:14;:41::i;:::-;20729:48;;;;20707:73;20810:5;;20800:6;:15;;:42;;;-1:-1:-1;;;;;;20819:23:0;;;;;;:15;:23;;;;;;;;20800:42;20792:57;;;;-1:-1:-1;;;20792:57:0;;9799:2:1;20792:57:0;;;9781:21:1;9838:1;9818:18;;;9811:29;-1:-1:-1;;;9856:18:1;;;9849:32;9898:18;;20792:57:0;9597:325:1;20792:57:0;-1:-1:-1;;;;;20866:26:0;;;;;;:15;:26;;;;;;;;20862:132;;20962:9;;-1:-1:-1;;;;;20926:20:0;;;;;;:9;:20;;;;;;:32;;20951:6;20926:24;:32::i;:::-;:45;;20918:64;;;;-1:-1:-1;;;20918:64:0;;10129:2:1;20918:64:0;;;10111:21:1;10168:1;10148:18;;;10141:29;-1:-1:-1;;;10186:18:1;;;10179:36;10232:18;;20918:64:0;9927:329:1;20918:64:0;21023:4;;-1:-1:-1;;;;;21023:4:0;21009:10;:18;;;;:39;;-1:-1:-1;21032:16:0;;-1:-1:-1;;;21032:16:0;;;;21031:17;21009:39;:64;;;;-1:-1:-1;21052:21:0;;-1:-1:-1;;;21052:21:0;;;;21009:64;:109;;;;-1:-1:-1;21105:13:0;;;21095:4;21077:24;;;;:9;:24;;;;;;;;:41;;21009:109;21006:128;;;21121:10;:8;:10::i;:::-;21166:53;;;;;;;;;;;-1:-1:-1;;;21166:53:0;;;;;;;;-1:-1:-1;;;;;21166:17:0;;-1:-1:-1;21166:17:0;;;:9;:17;;;;;;;;:53;;21188:6;;21166:21;:53::i;:::-;-1:-1:-1;;;;;21146:17:0;;;;;;:9;:17;;;;;;;;:73;;;;21263:11;:19;;;;;;;;21262:20;:47;;;;-1:-1:-1;;;;;;21287:22:0;;;;;;:11;:22;;;;;;;;21286:23;21262:47;:93;;21349:6;21262:93;;;21312:34;21320:6;21328:9;21339:6;21312:7;:34::i;:::-;-1:-1:-1;;;;;21389:20:0;;;;;;:9;:20;;;;;;21240:115;;-1:-1:-1;21389:37:0;;21240:115;21389:24;:37::i;:::-;-1:-1:-1;;;;;21366:20:0;;;;;;;:9;:20;;;;;;;;:60;;;;21472:24;;;;;:16;:24;;;;;;;21468:119;;21517:11;;-1:-1:-1;;;;;21546:17:0;;;21517:11;21546:17;;;:9;:17;;;;;;;;21517:47;;-1:-1:-1;;;21517:47:0;;;;;10435:51:1;;;;10502:18;;;10495:34;21517:11:0;;;:20;;10408:18:1;;21517:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21513:63;;-1:-1:-1;;;;;21603:27:0;;;;;;:16;:27;;;;;;;;21599:129;;21651:11;;-1:-1:-1;;;;;21683:20:0;;;21651:11;21683:20;;;:9;:20;;;;;;;;21651:53;;-1:-1:-1;;;21651:53:0;;;;;10435:51:1;;;;10502:18;;;10495:34;21651:11:0;;;:20;;10408:18:1;;21651:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21647:69;;21744:14;;:18;21740:101;;21783:11;;21803:14;;21783:35;;-1:-1:-1;;;;;;21783:35:0;;-1:-1:-1;;;;;21783:11:0;;;;:19;;:35;;;;160:25:1;;;148:2;133:18;;14:177;21783:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21779:51;;21875:9;-1:-1:-1;;;;;21858:40:0;21867:6;-1:-1:-1;;;;;21858:40:0;;21886:11;21858:40;;;;160:25:1;;148:2;133:18;;14:177;21858:40:0;;;;;;;;-1:-1:-1;21916:4:0;;20412:1516;-1:-1:-1;;;;20412:1516:0:o;580:136::-;638:7;665:43;669:1;672;665:43;;;;;;;;;;;;;;;;;:3;:43::i;22740:913::-;13739:16;:23;;-1:-1:-1;;;;13739:23:0;-1:-1:-1;;;13739:23:0;;;22846:4:::1;13739:23:::0;22828:24;;;:9:::1;:24;::::0;;;;;22920:12:::1;::::0;22905:9:::1;::::0;22828:24;;13739:23;22885:55:::1;::::0;22938:1:::1;::::0;22885:48:::1;::::0;22920:12;22885:48;;22828:24;;22885:19:::1;:30::i;:55::-;22863:77;;22951:28;22982:52;23021:12;;22982:34;23002:13;;22982:15;:19;;:34;;;;:::i;:52::-;22951:83;;23045:26;23074:50;23111:12;;23074:32;23094:11;;23074:15;:19;;:32;;;;:::i;:50::-;23045:79:::0;-1:-1:-1;23135:26:0::1;23164:82;23045:79:::0;23164:58:::1;23201:20:::0;23164:58;:15;23184:11;23164:19:::1;:32::i;:82::-;23135:111;;23269:36;23286:18;23269:16;:36::i;:::-;23330:11;::::0;23354:4:::1;-1:-1:-1::0;;;;;23330:11:0;;::::1;23322:37:::0;23318:198:::1;;23383:11;::::0;23413::::1;::::0;23376:72:::1;::::0;-1:-1:-1;;;23376:72:0;;-1:-1:-1;;;;;23413:11:0;;::::1;23376:72;::::0;::::1;10435:51:1::0;10502:18;;;10495:34;;;23383:11:0;::::1;::::0;23376:28:::1;::::0;10408:18:1;;23376:72:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;23463:11:0::1;::::0;:41:::1;::::0;-1:-1:-1;;;23463:41:0;;::::1;::::0;::::1;160:25:1::0;;;-1:-1:-1;;;;;23463:11:0;;::::1;::::0;:19:::1;::::0;133:18:1;;23463:41:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23318:198;23540:11;::::0;-1:-1:-1;;;;;23540:11:0::1;23564:4;23532:37;23528:116;;23586:46;23611:20;23586:24;:46::i;:::-;-1:-1:-1::0;;13785:16:0;:24;;-1:-1:-1;;;;13785:24:0;;;-1:-1:-1;;;22740:913:0:o;18049:337::-;-1:-1:-1;;;;;18136:23:0;;18154:4;18136:23;;;;:41;;-1:-1:-1;18173:4:0;;-1:-1:-1;;;;;18163:14:0;;;18173:4;;18163:14;;18136:41;18128:50;;;;;;-1:-1:-1;;;;;18189:24:0;;;;;;:16;:24;;;;;:33;;-1:-1:-1;;18189:33:0;;;;;;;;;;;;18233:146;;18258:11;;:31;;-1:-1:-1;;;18258:31:0;;-1:-1:-1;;;;;10453:32:1;;;18258:31:0;;;10435:51:1;18258:11:0;10502:18:1;;;10495:34;18258:11:0;;;;:20;;10408:18:1;;18258:31:0;10261:274:1;18233:146:0;18320:11;;-1:-1:-1;;;;;18349:17:0;;;18320:11;18349:17;;;:9;:17;;;;;;;;18320:47;;-1:-1:-1;;;18320:47:0;;;;;10435:51:1;;;;10502:18;;;10495:34;18320:11:0;;;:20;;10408:18:1;;18320:47:0;10261:274:1;14982:122:0;15054:11;;:42;;-1:-1:-1;;;15054:42:0;;-1:-1:-1;;;;;4575:32:1;;;15054:42:0;;;4557:51:1;15054:11:0;;;;:26;;4530:18:1;;15054:42:0;4395:219:1;1314:345:0;1400:7;1502:12;1495:5;1487:28;;;;-1:-1:-1;;;1487:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1526:9:0;1538:5;1542:1;1538;:5;:::i;21940:330::-;22070:53;;;;;;;;;;;-1:-1:-1;;;22070:53:0;;;;;;;;-1:-1:-1;;;;;22070:17:0;;22033:4;22070:17;;;:9;:17;;;;;;;:53;;22092:6;;22070:21;:53::i;:::-;-1:-1:-1;;;;;22050:17:0;;;;;;;:9;:17;;;;;;:73;;;;22157:20;;;;;;;:32;;22182:6;22157:24;:32::i;:::-;-1:-1:-1;;;;;22134:20:0;;;;;;;:9;:20;;;;;;;:55;;;;22205:35;;;;;;;;;;22233:6;160:25:1;;148:2;133:18;;14:177;22205:35:0;;;;;;;;-1:-1:-1;22258:4:0;21940:330;;;;;:::o;22284:448::-;22424:4;;22370:7;;;;-1:-1:-1;;;;;22424:17:0;;;:4;;:17;:46;;22459:11;;22424:46;;;22444:12;;22424:46;22400:70;;22481:17;22501:45;22531:14;;22501:25;22512:13;22501:6;:10;;:25;;;;:::i;:45::-;22604:4;22586:24;;;;:9;:24;;;;;;22481:65;;-1:-1:-1;22586:39:0;;22481:65;22586:28;:39::i;:::-;22577:4;22559:24;;;;:9;:24;;;;;;;:66;;;;22641:42;;-1:-1:-1;;;;;22641:42:0;;;;;;;22673:9;160:25:1;;148:2;133:18;;14:177;22641:42:0;;;;;;;;22703:21;:6;22714:9;22703:10;:21::i;:::-;22696:28;22284:448;-1:-1:-1;;;;;;22284:448:0:o;24350:1448::-;24502:16;;;24516:1;24502:16;;;;;;;;24478:21;;24502:16;;;;;;;;;;-1:-1:-1;24502:16:0;24478:40;;24547:4;24529;24534:1;24529:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24529:23:0;;;:7;;;;;;;;;:23;24573:4;;24563:7;;24573:4;;;24563;;24573;;24563:7;;;;;;:::i;:::-;-1:-1:-1;;;;;24563:14:0;;;:7;;;;;;;;;:14;24616:6;;:215;;-1:-1:-1;;;24616:215:0;;:6;;;:57;;:215;;24688:11;;24616:6;;24758:4;;24785;;24805:15;;24616:215;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;25013:12:0;;24991:16;;24864:21;;-1:-1:-1;24918:21:0;;-1:-1:-1;24844:17:0;;24977:49;;:31;;24864:21;;24977:13;:31::i;:49::-;24950:76;;25037:19;25059:46;25092:12;;25059:28;25075:11;;25059;:15;;:28;;;;:::i;:46::-;25037:68;;25118:26;25147:49;25194:1;25147:42;25176:12;;25147:24;25161:9;;25147;:13;;:24;;;;:::i;:49::-;25118:78;-1:-1:-1;25212:13:0;;25209:105;;25259:15;;25251:51;;-1:-1:-1;;;;;25259:15:0;;;;25251:51;;;;;25285:16;;25259:15;25251:51;25259:15;25251:51;25285:16;25259:15;25251:51;;;;;;;;;;;;;;;;;;;;;25209:105;25335:15;;25332:112;;25384:10;;25376:41;;-1:-1:-1;;;;;25384:10:0;;;;25376:41;;;;;25405:11;;25384:10;25376:41;25384:10;25376:41;25405:11;25384:10;25376:41;;;;;;;;;;;;;;;;;;;;;25332:112;25467:22;;25464:321;;25505:6;;:268;;-1:-1:-1;;;25505:268:0;;25581:4;25505:268;;;12667:34:1;12717:18;;;12710:34;;;25505:6:0;12760:18:1;;;12753:34;;;12803:18;;;12796:34;25682:42:0;12846:19:1;;;12839:44;25743:15:0;12899:19:1;;;12892:35;-1:-1:-1;;;;;25505:6:0;;;;:22;;25535:18;;12601:19:1;;25505:268:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;25464:321;24405:1393;;;;;;24350:1448;:::o;23661:681::-;23759:16;;;23773:1;23759:16;;;;;;;;;23735:21;;23759:16;;;;;;;;;;-1:-1:-1;23759:16:0;23735:40;;23804:4;23786;23791:1;23786:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23786:23:0;;;:7;;;;;;;;;:23;23830:4;;23820:7;;23830:4;;;23820;;23830;;23820:7;;;;;;:::i;:::-;-1:-1:-1;;;;;23820:14:0;;;:7;;;;;;;;;:14;23855:11;;23845:7;;23855:11;;;23845:4;;23850:1;;23845:7;;;;;;:::i;:::-;-1:-1:-1;;;;;23845:21:0;;;:7;;;;;;;;;:21;23879:6;;:190;;-1:-1:-1;;;23879:190:0;;:6;;;:60;;:190;;23954:11;;23879:6;;23996:4;;24023;;24043:15;;23879:190;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24109:11:0;;24102:44;;-1:-1:-1;;;24102:44:0;;24140:4;24102:44;;;4557:51:1;24082:17:0;;-1:-1:-1;;;;;;24109:11:0;;;;-1:-1:-1;24102:29:0;;4530:18:1;;24102:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24181:11;;24211;;24174:61;;-1:-1:-1;;;24174:61:0;;-1:-1:-1;;;;;24211:11:0;;;24174:61;;;10435:51:1;10502:18;;;10495:34;;;24082:64:0;;-1:-1:-1;24159:12:0;;24181:11;;;24174:28;;10408:18:1;;24174:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24159:76;;24252:7;24248:82;;;24276:11;;:30;;-1:-1:-1;;;24276:30:0;;;;;160:25:1;;;-1:-1:-1;;;;;24276:11:0;;;;:19;;133:18:1;;24276:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;196:597:1;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;634:6;631:1;628:13;625:91;;;704:1;699:2;690:6;679:9;675:22;671:31;664:42;625:91;-1:-1:-1;777:2:1;756:15;-1:-1:-1;;752:29:1;737:45;;;;784:2;733:54;;196:597;-1:-1:-1;;;196:597:1:o;798:131::-;-1:-1:-1;;;;;873:31:1;;863:42;;853:70;;919:1;916;909:12;934:315;1002:6;1010;1063:2;1051:9;1042:7;1038:23;1034:32;1031:52;;;1079:1;1076;1069:12;1031:52;1118:9;1105:23;1137:31;1162:5;1137:31;:::i;:::-;1187:5;1239:2;1224:18;;;;1211:32;;-1:-1:-1;;;934:315:1:o;1446:180::-;1505:6;1558:2;1546:9;1537:7;1533:23;1529:32;1526:52;;;1574:1;1571;1564:12;1526:52;-1:-1:-1;1597:23:1;;1446:180;-1:-1:-1;1446:180:1:o;1631:247::-;1690:6;1743:2;1731:9;1722:7;1718:23;1714:32;1711:52;;;1759:1;1756;1749:12;1711:52;1798:9;1785:23;1817:31;1842:5;1817:31;:::i;1883:118::-;1969:5;1962:13;1955:21;1948:5;1945:32;1935:60;;1991:1;1988;1981:12;2006:241;2062:6;2115:2;2103:9;2094:7;2090:23;2086:32;2083:52;;;2131:1;2128;2121:12;2083:52;2170:9;2157:23;2189:28;2211:5;2189:28;:::i;2252:456::-;2329:6;2337;2345;2398:2;2386:9;2377:7;2373:23;2369:32;2366:52;;;2414:1;2411;2404:12;2366:52;2453:9;2440:23;2472:31;2497:5;2472:31;:::i;:::-;2522:5;-1:-1:-1;2579:2:1;2564:18;;2551:32;2592:33;2551:32;2592:33;:::i;:::-;2252:456;;2644:7;;-1:-1:-1;;;2698:2:1;2683:18;;;;2670:32;;2252:456::o;2713:248::-;2781:6;2789;2842:2;2830:9;2821:7;2817:23;2813:32;2810:52;;;2858:1;2855;2848:12;2810:52;-1:-1:-1;;2881:23:1;;;2951:2;2936:18;;;2923:32;;-1:-1:-1;2713:248:1:o;3155:309::-;3220:6;3228;3281:2;3269:9;3260:7;3256:23;3252:32;3249:52;;;3297:1;3294;3287:12;3249:52;3336:9;3323:23;3355:28;3377:5;3355:28;:::i;3469:661::-;3591:6;3599;3607;3615;3623;3631;3639;3647;3700:3;3688:9;3679:7;3675:23;3671:33;3668:53;;;3717:1;3714;3707:12;3668:53;-1:-1:-1;;3740:23:1;;;3810:2;3795:18;;3782:32;;-1:-1:-1;3861:2:1;3846:18;;3833:32;;3912:2;3897:18;;3884:32;;-1:-1:-1;3963:3:1;3948:19;;3935:33;;-1:-1:-1;4015:3:1;4000:19;;3987:33;;-1:-1:-1;4067:3:1;4052:19;;4039:33;;-1:-1:-1;4119:3:1;4104:19;4091:33;;-1:-1:-1;3469:661:1;-1:-1:-1;3469:661:1:o;5107:382::-;5172:6;5180;5233:2;5221:9;5212:7;5208:23;5204:32;5201:52;;;5249:1;5246;5239:12;5201:52;5288:9;5275:23;5307:31;5332:5;5307:31;:::i;:::-;5357:5;-1:-1:-1;5414:2:1;5399:18;;5386:32;5427:30;5386:32;5427:30;:::i;:::-;5476:7;5466:17;;;5107:382;;;;;:::o;5738:388::-;5806:6;5814;5867:2;5855:9;5846:7;5842:23;5838:32;5835:52;;;5883:1;5880;5873:12;5835:52;5922:9;5909:23;5941:31;5966:5;5941:31;:::i;:::-;5991:5;-1:-1:-1;6048:2:1;6033:18;;6020:32;6061:33;6020:32;6061:33;:::i;6357:329::-;6559:2;6541:21;;;6598:1;6578:18;;;6571:29;-1:-1:-1;;;6631:2:1;6616:18;;6609:36;6677:2;6662:18;;6357:329::o;7292:184::-;7362:6;7415:2;7403:9;7394:7;7390:23;7386:32;7383:52;;;7431:1;7428;7421:12;7383:52;-1:-1:-1;7454:16:1;;7292:184;-1:-1:-1;7292:184:1:o;7697:127::-;7758:10;7753:3;7749:20;7746:1;7739:31;7789:4;7786:1;7779:15;7813:4;7810:1;7803:15;7829:128;7869:3;7900:1;7896:6;7893:1;7890:13;7887:39;;;7906:18;;:::i;:::-;-1:-1:-1;7942:9:1;;7829:128::o;8318:168::-;8358:7;8424:1;8420;8416:6;8412:14;8409:1;8406:21;8401:1;8394:9;8387:17;8383:45;8380:71;;;8431:18;;:::i;:::-;-1:-1:-1;8471:9:1;;8318:168::o;8491:217::-;8531:1;8557;8547:132;;8601:10;8596:3;8592:20;8589:1;8582:31;8636:4;8633:1;8626:15;8664:4;8661:1;8654:15;8547:132;-1:-1:-1;8693:9:1;;8491:217::o;9115:125::-;9155:4;9183:1;9180;9177:8;9174:34;;;9188:18;;:::i;:::-;-1:-1:-1;9225:9:1;;9115:125::o;10540:245::-;10607:6;10660:2;10648:9;10639:7;10635:23;10631:32;10628:52;;;10676:1;10673;10666:12;10628:52;10708:9;10702:16;10727:28;10749:5;10727:28;:::i;11209:127::-;11270:10;11265:3;11261:20;11258:1;11251:31;11301:4;11298:1;11291:15;11325:4;11322:1;11315:15;11341:980;11603:4;11651:3;11640:9;11636:19;11682:6;11671:9;11664:25;11708:2;11746:6;11741:2;11730:9;11726:18;11719:34;11789:3;11784:2;11773:9;11769:18;11762:31;11813:6;11848;11842:13;11879:6;11871;11864:22;11917:3;11906:9;11902:19;11895:26;;11956:2;11948:6;11944:15;11930:29;;11977:1;11987:195;12001:6;11998:1;11995:13;11987:195;;;12066:13;;-1:-1:-1;;;;;12062:39:1;12050:52;;12157:15;;;;12122:12;;;;12098:1;12016:9;11987:195;;;-1:-1:-1;;;;;;;12238:32:1;;;;12233:2;12218:18;;12211:60;-1:-1:-1;;;12302:3:1;12287:19;12280:35;12199:3;11341:980;-1:-1:-1;;;11341:980:1:o;12938:306::-;13026:6;13034;13042;13095:2;13083:9;13074:7;13070:23;13066:32;13063:52;;;13111:1;13108;13101:12;13063:52;13140:9;13134:16;13124:26;;13190:2;13179:9;13175:18;13169:25;13159:35;;13234:2;13223:9;13219:18;13213:25;13203:35;;12938:306;;;;;:::o

Swarm Source

ipfs://a70271b471d8c3b0224654d99782d9e5e84a1a8055b79dd8c81e7a713bc17a3c
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.