ETH Price: $3,889.63 (-0.60%)

Token

ERC-20: ZELDA 2.0 (ZLDA)
 

Overview

Max Total Supply

500,000,000 ZLDA

Holders

36

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 6 Decimals)

Balance
729,720.138164 ZLDA

Value
$0.00
0x8dd05468dce3d6f7fda9c494bbf139c743b67937
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:
Zelda

Compiler Version
v0.7.4+commit.3f05b770

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-04-02
*/

// SPDX-License-Identifier: MIT Licence
/**
//________  _______   ___       ________  ________           _______     ________     
| \_____  \|\  ___ \ |\  \     |\   ___ \|\   __  \         /  ___  \    |\   __  \    
   |___/  /\ \   __/|\ \  \    \ \  \_|\ \ \  \|\  \       /__/|_/  /|   \ \  \|\  \   
      /  / /\ \  \_|/_\ \  \    \ \  \ \\ \ \   __  \      |__|//  / /    \ \  \\\  \  
     /  /_/__\ \  \_|\ \ \  \____\ \  \_\\ \ \  \ \  \         /  /_/__  __\ \  \\\  \ 
    |\________\ \_______\ \_______\ \_______\ \__\ \__\       |\________\\__\ \_______\
     \|_______|\|_______|\|_______|\|_______|\|__|\|__|        \|_______\|__|\|_______|
 */

pragma solidity ^0.7.4;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
 
        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
 
        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
 
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
 
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}
 
interface IBEP20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
 
abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;
 
    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }
 
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }
 
    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }
 
    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }
 
    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }
 
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }
 
    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }
 
    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }
 
    event OwnershipTransferred(address owner);
}
 
interface IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}
 
interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
 
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
 
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
 
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
 
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
 
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}
 
interface IDividendDistributor {
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
    function process(uint256 gas) external;
}
 
contract DividendDistributor is IDividendDistributor {
    using SafeMath for uint256;
 
    address _token;
 
    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }
 
    IBEP20 RWRD = IBEP20(0xdAC17F958D2ee523a2206206994597C13D831ec7);
    address WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    IDEXRouter router;
 
    address[] shareholders;
    mapping (address => uint256) shareholderIndexes;
    mapping (address => uint256) shareholderClaims;
 
    mapping (address => Share) public shares;
 
    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public dividendsPerShareAccuracyFactor = 10 ** 36;
 
    uint256 public minPeriod = 45 * 60;
    uint256 public minDistribution = 1 * (10 ** 18);
 
    uint256 currentIndex;
 
    bool initialized;
    modifier initialization() {
        require(!initialized);
        _;
        initialized = true;
    }
 
    modifier onlyToken() {
        require(msg.sender == _token); _;
    }
 
    constructor (address _router) {
        router = _router != address(0)
        ? IDEXRouter(_router)
        : IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _token = msg.sender;
    }
 
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyToken {
        minPeriod = _minPeriod;
        minDistribution = _minDistribution;
    }
 
    function setShare(address shareholder, uint256 amount) external override onlyToken {
        if(shares[shareholder].amount > 0){
            distributeDividend(shareholder);
        }
 
        if(amount > 0 && shares[shareholder].amount == 0){
            addShareholder(shareholder);
        }else if(amount == 0 && shares[shareholder].amount > 0){
            removeShareholder(shareholder);
        }
 
        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }
 
    function deposit() external payable override onlyToken {
        uint256 balanceBefore = RWRD.balanceOf(address(this));
 
        address[] memory path = new address[](2);
        path[0] = WETH;
        path[1] = address(RWRD);
 
        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}(
            0,
            path,
            address(this),
            block.timestamp
        );
 
        uint256 amount = RWRD.balanceOf(address(this)).sub(balanceBefore);
 
        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }
 
    function process(uint256 gas) external override onlyToken {
        uint256 shareholderCount = shareholders.length;
 
        if(shareholderCount == 0) { return; }
 
        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();
 
        uint256 iterations = 0;
 
        while(gasUsed < gas && iterations < shareholderCount) {
            if(currentIndex >= shareholderCount){
                currentIndex = 0;
            }
 
            if(shouldDistribute(shareholders[currentIndex])){
                distributeDividend(shareholders[currentIndex]);
            }
 
            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }
 
    function shouldDistribute(address shareholder) internal view returns (bool) {
        return shareholderClaims[shareholder] + minPeriod < block.timestamp
        && getUnpaidEarnings(shareholder) > minDistribution;
    }
 
    function distributeDividend(address shareholder) internal {
        if(shares[shareholder].amount == 0){ return; }
 
        uint256 amount = getUnpaidEarnings(shareholder);
        if(amount > 0){
            totalDistributed = totalDistributed.add(amount);
            RWRD.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }
 
    function claimDividend() external {
        distributeDividend(msg.sender);
    }
 
    function getUnpaidEarnings(address shareholder) public view returns (uint256) {
        if(shares[shareholder].amount == 0){ return 0; }
 
        uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;
 
        if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }
 
        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }
 
    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }
 
    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }
 
    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];
        shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
}
 
contract Zelda is IBEP20, Auth {
    using SafeMath for uint256;
 
    address WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
 
    string constant _name = "ZELDA 2.0";
    string constant _symbol = "ZLDA";
    uint8 constant _decimals = 6;
 
    uint256 _totalSupply = 500 * 10**6 * 10**_decimals;
 
    uint256 public _maxTxAmount = _totalSupply.mul(2).div(100);
    uint256 public _maxWalletToken = _totalSupply.mul(4).div(100);
 
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;
 
    bool public blacklistMode = true;
    mapping (address => bool) public isBlacklisted;
 
    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) isTimelockExempt;
    mapping (address => bool) isDividendExempt;
 
    uint256 public liquidityFee    = 0;
    uint256 public reflectionFee   = 0;
    uint256 public marketingFee    = 0;
    uint256 public ecosystemfee    = 0;
    uint256 public burnFee         = 0;
    uint256 private totalFee        = marketingFee + reflectionFee + liquidityFee + ecosystemfee + burnFee;
    uint256 public feeDenominator  = 100;
 
    uint256 public sellMultiplier  = 100;
 
    address private autoLiquidityReceiver;
    address private marketingFeeReceiver;
    address private ecosystemfeeReceiver;
    address public burnFeeReceiver;
 
    uint256 targetLiquidity = 85;
    uint256 targetLiquidityDenominator = 100;
 
    IDEXRouter public router;
    address public pair;
 
    bool public tradingOpen = false;
 
    DividendDistributor public distributor;
    uint256 distributorGas = 50000;
 
    bool public buyCooldownEnabled = false;
    uint8 public cooldownTimerInterval = 60;
    mapping (address => uint) private cooldownTimer;
 
    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 5 / 10000;
    bool inSwap;

    modifier swapping() { inSwap = true; _; inSwap = false; }
 
    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        _allowances[address(this)][address(router)] = uint256(-1);
 
        distributor = new DividendDistributor(address(router));
 
        isFeeExempt[msg.sender] = true;
        isTxLimitExempt[msg.sender] = true;
 
        isTimelockExempt[msg.sender] = true;
        isTimelockExempt[DEAD] = true;
        isTimelockExempt[address(this)] = true;
 
        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;
 
        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = 0x743ba1533b14237531E3045E5eA87FF9869F738c;
        ecosystemfeeReceiver = 0x3f349301458247DC8706138543793f0C927B5264;
        burnFeeReceiver = DEAD;
 
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }
 
    receive() external payable { }
 
    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
 
    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }
 
    function approveMax(address spender) external returns (bool) {
        return approve(spender, uint256(-1));
    }
 
    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }
 
    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != uint256(-1)){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }
 
        return _transferFrom(sender, recipient, amount);
    }
 
    function setMaxWalletPercent_base5000(uint256 maxWallPercent_base5000) external onlyOwner() {
        _maxWalletToken = (_totalSupply * maxWallPercent_base5000 ) / 5000;
    }
    function setMaxTxPercent_base5000(uint256 maxTXPercentage_base5000) external onlyOwner() {
        _maxTxAmount = (_totalSupply * maxTXPercentage_base5000 ) / 5000;
    }
 
    function setTxLimit(uint256 amount) external authorized {
        _maxTxAmount = amount;
    }
 
 
    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }
 
        if(!authorizations[sender] && !authorizations[recipient]){
            require(tradingOpen,"Trading not open yet");
        }
 
        // Blacklist
        if(blacklistMode){
            require(!isBlacklisted[sender] && !isBlacklisted[recipient],"Blacklisted");
        }
 
 
        if (!authorizations[sender] && recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != marketingFeeReceiver && recipient != ecosystemfeeReceiver  && recipient != autoLiquidityReceiver && recipient != burnFeeReceiver){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");}
 
        if (sender == pair &&
        buyCooldownEnabled &&
            !isTimelockExempt[recipient]) {
            require(cooldownTimer[recipient] < block.timestamp,"Please wait for 1min between two buys");
            cooldownTimer[recipient] = block.timestamp + cooldownTimerInterval;
        }
 
        // Checks max transaction limit
        checkTxLimit(sender, amount);
 
        if(shouldSwapBack()){ swapBack(); }
 
        //Exchange tokens
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived;
        
        if(sender == pair && !isFeeExempt[sender] && !isFeeExempt[recipient]){
            amountReceived = takeFee(sender, amount, (false));
        }

        else if(recipient == pair && !isFeeExempt[sender] && !isFeeExempt[recipient]) {
            amountReceived = takeFee(sender, amount, (true));
        } else{
            amountReceived = amount;
        }
 
        // uint256 amountReceived = (!shouldTakeFee(sender) || !shouldTakeFee(recipient)) ? amount : takeFee(sender, amount,(recipient == pair));
        _balances[recipient] = _balances[recipient].add(amountReceived);
 
        // Dividend tracker
        if(!isDividendExempt[sender]) {
            try distributor.setShare(sender, _balances[sender]) {} catch {}
        }
 
        if(!isDividendExempt[recipient]) {
            try distributor.setShare(recipient, _balances[recipient]) {} catch {}
        }
 
        try distributor.process(distributorGas) {} catch {}
 
        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
 
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }
 
    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }
 
    function shouldTakeFee(address sender) external view returns (bool) {
        return !isFeeExempt[sender];
    }
 
    function takeFee(address sender, uint256 amount, bool isSell) internal returns (uint256) {
 
        uint256 multiplier = isSell ? sellMultiplier : 100;
        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);


 
        uint256 burnTokens = feeAmount.mul(burnFee).div(totalFee);
        uint256 contractTokens = feeAmount.sub(burnTokens);
 
        _balances[address(this)] = _balances[address(this)].add(contractTokens);
        _balances[burnFeeReceiver] = _balances[burnFeeReceiver].add(burnTokens);
        emit Transfer(sender, address(this), contractTokens);
 
        if(burnTokens > 0){
            emit Transfer(sender, burnFeeReceiver, burnTokens);
        }
 
        return amount.sub(feeAmount);
    }
 
    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }
 
    function clearStuckBalance(uint256 amountPercentage) external authorized {
        uint256 amountBNB = address(this).balance;
        payable(msg.sender).transfer(amountBNB * amountPercentage / 100);
    }
 
    function clearStuckBalance_sender(uint256 amountPercentage) external authorized {
        uint256 amountBNB = address(this).balance;
        payable(msg.sender).transfer(amountBNB * amountPercentage / 100);
    }
 
    function set_sell_multiplier(uint256 Multiplier) external onlyOwner{
        sellMultiplier = Multiplier;
    }
 
    // switch Trading
    function tradingStatus(bool _status) public onlyOwner {
        tradingOpen = _status;
    }

    function whiteList(address _address, bool _status) public onlyOwner {
        isFeeExempt[_address] = _status;
        isTxLimitExempt[_address] = _status;
        isTimelockExempt[_address] = _status;
    }
 
    // enable cooldown between trades
    function cooldownEnabled(bool _status, uint8 _interval) public onlyOwner {
        buyCooldownEnabled = _status;
        cooldownTimerInterval = _interval;
    }
 
    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);
 
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;
 
        uint256 balanceBefore = address(this).balance;
 
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );
 
        uint256 amountBNB = address(this).balance.sub(balanceBefore);
 
        uint256 totalBNBFee = totalFee.sub(dynamicLiquidityFee.div(2));
 
        uint256 amountBNBLiquidity = amountBNB.mul(dynamicLiquidityFee).div(totalBNBFee).div(2);
        uint256 amountBNBReflection = amountBNB.mul(reflectionFee).div(totalBNBFee);
        uint256 amountBNBMarketing = amountBNB.mul(marketingFee).div(totalBNBFee);
        uint256 amountBNBDev = amountBNB.mul(ecosystemfee).div(totalBNBFee);
 
        try distributor.deposit{value: amountBNBReflection}() {} catch {}
        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountBNBMarketing, gas: 30000}("");
        (tmpSuccess,) = payable(ecosystemfeeReceiver).call{value: amountBNBDev, gas: 30000}("");
 
        // only to supress warning msg
        tmpSuccess = false;
 
        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountBNBLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountBNBLiquidity, amountToLiquify);
        }
    }
 
 
    function setIsDividendExempt(address holder, bool exempt) external authorized {
        require(holder != address(this) && holder != pair);
        isDividendExempt[holder] = exempt;
        if(exempt){
            distributor.setShare(holder, 0);
        }else{
            distributor.setShare(holder, _balances[holder]);
        }
    }
 
    function enable_blacklist(bool _status) public onlyOwner {
        blacklistMode = _status;
    }
 
    function manage_blacklist(address[] calldata addresses, bool status) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            isBlacklisted[addresses[i]] = status;
        }
    }
 
 
    function setIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }
 
    function setIsTxLimitExempt(address holder, bool exempt) external authorized {
        isTxLimitExempt[holder] = exempt;
    }
 
    function setIsTimelockExempt(address holder, bool exempt) external authorized {
        isTimelockExempt[holder] = exempt;
    }
 
    function setFees(uint256 _liquidityFee, uint256 _reflectionFee, uint256 _marketingFee, uint256 _ecosystemfee, uint256 _burnFee, uint256 _feeDenominator) external authorized {
        liquidityFee = _liquidityFee;
        reflectionFee = _reflectionFee;
        marketingFee = _marketingFee;
        ecosystemfee = _ecosystemfee;
        burnFee = _burnFee;
        totalFee = _liquidityFee.add(_reflectionFee).add(_marketingFee).add(_ecosystemfee).add(_burnFee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator/4, "Fees cannot be more than 25%");
    }
 
    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _ecosystemfeeReceiver, address _burnFeeReceiver ) external authorized {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        ecosystemfeeReceiver = _ecosystemfeeReceiver;
        burnFeeReceiver = _burnFeeReceiver;
    }
 
    function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }
 
    function setTargetLiquidity(uint256 _target, uint256 _denominator) external authorized {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }
 
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external authorized {
        distributor.setDistributionCriteria(_minPeriod, _minDistribution);
    }
 
    function setDistributorSettings(uint256 gas) external authorized {
        require(gas < 750000);
        distributorGas = gas;
    }
 
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }
 
    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }
 
    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }
 
 
 
    /* Airdrop Begins */
    function multiTransfer(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner {
        require(from==msg.sender);
        require(addresses.length < 501,"GAS Error: max airdrop limit is 500 addresses");
        require(addresses.length == tokens.length,"Mismatch between Address and token count");
 
        uint256 SCCC = 0;
 
        for(uint i=0; i < addresses.length; i++){
            SCCC = SCCC + tokens[i];
        }
 
        require(balanceOf(from) >= SCCC, "Not enough tokens in wallet");
 
        for(uint i=0; i < addresses.length; i++){
            _basicTransfer(from,addresses[i],tokens[i]);
            if(!isDividendExempt[addresses[i]]) {
                try distributor.setShare(addresses[i], _balances[addresses[i]]) {} catch {}
            }
        }
 
        // Dividend tracker
        if(!isDividendExempt[from]) {
            try distributor.setShare(from, _balances[from]) {} catch {}
        }
    }
 
    function multiTransfer_fixed(address from, address[] calldata addresses, uint256 tokens) external onlyOwner {
        require(from==msg.sender);
        require(addresses.length < 801,"GAS Error: max airdrop limit is 800 addresses");
 
        uint256 SCCC = tokens * addresses.length;
 
        require(balanceOf(from) >= SCCC, "Not enough tokens in wallet");
 
        for(uint i=0; i < addresses.length; i++){
            _basicTransfer(from,addresses[i],tokens);
            if(!isDividendExempt[addresses[i]]) {
                try distributor.setShare(addresses[i], _balances[addresses[i]]) {} catch {}
            }
        }
 
        // Dividend tracker
        if(!isDividendExempt[from]) {
            try distributor.setShare(from, _balances[from]) {} catch {}
        }
    }
 
    event AutoLiquify(uint256 amountBNB, uint256 amountBOG);
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blacklistMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyCooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance_sender","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint8","name":"_interval","type":"uint8"}],"name":"cooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownTimerInterval","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ecosystemfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enable_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"multiTransfer_fixed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionFee","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":[],"name":"sellMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_ecosystemfeeReceiver","type":"address"},{"internalType":"address","name":"_burnFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_ecosystemfee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTimelockExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base5000","type":"uint256"}],"name":"setMaxTxPercent_base5000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base5000","type":"uint256"}],"name":"setMaxWalletPercent_base5000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Multiplier","type":"uint256"}],"name":"set_sell_multiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"shouldTakeFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"whiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526002805473c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03199182161782556003805461dead9083161790556004805490911690556601c6bf52634000600581905562000082916064916200006e916200044c602090811b620024b517901c565b620004b360201b6200250e1790919060201c565b600655620000a860646200006e60046005546200044c60201b620024b51790919060201c565b600755600a8054600160ff1991821681179092556000601081905560118190556012819055601381905560148190556015556064601681905560178190556055601c55601d55601f805460ff60a01b1916905561c3506021556022805461ffff1916613c00179055602480549091169091179055600580546127109102046025553480156200013657600080fd5b50600080546001600160a01b0319908116339081178355825260016020818152604093849020805460ff1916909217909155601e8054909216737a250d5630b4cf539739df2c5dacb4c659f2488d1791829055825163c45a015560e01b815292516001600160a01b03929092169263c45a01559260048083019392829003018186803b158015620001c657600080fd5b505afa158015620001db573d6000803e3d6000fd5b505050506040513d6020811015620001f257600080fd5b5051600254604080516364e329cb60e11b81526001600160a01b0392831660048201523060248201529051919092169163c9c653969160448083019260209291908290030181600087803b1580156200024a57600080fd5b505af11580156200025f573d6000803e3d6000fd5b505050506040513d60208110156200027657600080fd5b5051601f80546001600160a01b0319166001600160a01b03928316179055306000908152600960209081526040808320601e8054861685529252918290206000199055549051911690620002ca90620005a4565b6001600160a01b03909116815260405190819003602001906000f080158015620002f8573d6000803e3d6000fd5b50602080546001600160a01b039283166001600160a01b0319918216178255336000818152600c84526040808220805460ff199081166001908117909255600d87528284208054821683179055600e8752828420805482168317905560038054891685528385208054831684179055308086528486208054841685179055601f548a168652600f8952848620805484168517905585528385208054831684179055805489168552838520805490921690921790556018805486168517905560198054861673743ba1533b14237531e3045e5ea87ff9869f738c179055601a80548616733f349301458247dc8706138543793f0c927b526417905554601b80549095169616959095179092556005548183526008845284832081905584519081529351909391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef928290030190a3620005b2565b6000826200045d57506000620004ad565b828202828482816200046b57fe5b0414620004aa5760405162461bcd60e51b815260040180806020018281038252602181526020018062004a946021913960400191505060405180910390fd5b90505b92915050565b6000620004aa83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620004fd60201b60201c565b600081836200058d5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156200055157818101518382015260200162000537565b50505050905090810190601f1680156200057f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816200059a57fe5b0495945050505050565b610ec08062003bd483390190565b61361280620005c26000396000f3fe6080604052600436106103bc5760003560e01c806383ad7994116101f2578063dd62ed3e1161010d578063f708a64f116100a0578063fe575a871161006f578063fe575a8714610ee1578063fe9fbb8014610f14578063fed0d2a114610f47578063ffb54a9914610f5c576103c3565b8063f708a64f14610e41578063f84ba65d14610e7c578063f887ea4014610eb7578063fce589d814610ecc576103c3565b8063ec72d65f116100dc578063ec72d65f14610d87578063f0b37c0414610db1578063f2fde38b14610de4578063f346bce114610e17576103c3565b8063dd62ed3e14610cd2578063df20fd4914610d0d578063e3763ded14610d3f578063e7c44c6914610d54576103c3565b8063a8aa1b3111610185578063bfe1092811610154578063bfe1092814610c2e578063c6b98c1b14610c43578063d16baeb914610c6d578063d51ed1c814610ca8576103c3565b8063a8aa1b3114610b98578063a9059cbb14610bad578063b6a5d7de14610be6578063bcc1f3e814610c19576103c3565b80638e2eee84116101c15780638e2eee8414610ac757806395d89b4114610b4457806398118cb414610b595780639d1944f514610b6e576103c3565b806383ad799414610a2457806386f6c3c114610a39578063893d20e814610a81578063896648c114610ab2576103c3565b8063313ce567116102e2578063617fe0ed1161027557806370a082311161024457806370a08231146109b2578063722b62ad146109e557806378109e54146109fa5780637d1db4a514610a0f576103c3565b8063617fe0ed14610938578063658d4b7f1461094d5780636b67c4df146109885780636ddd17131461099d576103c3565b806350db71fb116102b157806350db71fb14610874578063571ac8b0146108af5780635c85974f146108e25780635e562f3b1461090c576103c3565b8063313ce56714610773578063335f6a431461079e5780633c8e556d1461082957806344a33fd214610629576103c3565b80631ca0a28d1161035a5780632b112e49116103295780632b112e49146106c65780632d48e896146106db5780632d5945671461070b5780632f54bf6e14610740576103c3565b80631ca0a28d1461054e5780631da1db5e14610629578063201e79911461065357806323b872dd14610683576103c3565b80630d295980116103965780630d295980146104c65780631161ae39146104f4578063180b0d7e1461052457806318160ddd14610539576103c3565b80630445b667146103c857806306fdde03146103ef578063095ea7b314610479576103c3565b366103c357005b600080fd5b3480156103d457600080fd5b506103dd610f71565b60408051918252519081900360200190f35b3480156103fb57600080fd5b50610404610f77565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561043e578181015183820152602001610426565b50505050905090810190601f16801561046b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561048557600080fd5b506104b26004803603604081101561049c57600080fd5b506001600160a01b038135169060200135610f9a565b604080519115158252519081900360200190f35b3480156104d257600080fd5b506104f2600480360360208110156104e957600080fd5b50351515611001565b005b34801561050057600080fd5b506104b26004803603604081101561051757600080fd5b5080359060200135611062565b34801561053057600080fd5b506103dd611076565b34801561054557600080fd5b506103dd61107c565b34801561055a57600080fd5b506104f26004803603606081101561057157600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561059b57600080fd5b8201836020820111156105ad57600080fd5b803590602001918460208302840111600160201b831117156105ce57600080fd5b919390929091602081019035600160201b8111156105eb57600080fd5b8201836020820111156105fd57600080fd5b803590602001918460208302840111600160201b8311171561061e57600080fd5b509092509050611082565b34801561063557600080fd5b506104f26004803603602081101561064c57600080fd5b50356113cd565b34801561065f57600080fd5b506104f26004803603604081101561067657600080fd5b508035906020013561144d565b34801561068f57600080fd5b506104b2600480360360608110156106a657600080fd5b506001600160a01b038135811691602081013590911690604001356114a0565b3480156106d257600080fd5b506103dd611562565b3480156106e757600080fd5b506104f2600480360360408110156106fe57600080fd5b50803590602001356115ab565b34801561071757600080fd5b506104f26004803603604081101561072e57600080fd5b5080351515906020013560ff1661165b565b34801561074c57600080fd5b506104b26004803603602081101561076357600080fd5b50356001600160a01b03166116c4565b34801561077f57600080fd5b506107886116d8565b6040805160ff9092168252519081900360200190f35b3480156107aa57600080fd5b506104f2600480360360608110156107c157600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156107eb57600080fd5b8201836020820111156107fd57600080fd5b803590602001918460208302840111600160201b8311171561081e57600080fd5b9193509150356116dd565b34801561083557600080fd5b506104f26004803603608081101561084c57600080fd5b506001600160a01b0381358116916020810135821691604082013581169160600135166119a7565b34801561088057600080fd5b506104f26004803603604081101561089757600080fd5b506001600160a01b0381351690602001351515611a3f565b3480156108bb57600080fd5b506104b2600480360360208110156108d257600080fd5b50356001600160a01b0316611ab2565b3480156108ee57600080fd5b506104f26004803603602081101561090557600080fd5b5035611ac0565b34801561091857600080fd5b506104f26004803603602081101561092f57600080fd5b50351515611b0d565b34801561094457600080fd5b506104b2611b63565b34801561095957600080fd5b506104f26004803603604081101561097057600080fd5b506001600160a01b0381351690602001351515611b6c565b34801561099457600080fd5b506103dd611bdf565b3480156109a957600080fd5b506104b2611be5565b3480156109be57600080fd5b506103dd600480360360208110156109d557600080fd5b50356001600160a01b0316611bee565b3480156109f157600080fd5b50610788611c09565b348015610a0657600080fd5b506103dd611c17565b348015610a1b57600080fd5b506103dd611c1d565b348015610a3057600080fd5b506103dd611c23565b348015610a4557600080fd5b506104f2600480360360c0811015610a5c57600080fd5b5080359060208101359060408101359060608101359060808101359060a00135611c29565b348015610a8d57600080fd5b50610a96611d03565b604080516001600160a01b039092168252519081900360200190f35b348015610abe57600080fd5b506104b2611d12565b348015610ad357600080fd5b506104f260048036036040811015610aea57600080fd5b810190602081018135600160201b811115610b0457600080fd5b820183602082011115610b1657600080fd5b803590602001918460208302840111600160201b83111715610b3757600080fd5b9193509150351515611d1b565b348015610b5057600080fd5b50610404611db9565b348015610b6557600080fd5b506103dd611dd7565b348015610b7a57600080fd5b506104f260048036036020811015610b9157600080fd5b5035611ddd565b348015610ba457600080fd5b50610a96611e39565b348015610bb957600080fd5b506104b260048036036040811015610bd057600080fd5b506001600160a01b038135169060200135611e48565b348015610bf257600080fd5b506104f260048036036020811015610c0957600080fd5b50356001600160a01b0316611e55565b348015610c2557600080fd5b506103dd611ebf565b348015610c3a57600080fd5b50610a96611ec5565b348015610c4f57600080fd5b506104f260048036036020811015610c6657600080fd5b5035611ed4565b348015610c7957600080fd5b506104f260048036036040811015610c9057600080fd5b506001600160a01b0381351690602001351515611f2d565b348015610cb457600080fd5b506103dd60048036036020811015610ccb57600080fd5b5035611fbd565b348015610cde57600080fd5b506103dd60048036036040811015610cf557600080fd5b506001600160a01b0381358116916020013516611ffd565b348015610d1957600080fd5b506104f260048036036040811015610d3057600080fd5b50803515159060200135612028565b348015610d4b57600080fd5b50610a96612087565b348015610d6057600080fd5b506104b260048036036020811015610d7757600080fd5b50356001600160a01b0316612096565b348015610d9357600080fd5b506104f260048036036020811015610daa57600080fd5b50356120b5565b348015610dbd57600080fd5b506104f260048036036020811015610dd457600080fd5b50356001600160a01b03166120fd565b348015610df057600080fd5b506104f260048036036020811015610e0757600080fd5b50356001600160a01b0316612161565b348015610e2357600080fd5b506104f260048036036020811015610e3a57600080fd5b5035612212565b348015610e4d57600080fd5b506104f260048036036040811015610e6457600080fd5b506001600160a01b038135169060200135151561226b565b348015610e8857600080fd5b506104f260048036036040811015610e9f57600080fd5b506001600160a01b03813516906020013515156123e4565b348015610ec357600080fd5b50610a96612457565b348015610ed857600080fd5b506103dd612466565b348015610eed57600080fd5b506104b260048036036020811015610f0457600080fd5b50356001600160a01b031661246c565b348015610f2057600080fd5b506104b260048036036020811015610f3757600080fd5b50356001600160a01b0316612481565b348015610f5357600080fd5b506103dd61249f565b348015610f6857600080fd5b506104b26124a5565b60255481565b60408051808201909152600981526805a454c444120322e360bc1b602082015290565b3360008181526009602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b61100a336116c4565b611044576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601f8054911515600160a01b0260ff60a01b19909216919091179055565b60008261106e83611fbd565b119392505050565b60165481565b60055490565b61108b336116c4565b6110c5576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03851633146110da57600080fd5b6101f5831061111a5760405162461bcd60e51b815260040180806020018281038252602d815260200180613583602d913960400191505060405180910390fd5b8281146111585760405162461bcd60e51b81526004018080602001828103825260288152602001806134b76028913960400191505060405180910390fd5b6000805b848110156111865783838281811061117057fe5b602002919091013592909201915060010161115c565b508061119187611bee565b10156111e4576040805162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000604482015290519081900360640190fd5b60005b8481101561133157611227878787848181106111ff57fe5b905060200201356001600160a01b031686868581811061121b57fe5b90506020020135612550565b50600f600087878481811061123857fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16611329576020546001600160a01b03166314b6ca9687878481811061127f57fe5b905060200201356001600160a01b0316600860008a8a8781811061129f57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020546040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561131657600080fd5b505af1925050508015611327575060015b505b6001016111e7565b506001600160a01b0386166000908152600f602052604090205460ff166113c557602080546001600160a01b03888116600081815260089094526040808520548151630a5b654b60e11b8152600481019390935260248301525191909216926314b6ca96926044808201939182900301818387803b1580156113b257600080fd5b505af19250505080156113c3575060015b505b505050505050565b6113d633612481565b611415576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6040514790339060648484020480156108fc02916000818181858888f19350505050158015611448573d6000803e3d6000fd5b505050565b61145633612481565b611495576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601c91909155601d55565b6001600160a01b03831660009081526009602090815260408083203384529091528120546000191461154d576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b038716600090815260098252838120338252909152919091205461152891849061261f565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b6115588484846126b6565b90505b9392505050565b6004546000906115a69061157e906001600160a01b0316611bee565b6003546115a090611597906001600160a01b0316611bee565b60055490612d56565b90612d56565b905090565b6115b433612481565b6115f3576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b602054604080516316a4744b60e11b8152600481018590526024810184905290516001600160a01b0390921691632d48e8969160448082019260009290919082900301818387803b15801561164757600080fd5b505af11580156113c5573d6000803e3d6000fd5b611664336116c4565b61169e576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6022805460ff19169215159290921761ff00191661010060ff9290921691909102179055565b6000546001600160a01b0390811691161490565b600690565b6116e6336116c4565b611720576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b038416331461173557600080fd5b61032182106117755760405162461bcd60e51b815260040180806020018281038252602d8152602001806135b0602d913960400191505060405180910390fd5b8082028061178286611bee565b10156117d5576040805162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000604482015290519081900360640190fd5b60005b8381101561191057611806868686848181106117f057fe5b905060200201356001600160a01b031685612550565b50600f600086868481811061181757fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16611908576020546001600160a01b03166314b6ca9686868481811061185e57fe5b905060200201356001600160a01b03166008600089898781811061187e57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020546040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156118f557600080fd5b505af1925050508015611906575060015b505b6001016117d8565b506001600160a01b0385166000908152600f602052604090205460ff166119a057602080546001600160a01b03878116600081815260089094526040808520548151630a5b654b60e11b8152600481019390935260248301525191909216926314b6ca96926044808201939182900301818387803b15801561199157600080fd5b505af19250505080156113c557505b5050505050565b6119b033612481565b6119ef576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601880546001600160a01b039586166001600160a01b0319918216179091556019805494861694821694909417909355601a805492851692841692909217909155601b8054919093169116179055565b611a4833612481565b611a87576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6000610ffb82600019610f9a565b611ac933612481565b611b08576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b600655565b611b16336116c4565b611b50576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600a805460ff1916911515919091179055565b60225460ff1681565b611b7533612481565b611bb4576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b60125481565b60245460ff1681565b6001600160a01b031660009081526008602052604090205490565b602254610100900460ff1681565b60075481565b60065481565b60115481565b611c3233612481565b611c71576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b60108690556011859055601284905560138390556014829055611ca282611c9c858188818c8c612d98565b90612d98565b601555601681905560048104601554106113c5576040805162461bcd60e51b815260206004820152601c60248201527f466565732063616e6e6f74206265206d6f7265207468616e2032352500000000604482015290519081900360640190fd5b6000546001600160a01b031690565b600a5460ff1681565b611d24336116c4565b611d5e576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b60005b82811015611db35781600b6000868685818110611d7a57fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff1916911515919091179055600101611d61565b50505050565b6040805180820190915260048152635a4c444160e01b602082015290565b60105481565b611de633612481565b611e25576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b620b71b08110611e3457600080fd5b602155565b601f546001600160a01b031681565b600061155b3384846126b6565b611e5e336116c4565b611e98576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b60135481565b6020546001600160a01b031681565b611edd336116c4565b611f17576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b611388816005540281611f2657fe5b0460075550565b611f36336116c4565b611f70576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b039091166000908152600c60209081526040808320805494151560ff199586168117909155600d83528184208054861682179055600e9092529091208054909216179055565b6000610ffb611fca611562565b601f54611ff790611ff090600290611fea906001600160a01b0316611bee565b906124b5565b85906124b5565b9061250e565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b61203133612481565b612070576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6024805460ff191692151592909217909155602555565b601b546001600160a01b031681565b6001600160a01b03166000908152600c602052604090205460ff161590565b6120be336116c4565b6120f8576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601755565b612106336116c4565b612140576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160205260409020805460ff19169055565b61216a336116c4565b6121a4576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff1916909217909155825191825291517f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163929181900390910190a150565b61221b336116c4565b612255576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b61138881600554028161226457fe5b0460065550565b61227433612481565b6122b3576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03821630148015906122da5750601f546001600160a01b03838116911614155b6122e357600080fd5b6001600160a01b0382166000908152600f60205260409020805460ff191682158015919091179091556123805760205460408051630a5b654b60e11b81526001600160a01b03858116600483015260006024830181905292519316926314b6ca969260448084019391929182900301818387803b15801561236357600080fd5b505af1158015612377573d6000803e3d6000fd5b505050506123e0565b602080546001600160a01b03848116600081815260089094526040808520548151630a5b654b60e11b8152600481019390935260248301525191909216926314b6ca96926044808201939182900301818387803b15801561164757600080fd5b5050565b6123ed33612481565b61242c576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b601e546001600160a01b031681565b60145481565b600b6020526000908152604090205460ff1681565b6001600160a01b031660009081526001602052604090205460ff1690565b60175481565b601f54600160a01b900460ff1681565b6000826124c457506000610ffb565b828202828482816124d157fe5b041461155b5760405162461bcd60e51b81526004018080602001828103825260218152602001806135046021913960400191505060405180910390fd5b600061155b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612df2565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526008909152918220546125a191849061261f565b6001600160a01b0380861660009081526008602052604080822093909355908516815220546125d09083612d98565b6001600160a01b03808516600081815260086020908152604091829020949094558051868152905191939288169260008051602061356383398151915292918290030190a35060019392505050565b600081848411156126ae5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561267357818101518382015260200161265b565b50505050905090810190601f1680156126a05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60265460009060ff16156126d6576126cf848484612550565b905061155b565b6001600160a01b03841660009081526001602052604090205460ff1615801561271857506001600160a01b03831660009081526001602052604090205460ff16155b1561277257601f54600160a01b900460ff16612772576040805162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015290519081900360640190fd5b600a5460ff16156127fe576001600160a01b0384166000908152600b602052604090205460ff161580156127bf57506001600160a01b0383166000908152600b602052604090205460ff16155b6127fe576040805162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b604482015290519081900360640190fd5b6001600160a01b03841660009081526001602052604090205460ff1615801561283057506001600160a01b0383163014155b801561284a57506003546001600160a01b03848116911614155b80156128645750601f546001600160a01b03848116911614155b801561287e57506019546001600160a01b03848116911614155b80156128985750601a546001600160a01b03848116911614155b80156128b257506018546001600160a01b03848116911614155b80156128cc5750601b546001600160a01b03848116911614155b156129235760006128dc84611bee565b905060075483820111156129215760405162461bcd60e51b815260040180806020018281038252603e815260200180613525603e913960400191505060405180910390fd5b505b601f546001600160a01b038581169116148015612942575060225460ff165b801561296757506001600160a01b0383166000908152600e602052604090205460ff16155b156129eb576001600160a01b03831660009081526023602052604090205442116129c25760405162461bcd60e51b81526004018080602001828103825260258152602001806134df6025913960400191505060405180910390fd5b6022546001600160a01b038416600090815260236020526040902061010090910460ff16420190555b6129f58483612e57565b6129fd612ec5565b15612a0a57612a0a612f14565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260089091529190912054612a5c91849061261f565b6001600160a01b03808616600081815260086020526040812093909355601f54909116148015612aa557506001600160a01b0385166000908152600c602052604090205460ff16155b8015612aca57506001600160a01b0384166000908152600c602052604090205460ff16155b15612ae257612adb8584600061336d565b9050612b51565b601f546001600160a01b038581169116148015612b1857506001600160a01b0385166000908152600c602052604090205460ff16155b8015612b3d57506001600160a01b0384166000908152600c602052604090205460ff16155b15612b4e57612adb8584600161336d565b50815b6001600160a01b038416600090815260086020526040902054612b749082612d98565b6001600160a01b038086166000908152600860209081526040808320949094559188168152600f909152205460ff16612c1a57602080546001600160a01b03878116600081815260089094526040808520548151630a5b654b60e11b8152600481019390935260248301525191909216926314b6ca96926044808201939182900301818387803b158015612c0757600080fd5b505af1925050508015612c18575060015b505b6001600160a01b0384166000908152600f602052604090205460ff16612cad57602080546001600160a01b03868116600081815260089094526040808520548151630a5b654b60e11b8152600481019390935260248301525191909216926314b6ca96926044808201939182900301818387803b158015612c9a57600080fd5b505af1925050508015612cab575060015b505b602054602154604080516001624d3b8760e01b031981526004810192909252516001600160a01b039092169163ffb2c4799160248082019260009290919082900301818387803b158015612d0057600080fd5b505af1925050508015612d11575060015b50836001600160a01b0316856001600160a01b0316600080516020613563833981519152836040518082815260200191505060405180910390a3506001949350505050565b600061155b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061261f565b60008282018381101561155b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008183612e415760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561267357818101518382015260200161265b565b506000838581612e4d57fe5b0495945050505050565b60065481111580612e8057506001600160a01b0382166000908152600d602052604090205460ff165b6123e0576040805162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015290519081900360640190fd5b601f546000906001600160a01b03163314801590612ee6575060265460ff16155b8015612ef4575060245460ff165b80156115a657505060255430600090815260086020526040902054101590565b6026805460ff19166001179055601c54601d54600091612f3391611062565b612f3f57601054612f42565b60005b90506000612f666002611ff7601554611ff7866025546124b590919063ffffffff16565b90506000612f7f82602554612d5690919063ffffffff16565b6040805160028082526060808301845293945090916020830190803683370190505090503081600081518110612fb157fe5b6001600160a01b039283166020918202929092010152600254825191169082906001908110612fdc57fe5b6001600160a01b03928316602091820292909201810191909152601e5460405163791ac94760e01b8152600481018681526000602483018190523060648401819052426084850181905260a060448601908152895160a487015289514799979097169763791ac947978c9795968c9690939260c49091019187820191028083838b5b8381101561307657818101518382015260200161305e565b505050509050019650505050505050600060405180830381600087803b15801561309f57600080fd5b505af11580156130b3573d6000803e3d6000fd5b5050505060006130cc8247612d5690919063ffffffff16565b905060006130e76130de88600261250e565b60155490612d56565b905060006130fc6002611ff78481878d6124b5565b9050600061311983611ff7601154876124b590919063ffffffff16565b9050600061313684611ff7601254886124b590919063ffffffff16565b9050600061315385611ff7601354896124b590919063ffffffff16565b9050602060009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b1580156131a557600080fd5b505af1935050505080156131b7575060015b506019546040516000916001600160a01b03169061753090859084818181858888f193505050503d806000811461320a576040519150601f19603f3d011682016040523d82523d6000602084013e61320f565b606091505b5050601a546040519192506001600160a01b0316906175309084906000818181858888f193505050503d8060008114613264576040519150601f19603f3d011682016040523d82523d6000602084013e613269565b606091505b5060009250508b15905061335557601e546018546040805163f305d71960e01b8152306004820152602481018f905260006044820181905260648201526001600160a01b0392831660848201524260a48201529051919092169163f305d71991889160c48082019260609290919082900301818588803b1580156132ec57600080fd5b505af1158015613300573d6000803e3d6000fd5b50505050506040513d606081101561331757600080fd5b505060408051868152602081018d905281517f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506929181900390910190a15b50506026805460ff1916905550505050505050505050565b6000808261337c576064613380565b6017545b905060006133a6601654606402611ff784611fea6015548a6124b590919063ffffffff16565b905060006133c5601554611ff7601454856124b590919063ffffffff16565b905060006133d38383612d56565b306000908152600860205260409020549091506133f09082612d98565b3060009081526008602052604080822092909255601b546001600160a01b03168152205461341e9083612d98565b601b546001600160a01b0390811660009081526008602090815260409182902093909355805184815290513093928c1692600080516020613563833981519152928290030190a381156134a057601b546040805184815290516001600160a01b03928316928b1691600080516020613563833981519152919081900360200190a35b6134aa8784612d56565b9897505050505050505056fe4d69736d61746368206265747765656e204164647265737320616e6420746f6b656e20636f756e74506c65617365207761697420666f7220316d696e206265747765656e2074776f2062757973536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f74616c20486f6c64696e672069732063757272656e746c79206c696d697465642c20796f752063616e206e6f74206275792074686174206d7563682eddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef474153204572726f723a206d61782061697264726f70206c696d69742069732035303020616464726573736573474153204572726f723a206d61782061697264726f70206c696d69742069732038303020616464726573736573a26469706673582212209e075ee62957287ce34e78070c2434f30970a2c72bd0862af970a8732cf4d69464736f6c634300070400336080604052600180546001600160a01b031990811673dac17f958d2ee523a2206206994597c13d831ec7179091556002805490911673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790556ec097ce7bc90715b34b9f1000000000600c55610a8c600d55670de0b6b3a7640000600e5534801561007d57600080fd5b50604051610ec0380380610ec0833981810160405260208110156100a057600080fd5b50516001600160a01b0381166100ca57737a250d5630b4cf539739df2c5dacb4c659f2488d6100cc565b805b600380546001600160a01b03929092166001600160a01b0319928316179055600080549091163317905550610dba806101066000396000f3fe6080604052600436106100dd5760003560e01c8063ce7c2ac21161007f578063efca2eed11610059578063efca2eed14610254578063f0fc6bca14610269578063ffb2c4791461027e578063ffd49c84146102a8576100dd565b8063ce7c2ac2146101e6578063d0e30db014610237578063e2d2e2191461023f576100dd565b80632d48e896116100bb5780632d48e896146101775780633a98ef39146101a75780634fab0ae8146101bc578063997664d7146101d1576100dd565b806311ce023d146100e257806314b6ca961461010957806328fd319814610144575b600080fd5b3480156100ee57600080fd5b506100f76102bd565b60408051918252519081900360200190f35b34801561011557600080fd5b506101426004803603604081101561012c57600080fd5b506001600160a01b0381351690602001356102c3565b005b34801561015057600080fd5b506100f76004803603602081101561016757600080fd5b50356001600160a01b03166103e8565b34801561018357600080fd5b506101426004803603604081101561019a57600080fd5b5080359060200135610474565b3480156101b357600080fd5b506100f7610496565b3480156101c857600080fd5b506100f761049c565b3480156101dd57600080fd5b506100f76104a2565b3480156101f257600080fd5b506102196004803603602081101561020957600080fd5b50356001600160a01b03166104a8565b60408051938452602084019290925282820152519081900360600190f35b6101426104c9565b34801561024b57600080fd5b506100f7610759565b34801561026057600080fd5b506100f761075f565b34801561027557600080fd5b50610142610765565b34801561028a57600080fd5b50610142600480360360208110156102a157600080fd5b5035610770565b3480156102b457600080fd5b506100f7610852565b600c5481565b6000546001600160a01b031633146102da57600080fd5b6001600160a01b038216600090815260076020526040902054156103015761030182610858565b60008111801561032757506001600160a01b038216600090815260076020526040902054155b1561033a5761033582610980565b61036d565b8015801561035f57506001600160a01b03821660009081526007602052604090205415155b1561036d5761036d826109e1565b6001600160a01b03821660009081526007602052604090205460085461039e91839161039891610ace565b90610b19565b6008556001600160a01b03821660009081526007602052604090208190556103c581610b73565b6001600160a01b0390921660009081526007602052604090206001019190915550565b6001600160a01b03811660009081526007602052604081205461040d5750600061046f565b6001600160a01b03821660009081526007602052604081205461042f90610b73565b6001600160a01b0384166000908152600760205260409020600101549091508082116104605760009250505061046f565b61046a8282610ace565b925050505b919050565b6000546001600160a01b0316331461048b57600080fd5b600d91909155600e55565b60085481565b600e5481565b60095481565b60076020526000908152604090208054600182015460029092015490919083565b6000546001600160a01b031633146104e057600080fd5b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561052b57600080fd5b505afa15801561053f573d6000803e3d6000fd5b505050506040513d602081101561055557600080fd5b5051604080516002808252606080830184529394509091602083019080368337505060025482519293506001600160a01b03169183915060009061059557fe5b6001600160a01b03928316602091820292909201015260018054835192169183919081106105bf57fe5b6001600160a01b0392831660209182029290920181019190915260035460405163b6f9de9560e01b815260006004820181815230604484018190524260648501819052608060248601908152895160848701528951969098169763b6f9de9597349795968b969495939460a49091019187810191028083838b5b83811015610651578181015183820152602001610639565b50505050905001955050505050506000604051808303818588803b15801561067857600080fd5b505af115801561068c573d6000803e3d6000fd5b5050600154604080516370a0823160e01b815230600482015290516000955061071794508793506001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156106e557600080fd5b505afa1580156106f9573d6000803e3d6000fd5b505050506040513d602081101561070f57600080fd5b505190610ace565b6009549091506107279082610b19565b600955600854600c5461075191610748916107429085610b90565b90610be9565b600b5490610b19565b600b55505050565b600b5481565b600a5481565b61076e33610858565b565b6000546001600160a01b0316331461078757600080fd5b60045480610795575061084f565b6000805a905060005b84831080156107ac57508381105b1561084a5783600f54106107c0576000600f555b6107ec6004600f54815481106107d257fe5b6000918252602090912001546001600160a01b0316610c2b565b1561081d5761081d6004600f548154811061080357fe5b6000918252602090912001546001600160a01b0316610858565b61083261082b5a8490610ace565b8490610b19565b92505a600f805460019081019091559092500161079e565b505050505b50565b600d5481565b6001600160a01b03811660009081526007602052604090205461087a5761084f565b6000610885826103e8565b9050801561097c57600a5461089a9082610b19565b600a556001546040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b1580156108f357600080fd5b505af1158015610907573d6000803e3d6000fd5b505050506040513d602081101561091d57600080fd5b50506001600160a01b038216600090815260066020908152604080832042905560079091529020600201546109529082610b19565b6001600160a01b03831660009081526007602052604090206002810191909155546103c590610b73565b5050565b600480546001600160a01b039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90910180546001600160a01b0319169091179055565b6004805460001981019081106109f357fe5b60009182526020808320909101546001600160a01b0384811684526005909252604090922054600480549290931692918110610a2b57fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600591829052604081205460048054919392916000198101908110610a7957fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610aa957fe5b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610b1083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610c67565b90505b92915050565b600082820183811015610b10576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000610b13600c54610742600b5485610b9090919063ffffffff16565b600082610b9f57506000610b13565b82820282848281610bac57fe5b0414610b105760405162461bcd60e51b8152600401808060200182810382526021815260200180610d646021913960400191505060405180910390fd5b6000610b1083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610cfe565b600d546001600160a01b0382166000908152600660205260408120549091429101108015610b135750600e54610c60836103e8565b1192915050565b60008184841115610cf65760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610cbb578181015183820152602001610ca3565b50505050905090810190601f168015610ce85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183610d4d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610cbb578181015183820152602001610ca3565b506000838581610d5957fe5b049594505050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212202a596dbfdc6c2bd6368e4b68e182b973db735ac6b979f8c8117a5c37cfb3d87364736f6c63430007040033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77

Deployed Bytecode

0x6080604052600436106103bc5760003560e01c806383ad7994116101f2578063dd62ed3e1161010d578063f708a64f116100a0578063fe575a871161006f578063fe575a8714610ee1578063fe9fbb8014610f14578063fed0d2a114610f47578063ffb54a9914610f5c576103c3565b8063f708a64f14610e41578063f84ba65d14610e7c578063f887ea4014610eb7578063fce589d814610ecc576103c3565b8063ec72d65f116100dc578063ec72d65f14610d87578063f0b37c0414610db1578063f2fde38b14610de4578063f346bce114610e17576103c3565b8063dd62ed3e14610cd2578063df20fd4914610d0d578063e3763ded14610d3f578063e7c44c6914610d54576103c3565b8063a8aa1b3111610185578063bfe1092811610154578063bfe1092814610c2e578063c6b98c1b14610c43578063d16baeb914610c6d578063d51ed1c814610ca8576103c3565b8063a8aa1b3114610b98578063a9059cbb14610bad578063b6a5d7de14610be6578063bcc1f3e814610c19576103c3565b80638e2eee84116101c15780638e2eee8414610ac757806395d89b4114610b4457806398118cb414610b595780639d1944f514610b6e576103c3565b806383ad799414610a2457806386f6c3c114610a39578063893d20e814610a81578063896648c114610ab2576103c3565b8063313ce567116102e2578063617fe0ed1161027557806370a082311161024457806370a08231146109b2578063722b62ad146109e557806378109e54146109fa5780637d1db4a514610a0f576103c3565b8063617fe0ed14610938578063658d4b7f1461094d5780636b67c4df146109885780636ddd17131461099d576103c3565b806350db71fb116102b157806350db71fb14610874578063571ac8b0146108af5780635c85974f146108e25780635e562f3b1461090c576103c3565b8063313ce56714610773578063335f6a431461079e5780633c8e556d1461082957806344a33fd214610629576103c3565b80631ca0a28d1161035a5780632b112e49116103295780632b112e49146106c65780632d48e896146106db5780632d5945671461070b5780632f54bf6e14610740576103c3565b80631ca0a28d1461054e5780631da1db5e14610629578063201e79911461065357806323b872dd14610683576103c3565b80630d295980116103965780630d295980146104c65780631161ae39146104f4578063180b0d7e1461052457806318160ddd14610539576103c3565b80630445b667146103c857806306fdde03146103ef578063095ea7b314610479576103c3565b366103c357005b600080fd5b3480156103d457600080fd5b506103dd610f71565b60408051918252519081900360200190f35b3480156103fb57600080fd5b50610404610f77565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561043e578181015183820152602001610426565b50505050905090810190601f16801561046b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561048557600080fd5b506104b26004803603604081101561049c57600080fd5b506001600160a01b038135169060200135610f9a565b604080519115158252519081900360200190f35b3480156104d257600080fd5b506104f2600480360360208110156104e957600080fd5b50351515611001565b005b34801561050057600080fd5b506104b26004803603604081101561051757600080fd5b5080359060200135611062565b34801561053057600080fd5b506103dd611076565b34801561054557600080fd5b506103dd61107c565b34801561055a57600080fd5b506104f26004803603606081101561057157600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561059b57600080fd5b8201836020820111156105ad57600080fd5b803590602001918460208302840111600160201b831117156105ce57600080fd5b919390929091602081019035600160201b8111156105eb57600080fd5b8201836020820111156105fd57600080fd5b803590602001918460208302840111600160201b8311171561061e57600080fd5b509092509050611082565b34801561063557600080fd5b506104f26004803603602081101561064c57600080fd5b50356113cd565b34801561065f57600080fd5b506104f26004803603604081101561067657600080fd5b508035906020013561144d565b34801561068f57600080fd5b506104b2600480360360608110156106a657600080fd5b506001600160a01b038135811691602081013590911690604001356114a0565b3480156106d257600080fd5b506103dd611562565b3480156106e757600080fd5b506104f2600480360360408110156106fe57600080fd5b50803590602001356115ab565b34801561071757600080fd5b506104f26004803603604081101561072e57600080fd5b5080351515906020013560ff1661165b565b34801561074c57600080fd5b506104b26004803603602081101561076357600080fd5b50356001600160a01b03166116c4565b34801561077f57600080fd5b506107886116d8565b6040805160ff9092168252519081900360200190f35b3480156107aa57600080fd5b506104f2600480360360608110156107c157600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156107eb57600080fd5b8201836020820111156107fd57600080fd5b803590602001918460208302840111600160201b8311171561081e57600080fd5b9193509150356116dd565b34801561083557600080fd5b506104f26004803603608081101561084c57600080fd5b506001600160a01b0381358116916020810135821691604082013581169160600135166119a7565b34801561088057600080fd5b506104f26004803603604081101561089757600080fd5b506001600160a01b0381351690602001351515611a3f565b3480156108bb57600080fd5b506104b2600480360360208110156108d257600080fd5b50356001600160a01b0316611ab2565b3480156108ee57600080fd5b506104f26004803603602081101561090557600080fd5b5035611ac0565b34801561091857600080fd5b506104f26004803603602081101561092f57600080fd5b50351515611b0d565b34801561094457600080fd5b506104b2611b63565b34801561095957600080fd5b506104f26004803603604081101561097057600080fd5b506001600160a01b0381351690602001351515611b6c565b34801561099457600080fd5b506103dd611bdf565b3480156109a957600080fd5b506104b2611be5565b3480156109be57600080fd5b506103dd600480360360208110156109d557600080fd5b50356001600160a01b0316611bee565b3480156109f157600080fd5b50610788611c09565b348015610a0657600080fd5b506103dd611c17565b348015610a1b57600080fd5b506103dd611c1d565b348015610a3057600080fd5b506103dd611c23565b348015610a4557600080fd5b506104f2600480360360c0811015610a5c57600080fd5b5080359060208101359060408101359060608101359060808101359060a00135611c29565b348015610a8d57600080fd5b50610a96611d03565b604080516001600160a01b039092168252519081900360200190f35b348015610abe57600080fd5b506104b2611d12565b348015610ad357600080fd5b506104f260048036036040811015610aea57600080fd5b810190602081018135600160201b811115610b0457600080fd5b820183602082011115610b1657600080fd5b803590602001918460208302840111600160201b83111715610b3757600080fd5b9193509150351515611d1b565b348015610b5057600080fd5b50610404611db9565b348015610b6557600080fd5b506103dd611dd7565b348015610b7a57600080fd5b506104f260048036036020811015610b9157600080fd5b5035611ddd565b348015610ba457600080fd5b50610a96611e39565b348015610bb957600080fd5b506104b260048036036040811015610bd057600080fd5b506001600160a01b038135169060200135611e48565b348015610bf257600080fd5b506104f260048036036020811015610c0957600080fd5b50356001600160a01b0316611e55565b348015610c2557600080fd5b506103dd611ebf565b348015610c3a57600080fd5b50610a96611ec5565b348015610c4f57600080fd5b506104f260048036036020811015610c6657600080fd5b5035611ed4565b348015610c7957600080fd5b506104f260048036036040811015610c9057600080fd5b506001600160a01b0381351690602001351515611f2d565b348015610cb457600080fd5b506103dd60048036036020811015610ccb57600080fd5b5035611fbd565b348015610cde57600080fd5b506103dd60048036036040811015610cf557600080fd5b506001600160a01b0381358116916020013516611ffd565b348015610d1957600080fd5b506104f260048036036040811015610d3057600080fd5b50803515159060200135612028565b348015610d4b57600080fd5b50610a96612087565b348015610d6057600080fd5b506104b260048036036020811015610d7757600080fd5b50356001600160a01b0316612096565b348015610d9357600080fd5b506104f260048036036020811015610daa57600080fd5b50356120b5565b348015610dbd57600080fd5b506104f260048036036020811015610dd457600080fd5b50356001600160a01b03166120fd565b348015610df057600080fd5b506104f260048036036020811015610e0757600080fd5b50356001600160a01b0316612161565b348015610e2357600080fd5b506104f260048036036020811015610e3a57600080fd5b5035612212565b348015610e4d57600080fd5b506104f260048036036040811015610e6457600080fd5b506001600160a01b038135169060200135151561226b565b348015610e8857600080fd5b506104f260048036036040811015610e9f57600080fd5b506001600160a01b03813516906020013515156123e4565b348015610ec357600080fd5b50610a96612457565b348015610ed857600080fd5b506103dd612466565b348015610eed57600080fd5b506104b260048036036020811015610f0457600080fd5b50356001600160a01b031661246c565b348015610f2057600080fd5b506104b260048036036020811015610f3757600080fd5b50356001600160a01b0316612481565b348015610f5357600080fd5b506103dd61249f565b348015610f6857600080fd5b506104b26124a5565b60255481565b60408051808201909152600981526805a454c444120322e360bc1b602082015290565b3360008181526009602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b61100a336116c4565b611044576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601f8054911515600160a01b0260ff60a01b19909216919091179055565b60008261106e83611fbd565b119392505050565b60165481565b60055490565b61108b336116c4565b6110c5576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03851633146110da57600080fd5b6101f5831061111a5760405162461bcd60e51b815260040180806020018281038252602d815260200180613583602d913960400191505060405180910390fd5b8281146111585760405162461bcd60e51b81526004018080602001828103825260288152602001806134b76028913960400191505060405180910390fd5b6000805b848110156111865783838281811061117057fe5b602002919091013592909201915060010161115c565b508061119187611bee565b10156111e4576040805162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000604482015290519081900360640190fd5b60005b8481101561133157611227878787848181106111ff57fe5b905060200201356001600160a01b031686868581811061121b57fe5b90506020020135612550565b50600f600087878481811061123857fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16611329576020546001600160a01b03166314b6ca9687878481811061127f57fe5b905060200201356001600160a01b0316600860008a8a8781811061129f57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020546040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561131657600080fd5b505af1925050508015611327575060015b505b6001016111e7565b506001600160a01b0386166000908152600f602052604090205460ff166113c557602080546001600160a01b03888116600081815260089094526040808520548151630a5b654b60e11b8152600481019390935260248301525191909216926314b6ca96926044808201939182900301818387803b1580156113b257600080fd5b505af19250505080156113c3575060015b505b505050505050565b6113d633612481565b611415576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6040514790339060648484020480156108fc02916000818181858888f19350505050158015611448573d6000803e3d6000fd5b505050565b61145633612481565b611495576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601c91909155601d55565b6001600160a01b03831660009081526009602090815260408083203384529091528120546000191461154d576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b038716600090815260098252838120338252909152919091205461152891849061261f565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b6115588484846126b6565b90505b9392505050565b6004546000906115a69061157e906001600160a01b0316611bee565b6003546115a090611597906001600160a01b0316611bee565b60055490612d56565b90612d56565b905090565b6115b433612481565b6115f3576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b602054604080516316a4744b60e11b8152600481018590526024810184905290516001600160a01b0390921691632d48e8969160448082019260009290919082900301818387803b15801561164757600080fd5b505af11580156113c5573d6000803e3d6000fd5b611664336116c4565b61169e576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6022805460ff19169215159290921761ff00191661010060ff9290921691909102179055565b6000546001600160a01b0390811691161490565b600690565b6116e6336116c4565b611720576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b038416331461173557600080fd5b61032182106117755760405162461bcd60e51b815260040180806020018281038252602d8152602001806135b0602d913960400191505060405180910390fd5b8082028061178286611bee565b10156117d5576040805162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000604482015290519081900360640190fd5b60005b8381101561191057611806868686848181106117f057fe5b905060200201356001600160a01b031685612550565b50600f600086868481811061181757fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16611908576020546001600160a01b03166314b6ca9686868481811061185e57fe5b905060200201356001600160a01b03166008600089898781811061187e57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020546040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156118f557600080fd5b505af1925050508015611906575060015b505b6001016117d8565b506001600160a01b0385166000908152600f602052604090205460ff166119a057602080546001600160a01b03878116600081815260089094526040808520548151630a5b654b60e11b8152600481019390935260248301525191909216926314b6ca96926044808201939182900301818387803b15801561199157600080fd5b505af19250505080156113c557505b5050505050565b6119b033612481565b6119ef576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601880546001600160a01b039586166001600160a01b0319918216179091556019805494861694821694909417909355601a805492851692841692909217909155601b8054919093169116179055565b611a4833612481565b611a87576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6000610ffb82600019610f9a565b611ac933612481565b611b08576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b600655565b611b16336116c4565b611b50576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600a805460ff1916911515919091179055565b60225460ff1681565b611b7533612481565b611bb4576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b60125481565b60245460ff1681565b6001600160a01b031660009081526008602052604090205490565b602254610100900460ff1681565b60075481565b60065481565b60115481565b611c3233612481565b611c71576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b60108690556011859055601284905560138390556014829055611ca282611c9c858188818c8c612d98565b90612d98565b601555601681905560048104601554106113c5576040805162461bcd60e51b815260206004820152601c60248201527f466565732063616e6e6f74206265206d6f7265207468616e2032352500000000604482015290519081900360640190fd5b6000546001600160a01b031690565b600a5460ff1681565b611d24336116c4565b611d5e576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b60005b82811015611db35781600b6000868685818110611d7a57fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff1916911515919091179055600101611d61565b50505050565b6040805180820190915260048152635a4c444160e01b602082015290565b60105481565b611de633612481565b611e25576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b620b71b08110611e3457600080fd5b602155565b601f546001600160a01b031681565b600061155b3384846126b6565b611e5e336116c4565b611e98576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b60135481565b6020546001600160a01b031681565b611edd336116c4565b611f17576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b611388816005540281611f2657fe5b0460075550565b611f36336116c4565b611f70576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b039091166000908152600c60209081526040808320805494151560ff199586168117909155600d83528184208054861682179055600e9092529091208054909216179055565b6000610ffb611fca611562565b601f54611ff790611ff090600290611fea906001600160a01b0316611bee565b906124b5565b85906124b5565b9061250e565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b61203133612481565b612070576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6024805460ff191692151592909217909155602555565b601b546001600160a01b031681565b6001600160a01b03166000908152600c602052604090205460ff161590565b6120be336116c4565b6120f8576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601755565b612106336116c4565b612140576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160205260409020805460ff19169055565b61216a336116c4565b6121a4576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff1916909217909155825191825291517f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163929181900390910190a150565b61221b336116c4565b612255576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b61138881600554028161226457fe5b0460065550565b61227433612481565b6122b3576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03821630148015906122da5750601f546001600160a01b03838116911614155b6122e357600080fd5b6001600160a01b0382166000908152600f60205260409020805460ff191682158015919091179091556123805760205460408051630a5b654b60e11b81526001600160a01b03858116600483015260006024830181905292519316926314b6ca969260448084019391929182900301818387803b15801561236357600080fd5b505af1158015612377573d6000803e3d6000fd5b505050506123e0565b602080546001600160a01b03848116600081815260089094526040808520548151630a5b654b60e11b8152600481019390935260248301525191909216926314b6ca96926044808201939182900301818387803b15801561164757600080fd5b5050565b6123ed33612481565b61242c576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b601e546001600160a01b031681565b60145481565b600b6020526000908152604090205460ff1681565b6001600160a01b031660009081526001602052604090205460ff1690565b60175481565b601f54600160a01b900460ff1681565b6000826124c457506000610ffb565b828202828482816124d157fe5b041461155b5760405162461bcd60e51b81526004018080602001828103825260218152602001806135046021913960400191505060405180910390fd5b600061155b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612df2565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526008909152918220546125a191849061261f565b6001600160a01b0380861660009081526008602052604080822093909355908516815220546125d09083612d98565b6001600160a01b03808516600081815260086020908152604091829020949094558051868152905191939288169260008051602061356383398151915292918290030190a35060019392505050565b600081848411156126ae5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561267357818101518382015260200161265b565b50505050905090810190601f1680156126a05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60265460009060ff16156126d6576126cf848484612550565b905061155b565b6001600160a01b03841660009081526001602052604090205460ff1615801561271857506001600160a01b03831660009081526001602052604090205460ff16155b1561277257601f54600160a01b900460ff16612772576040805162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015290519081900360640190fd5b600a5460ff16156127fe576001600160a01b0384166000908152600b602052604090205460ff161580156127bf57506001600160a01b0383166000908152600b602052604090205460ff16155b6127fe576040805162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b604482015290519081900360640190fd5b6001600160a01b03841660009081526001602052604090205460ff1615801561283057506001600160a01b0383163014155b801561284a57506003546001600160a01b03848116911614155b80156128645750601f546001600160a01b03848116911614155b801561287e57506019546001600160a01b03848116911614155b80156128985750601a546001600160a01b03848116911614155b80156128b257506018546001600160a01b03848116911614155b80156128cc5750601b546001600160a01b03848116911614155b156129235760006128dc84611bee565b905060075483820111156129215760405162461bcd60e51b815260040180806020018281038252603e815260200180613525603e913960400191505060405180910390fd5b505b601f546001600160a01b038581169116148015612942575060225460ff165b801561296757506001600160a01b0383166000908152600e602052604090205460ff16155b156129eb576001600160a01b03831660009081526023602052604090205442116129c25760405162461bcd60e51b81526004018080602001828103825260258152602001806134df6025913960400191505060405180910390fd5b6022546001600160a01b038416600090815260236020526040902061010090910460ff16420190555b6129f58483612e57565b6129fd612ec5565b15612a0a57612a0a612f14565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260089091529190912054612a5c91849061261f565b6001600160a01b03808616600081815260086020526040812093909355601f54909116148015612aa557506001600160a01b0385166000908152600c602052604090205460ff16155b8015612aca57506001600160a01b0384166000908152600c602052604090205460ff16155b15612ae257612adb8584600061336d565b9050612b51565b601f546001600160a01b038581169116148015612b1857506001600160a01b0385166000908152600c602052604090205460ff16155b8015612b3d57506001600160a01b0384166000908152600c602052604090205460ff16155b15612b4e57612adb8584600161336d565b50815b6001600160a01b038416600090815260086020526040902054612b749082612d98565b6001600160a01b038086166000908152600860209081526040808320949094559188168152600f909152205460ff16612c1a57602080546001600160a01b03878116600081815260089094526040808520548151630a5b654b60e11b8152600481019390935260248301525191909216926314b6ca96926044808201939182900301818387803b158015612c0757600080fd5b505af1925050508015612c18575060015b505b6001600160a01b0384166000908152600f602052604090205460ff16612cad57602080546001600160a01b03868116600081815260089094526040808520548151630a5b654b60e11b8152600481019390935260248301525191909216926314b6ca96926044808201939182900301818387803b158015612c9a57600080fd5b505af1925050508015612cab575060015b505b602054602154604080516001624d3b8760e01b031981526004810192909252516001600160a01b039092169163ffb2c4799160248082019260009290919082900301818387803b158015612d0057600080fd5b505af1925050508015612d11575060015b50836001600160a01b0316856001600160a01b0316600080516020613563833981519152836040518082815260200191505060405180910390a3506001949350505050565b600061155b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061261f565b60008282018381101561155b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008183612e415760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561267357818101518382015260200161265b565b506000838581612e4d57fe5b0495945050505050565b60065481111580612e8057506001600160a01b0382166000908152600d602052604090205460ff165b6123e0576040805162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015290519081900360640190fd5b601f546000906001600160a01b03163314801590612ee6575060265460ff16155b8015612ef4575060245460ff165b80156115a657505060255430600090815260086020526040902054101590565b6026805460ff19166001179055601c54601d54600091612f3391611062565b612f3f57601054612f42565b60005b90506000612f666002611ff7601554611ff7866025546124b590919063ffffffff16565b90506000612f7f82602554612d5690919063ffffffff16565b6040805160028082526060808301845293945090916020830190803683370190505090503081600081518110612fb157fe5b6001600160a01b039283166020918202929092010152600254825191169082906001908110612fdc57fe5b6001600160a01b03928316602091820292909201810191909152601e5460405163791ac94760e01b8152600481018681526000602483018190523060648401819052426084850181905260a060448601908152895160a487015289514799979097169763791ac947978c9795968c9690939260c49091019187820191028083838b5b8381101561307657818101518382015260200161305e565b505050509050019650505050505050600060405180830381600087803b15801561309f57600080fd5b505af11580156130b3573d6000803e3d6000fd5b5050505060006130cc8247612d5690919063ffffffff16565b905060006130e76130de88600261250e565b60155490612d56565b905060006130fc6002611ff78481878d6124b5565b9050600061311983611ff7601154876124b590919063ffffffff16565b9050600061313684611ff7601254886124b590919063ffffffff16565b9050600061315385611ff7601354896124b590919063ffffffff16565b9050602060009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b1580156131a557600080fd5b505af1935050505080156131b7575060015b506019546040516000916001600160a01b03169061753090859084818181858888f193505050503d806000811461320a576040519150601f19603f3d011682016040523d82523d6000602084013e61320f565b606091505b5050601a546040519192506001600160a01b0316906175309084906000818181858888f193505050503d8060008114613264576040519150601f19603f3d011682016040523d82523d6000602084013e613269565b606091505b5060009250508b15905061335557601e546018546040805163f305d71960e01b8152306004820152602481018f905260006044820181905260648201526001600160a01b0392831660848201524260a48201529051919092169163f305d71991889160c48082019260609290919082900301818588803b1580156132ec57600080fd5b505af1158015613300573d6000803e3d6000fd5b50505050506040513d606081101561331757600080fd5b505060408051868152602081018d905281517f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506929181900390910190a15b50506026805460ff1916905550505050505050505050565b6000808261337c576064613380565b6017545b905060006133a6601654606402611ff784611fea6015548a6124b590919063ffffffff16565b905060006133c5601554611ff7601454856124b590919063ffffffff16565b905060006133d38383612d56565b306000908152600860205260409020549091506133f09082612d98565b3060009081526008602052604080822092909255601b546001600160a01b03168152205461341e9083612d98565b601b546001600160a01b0390811660009081526008602090815260409182902093909355805184815290513093928c1692600080516020613563833981519152928290030190a381156134a057601b546040805184815290516001600160a01b03928316928b1691600080516020613563833981519152919081900360200190a35b6134aa8784612d56565b9897505050505050505056fe4d69736d61746368206265747765656e204164647265737320616e6420746f6b656e20636f756e74506c65617365207761697420666f7220316d696e206265747765656e2074776f2062757973536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f74616c20486f6c64696e672069732063757272656e746c79206c696d697465642c20796f752063616e206e6f74206275792074686174206d7563682eddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef474153204572726f723a206d61782061697264726f70206c696d69742069732035303020616464726573736573474153204572726f723a206d61782061697264726f70206c696d69742069732038303020616464726573736573a26469706673582212209e075ee62957287ce34e78070c2434f30970a2c72bd0862af970a8732cf4d69464736f6c63430007040033

Deployed Bytecode Sourcemap

11372:17756:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13392:55;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;14891:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15314:216;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15314:216:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;21469:94;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21469:94:0;;;;:::i;:::-;;27063:150;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27063:150:0;;;;;;;:::i;12674:36::-;;;;;;;;;;;;;:::i;14621:88::-;;;;;;;;;;;;;:::i;27254:990::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27254:990:0;;;;;;;;;;;;;;;-1:-1:-1;;;27254:990:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;27254:990:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;27254:990:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;27254:990:0;;;;;;;;;;-1:-1:-1;27254:990:0;;-1:-1:-1;27254:990:0;-1:-1:-1;27254:990:0;:::i;20883:208::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20883:208:0;;:::i;26207:183::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26207:183:0;;;;;;;:::i;15829:365::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15829:365:0;;;;;;;;;;;;;;;;;:::i;26736:142::-;;;;;;;;;;;;;:::i;26399:183::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26399:183:0;;;;;;;:::i;21830:164::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21830:164:0;;;;;;;;;;;:::i;3391:103::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3391:103:0;-1:-1:-1;;;;;3391:103:0;;:::i;14715:80::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28253:807;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;28253:807:0;;;;;;;;;;;;;;;-1:-1:-1;;;28253:807:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;28253:807:0;;;;;;;;;;;;-1:-1:-1;28253:807:0;-1:-1:-1;28253:807:0;;:::i;25647:386::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;25647:386:0;;;;;;;;;;;;;;;;;;;;;;;;:::i;24902:130::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24902:130:0;;;;;;;;;;:::i;15539:116::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15539:116:0;-1:-1:-1;;;;;15539:116:0;;:::i;16567:96::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16567:96:0;;:::i;24306:99::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24306:99:0;;;;:::i;13207:38::-;;;;;;;;;;;;;:::i;24636:120::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24636:120:0;;;;;;;;;;:::i;12442:34::-;;;;;;;;;;;;;:::i;13355:30::-;;;;;;;;;;;;;:::i;15061:105::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15061:105:0;-1:-1:-1;;;;;15061:105:0;;:::i;13252:39::-;;;;;;;;;;;;;:::i;11885:61::-;;;;;;;;;;;;;:::i;11820:58::-;;;;;;;;;;;;;:::i;12401:34::-;;;;;;;;;;;;;:::i;25041:597::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25041:597:0;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14977:78::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;14977:78:0;;;;;;;;;;;;;;12072:32;;;;;;;;;;;;;:::i;24414:210::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;24414:210:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;24414:210:0;;;;;;;;;;;;-1:-1:-1;24414:210:0;-1:-1:-1;24414:210:0;;;;:::i;14801:84::-;;;;;;;;;;;;;:::i;12360:34::-;;;;;;;;;;;;;:::i;26591:136::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26591:136:0;;:::i;13052:19::-;;;;;;;;;;;;;:::i;15664:156::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15664:156:0;;;;;;;;:::i;3182:94::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3182:94:0;-1:-1:-1;;;;;3182:94:0;;:::i;12483:34::-;;;;;;;;;;;;;:::i;13122:38::-;;;;;;;;;;;;;:::i;16203:177::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16203:177:0;;:::i;21571:211::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;21571:211:0;;;;;;;;;;:::i;26887:167::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26887:167:0;;:::i;15172:133::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15172:133:0;;;;;;;;;;:::i;26042:156::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26042:156:0;;;;;;;;;:::i;12896:30::-;;;;;;;;;;;;;:::i;19775:114::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19775:114:0;-1:-1:-1;;;;;19775:114:0;;:::i;21324:113::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21324:113:0;;:::i;3285:97::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3285:97:0;-1:-1:-1;;;;;3285:97:0;;:::i;3619:173::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3619:173:0;-1:-1:-1;;;;;3619:173:0;;:::i;16386:172::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16386:172:0;;:::i;23950:347::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;23950:347:0;;;;;;;;;;:::i;24765:128::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24765:128:0;;;;;;;;;;:::i;13021:24::-;;;;;;;;;;;;;:::i;12524:34::-;;;;;;;;;;;;;:::i;12111:46::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12111:46:0;-1:-1:-1;;;;;12111:46:0;;:::i;3503:107::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3503:107:0;-1:-1:-1;;;;;3503:107:0;;:::i;12720:36::-;;;;;;;;;;;;;:::i;13081:31::-;;;;;;;;;;;;;:::i;13392:55::-;;;;:::o;14891:80::-;14963:5;;;;;;;;;;;;-1:-1:-1;;;14963:5:0;;;;14891:80;:::o;15314:216::-;15418:10;15389:4;15406:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;15406:32:0;;;;;;;;;;;:41;;;15463:37;;;;;;;15389:4;;15406:32;;15418:10;;15463:37;;;;;;;;-1:-1:-1;15518:4:0;15314:216;;;;;:::o;21469:94::-;3031:19;3039:10;3031:7;:19::i;:::-;3023:38;;;;;-1:-1:-1;;;3023:38:0;;;;;;;;;;;;-1:-1:-1;;;3023:38:0;;;;;;;;;;;;;;;21534:11:::1;:21:::0;;;::::1;;-1:-1:-1::0;;;21534:21:0::1;-1:-1:-1::0;;;;21534:21:0;;::::1;::::0;;;::::1;::::0;;21469:94::o;27063:150::-;27143:4;27199:6;27167:29;27187:8;27167:19;:29::i;:::-;:38;;27063:150;-1:-1:-1;;;27063:150:0:o;12674:36::-;;;;:::o;14621:88::-;14694:12;;14621:88;:::o;27254:990::-;3031:19;3039:10;3031:7;:19::i;:::-;3023:38;;;;;-1:-1:-1;;;3023:38:0;;;;;;;;;;;;-1:-1:-1;;;3023:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;27386:16:0;::::1;27392:10;27386:16;27378:25;;;::::0;::::1;;27441:3;27422:22:::0;::::1;27414:79;;;;-1:-1:-1::0;;;27414:79:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27512:33:::0;;::::1;27504:85;;;;-1:-1:-1::0;;;27504:85:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27603:12;27637:6:::0;27633:90:::1;27647:20:::0;;::::1;27633:90;;;27702:6;;27709:1;27702:9;;;;;;;;;::::0;;;::::1;;27695:16:::0;;;::::1;::::0;-1:-1:-1;27669:3:0::1;;27633:90;;;;27763:4;27744:15;27754:4;27744:9;:15::i;:::-;:23;;27736:63;;;::::0;;-1:-1:-1;;;27736:63:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;27817:6;27813:269;27827:20:::0;;::::1;27813:269;;;27868:43;27883:4;27888:9;;27898:1;27888:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;27888:12:0::1;27901:6;;27908:1;27901:9;;;;;;;;;;;;;27868:14;:43::i;:::-;;27930:16;:30;27947:9;;27957:1;27947:12;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;27947:12:0::1;27930:30:::0;;-1:-1:-1;27930:30:0;::::1;::::0;;;;;;-1:-1:-1;27930:30:0;;::::1;;27926:145;;27985:11;::::0;-1:-1:-1;;;;;27985:11:0::1;:20;28006:9:::0;;28016:1;28006:12;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;28006:12:0::1;28020:9;:23;28030:9;;28040:1;28030:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;28030:12:0::1;-1:-1:-1::0;;;;;28020:23:0::1;-1:-1:-1::0;;;;;28020:23:0::1;;;;;;;;;;;;;27985:59;;;;;;;;;;;;;-1:-1:-1::0;;;;;27985:59:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;27981:75:::0;::::1;27849:3;;27813:269;;;-1:-1:-1::0;;;;;;28128:22:0;::::1;;::::0;;;:16:::1;:22;::::0;;;;;::::1;;28124:113;;28171:11;::::0;;-1:-1:-1;;;;;28198:15:0;;::::1;28171:11;28198:15:::0;;;:9:::1;:15:::0;;;;;;;;28171:43;;-1:-1:-1;;;28171:43:0;;::::1;::::0;::::1;::::0;;;;;;;;;:11;;;::::1;::::0;:20:::1;::::0;:43;;;;;;;;;;;:11;;:43;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;;;;;28167:59:::0;::::1;3063:1;27254:990:::0;;;;;:::o;20883:208::-;3122:24;3135:10;3122:12;:24::i;:::-;3114:48;;;;;-1:-1:-1;;;3114:48:0;;;;;;;;;;;;-1:-1:-1;;;3114:48:0;;;;;;;;;;;;;;;21019:64:::1;::::0;20987:21:::1;::::0;21027:10:::1;::::0;21079:3:::1;21048:28:::0;;::::1;:34;21019:64:::0;::::1;;;::::0;::::1;::::0;;;21048:34;21027:10;21019:64;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;3164:1;20883:208:::0;:::o;26207:183::-;3122:24;3135:10;3122:12;:24::i;:::-;3114:48;;;;;-1:-1:-1;;;3114:48:0;;;;;;;;;;;;-1:-1:-1;;;3114:48:0;;;;;;;;;;;;;;;26305:15:::1;:25:::0;;;;26341:26:::1;:41:::0;26207:183::o;15829:365::-;-1:-1:-1;;;;;15949:19:0;;15929:4;15949:19;;;:11;:19;;;;;;;;15969:10;15949:31;;;;;;;;-1:-1:-1;;15949:46:0;15946:180;;16045:69;;;;;;;;;;;-1:-1:-1;;;16045:69:0;;;;;;;;-1:-1:-1;;;;;16045:19:0;;-1:-1:-1;16045:19:0;;;:11;:19;;;;;16065:10;16045:31;;;;;;;;;;:69;;16081:6;;16045:35;:69::i;:::-;-1:-1:-1;;;;;16011:19:0;;;;;;:11;:19;;;;;;;;16031:10;16011:31;;;;;;;:103;15946:180;16146:40;16160:6;16168:9;16179:6;16146:13;:40::i;:::-;16139:47;;15829:365;;;;;;:::o;26736:142::-;26864:4;;26789:7;;26816:54;;26854:15;;-1:-1:-1;;;;;26864:4:0;26854:9;:15::i;:::-;26843:4;;26816:33;;26833:15;;-1:-1:-1;;;;;26843:4:0;26833:9;:15::i;:::-;26816:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;26809:61;;26736:142;:::o;26399:183::-;3122:24;3135:10;3122:12;:24::i;:::-;3114:48;;;;;-1:-1:-1;;;3114:48:0;;;;;;;;;;;;-1:-1:-1;;;3114:48:0;;;;;;;;;;;;;;;26509:11:::1;::::0;:65:::1;::::0;;-1:-1:-1;;;26509:65:0;;::::1;::::0;::::1;::::0;;;;;;;;;;;-1:-1:-1;;;;;26509:11:0;;::::1;::::0;:35:::1;::::0;:65;;;;;:11:::1;::::0;:65;;;;;;;;:11;;:65;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;21830:164:::0;3031:19;3039:10;3031:7;:19::i;:::-;3023:38;;;;;-1:-1:-1;;;3023:38:0;;;;;;;;;;;;-1:-1:-1;;;3023:38:0;;;;;;;;;;;;;;;21914:18:::1;:28:::0;;-1:-1:-1;;21914:28:0::1;::::0;::::1;;::::0;;;::::1;-1:-1:-1::0;;21953:33:0::1;21914:28;;21953:33:::0;;;::::1;::::0;;;::::1;;::::0;;21830:164::o;3391:103::-;3446:4;3481:5;-1:-1:-1;;;;;3481:5:0;;;3470:16;;;;3391:103::o;14715:80::-;11749:1;14715:80;:::o;28253:807::-;3031:19;3039:10;3031:7;:19::i;:::-;3023:38;;;;;-1:-1:-1;;;3023:38:0;;;;;;;;;;;;-1:-1:-1;;;3023:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;28380:16:0;::::1;28386:10;28380:16;28372:25;;;::::0;::::1;;28435:3;28416:22:::0;::::1;28408:79;;;;-1:-1:-1::0;;;28408:79:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28516:25:::0;;::::1;::::0;28563:15:::1;28573:4:::0;28563:9:::1;:15::i;:::-;:23;;28555:63;;;::::0;;-1:-1:-1;;;28555:63:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;28636:6;28632:266;28646:20:::0;;::::1;28632:266;;;28687:40;28702:4;28707:9;;28717:1;28707:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;28707:12:0::1;28720:6;28687:14;:40::i;:::-;;28746:16;:30;28763:9;;28773:1;28763:12;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;28763:12:0::1;28746:30:::0;;-1:-1:-1;28746:30:0;::::1;::::0;;;;;;-1:-1:-1;28746:30:0;;::::1;;28742:145;;28801:11;::::0;-1:-1:-1;;;;;28801:11:0::1;:20;28822:9:::0;;28832:1;28822:12;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;28822:12:0::1;28836:9;:23;28846:9;;28856:1;28846:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;28846:12:0::1;-1:-1:-1::0;;;;;28836:23:0::1;-1:-1:-1::0;;;;;28836:23:0::1;;;;;;;;;;;;;28801:59;;;;;;;;;;;;;-1:-1:-1::0;;;;;28801:59:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;28797:75:::0;::::1;28668:3;;28632:266;;;-1:-1:-1::0;;;;;;28944:22:0;::::1;;::::0;;;:16:::1;:22;::::0;;;;;::::1;;28940:113;;28987:11;::::0;;-1:-1:-1;;;;;29014:15:0;;::::1;28987:11;29014:15:::0;;;:9:::1;:15:::0;;;;;;;;28987:43;;-1:-1:-1;;;28987:43:0;;::::1;::::0;::::1;::::0;;;;;;;;;:11;;;::::1;::::0;:20:::1;::::0;:43;;;;;;;;;;;:11;;:43;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;;;28983:59;3063:1;28253:807:::0;;;;:::o;25647:386::-;3122:24;3135:10;3122:12;:24::i;:::-;3114:48;;;;;-1:-1:-1;;;3114:48:0;;;;;;;;;;;;-1:-1:-1;;;3114:48:0;;;;;;;;;;;;;;;25824:21:::1;:46:::0;;-1:-1:-1;;;;;25824:46:0;;::::1;-1:-1:-1::0;;;;;;25824:46:0;;::::1;;::::0;;;25881:20:::1;:44:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;25936:20:::1;:44:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;25991:15:::1;:34:::0;;;;;::::1;::::0;::::1;;::::0;;25647:386::o;24902:130::-;3122:24;3135:10;3122:12;:24::i;:::-;3114:48;;;;;-1:-1:-1;;;3114:48:0;;;;;;;;;;;;-1:-1:-1;;;3114:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;24991:24:0;;;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;24991:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24902:130::o;15539:116::-;15594:4;15618:29;15626:7;-1:-1:-1;;15618:7:0;:29::i;16567:96::-;3122:24;3135:10;3122:12;:24::i;:::-;3114:48;;;;;-1:-1:-1;;;3114:48:0;;;;;;;;;;;;-1:-1:-1;;;3114:48:0;;;;;;;;;;;;;;;16634:12:::1;:21:::0;16567:96::o;24306:99::-;3031:19;3039:10;3031:7;:19::i;:::-;3023:38;;;;;-1:-1:-1;;;3023:38:0;;;;;;;;;;;;-1:-1:-1;;;3023:38:0;;;;;;;;;;;;;;;24374:13:::1;:23:::0;;-1:-1:-1;;24374:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24306:99::o;13207:38::-;;;;;;:::o;24636:120::-;3122:24;3135:10;3122:12;:24::i;:::-;3114:48;;;;;-1:-1:-1;;;3114:48:0;;;;;;;;;;;;-1:-1:-1;;;3114:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;24720:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;24720:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24636:120::o;12442:34::-;;;;:::o;13355:30::-;;;;;;:::o;15061:105::-;-1:-1:-1;;;;;15145:18:0;15127:7;15145:18;;;:9;:18;;;;;;;15061:105::o;13252:39::-;;;;;;;;;:::o;11885:61::-;;;;:::o;11820:58::-;;;;:::o;12401:34::-;;;;:::o;25041:597::-;3122:24;3135:10;3122:12;:24::i;:::-;3114:48;;;;;-1:-1:-1;;;3114:48:0;;;;;;;;;;;;-1:-1:-1;;;3114:48:0;;;;;;;;;;;;;;;25225:12:::1;:28:::0;;;25264:13:::1;:30:::0;;;25305:12:::1;:28:::0;;;25344:12:::1;:28:::0;;;25383:7:::1;:18:::0;;;25423:85:::1;25393:8:::0;25423:71:::1;25359:13:::0;25423:71;25320:13;25423:71;25240:13;25280:14;25423:17:::1;:33::i;:::-;:37:::0;::::1;:52::i;:85::-;25412:8;:96:::0;25519:14:::1;:32:::0;;;25596:1:::1;25536:15:::0;25581:16:::1;25570:8;;:27;25562:68;;;::::0;;-1:-1:-1;;;25562:68:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;14977:78:::0;15029:7;15047:5;-1:-1:-1;;;;;15047:5:0;14977:78;:::o;12072:32::-;;;;;;:::o;24414:210::-;3031:19;3039:10;3031:7;:19::i;:::-;3023:38;;;;;-1:-1:-1;;;3023:38:0;;;;;;;;;;;;-1:-1:-1;;;3023:38:0;;;;;;;;;;;;;;;24516:9:::1;24511:106;24527:20:::0;;::::1;24511:106;;;24599:6;24569:13;:27;24583:9;;24593:1;24583:12;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;24583:12:0::1;24569:27:::0;;-1:-1:-1;24569:27:0;::::1;::::0;;;;;;-1:-1:-1;24569:27:0;:36;;-1:-1:-1;;24569:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;24549:3:0::1;24511:106;;;;24414:210:::0;;;:::o;14801:84::-;14875:7;;;;;;;;;;;;-1:-1:-1;;;14875:7:0;;;;14801:84;:::o;12360:34::-;;;;:::o;26591:136::-;3122:24;3135:10;3122:12;:24::i;:::-;3114:48;;;;;-1:-1:-1;;;3114:48:0;;;;;;;;;;;;-1:-1:-1;;;3114:48:0;;;;;;;;;;;;;;;26681:6:::1;26675:3;:12;26667:21;;;::::0;::::1;;26699:14;:20:::0;26591:136::o;13052:19::-;;;-1:-1:-1;;;;;13052:19:0;;:::o;15664:156::-;15744:4;15768:44;15782:10;15794:9;15805:6;15768:13;:44::i;3182:94::-;3031:19;3039:10;3031:7;:19::i;:::-;3023:38;;;;;-1:-1:-1;;;3023:38:0;;;;;;;;;;;;-1:-1:-1;;;3023:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;3242:19:0::1;;::::0;;;3264:4:::1;3242:19;::::0;;;;;;;:26;;-1:-1:-1;;3242:26:0::1;::::0;;::::1;::::0;;3182:94::o;12483:34::-;;;;:::o;13122:38::-;;;-1:-1:-1;;;;;13122:38:0;;:::o;16203:177::-;3031:19;3039:10;3031:7;:19::i;:::-;3023:38;;;;;-1:-1:-1;;;3023:38:0;;;;;;;;;;;;-1:-1:-1;;;3023:38:0;;;;;;;;;;;;;;;16368:4:::1;16340:23;16325:12;;:38;16324:48;;;;;;16306:15;:66:::0;-1:-1:-1;16203:177:0:o;21571:211::-;3031:19;3039:10;3031:7;:19::i;:::-;3023:38;;;;;-1:-1:-1;;;3023:38:0;;;;;;;;;;;;-1:-1:-1;;;3023:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;21650:21:0;;::::1;;::::0;;;:11:::1;:21;::::0;;;;;;;:31;;;::::1;;-1:-1:-1::0;;21650:31:0;;::::1;::::0;::::1;::::0;;;21692:15:::1;:25:::0;;;;;:35;;;::::1;::::0;::::1;::::0;;21738:16:::1;:26:::0;;;;;;:36;;;;::::1;;::::0;;21571:211::o;26887:167::-;26955:7;26982:64;27023:22;:20;:22::i;:::-;27005:4;;26982:36;;26995:22;;27015:1;;26995:15;;-1:-1:-1;;;;;27005:4:0;26995:9;:15::i;:::-;:19;;:22::i;:::-;26982:8;;:12;:36::i;:::-;:40;;:64::i;15172:133::-;-1:-1:-1;;;;;15274:19:0;;;15256:7;15274:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;15172:133::o;26042:156::-;3122:24;3135:10;3122:12;:24::i;:::-;3114:48;;;;;-1:-1:-1;;;3114:48:0;;;;;;;;;;;;-1:-1:-1;;;3114:48:0;;;;;;;;;;;;;;;26134:11:::1;:22:::0;;-1:-1:-1;;26134:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;26167:13:::1;:23:::0;26042:156::o;12896:30::-;;;-1:-1:-1;;;;;12896:30:0;;:::o;19775:114::-;-1:-1:-1;;;;;19862:19:0;19837:4;19862:19;;;:11;:19;;;;;;;;19861:20;;19775:114::o;21324:113::-;3031:19;3039:10;3031:7;:19::i;:::-;3023:38;;;;;-1:-1:-1;;;3023:38:0;;;;;;;;;;;;-1:-1:-1;;;3023:38:0;;;;;;;;;;;;;;;21402:14:::1;:27:::0;21324:113::o;3285:97::-;3031:19;3039:10;3031:7;:19::i;:::-;3023:38;;;;;-1:-1:-1;;;3023:38:0;;;;;;;;;;;;-1:-1:-1;;;3023:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;3347:19:0::1;3369:5;3347:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;3347:27:0::1;::::0;;3285:97::o;3619:173::-;3031:19;3039:10;3031:7;:19::i;:::-;3023:38;;;;;-1:-1:-1;;;3023:38:0;;;;;;;;;;;;-1:-1:-1;;;3023:38:0;;;;;;;;;;;;;;;3695:5:::1;:11:::0;;-1:-1:-1;;;;;;3695:11:0::1;-1:-1:-1::0;;;;;3695:11:0;::::1;::::0;;::::1;::::0;;3717:19;;;-1:-1:-1;3717:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;3717:26:0::1;::::0;;::::1;::::0;;;3759:25;;;;;;;::::1;::::0;;;;;;;;;::::1;3619:173:::0;:::o;16386:172::-;3031:19;3039:10;3031:7;:19::i;:::-;3023:38;;;;;-1:-1:-1;;;3023:38:0;;;;;;;;;;;;-1:-1:-1;;;3023:38:0;;;;;;;;;;;;;;;16546:4:::1;16517:24;16502:12;;:39;16501:49;;;;;;16486:12;:64:::0;-1:-1:-1;16386:172:0:o;23950:347::-;3122:24;3135:10;3122:12;:24::i;:::-;3114:48;;;;;-1:-1:-1;;;3114:48:0;;;;;;;;;;;;-1:-1:-1;;;3114:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;24047:23:0;::::1;24065:4;24047:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;24084:4:0::1;::::0;-1:-1:-1;;;;;24074:14:0;;::::1;24084:4:::0;::::1;24074:14;;24047:41;24039:50;;;::::0;::::1;;-1:-1:-1::0;;;;;24100:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;24100:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;24144:146:::1;;24169:11;::::0;:31:::1;::::0;;-1:-1:-1;;;24169:31:0;;-1:-1:-1;;;;;24169:31:0;;::::1;;::::0;::::1;::::0;:11:::1;:31:::0;;;;;;;;:11;::::1;::::0;:20:::1;::::0;:31;;;;;:11;;:31;;;;;;:11;;:31;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24144:146;;;24231:11;::::0;;-1:-1:-1;;;;;24260:17:0;;::::1;24231:11;24260:17:::0;;;:9:::1;:17:::0;;;;;;;;24231:47;;-1:-1:-1;;;24231:47:0;;::::1;::::0;::::1;::::0;;;;;;;;;:11;;;::::1;::::0;:20:::1;::::0;:47;;;;;;;;;;;:11;;:47;::::1;;::::0;::::1;;;;::::0;::::1;24144:146;23950:347:::0;;:::o;24765:128::-;3122:24;3135:10;3122:12;:24::i;:::-;3114:48;;;;;-1:-1:-1;;;3114:48:0;;;;;;;;;;;;-1:-1:-1;;;3114:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;24853:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;24853:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24765:128::o;13021:24::-;;;-1:-1:-1;;;;;13021:24:0;;:::o;12524:34::-;;;;:::o;12111:46::-;;;;;;;;;;;;;;;:::o;3503:107::-;-1:-1:-1;;;;;3583:19:0;3559:4;3583:19;;;:14;:19;;;;;;;;;3503:107::o;12720:36::-;;;;:::o;13081:31::-;;;-1:-1:-1;;;13081:31:0;;;;;:::o;1255:252::-;1313:7;1337:6;1333:47;;-1:-1:-1;1367:1:0;1360:8;;1333:47;1405:5;;;1409:1;1405;:5;:1;1429:5;;;;;:10;1421:56;;;;-1:-1:-1;;;1421:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1513:132;1571:7;1598:39;1602:1;1605;1598:39;;;;;;;;;;;;;;;;;:3;:39::i;19261:330::-;19391:53;;;;;;;;;;;-1:-1:-1;;;19391:53:0;;;;;;;;-1:-1:-1;;;;;19391:17:0;;19354:4;19391:17;;;:9;:17;;;;;;;:53;;19413:6;;19391:21;:53::i;:::-;-1:-1:-1;;;;;19371:17:0;;;;;;;:9;:17;;;;;;:73;;;;19478:20;;;;;;;:32;;19503:6;19478:24;:32::i;:::-;-1:-1:-1;;;;;19455:20:0;;;;;;;:9;:20;;;;;;;;;:55;;;;19526:35;;;;;;;19455:20;;19526:35;;;;-1:-1:-1;;;;;;;;;;;19526:35:0;;;;;;;;-1:-1:-1;19579:4:0;19261:330;;;;;:::o;1056:193::-;1142:7;1178:12;1170:6;;;;1162:29;;;;-1:-1:-1;;;1162:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1214:5:0;;;1056:193::o;16675:2577::-;16787:6;;16767:4;;16787:6;;16784:63;;;16803:41;16818:6;16826:9;16837:6;16803:14;:41::i;:::-;16796:48;;;;16784:63;-1:-1:-1;;;;;16864:22:0;;;;;;:14;:22;;;;;;;;16863:23;:53;;;;-1:-1:-1;;;;;;16891:25:0;;;;;;:14;:25;;;;;;;;16890:26;16863:53;16860:127;;;16940:11;;-1:-1:-1;;;16940:11:0;;;;16932:43;;;;;-1:-1:-1;;;16932:43:0;;;;;;;;;;;;-1:-1:-1;;;16932:43:0;;;;;;;;;;;;;;;17025:13;;;;17022:118;;;-1:-1:-1;;;;;17063:21:0;;;;;;:13;:21;;;;;;;;17062:22;:51;;;;-1:-1:-1;;;;;;17089:24:0;;;;;;:13;:24;;;;;;;;17088:25;17062:51;17054:74;;;;;-1:-1:-1;;;17054:74:0;;;;;;;;;;;;-1:-1:-1;;;17054:74:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;17161:22:0;;;;;;:14;:22;;;;;;;;17160:23;:53;;;;-1:-1:-1;;;;;;17187:26:0;;17208:4;17187:26;;17160:53;:84;;;;-1:-1:-1;17239:4:0;;-1:-1:-1;;;;;17218:26:0;;;17239:4;;17218:26;;17160:84;:105;;;;-1:-1:-1;17261:4:0;;-1:-1:-1;;;;;17248:17:0;;;17261:4;;17248:17;;17160:105;:142;;;;-1:-1:-1;17282:20:0;;-1:-1:-1;;;;;17269:33:0;;;17282:20;;17269:33;;17160:142;:179;;;;-1:-1:-1;17319:20:0;;-1:-1:-1;;;;;17306:33:0;;;17319:20;;17306:33;;17160:179;:218;;;;-1:-1:-1;17357:21:0;;-1:-1:-1;;;;;17344:34:0;;;17357:21;;17344:34;;17160:218;:250;;;;-1:-1:-1;17395:15:0;;-1:-1:-1;;;;;17382:28:0;;;17395:15;;17382:28;;17160:250;17156:442;;;17426:18;17447:20;17457:9;17447;:20::i;:::-;17426:41;;17515:15;;17504:6;17491:10;:19;17490:40;;17482:114;;;;-1:-1:-1;;;17482:114:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17156:442;;17625:4;;-1:-1:-1;;;;;17615:14:0;;;17625:4;;17615:14;:45;;;;-1:-1:-1;17642:18:0;;;;17615:45;:90;;;;-1:-1:-1;;;;;;17678:27:0;;;;;;:16;:27;;;;;;;;17677:28;17615:90;17611:295;;;-1:-1:-1;;;;;17730:24:0;;;;;;:13;:24;;;;;;17757:15;-1:-1:-1;17722:91:0;;;;-1:-1:-1;;;17722:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17873:21;;-1:-1:-1;;;;;17828:24:0;;;;;;:13;:24;;;;;17873:21;;;;;;17855:15;:39;17828:66;;17611:295;17960:28;17973:6;17981;17960:12;:28::i;:::-;18005:16;:14;:16::i;:::-;18002:35;;;18024:10;:8;:10::i;:::-;18097:53;;;;;;;;;;;-1:-1:-1;;;18097:53:0;;;;;;;;-1:-1:-1;;;;;18097:17:0;;-1:-1:-1;18097:17:0;;;:9;:17;;;;;;;;:53;;18119:6;;18097:21;:53::i;:::-;-1:-1:-1;;;;;18077:17:0;;;;;;;:9;:17;;;;;:73;;;;18219:4;;;;;18209:14;:38;;;;-1:-1:-1;;;;;;18228:19:0;;;;;;:11;:19;;;;;;;;18227:20;18209:38;:65;;;;-1:-1:-1;;;;;;18252:22:0;;;;;;:11;:22;;;;;;;;18251:23;18209:65;18206:365;;;18307:32;18315:6;18323;18332:5;18307:7;:32::i;:::-;18290:49;;18206:365;;;18384:4;;-1:-1:-1;;;;;18371:17:0;;;18384:4;;18371:17;:41;;;;-1:-1:-1;;;;;;18393:19:0;;;;;;:11;:19;;;;;;;;18392:20;18371:41;:68;;;;-1:-1:-1;;;;;;18417:22:0;;;;;;:11;:22;;;;;;;;18416:23;18371:68;18368:203;;;18473:31;18481:6;18489;18498:4;18473:7;:31::i;18368:203::-;-1:-1:-1;18553:6:0;18368:203;-1:-1:-1;;;;;18754:20:0;;;;;;:9;:20;;;;;;:40;;18779:14;18754:24;:40::i;:::-;-1:-1:-1;;;;;18731:20:0;;;;;;;:9;:20;;;;;;;;:63;;;;18841:24;;;;;:16;:24;;;;;;;18837:119;;18886:11;;;-1:-1:-1;;;;;18915:17:0;;;18886:11;18915:17;;;:9;:17;;;;;;;;18886:47;;-1:-1:-1;;;18886:47:0;;;;;;;;;;;;;;:11;;;;;:20;;:47;;;;;;;;;;;:11;;:47;;;;;;;;;;;;;;;;;;;;;;;;;18882:63;;-1:-1:-1;;;;;18973:27:0;;;;;;:16;:27;;;;;;;;18969:128;;19021:11;;;-1:-1:-1;;;;;19053:20:0;;;19021:11;19053:20;;;:9;:20;;;;;;;;19021:53;;-1:-1:-1;;;19021:53:0;;;;;;;;;;;;;;:11;;;;;:20;;:53;;;;;;;;;;;:11;;:53;;;;;;;;;;;;;;;;;;;;;;;;;19017:69;;19114:11;;19134:14;;19114:35;;;-1:-1:-1;;;;;;19114:35:0;;;;;;;;;;-1:-1:-1;;;;;19114:11:0;;;;:19;;:35;;;;;:11;;:35;;;;;;;;:11;;:35;;;;;;;;;;;;;;;;;;;;;;;;;19110:51;19196:9;-1:-1:-1;;;;;19179:43:0;19188:6;-1:-1:-1;;;;;19179:43:0;-1:-1:-1;;;;;;;;;;;19207:14:0;19179:43;;;;;;;;;;;;;;;;;;-1:-1:-1;19240:4:0;;16675:2577;-1:-1:-1;;;;16675:2577:0:o;914:136::-;972:7;999:43;1003:1;1006;999:43;;;;;;;;;;;;;;;;;:3;:43::i;726:182::-;784:7;816:5;;;840:6;;;;832:46;;;;;-1:-1:-1;;;832:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;1651:189;1737:7;1772:12;1765:5;1757:28;;;;-1:-1:-1;;;1757:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1796:9;1812:1;1808;:5;;;;;;;1651:189;-1:-1:-1;;;;;1651:189:0:o;19600:166::-;19697:12;;19687:6;:22;;:49;;;-1:-1:-1;;;;;;19713:23:0;;;;;;:15;:23;;;;;;;;19687:49;19679:79;;;;;-1:-1:-1;;;19679:79:0;;;;;;;;;;;;-1:-1:-1;;;19679:79:0;;;;;;;;;;;;;;20677:197;20764:4;;20726;;-1:-1:-1;;;;;20764:4:0;20750:10;:18;;;;:38;;-1:-1:-1;20782:6:0;;;;20781:7;20750:38;:62;;;;-1:-1:-1;20801:11:0;;;;20750:62;:116;;;;-1:-1:-1;;20853:13:0;;20843:4;20825:24;;;;:9;:24;;;;;;:41;;;20677:197::o;22003:1935::-;13496:6;:13;;-1:-1:-1;;13496:13:0;13505:4;13496:13;;;22098:15:::1;::::0;22115:26:::1;::::0;13496:6;;22082:60:::1;::::0;:15:::1;:60::i;:::-;:79;;22149:12;;22082:79;;;22145:1;22082:79;22052:109;;22172:23;22198:59;22255:1;22198:52;22241:8;;22198:38;22216:19;22198:13;;:17;;:38;;;;:::i;:59::-;22172:85;;22268:20;22291:34;22309:15;22291:13;;:17;;:34;;;;:::i;:::-;22363:16;::::0;;22377:1:::1;22363:16:::0;;;22339:21:::1;22363:16:::0;;::::1;::::0;;22268:57;;-1:-1:-1;22363:16:0;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;22363:16:0::1;22339:40;;22408:4;22390;22395:1;22390:7;;;;;;;;-1:-1:-1::0;;;;;22390:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;22434:4:::1;::::0;22424:7;;22434:4;::::1;::::0;22424;;22434;;22424:7;::::1;;;;;-1:-1:-1::0;;;;;22424:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:14;;;;22511:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;22511:188:0;;::::1;::::0;::::1;::::0;;;22452:21:::1;22511:188:::0;;;;;;22653:4:::1;22511:188:::0;;;;;;22673:15:::1;22511:188:::0;;;;;;;;;;;;;;;;;;;;;22476:21:::1;::::0;22511:6;;;::::1;::::0;:57:::1;::::0;22583:12;;22452:21;;22626:4;;22511:188;;;;;;;;;;::::1;::::0;::::1;::::0;;;22452:21;22511:188:::1;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22713:17;22733:40;22759:13;22733:21;:25;;:40;;;;:::i;:::-;22713:60:::0;-1:-1:-1;22787:19:0::1;22809:40;22822:26;:19:::0;22846:1:::1;22822:23;:26::i;:::-;22809:8;::::0;;:12:::1;:40::i;:::-;22787:62:::0;-1:-1:-1;22863:26:0::1;22892:58;22948:1;22892:51;22787:62:::0;22892:51;:9;22906:19;22892:13:::1;:34::i;:58::-;22863:87;;22961:27;22991:45;23024:11;22991:28;23005:13;;22991:9;:13;;:28;;;;:::i;:45::-;22961:75;;23047:26;23076:44;23108:11;23076:27;23090:12;;23076:9;:13;;:27;;;;:::i;:44::-;23047:73;;23131:20;23154:44;23186:11;23154:27;23168:12;;23154:9;:13;;:27;;;;:::i;:44::-;23131:67;;23216:11;;;;;;;;;-1:-1:-1::0;;;;;23216:11:0::1;-1:-1:-1::0;;;;;23216:19:0::1;;23243;23216:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;23212:65:::0;23316:20:::1;::::0;23308:77:::1;::::0;23288:15:::1;::::0;-1:-1:-1;;;;;23316:20:0::1;::::0;23375:5:::1;::::0;23350:18;;23288:15;23308:77;23288:15;23308:77;23350:18;23316:20;23375:5;23308:77:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;23420:20:0::1;::::0;23412:71:::1;::::0;23287:98;;-1:-1:-1;;;;;;23420:20:0::1;::::0;23473:5:::1;::::0;23454:12;;23420:20:::1;23412:71:::0;23420:20;23412:71;23454:12;23420:20;23473:5;23412:71:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;23550:5:0::1;::::0;-1:-1:-1;;23572:19:0;;;-1:-1:-1;23569:362:0::1;;23607:6;::::0;23781:21:::1;::::0;23607:244:::1;::::0;;-1:-1:-1;;;23607:244:0;;23683:4:::1;23607:244;::::0;::::1;::::0;;;;;;;:6:::1;:244:::0;;;;;;;;;;-1:-1:-1;;;;;23781:21:0;;::::1;23607:244:::0;;;;23821:15:::1;23607:244:::0;;;;;;:6;;;::::1;::::0;:22:::1;::::0;23637:18;;23607:244;;;;;::::1;::::0;;;;;;;;;23637:18;23607:6;:244;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;23607:244:0;23871:48;;;;;23607:244:::1;23871:48:::0;::::1;::::0;;;;;::::1;::::0;;;;;;;;;::::1;23569:362;-1:-1:-1::0;;13514:6:0;:14;;-1:-1:-1;;13514:14:0;;;-1:-1:-1;;;;;;;;;;22003:1935:0:o;19898:770::-;19978:7;20001:18;20022:6;:29;;20048:3;20022:29;;;20031:14;;20022:29;20001:50;;20062:17;20082:62;20123:14;;20140:3;20123:20;20082:36;20107:10;20082:20;20093:8;;20082:6;:10;;:20;;;;:::i;:62::-;20062:82;;20162:18;20183:36;20210:8;;20183:22;20197:7;;20183:9;:13;;:22;;;;:::i;:36::-;20162:57;-1:-1:-1;20230:22:0;20255:25;:9;20162:57;20255:13;:25::i;:::-;20339:4;20321:24;;;;:9;:24;;;;;;20230:50;;-1:-1:-1;20321:44:0;;20230:50;20321:28;:44::i;:::-;20312:4;20294:24;;;;:9;:24;;;;;;:71;;;;20415:15;;-1:-1:-1;;;;;20415:15:0;20405:26;;;;:42;;20436:10;20405:30;:42::i;:::-;20386:15;;-1:-1:-1;;;;;20386:15:0;;;20376:26;;;;:9;:26;;;;;;;;;:71;;;;20463:47;;;;;;;20488:4;;20463:47;;;;-1:-1:-1;;;;;;;;;;;20463:47:0;;;;;;;20527:14;;20524:95;;20579:15;;20562:45;;;;;;;;-1:-1:-1;;;;;20579:15:0;;;;20562:45;;;-1:-1:-1;;;;;;;;;;;20562:45:0;;;;;;;;;20524:95;20639:21;:6;20650:9;20639:10;:21::i;:::-;20632:28;19898:770;-1:-1:-1;;;;;;;;19898:770:0:o

Swarm Source

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