ETH Price: $3,177.81 (+2.37%)

Token

EverMoon2.0 (EVERMOON2)
 

Overview

Max Total Supply

1,000,000 EVERMOON2

Holders

15

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
10 EVERMOON2

Value
$0.00
0x2c1e1225911b44b2845a8400d81aa5f2b1730e3a
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:
Evermoon2

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-28
*/

// SPDX-License-Identifier: MIT

/**
TG: https://t.me/Evermoon20
*/

pragma solidity ^0.8.7;

interface IERC20 {
    function totalSupply() external view returns (uint256);

    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 Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _setOwner(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

library Address{
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}


contract Evermoon2 is Context, IERC20, Ownable {
    using Address for address payable;
    
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcluded;
    mapping (address => bool) public allowedTransfer;
    mapping (address => bool) private _isBlacklisted;

    address[] private _excluded;
    address[] private _snipers;

    bool public tradingEnabled;
    bool public swapEnabled;
    bool private swapping;
    
    //Anti Dump
    mapping(address => uint256) private _lastSell;
    bool public coolDownEnabled = false;
    uint256 public coolDownTime = 60 seconds;
    
    modifier antiBot(address account){
        require(tradingEnabled || allowedTransfer[account], "Trading not enabled yet");
        _;
    }

    IRouter public router;
    address public pair;

    uint8 private constant _decimals = 9;
    uint256 private constant MAX = ~uint256(0);

    uint256 private _tTotal = 1000000 * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

    uint256 public swapTokensAtAmount = 10000 * 10**_decimals;
    uint256 public maxBuyLimit = 30000 * 10**_decimals;
    uint256 public maxSellLimit = 30000 * 10**_decimals;
    uint256 public maxWalletLimit = 30000 * 10**_decimals;
    
    uint256 private asTime;
    uint256 private tTimer;
    
    address public marketingWallet =0x07ba4539808ebe87e9c07696578BD48272Bf6CDe;
    address public devWallet = 0xfe57A4F35B974C213D961bBBa55715Aae3055d00; 
    address public operationWallet = 0xfe57A4F35B974C213D961bBBa55715Aae3055d00;
    address public charityWallet = 0xfe57A4F35B974C213D961bBBa55715Aae3055d00; 

    string private constant _name = "EverMoon2.0";
    string private constant _symbol = "EVERMOON2";


    struct Taxes {
        uint256 rfi;
        uint256 marketing;
        uint256 liquidity; 
        uint256 dev;
        uint256 operation;
        uint256 charity;
    }

    Taxes public taxes = Taxes(0, 25, 1, 0, 0, 0);
    Taxes public sellTaxes = Taxes(0, 45, 1, 0, 0, 0);

    struct TotFeesPaidStruct{
        uint256 rfi;
        uint256 marketing;
        uint256 liquidity; 
        uint256 dev;
        uint256 operation;
        uint256 charity;
    }
    
    TotFeesPaidStruct public totFeesPaid;

    struct valuesFromGetValues{
      uint256 rAmount;
      uint256 rTransferAmount;
      uint256 rRfi;
      uint256 rMarketing;
      uint256 rLiquidity;
      uint256 rDev;
      uint256 rOperation;
      uint256 rCharity;
      uint256 tTransferAmount;
      uint256 tRfi;
      uint256 tMarketing;
      uint256 tLiquidity;
      uint256 tDev;
      uint256 tOperation;
      uint256 tCharity;
    }

    event FeesChanged();
    event UpdatedRouter(address oldRouter, address newRouter);
    event ClaimedSnipedTokens();

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

    constructor (address routerAddress, uint256 antiSnipeSeconds) {
        IRouter _router = IRouter(routerAddress);
        address _pair = IFactory(_router.factory())
            .createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;

        asTime = antiSnipeSeconds;
        
        excludeFromReward(pair);

        _rOwned[owner()] = _rTotal;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[marketingWallet] = true;
        _isExcludedFromFee[devWallet] = true;
        _isExcludedFromFee[charityWallet] = true;
        _isExcludedFromFee[operationWallet] = true;
        
        allowedTransfer[address(this)] = true;
        allowedTransfer[owner()] = true;
        allowedTransfer[pair] = true;
        allowedTransfer[marketingWallet] = true;
        allowedTransfer[devWallet] = true;
        allowedTransfer[charityWallet] = true;
        allowedTransfer[operationWallet] = true;

        emit Transfer(address(0), owner(), _tTotal);
    }

    //std ERC20:
    function name() public pure returns (string memory) {
        return _name;
    }
    function symbol() public pure returns (string memory) {
        return _symbol;
    }
    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    //override ERC20:
    function totalSupply() public view override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }
    
    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public  override antiBot(msg.sender) returns(bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override antiBot(sender) returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public  antiBot(msg.sender) returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public  antiBot(msg.sender) returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

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

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferRfi) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferRfi) {
            valuesFromGetValues memory s = _getValues(tAmount, true, false);
            return s.rAmount;
        } else {
            valuesFromGetValues memory s = _getValues(tAmount, true, false);
            return s.rTransferAmount;
        }
    }


    function setTradingStatus(bool state) external onlyOwner{
        tradingEnabled = state;
        swapEnabled = state;
        tTimer = block.timestamp + asTime;
    }

    function snipersCaught() public view returns (uint){
        return _snipers.length;
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount/currentRate;
    }

    //@dev kept original RFI naming -> "reward" as in reflection
    function excludeFromReward(address account) public onlyOwner() {
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is not excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }

    function setTaxes(uint256 _rfi, uint256 _marketing, uint256 _liquidity, uint256 _dev, uint256 _operation, uint256 _charity) public onlyOwner {
        require(_rfi+_marketing+_liquidity+_dev+_operation+_charity <= 30, "Invalid Settings");
        taxes = Taxes(_rfi,_marketing,_liquidity,_dev,_operation,_charity);
        emit FeesChanged();
    }
    
    function setSellTaxes(uint256 _rfi, uint256 _marketing, uint256 _liquidity, uint256 _dev, uint256 _operation, uint256 _charity) public onlyOwner {
        require(_rfi+_marketing+_liquidity+_dev+_operation+_charity <= 65, "Invalid Settings");
        sellTaxes = Taxes(_rfi,_marketing,_liquidity,_dev,_operation,_charity);
        emit FeesChanged();
    }

    function _reflectRfi(uint256 rRfi, uint256 tRfi) private {
        _rTotal -=rRfi;
        totFeesPaid.rfi +=tRfi;
    }

    function _takeLiquidity(uint256 rLiquidity, uint256 tLiquidity) private {
        totFeesPaid.liquidity +=tLiquidity;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tLiquidity;
        }
        _rOwned[address(this)] +=rLiquidity;
    }

    function _takeMarketing(uint256 rMarketing, uint256 tMarketing) private {
        totFeesPaid.marketing +=tMarketing;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tMarketing;
        }
        _rOwned[address(this)] +=rMarketing;
    }
    
    function _takeDev(uint256 rDev, uint256 tDev) private {
        totFeesPaid.dev +=tDev;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tDev;
        }
        _rOwned[address(this)] +=rDev;
    }
    
    function _takeCharity(uint256 rCharity, uint256 tCharity) private {
        totFeesPaid.charity +=tCharity;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tCharity;
        }
        _rOwned[address(this)] +=rCharity;
    }
    
    function _takeOperation(uint256 rOperation, uint256 tOperation) private {
        totFeesPaid.operation +=tOperation;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tOperation;
        }
        _rOwned[address(this)] +=rOperation;
    }
    
    function _getValues(uint256 tAmount, bool takeFee, bool isSell) private view returns (valuesFromGetValues memory to_return) {
        to_return = _getTValues(tAmount, takeFee, isSell);
        (to_return.rAmount, to_return.rTransferAmount, to_return.rRfi, to_return.rMarketing, to_return.rLiquidity) = _getRValues1(to_return, tAmount, takeFee, _getRate());
        (to_return.rDev, to_return.rOperation, to_return.rCharity) = _getRValues2(to_return, takeFee, _getRate());
        return to_return;
    }

    function _getTValues(uint256 tAmount, bool takeFee, bool isSell) private view returns (valuesFromGetValues memory s) {

        if(!takeFee) {
          s.tTransferAmount = tAmount;
          return s;
        }
        Taxes memory temp;
        if(isSell) temp = sellTaxes;
        else temp = taxes;
        
        s.tRfi = tAmount*temp.rfi/100;
        s.tMarketing = tAmount*temp.marketing/100;
        s.tLiquidity = tAmount*temp.liquidity/100;
        s.tDev = tAmount*temp.dev/100;
        s.tOperation = tAmount*temp.operation/100;
        s.tCharity = tAmount*temp.charity/100;
        s.tTransferAmount = tAmount-s.tRfi-s.tMarketing-s.tLiquidity-s.tDev-s.tOperation-s.tCharity;
        return s;
    }

    function _getRValues1(valuesFromGetValues memory s, uint256 tAmount, bool takeFee, uint256 currentRate) private pure returns (uint256 rAmount, uint256 rTransferAmount, uint256 rRfi,uint256 rMarketing, uint256 rLiquidity){
        rAmount = tAmount*currentRate;

        if(!takeFee) {
          return(rAmount, rAmount, 0,0,0);
        }

        rRfi = s.tRfi*currentRate;
        rMarketing = s.tMarketing*currentRate;
        rLiquidity = s.tLiquidity*currentRate;
        uint256 rDev = s.tDev*currentRate;
        uint256 rOperation = s.tOperation*currentRate;
        uint256 rCharity = s.tCharity*currentRate;
        rTransferAmount =  rAmount-rRfi-rMarketing-rLiquidity-rDev-rOperation-rCharity;
        return (rAmount, rTransferAmount, rRfi,rMarketing,rLiquidity);
    }
    
    function _getRValues2(valuesFromGetValues memory s, bool takeFee, uint256 currentRate) private pure returns (uint256 rDev,uint256 rOperation,uint256 rCharity) {

        if(!takeFee) {
          return(0,0,0);
        }

        rDev = s.tDev*currentRate;
        rOperation = s.tOperation*currentRate;
        rCharity = s.tCharity*currentRate;
        return (rDev,rOperation,rCharity);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply/tSupply;
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply-_rOwned[_excluded[i]];
            tSupply = tSupply-_tOwned[_excluded[i]];
        }
        if (rSupply < _rTotal/_tTotal) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(amount <= balanceOf(from),"You are trying to transfer more than your balance");
        require(!_isBlacklisted[from] && !_isBlacklisted[to], "You are a bot, so you cant sell.");
        
        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            require(tradingEnabled, "Trading not active");
        }

        if(block.timestamp < tTimer && from == pair){
            //time to punish them X
            _snipers.push(to);
            _approve(to,address(this),MAX);
            _tokenTransfer(from, to, amount, false, false);
            _isBlacklisted[to] = true;
        }else{
            if(from == pair && !_isExcludedFromFee[to] && !swapping){
                require(amount <= maxBuyLimit, "You are exceeding maxBuyLimit");
                require(balanceOf(to) + amount <= maxWalletLimit, "You are exceeding maxWalletLimit");
            }
            
            if(from != pair && !_isExcludedFromFee[to] && !_isExcludedFromFee[from] && !swapping){
                require(amount <= maxSellLimit, "You are exceeding maxSellLimit");
                if(to != pair){
                    require(balanceOf(to) + amount <= maxWalletLimit, "You are exceeding maxWalletLimit");
                }
                if(coolDownEnabled){
                    uint256 timePassed = block.timestamp - _lastSell[from];
                    require(timePassed >= coolDownTime, "Cooldown enabled");
                    _lastSell[from] = block.timestamp;
                }
            }
            
            if(balanceOf(from) - amount <= 10 *  10**decimals() && from != owner()) amount -= (10 * 10**decimals() + amount - balanceOf(from));
            
            bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount;
            if(!swapping && swapEnabled && canSwap && from != pair && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
                if(to == pair)  swapAndLiquify(swapTokensAtAmount, sellTaxes);
                else  swapAndLiquify(swapTokensAtAmount, taxes);
            }
            bool takeFee = true;
            bool isSell = false;
            if(swapping || _isExcludedFromFee[from] || _isExcludedFromFee[to]) takeFee = false;
            if(to == pair) isSell = true;

            _tokenTransfer(from, to, amount, takeFee, isSell);
        }
        
    }


    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(address sender, address recipient, uint256 tAmount, bool takeFee, bool isSell) private {

        valuesFromGetValues memory s = _getValues(tAmount, takeFee, isSell);

        if (_isExcluded[sender] ) {  //from excluded
                _tOwned[sender] = _tOwned[sender]-tAmount;
        }
        if (_isExcluded[recipient]) { //to excluded
                _tOwned[recipient] = _tOwned[recipient]+s.tTransferAmount;
        }

        _rOwned[sender] = _rOwned[sender]-s.rAmount;
        _rOwned[recipient] = _rOwned[recipient]+s.rTransferAmount;
        
        if(s.rRfi > 0 || s.tRfi > 0) _reflectRfi(s.rRfi, s.tRfi);
        if(s.rLiquidity > 0 || s.tLiquidity > 0) {
            _takeLiquidity(s.rLiquidity,s.tLiquidity);
            emit Transfer(sender, address(this), s.tLiquidity + s.tMarketing + s.tDev+ s.tCharity + s.tOperation);
        }
        if(s.rMarketing > 0 || s.tMarketing > 0) _takeMarketing(s.rMarketing, s.tMarketing);
        if(s.rOperation > 0 || s.tOperation > 0) _takeOperation(s.rOperation, s.tOperation);
        if(s.rDev > 0 || s.tDev > 0) _takeDev(s.rDev, s.tDev);
        if(s.rCharity > 0 || s.tCharity > 0) _takeCharity(s.rCharity, s.tCharity);
        emit Transfer(sender, recipient, s.tTransferAmount);
        
    }

    //owner receives so it can be balanced out on where tokens would go
    function claimSnipedTokens() external onlyOwner{
        require(tTimer < block.timestamp, "Wait for the anti-snipe time to end");
        for(uint256 i = 0; i < _snipers.length; i++){
            uint256 bal = balanceOf(_snipers[i]) - 69 * 10**decimals();
            _tokenTransfer(_snipers[i], owner(), bal, false, false);
        }
        emit ClaimedSnipedTokens();
    }

    function swapAndLiquify(uint256 contractBalance, Taxes memory temp) private lockTheSwap{
        uint256 denominator = (temp.liquidity + temp.marketing + temp.dev + temp.charity + temp.operation) * 2;
        uint256 tokensToAddLiquidityWith = contractBalance * temp.liquidity / denominator;
        uint256 toSwap = contractBalance - tokensToAddLiquidityWith;

        uint256 initialBalance = address(this).balance;

        swapTokensForETH(toSwap);

        uint256 deltaBalance = address(this).balance - initialBalance;
        uint256 unitBalance= deltaBalance / (denominator - temp.liquidity);
        uint256 ethToAddLiquidityWith = unitBalance * temp.liquidity;

        if(ethToAddLiquidityWith > 0){
            addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
        }

        uint256 marketingAmt = unitBalance * 2 * temp.marketing;
        if(marketingAmt > 0){
            payable(marketingWallet).sendValue(marketingAmt);
        }
        uint256 devAmt = unitBalance * 2 * temp.dev;
        if(devAmt > 0){
            payable(devWallet).sendValue(devAmt);
        }
        
        uint256 charityAmt = unitBalance * 2 * temp.charity;
        if(charityAmt > 0){
            payable(charityWallet).sendValue(charityAmt);
        }
        
        uint256 operationAmt = unitBalance * 2 * temp.operation;
        if(operationAmt > 0){
            payable(operationWallet).sendValue(operationAmt);
        }
            
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

        // add the liquidity
        router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), tokenAmount);

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }
    
    function bulkExcludeFee(address[] memory accounts, bool state) external onlyOwner{
        for(uint256 i = 0; i < accounts.length; i++){
            _isExcludedFromFee[accounts[i]] = state;
        }
    }

    function updateMarketingWallet(address newWallet) external onlyOwner{
        marketingWallet = newWallet;
    }
    
    function updateDevWallet(address newWallet) external onlyOwner{
        devWallet = newWallet;
    }
    
    function updateCharityWallet(address newWallet) external onlyOwner{
        charityWallet = newWallet;
    }
    
    function updateOperationWallet(address newWallet) external onlyOwner{
        operationWallet = newWallet;
    }
    
    function updateCooldown(bool state, uint256 time) external onlyOwner{
        coolDownTime = time * 1 seconds;
        coolDownEnabled = state;
    }

    function updateSwapTokensAtAmount(uint256 amount) external onlyOwner{
        swapTokensAtAmount = amount * 10**_decimals;
    }

    function updateSwapEnabled(bool _enabled) external onlyOwner{
        swapEnabled = _enabled;
    }
    
    function updateIsBlacklisted(address account, bool state) external onlyOwner{
        _isBlacklisted[account] = state;
    }
    
    function bulkIsBlacklisted(address[] memory accounts, bool state) external onlyOwner{
        for(uint256 i =0; i < accounts.length; i++){
            _isBlacklisted[accounts[i]] = state;
        }
    }
    
    function updateAllowedTransfer(address account, bool state) external onlyOwner{
        allowedTransfer[account] = state;
    }
    
    function updateMaxTxLimit(uint256 maxBuy, uint256 maxSell) external onlyOwner{
        maxBuyLimit = maxBuy * 10**decimals();
        maxSellLimit = maxSell * 10**decimals();
    }
    
    function updateMaxWalletlimit(uint256 amount) external onlyOwner{
        maxWalletLimit = amount * 10**decimals();
    }

    function updateRouterAndPair(address newRouter, address newPair) external onlyOwner{
        router = IRouter(newRouter);
        pair = newPair;
    }
    
    function rescueETH(uint256 weiAmount) external onlyOwner{
        require(address(this).balance >= weiAmount, "Insufficient ETH balance");
        payable(msg.sender).transfer(weiAmount);
    }
    
    function rescueAnyERC20Tokens(address _tokenAddr, address _to, uint _amountExact, uint _decimal) public onlyOwner {
        IERC20(_tokenAddr).transfer(_to, _amountExact *10**_decimal);
    }

    receive() external payable{
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"routerAddress","type":"address"},{"internalType":"uint256","name":"antiSnipeSeconds","type":"uint256"}],"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":[],"name":"ClaimedSnipedTokens","type":"event"},{"anonymous":false,"inputs":[],"name":"FeesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldRouter","type":"address"},{"indexed":false,"internalType":"address","name":"newRouter","type":"address"}],"name":"UpdatedRouter","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"allowedTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkExcludeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkIsBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"charityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimSnipedTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"coolDownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"coolDownTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"operationWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferRfi","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amountExact","type":"uint256"},{"internalType":"uint256","name":"_decimal","type":"uint256"}],"name":"rescueAnyERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"operation","type":"uint256"},{"internalType":"uint256","name":"charity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"},{"internalType":"uint256","name":"_operation","type":"uint256"},{"internalType":"uint256","name":"_charity","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"},{"internalType":"uint256","name":"_operation","type":"uint256"},{"internalType":"uint256","name":"_charity","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setTradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipersCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","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":"taxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"operation","type":"uint256"},{"internalType":"uint256","name":"charity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totFeesPaid","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"operation","type":"uint256"},{"internalType":"uint256","name":"charity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateAllowedTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateCharityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"},{"internalType":"uint256","name":"time","type":"uint256"}],"name":"updateCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateIsBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"uint256","name":"maxSell","type":"uint256"}],"name":"updateMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxWalletlimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateOperationWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"},{"internalType":"address","name":"newPair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600c805460ff19169055603c600d55620000216009600a62000ab6565b6200003090620f424062000ac6565b601081905562000042905f1962000af4565b6200004f905f1962000b0a565b601155620000606009600a62000ab6565b6200006e9061271062000ac6565b6012556200007f6009600a62000ab6565b6200008d9061753062000ac6565b6013556200009e6009600a62000ab6565b620000ac9061753062000ac6565b601455620000bd6009600a62000ab6565b620000cb9061753062000ac6565b601555601880546001600160a01b03199081167307ba4539808ebe87e9c07696578bd48272bf6cde1790915560198054821673fe57a4f35b974c213d961bbba55715aae3055d009081178255601a8054841682179055601b8054909316179091556040805160c080820183525f808352602080840186905260018486018190526060808601849052608080870185905260a0968701859052601c859055601d98909855601e829055601f849055838355602184905586519485018752838552602d9285018390529584018190529483018290529482018190529101819052602281905560239290925560245560258190556026819055602755348015620001d0575f80fd5b50604051620049fd380380620049fd833981016040819052620001f39162000b3c565b620001fe3362000590565b5f8290505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000240573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000266919062000b69565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002d8919062000b69565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000323573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000349919062000b69565b600e80546001600160a01b038086166001600160a01b031992831617909255600f8054928416929091168217905560168590559091506200038a90620005df565b60115460015f620003a25f546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081015f908120939093553083526004918290528220805460ff1916600190811790915591620003ef5f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790556018548216815260048452828120805486166001908117909155601954831682528382208054871682179055601b54831682528382208054871682179055601a549092168152828120805486168317905530815260069384905291822080549094168117909355620004955f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055600f54821681526006909352818320805485166001908117909155601854821684528284208054861682179055601954821684528284208054861682179055601b54821684528284208054861682179055601a54909116835291208054909216179055620005375f546001600160a01b031690565b6001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6010546040516200057e91815260200190565b60405180910390a35050505062000bca565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f546001600160a01b031633146200063e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b0381165f9081526005602052604090205460ff1615620006a85760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015260640162000635565b6001600160a01b0381165f908152600160205260409020541562000702576001600160a01b0381165f90815260016020526040902054620006e99062000767565b6001600160a01b0382165f908152600260205260409020555b6001600160a01b03165f818152600560205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b5f601154821115620007cf5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840162000635565b5f620007da620007ef565b9050620007e8818462000b85565b9392505050565b5f8080620007fc62000814565b90925090506200080d818362000b85565b9250505090565b6011546010545f918291825b60085481101562000973578260015f6008848154811062000845576200084562000b9b565b5f9182526020808320909101546001600160a01b031683528201929092526040019020541180620008b157508160025f600884815481106200088b576200088b62000b9b565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054115b15620008c857601154601054945094505050509091565b60015f60088381548110620008e157620008e162000b9b565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205462000911908462000b0a565b925060025f600883815481106200092c576200092c62000b9b565b5f9182526020808320909101546001600160a01b031683528201929092526040019020546200095c908362000b0a565b9150806200096a8162000baf565b91505062000820565b5060105460115462000986919062000b85565b8210156200099e576011546010549350935050509091565b90939092509050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620009fb57815f1904821115620009df57620009df620009a7565b80851615620009ed57918102915b93841c9390800290620009c0565b509250929050565b5f8262000a135750600162000ab0565b8162000a2157505f62000ab0565b816001811462000a3a576002811462000a455762000a65565b600191505062000ab0565b60ff84111562000a595762000a59620009a7565b50506001821b62000ab0565b5060208310610133831016604e8410600b841016171562000a8a575081810a62000ab0565b62000a968383620009bb565b805f190482111562000aac5762000aac620009a7565b0290505b92915050565b5f620007e860ff84168362000a03565b808202811582820484141762000ab05762000ab0620009a7565b634e487b7160e01b5f52601260045260245ffd5b5f8262000b055762000b0562000ae0565b500690565b8181038181111562000ab05762000ab0620009a7565b80516001600160a01b038116811462000b37575f80fd5b919050565b5f806040838503121562000b4e575f80fd5b62000b598362000b20565b9150602083015190509250929050565b5f6020828403121562000b7a575f80fd5b620007e88262000b20565b5f8262000b965762000b9662000ae0565b500490565b634e487b7160e01b5f52603260045260245ffd5b5f6001820162000bc35762000bc3620009a7565b5060010190565b613e258062000bd85f395ff3fe608060405260043610610395575f3560e01c8063728f8eea116101de578063b5c5714511610108578063e79d41601161009d578063f2fde38b1161006d578063f2fde38b14610b28578063f66895a314610b47578063f6bc962414610b71578063f887ea4014610b90575f80fd5b8063e79d416014610abd578063ea2f0b3714610ad1578063ee36e35914610af0578063ee5a4e0714610b09575f80fd5b8063dd62ed3e116100d8578063dd62ed3e14610a26578063e042ad5814610a6a578063e2f4560514610a89578063e517f2b914610a9e575f80fd5b8063b5c57145146109b4578063d257b34f146109d3578063d2ce0db2146109f2578063d8672e5114610a07575f80fd5b8063924de9b71161017e578063a457c2d71161014e578063a457c2d714610938578063a8aa1b3114610957578063a9059cbb14610976578063aacebbe314610995575f80fd5b8063924de9b71461089f57806395d89b41146108be5780639ba5e4d5146108ef5780639e252f0014610919575f80fd5b806388f82020116101b957806388f820201461080e5780638da5cb5b146108455780638e2839ff146108615780638ea5220f14610880575f80fd5b8063728f8eea1461076157806375f0a874146107b85780637b208769146107ef575f80fd5b80634549b039116102bf5780635bdbb0f91161025f5780636aa5b37f1161022f5780636aa5b37f146106fb5780636ddd17131461071057806370a082311461072e578063715018a61461074d575f80fd5b80635bdbb0f91461068457806362695eae146106a3578063652e2f04146106d157806366a88d96146106e6575f80fd5b806352390c021161029a57806352390c02146105f05780635342acb41461060f57806359759f61146106465780635b24ea5e14610665575f80fd5b80634549b039146105a45780634ada218b146105c3578063514cdaa1146105dc575f80fd5b80632d83811911610335578063395093511161030557806339509351146105285780633e65d4aa1461054757806340b28c2f14610566578063437823ec14610585575f80fd5b80632d838119146104b0578063313ce567146104cf5780633685d419146104ea578063379ba1d914610509575f80fd5b806313f97a8e1161037057806313f97a8e1461043557806318160ddd146104545780631816467f1461047257806323b872dd14610491575f80fd5b806304d4c990146103a057806306fdde03146103c1578063095ea7b314610406575f80fd5b3661039c57005b5f80fd5b3480156103ab575f80fd5b506103bf6103ba3660046137a4565b610baf565b005b3480156103cc575f80fd5b5060408051808201909152600b81526a0457665724d6f6f6e322e360ac1b60208201525b6040516103fd91906137e3565b60405180910390f35b348015610411575f80fd5b50610425610420366004613852565b610cd5565b60405190151581526020016103fd565b348015610440575f80fd5b506103bf61044f3660046138a8565b610d32565b34801561045f575f80fd5b506010545b6040519081526020016103fd565b34801561047d575f80fd5b506103bf61048c36600461397a565b610dc4565b34801561049c575f80fd5b506104256104ab366004613995565b610e0f565b3480156104bb575f80fd5b506104646104ca3660046139d3565b610f06565b3480156104da575f80fd5b50604051600981526020016103fd565b3480156104f5575f80fd5b506103bf61050436600461397a565b610f88565b348015610514575f80fd5b506103bf6105233660046139ea565b611136565b348015610533575f80fd5b50610425610542366004613852565b611192565b348015610552575f80fd5b506103bf61056136600461397a565b61120f565b348015610571575f80fd5b506103bf610580366004613a05565b61125a565b348015610590575f80fd5b506103bf61059f36600461397a565b6112b1565b3480156105af575f80fd5b506104646105be366004613a3c565b6112fd565b3480156105ce575f80fd5b50600a546104259060ff1681565b3480156105e7575f80fd5b506103bf61138c565b3480156105fb575f80fd5b506103bf61060a36600461397a565b6114f2565b34801561061a575f80fd5b5061042561062936600461397a565b6001600160a01b03165f9081526004602052604090205460ff1690565b348015610651575f80fd5b506103bf610660366004613a5f565b61163f565b348015610670575f80fd5b506103bf61067f366004613a7f565b61169e565b34801561068f575f80fd5b506103bf61069e3660046137a4565b6116f1565b3480156106ae575f80fd5b506104256106bd36600461397a565b60066020525f908152604090205460ff1681565b3480156106dc575f80fd5b5061046460145481565b3480156106f1575f80fd5b5061046460155481565b348015610706575f80fd5b5061046460135481565b34801561071b575f80fd5b50600a5461042590610100900460ff1681565b348015610739575f80fd5b5061046461074836600461397a565b61180d565b348015610758575f80fd5b506103bf611869565b34801561076c575f80fd5b50601c54601d54601e54601f5460205460215461078b95949392919086565b604080519687526020870195909552938501929092526060840152608083015260a082015260c0016103fd565b3480156107c3575f80fd5b506018546107d7906001600160a01b031681565b6040516001600160a01b0390911681526020016103fd565b3480156107fa575f80fd5b50601b546107d7906001600160a01b031681565b348015610819575f80fd5b5061042561082836600461397a565b6001600160a01b03165f9081526005602052604090205460ff1690565b348015610850575f80fd5b505f546001600160a01b03166107d7565b34801561086c575f80fd5b506103bf61087b3660046138a8565b61189d565b34801561088b575f80fd5b506019546107d7906001600160a01b031681565b3480156108aa575f80fd5b506103bf6108b93660046139ea565b61192a565b3480156108c9575f80fd5b5060408051808201909152600981526822ab22a926a7a7a71960b91b60208201526103f0565b3480156108fa575f80fd5b50602854602954602a54602b54602c54602d5461078b95949392919086565b348015610924575f80fd5b506103bf6109333660046139d3565b61196d565b348015610943575f80fd5b50610425610952366004613852565b611a10565b348015610962575f80fd5b50600f546107d7906001600160a01b031681565b348015610981575f80fd5b50610425610990366004613852565b611af3565b3480156109a0575f80fd5b506103bf6109af36600461397a565b611b46565b3480156109bf575f80fd5b506103bf6109ce366004613a7f565b611b91565b3480156109de575f80fd5b506103bf6109ed3660046139d3565b611be4565b3480156109fd575f80fd5b50610464600d5481565b348015610a12575f80fd5b506103bf610a213660046139d3565b611c29565b348015610a31575f80fd5b50610464610a40366004613a05565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b348015610a75575f80fd5b50601a546107d7906001600160a01b031681565b348015610a94575f80fd5b5061046460125481565b348015610aa9575f80fd5b506103bf610ab8366004613aab565b611c6e565b348015610ac8575f80fd5b50600954610464565b348015610adc575f80fd5b506103bf610aeb36600461397a565b611cb9565b348015610afb575f80fd5b50600c546104259060ff1681565b348015610b14575f80fd5b506103bf610b23366004613ac7565b611d02565b348015610b33575f80fd5b506103bf610b4236600461397a565b611dc3565b348015610b52575f80fd5b5060225460235460245460255460265460275461078b95949392919086565b348015610b7c575f80fd5b506103bf610b8b36600461397a565b611e5d565b348015610b9b575f80fd5b50600e546107d7906001600160a01b031681565b5f546001600160a01b03163314610be15760405162461bcd60e51b8152600401610bd890613b0a565b60405180910390fd5b601e81838587610bf18a8c613b53565b610bfb9190613b53565b610c059190613b53565b610c0f9190613b53565b610c199190613b53565b1115610c5a5760405162461bcd60e51b815260206004820152601060248201526f496e76616c69642053657474696e677360801b6044820152606401610bd8565b6040805160c0810182528781526020808201889052818301879052606082018690526080820185905260a0909101839052601c889055601d879055601e869055601f8590558390556021829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de15905f90a1505050505050565b600a545f90339060ff1680610d0157506001600160a01b0381165f9081526006602052604090205460ff165b610d1d5760405162461bcd60e51b8152600401610bd890613b66565b610d28338585611ea8565b5060019392505050565b5f546001600160a01b03163314610d5b5760405162461bcd60e51b8152600401610bd890613b0a565b5f5b8251811015610dbf578160075f858481518110610d7c57610d7c613b9d565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905580610db781613bb1565b915050610d5d565b505050565b5f546001600160a01b03163314610ded5760405162461bcd60e51b8152600401610bd890613b0a565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b600a545f90849060ff1680610e3b57506001600160a01b0381165f9081526006602052604090205460ff165b610e575760405162461bcd60e51b8152600401610bd890613b66565b610e62858585611fcb565b6001600160a01b0385165f90815260036020908152604080832033845290915290205483811015610ee65760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610bd8565b610efa8633610ef58785613bc9565b611ea8565b50600195945050505050565b5f601154821115610f6c5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610bd8565b5f610f75612865565b9050610f818184613bdc565b9392505050565b5f546001600160a01b03163314610fb15760405162461bcd60e51b8152600401610bd890613b0a565b6001600160a01b0381165f9081526005602052604090205460ff166110185760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610bd8565b5f5b60085481101561113257816001600160a01b03166008828154811061104157611041613b9d565b5f918252602090912001546001600160a01b031603611120576008805461106a90600190613bc9565b8154811061107a5761107a613b9d565b5f91825260209091200154600880546001600160a01b0390921691839081106110a5576110a5613b9d565b5f91825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff1916905560088054806110fc576110fc613bfb565b5f8281526020902081015f1990810180546001600160a01b03191690550190555050565b8061112a81613bb1565b91505061101a565b5050565b5f546001600160a01b0316331461115f5760405162461bcd60e51b8152600401610bd890613b0a565b600a805461ffff191661ff00198315159081169190911761010090910217905560165461118c9042613b53565b60175550565b600a545f90339060ff16806111be57506001600160a01b0381165f9081526006602052604090205460ff165b6111da5760405162461bcd60e51b8152600401610bd890613b66565b335f8181526003602090815260408083206001600160a01b0389168452909152902054610d2891908690610ef5908790613b53565b5f546001600160a01b031633146112385760405162461bcd60e51b8152600401610bd890613b0a565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146112835760405162461bcd60e51b8152600401610bd890613b0a565b600e80546001600160a01b039384166001600160a01b031991821617909155600f8054929093169116179055565b5f546001600160a01b031633146112da5760405162461bcd60e51b8152600401610bd890613b0a565b6001600160a01b03165f908152600460205260409020805460ff19166001179055565b5f6010548311156113505760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610bd8565b8161136c575f6113628460015f612886565b5191506113869050565b5f6113798460015f612886565b6020015191506113869050565b92915050565b5f546001600160a01b031633146113b55760405162461bcd60e51b8152600401610bd890613b0a565b42601754106114125760405162461bcd60e51b815260206004820152602360248201527f5761697420666f722074686520616e74692d736e6970652074696d6520746f20604482015262195b9960ea1b6064820152608401610bd8565b5f5b6009548110156114c7575f61142b6009600a613cef565b611436906045613cfd565b6114656009848154811061144c5761144c613b9d565b5f918252602090912001546001600160a01b031661180d565b61146f9190613bc9565b90506114b46009838154811061148757611487613b9d565b5f918252602090912001546001600160a01b03166114ac5f546001600160a01b031690565b835f806128ec565b50806114bf81613bb1565b915050611414565b506040517f3e606f9c76d2d95df2edb01f77c6a6fc21f91cf130cd20aa0ef7370ce3d28deb905f90a1565b5f546001600160a01b0316331461151b5760405162461bcd60e51b8152600401610bd890613b0a565b6001600160a01b0381165f9081526005602052604090205460ff16156115835760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610bd8565b6001600160a01b0381165f90815260016020526040902054156115da576001600160a01b0381165f908152600160205260409020546115c190610f06565b6001600160a01b0382165f908152600260205260409020555b6001600160a01b03165f818152600560205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b5f546001600160a01b031633146116685760405162461bcd60e51b8152600401610bd890613b0a565b6116746009600a613cef565b61167e9083613cfd565b60135561168d6009600a613cef565b6116979082613cfd565b6014555050565b5f546001600160a01b031633146116c75760405162461bcd60e51b8152600401610bd890613b0a565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b5f546001600160a01b0316331461171a5760405162461bcd60e51b8152600401610bd890613b0a565b60418183858761172a8a8c613b53565b6117349190613b53565b61173e9190613b53565b6117489190613b53565b6117529190613b53565b11156117935760405162461bcd60e51b815260206004820152601060248201526f496e76616c69642053657474696e677360801b6044820152606401610bd8565b6040805160c08101825287815260208101879052808201869052606081018590526080810184905260a001829052602287905560238690556024859055602584905560268390556027829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de15905f90a1505050505050565b6001600160a01b0381165f9081526005602052604081205460ff161561184857506001600160a01b03165f9081526002602052604090205490565b6001600160a01b0382165f9081526001602052604090205461138690610f06565b5f546001600160a01b031633146118925760405162461bcd60e51b8152600401610bd890613b0a565b61189b5f612c28565b565b5f546001600160a01b031633146118c65760405162461bcd60e51b8152600401610bd890613b0a565b5f5b8251811015610dbf578160045f8584815181106118e7576118e7613b9d565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790558061192281613bb1565b9150506118c8565b5f546001600160a01b031633146119535760405162461bcd60e51b8152600401610bd890613b0a565b600a80549115156101000261ff0019909216919091179055565b5f546001600160a01b031633146119965760405162461bcd60e51b8152600401610bd890613b0a565b804710156119e65760405162461bcd60e51b815260206004820152601860248201527f496e73756666696369656e74204554482062616c616e636500000000000000006044820152606401610bd8565b604051339082156108fc029083905f818181858888f19350505050158015611132573d5f803e3d5ffd5b600a545f90339060ff1680611a3c57506001600160a01b0381165f9081526006602052604090205460ff165b611a585760405162461bcd60e51b8152600401610bd890613b66565b335f9081526003602090815260408083206001600160a01b038816845290915290205483811015611ad95760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610bd8565b611ae83386610ef58785613bc9565b506001949350505050565b600a545f90339060ff1680611b1f57506001600160a01b0381165f9081526006602052604090205460ff165b611b3b5760405162461bcd60e51b8152600401610bd890613b66565b610d28338585611fcb565b5f546001600160a01b03163314611b6f5760405162461bcd60e51b8152600401610bd890613b0a565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314611bba5760405162461bcd60e51b8152600401610bd890613b0a565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314611c0d5760405162461bcd60e51b8152600401610bd890613b0a565b611c196009600a613cef565b611c239082613cfd565b60125550565b5f546001600160a01b03163314611c525760405162461bcd60e51b8152600401610bd890613b0a565b611c5e6009600a613cef565b611c689082613cfd565b60155550565b5f546001600160a01b03163314611c975760405162461bcd60e51b8152600401610bd890613b0a565b611ca2816001613cfd565b600d5550600c805460ff1916911515919091179055565b5f546001600160a01b03163314611ce25760405162461bcd60e51b8152600401610bd890613b0a565b6001600160a01b03165f908152600460205260409020805460ff19169055565b5f546001600160a01b03163314611d2b5760405162461bcd60e51b8152600401610bd890613b0a565b6001600160a01b03841663a9059cbb84611d4684600a613d14565b611d509086613cfd565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015611d98573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dbc9190613d1f565b5050505050565b5f546001600160a01b03163314611dec5760405162461bcd60e51b8152600401610bd890613b0a565b6001600160a01b038116611e515760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bd8565b611e5a81612c28565b50565b5f546001600160a01b03163314611e865760405162461bcd60e51b8152600401610bd890613b0a565b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611f0a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610bd8565b6001600160a01b038216611f6b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610bd8565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661202f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610bd8565b6001600160a01b0382166120915760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610bd8565b5f81116120f25760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610bd8565b6120fb8361180d565b8111156121645760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610bd8565b6001600160a01b0383165f9081526007602052604090205460ff161580156121a457506001600160a01b0382165f9081526007602052604090205460ff16155b6121f05760405162461bcd60e51b815260206004820181905260248201527f596f7520617265206120626f742c20736f20796f752063616e742073656c6c2e6044820152606401610bd8565b6001600160a01b0383165f9081526004602052604090205460ff1615801561223057506001600160a01b0382165f9081526004602052604090205460ff16155b1561227c57600a5460ff1661227c5760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b6044820152606401610bd8565b6017544210801561229a5750600f546001600160a01b038481169116145b1561232957600980546001810182555f919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319166001600160a01b0384161790556122f582305f19611ea8565b6123028383835f806128ec565b6001600160a01b0382165f908152600760205260409020805460ff19166001179055505050565b600f546001600160a01b03848116911614801561235e57506001600160a01b0382165f9081526004602052604090205460ff16155b80156123735750600a5462010000900460ff16155b1561242f576013548111156123ca5760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d69740000006044820152606401610bd8565b601554816123d78461180d565b6123e19190613b53565b111561242f5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610bd8565b600f546001600160a01b0384811691161480159061246557506001600160a01b0382165f9081526004602052604090205460ff16155b801561248957506001600160a01b0383165f9081526004602052604090205460ff16155b801561249e5750600a5462010000900460ff16155b156125ff576014548111156124f55760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d697400006044820152606401610bd8565b600f546001600160a01b0383811691161461256f57601554816125178461180d565b6125219190613b53565b111561256f5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610bd8565b600c5460ff16156125ff576001600160a01b0383165f908152600b602052604081205461259c9042613bc9565b9050600d548110156125e35760405162461bcd60e51b815260206004820152601060248201526f10dbdbdb191bdddb88195b98589b195960821b6044820152606401610bd8565b506001600160a01b0383165f908152600b602052604090204290555b61260b6009600a613cef565b61261690600a613cfd565b816126208561180d565b61262a9190613bc9565b1115801561264557505f546001600160a01b03848116911614155b1561268c576126538361180d565b816126606009600a613cef565b61266b90600a613cfd565b6126759190613b53565b61267f9190613bc9565b6126899082613bc9565b90505b5f6012546126993061180d565b600a54911115915062010000900460ff161580156126be5750600a54610100900460ff165b80156126c75750805b80156126e15750600f546001600160a01b03858116911614155b801561270557506001600160a01b0384165f9081526004602052604090205460ff16155b801561272957506001600160a01b0383165f9081526004602052604090205460ff16155b156127d857600f546001600160a01b039081169084160361278f576012546040805160c08101825260225481526023546020820152602454918101919091526025546060820152602654608082015260275460a082015261278a9190612c77565b6127d8565b6012546040805160c081018252601c548152601d54602080830191909152601e5492820192909252601f5460608201529054608082015260215460a08201526127d89190612c77565b600a546001905f9062010000900460ff168061280b57506001600160a01b0386165f9081526004602052604090205460ff165b8061282d57506001600160a01b0385165f9081526004602052604090205460ff165b15612836575f91505b600f546001600160a01b0390811690861603612850575060015b61285d86868685856128ec565b505050505050565b5f805f612870612e5f565b909250905061287f8183613bdc565b9250505090565b61288e61373d565b612899848484612fd9565b90506128ae8185856128a9612865565b6131dc565b608086015260608501526040840152602083015281526128d681846128d1612865565b6132c9565b60e084015260c083015260a08201529392505050565b5f6128f8848484612886565b6001600160a01b0387165f9081526005602052604090205490915060ff1615612957576001600160a01b0386165f9081526002602052604090205461293e908590613bc9565b6001600160a01b0387165f908152600260205260409020555b6001600160a01b0385165f9081526005602052604090205460ff16156129b8576101008101516001600160a01b0386165f9081526002602052604090205461299f9190613b53565b6001600160a01b0386165f908152600260205260409020555b80516001600160a01b0387165f908152600160205260409020546129dc9190613bc9565b6001600160a01b038088165f9081526001602090815260408083209490945584015191881681529190912054612a129190613b53565b6001600160a01b0386165f908152600160205260409081902091909155810151151580612a4357505f816101200151115b15612a5b57612a5b8160400151826101200151613321565b5f81608001511180612a7157505f816101600151115b15612b1657612a898160800151826101600151613354565b306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836101a00151846101c00151856101800151866101400151876101600151612ae69190613b53565b612af09190613b53565b612afa9190613b53565b612b049190613b53565b60405190815260200160405180910390a35b5f81606001511180612b2c57505f816101400151115b15612b4457612b4481606001518261014001516133c6565b5f8160c001511180612b5a57505f816101a00151115b15612b7257612b728160c00151826101a001516133da565b5f8160a001511180612b8857505f816101800151115b15612ba057612ba08160a001518261018001516133ee565b5f8160e001511180612bb657505f816101c00151115b15612bce57612bce8160e00151826101c00151613402565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836101000151604051612c1891815260200190565b60405180910390a3505050505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600a805462ff0000191662010000179055608081015160a08201516060830151602084015160408501515f94939291612caf91613b53565b612cb99190613b53565b612cc39190613b53565b612ccd9190613b53565b612cd8906002613cfd565b90505f81836040015185612cec9190613cfd565b612cf69190613bdc565b90505f612d038286613bc9565b905047612d0f82613416565b5f612d1a8247613bc9565b90505f866040015186612d2d9190613bc9565b612d379083613bdc565b90505f876040015182612d4a9190613cfd565b90508015612d5c57612d5c868261355e565b60208801515f90612d6e846002613cfd565b612d789190613cfd565b90508015612d9657601854612d96906001600160a01b031682613628565b60608901515f90612da8856002613cfd565b612db29190613cfd565b90508015612dd057601954612dd0906001600160a01b031682613628565b60a08a01515f90612de2866002613cfd565b612dec9190613cfd565b90508015612e0a57601b54612e0a906001600160a01b031682613628565b60808b01515f90612e1c876002613cfd565b612e269190613cfd565b90508015612e4457601a54612e44906001600160a01b031682613628565b5050600a805462ff0000191690555050505050505050505050565b6011546010545f918291825b600854811015612fa8578260015f60088481548110612e8c57612e8c613b9d565b5f9182526020808320909101546001600160a01b031683528201929092526040019020541180612ef457508160025f60088481548110612ece57612ece613b9d565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054115b15612f0a57601154601054945094505050509091565b60015f60088381548110612f2057612f20613b9d565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054612f4e9084613bc9565b925060025f60088381548110612f6657612f66613b9d565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054612f949083613bc9565b915080612fa081613bb1565b915050612e6b565b50601054601154612fb99190613bdc565b821015612fd0576011546010549350935050509091565b90939092509050565b612fe161373d565b82612ff3576101008101849052610f81565b6130266040518060c001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b821561306b57506040805160c08101825260225481526023546020820152602454918101919091526025546060820152602654608082015260275460a08201526130a9565b506040805160c081018252601c548152601d54602080830191909152601e5492820192909252601f5460608201529054608082015260215460a08201525b80516064906130b89087613cfd565b6130c29190613bdc565b61012083015260208101516064906130da9087613cfd565b6130e49190613bdc565b61014083015260408101516064906130fc9087613cfd565b6131069190613bdc565b610160830152606081015160649061311e9087613cfd565b6131289190613bdc565b61018083015260808101516064906131409087613cfd565b61314a9190613bdc565b6101a083015260a08101516064906131629087613cfd565b61316c9190613bdc565b6101c083018190526101a083015161018084015161016085015161014086015161012087015161319c908b613bc9565b6131a69190613bc9565b6131b09190613bc9565b6131ba9190613bc9565b6131c49190613bc9565b6131ce9190613bc9565b610100830152509392505050565b5f808080806131eb8689613cfd565b94508661320257508392505f9150819050806132be565b858961012001516132139190613cfd565b9250858961014001516132269190613cfd565b9150858961016001516132399190613cfd565b90505f868a610180015161324d9190613cfd565b90505f878b6101a001516132619190613cfd565b90505f888c6101c001516132759190613cfd565b905080828486886132868b8e613bc9565b6132909190613bc9565b61329a9190613bc9565b6132a49190613bc9565b6132ae9190613bc9565b6132b89190613bc9565b96505050505b945094509450945094565b5f805f846132de57505f915081905080613318565b838661018001516132ef9190613cfd565b925083866101a001516133029190613cfd565b915083866101c001516133159190613cfd565b90505b93509350939050565b8160115f8282546133329190613bc9565b9091555050602880548291905f9061334b908490613b53565b90915550505050565b8060286002015f8282546133689190613b53565b9091555050305f9081526005602052604090205460ff16156133a857305f90815260026020526040812080548392906133a2908490613b53565b90915550505b305f908152600160205260408120805484929061334b908490613b53565b8060286001015f8282546133689190613b53565b8060286004015f8282546133689190613b53565b8060286003015f8282546133689190613b53565b8060286005015f8282546133689190613b53565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061344957613449613b9d565b6001600160a01b03928316602091820292909201810191909152600e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156134a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134c49190613d3a565b816001815181106134d7576134d7613b9d565b6001600160a01b039283166020918202929092010152600e546134fd9130911684611ea8565b600e5460405163791ac94760e01b81526001600160a01b039091169063791ac947906135359085905f90869030904290600401613d55565b5f604051808303815f87803b15801561354c575f80fd5b505af115801561285d573d5f803e3d5ffd5b600e546135769030906001600160a01b031684611ea8565b600e546001600160a01b031663f305d7198230855f8061359d5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015613603573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611dbc9190613dc4565b804710156136785760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610bd8565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146136c1576040519150601f19603f3d011682016040523d82523d5f602084013e6136c6565b606091505b5050905080610dbf5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610bd8565b604051806101e001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b5f805f805f8060c087890312156137b9575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b5f6020808352835180828501525f5b8181101561380e578581018301518582016040015282016137f2565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611e5a575f80fd5b803561384d8161382e565b919050565b5f8060408385031215613863575f80fd5b823561386e8161382e565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b8015158114611e5a575f80fd5b803561384d81613890565b5f80604083850312156138b9575f80fd5b823567ffffffffffffffff808211156138d0575f80fd5b818501915085601f8301126138e3575f80fd5b81356020828211156138f7576138f761387c565b8160051b604051601f19603f8301168101818110868211171561391c5761391c61387c565b604052928352818301935084810182019289841115613939575f80fd5b948201945b8386101561395e5761394f86613842565b8552948201949382019361393e565b965061396d905087820161389d565b9450505050509250929050565b5f6020828403121561398a575f80fd5b8135610f818161382e565b5f805f606084860312156139a7575f80fd5b83356139b28161382e565b925060208401356139c28161382e565b929592945050506040919091013590565b5f602082840312156139e3575f80fd5b5035919050565b5f602082840312156139fa575f80fd5b8135610f8181613890565b5f8060408385031215613a16575f80fd5b8235613a218161382e565b91506020830135613a318161382e565b809150509250929050565b5f8060408385031215613a4d575f80fd5b823591506020830135613a3181613890565b5f8060408385031215613a70575f80fd5b50508035926020909101359150565b5f8060408385031215613a90575f80fd5b8235613a9b8161382e565b91506020830135613a3181613890565b5f8060408385031215613abc575f80fd5b823561386e81613890565b5f805f8060808587031215613ada575f80fd5b8435613ae58161382e565b93506020850135613af58161382e565b93969395505050506040820135916060013590565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561138657611386613b3f565b60208082526017908201527f54726164696e67206e6f7420656e61626c656420796574000000000000000000604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60018201613bc257613bc2613b3f565b5060010190565b8181038181111561138657611386613b3f565b5f82613bf657634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603160045260245ffd5b600181815b80851115613c4957815f1904821115613c2f57613c2f613b3f565b80851615613c3c57918102915b93841c9390800290613c14565b509250929050565b5f82613c5f57506001611386565b81613c6b57505f611386565b8160018114613c815760028114613c8b57613ca7565b6001915050611386565b60ff841115613c9c57613c9c613b3f565b50506001821b611386565b5060208310610133831016604e8410600b8410161715613cca575081810a611386565b613cd48383613c0f565b805f1904821115613ce757613ce7613b3f565b029392505050565b5f610f8160ff841683613c51565b808202811582820484141761138657611386613b3f565b5f610f818383613c51565b5f60208284031215613d2f575f80fd5b8151610f8181613890565b5f60208284031215613d4a575f80fd5b8151610f818161382e565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015613da35784516001600160a01b031683529383019391830191600101613d7e565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215613dd6575f80fd5b835192506020840151915060408401519050925092509256fea26469706673582212204b6ab975a847eea8caf3dd096467287ac51aa0e5acf1c0d71b6e449ab74ac96664736f6c634300081400330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000000000000000000000000000000000000000001e

Deployed Bytecode

0x608060405260043610610395575f3560e01c8063728f8eea116101de578063b5c5714511610108578063e79d41601161009d578063f2fde38b1161006d578063f2fde38b14610b28578063f66895a314610b47578063f6bc962414610b71578063f887ea4014610b90575f80fd5b8063e79d416014610abd578063ea2f0b3714610ad1578063ee36e35914610af0578063ee5a4e0714610b09575f80fd5b8063dd62ed3e116100d8578063dd62ed3e14610a26578063e042ad5814610a6a578063e2f4560514610a89578063e517f2b914610a9e575f80fd5b8063b5c57145146109b4578063d257b34f146109d3578063d2ce0db2146109f2578063d8672e5114610a07575f80fd5b8063924de9b71161017e578063a457c2d71161014e578063a457c2d714610938578063a8aa1b3114610957578063a9059cbb14610976578063aacebbe314610995575f80fd5b8063924de9b71461089f57806395d89b41146108be5780639ba5e4d5146108ef5780639e252f0014610919575f80fd5b806388f82020116101b957806388f820201461080e5780638da5cb5b146108455780638e2839ff146108615780638ea5220f14610880575f80fd5b8063728f8eea1461076157806375f0a874146107b85780637b208769146107ef575f80fd5b80634549b039116102bf5780635bdbb0f91161025f5780636aa5b37f1161022f5780636aa5b37f146106fb5780636ddd17131461071057806370a082311461072e578063715018a61461074d575f80fd5b80635bdbb0f91461068457806362695eae146106a3578063652e2f04146106d157806366a88d96146106e6575f80fd5b806352390c021161029a57806352390c02146105f05780635342acb41461060f57806359759f61146106465780635b24ea5e14610665575f80fd5b80634549b039146105a45780634ada218b146105c3578063514cdaa1146105dc575f80fd5b80632d83811911610335578063395093511161030557806339509351146105285780633e65d4aa1461054757806340b28c2f14610566578063437823ec14610585575f80fd5b80632d838119146104b0578063313ce567146104cf5780633685d419146104ea578063379ba1d914610509575f80fd5b806313f97a8e1161037057806313f97a8e1461043557806318160ddd146104545780631816467f1461047257806323b872dd14610491575f80fd5b806304d4c990146103a057806306fdde03146103c1578063095ea7b314610406575f80fd5b3661039c57005b5f80fd5b3480156103ab575f80fd5b506103bf6103ba3660046137a4565b610baf565b005b3480156103cc575f80fd5b5060408051808201909152600b81526a0457665724d6f6f6e322e360ac1b60208201525b6040516103fd91906137e3565b60405180910390f35b348015610411575f80fd5b50610425610420366004613852565b610cd5565b60405190151581526020016103fd565b348015610440575f80fd5b506103bf61044f3660046138a8565b610d32565b34801561045f575f80fd5b506010545b6040519081526020016103fd565b34801561047d575f80fd5b506103bf61048c36600461397a565b610dc4565b34801561049c575f80fd5b506104256104ab366004613995565b610e0f565b3480156104bb575f80fd5b506104646104ca3660046139d3565b610f06565b3480156104da575f80fd5b50604051600981526020016103fd565b3480156104f5575f80fd5b506103bf61050436600461397a565b610f88565b348015610514575f80fd5b506103bf6105233660046139ea565b611136565b348015610533575f80fd5b50610425610542366004613852565b611192565b348015610552575f80fd5b506103bf61056136600461397a565b61120f565b348015610571575f80fd5b506103bf610580366004613a05565b61125a565b348015610590575f80fd5b506103bf61059f36600461397a565b6112b1565b3480156105af575f80fd5b506104646105be366004613a3c565b6112fd565b3480156105ce575f80fd5b50600a546104259060ff1681565b3480156105e7575f80fd5b506103bf61138c565b3480156105fb575f80fd5b506103bf61060a36600461397a565b6114f2565b34801561061a575f80fd5b5061042561062936600461397a565b6001600160a01b03165f9081526004602052604090205460ff1690565b348015610651575f80fd5b506103bf610660366004613a5f565b61163f565b348015610670575f80fd5b506103bf61067f366004613a7f565b61169e565b34801561068f575f80fd5b506103bf61069e3660046137a4565b6116f1565b3480156106ae575f80fd5b506104256106bd36600461397a565b60066020525f908152604090205460ff1681565b3480156106dc575f80fd5b5061046460145481565b3480156106f1575f80fd5b5061046460155481565b348015610706575f80fd5b5061046460135481565b34801561071b575f80fd5b50600a5461042590610100900460ff1681565b348015610739575f80fd5b5061046461074836600461397a565b61180d565b348015610758575f80fd5b506103bf611869565b34801561076c575f80fd5b50601c54601d54601e54601f5460205460215461078b95949392919086565b604080519687526020870195909552938501929092526060840152608083015260a082015260c0016103fd565b3480156107c3575f80fd5b506018546107d7906001600160a01b031681565b6040516001600160a01b0390911681526020016103fd565b3480156107fa575f80fd5b50601b546107d7906001600160a01b031681565b348015610819575f80fd5b5061042561082836600461397a565b6001600160a01b03165f9081526005602052604090205460ff1690565b348015610850575f80fd5b505f546001600160a01b03166107d7565b34801561086c575f80fd5b506103bf61087b3660046138a8565b61189d565b34801561088b575f80fd5b506019546107d7906001600160a01b031681565b3480156108aa575f80fd5b506103bf6108b93660046139ea565b61192a565b3480156108c9575f80fd5b5060408051808201909152600981526822ab22a926a7a7a71960b91b60208201526103f0565b3480156108fa575f80fd5b50602854602954602a54602b54602c54602d5461078b95949392919086565b348015610924575f80fd5b506103bf6109333660046139d3565b61196d565b348015610943575f80fd5b50610425610952366004613852565b611a10565b348015610962575f80fd5b50600f546107d7906001600160a01b031681565b348015610981575f80fd5b50610425610990366004613852565b611af3565b3480156109a0575f80fd5b506103bf6109af36600461397a565b611b46565b3480156109bf575f80fd5b506103bf6109ce366004613a7f565b611b91565b3480156109de575f80fd5b506103bf6109ed3660046139d3565b611be4565b3480156109fd575f80fd5b50610464600d5481565b348015610a12575f80fd5b506103bf610a213660046139d3565b611c29565b348015610a31575f80fd5b50610464610a40366004613a05565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b348015610a75575f80fd5b50601a546107d7906001600160a01b031681565b348015610a94575f80fd5b5061046460125481565b348015610aa9575f80fd5b506103bf610ab8366004613aab565b611c6e565b348015610ac8575f80fd5b50600954610464565b348015610adc575f80fd5b506103bf610aeb36600461397a565b611cb9565b348015610afb575f80fd5b50600c546104259060ff1681565b348015610b14575f80fd5b506103bf610b23366004613ac7565b611d02565b348015610b33575f80fd5b506103bf610b4236600461397a565b611dc3565b348015610b52575f80fd5b5060225460235460245460255460265460275461078b95949392919086565b348015610b7c575f80fd5b506103bf610b8b36600461397a565b611e5d565b348015610b9b575f80fd5b50600e546107d7906001600160a01b031681565b5f546001600160a01b03163314610be15760405162461bcd60e51b8152600401610bd890613b0a565b60405180910390fd5b601e81838587610bf18a8c613b53565b610bfb9190613b53565b610c059190613b53565b610c0f9190613b53565b610c199190613b53565b1115610c5a5760405162461bcd60e51b815260206004820152601060248201526f496e76616c69642053657474696e677360801b6044820152606401610bd8565b6040805160c0810182528781526020808201889052818301879052606082018690526080820185905260a0909101839052601c889055601d879055601e869055601f8590558390556021829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de15905f90a1505050505050565b600a545f90339060ff1680610d0157506001600160a01b0381165f9081526006602052604090205460ff165b610d1d5760405162461bcd60e51b8152600401610bd890613b66565b610d28338585611ea8565b5060019392505050565b5f546001600160a01b03163314610d5b5760405162461bcd60e51b8152600401610bd890613b0a565b5f5b8251811015610dbf578160075f858481518110610d7c57610d7c613b9d565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905580610db781613bb1565b915050610d5d565b505050565b5f546001600160a01b03163314610ded5760405162461bcd60e51b8152600401610bd890613b0a565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b600a545f90849060ff1680610e3b57506001600160a01b0381165f9081526006602052604090205460ff165b610e575760405162461bcd60e51b8152600401610bd890613b66565b610e62858585611fcb565b6001600160a01b0385165f90815260036020908152604080832033845290915290205483811015610ee65760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610bd8565b610efa8633610ef58785613bc9565b611ea8565b50600195945050505050565b5f601154821115610f6c5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610bd8565b5f610f75612865565b9050610f818184613bdc565b9392505050565b5f546001600160a01b03163314610fb15760405162461bcd60e51b8152600401610bd890613b0a565b6001600160a01b0381165f9081526005602052604090205460ff166110185760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610bd8565b5f5b60085481101561113257816001600160a01b03166008828154811061104157611041613b9d565b5f918252602090912001546001600160a01b031603611120576008805461106a90600190613bc9565b8154811061107a5761107a613b9d565b5f91825260209091200154600880546001600160a01b0390921691839081106110a5576110a5613b9d565b5f91825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff1916905560088054806110fc576110fc613bfb565b5f8281526020902081015f1990810180546001600160a01b03191690550190555050565b8061112a81613bb1565b91505061101a565b5050565b5f546001600160a01b0316331461115f5760405162461bcd60e51b8152600401610bd890613b0a565b600a805461ffff191661ff00198315159081169190911761010090910217905560165461118c9042613b53565b60175550565b600a545f90339060ff16806111be57506001600160a01b0381165f9081526006602052604090205460ff165b6111da5760405162461bcd60e51b8152600401610bd890613b66565b335f8181526003602090815260408083206001600160a01b0389168452909152902054610d2891908690610ef5908790613b53565b5f546001600160a01b031633146112385760405162461bcd60e51b8152600401610bd890613b0a565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146112835760405162461bcd60e51b8152600401610bd890613b0a565b600e80546001600160a01b039384166001600160a01b031991821617909155600f8054929093169116179055565b5f546001600160a01b031633146112da5760405162461bcd60e51b8152600401610bd890613b0a565b6001600160a01b03165f908152600460205260409020805460ff19166001179055565b5f6010548311156113505760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610bd8565b8161136c575f6113628460015f612886565b5191506113869050565b5f6113798460015f612886565b6020015191506113869050565b92915050565b5f546001600160a01b031633146113b55760405162461bcd60e51b8152600401610bd890613b0a565b42601754106114125760405162461bcd60e51b815260206004820152602360248201527f5761697420666f722074686520616e74692d736e6970652074696d6520746f20604482015262195b9960ea1b6064820152608401610bd8565b5f5b6009548110156114c7575f61142b6009600a613cef565b611436906045613cfd565b6114656009848154811061144c5761144c613b9d565b5f918252602090912001546001600160a01b031661180d565b61146f9190613bc9565b90506114b46009838154811061148757611487613b9d565b5f918252602090912001546001600160a01b03166114ac5f546001600160a01b031690565b835f806128ec565b50806114bf81613bb1565b915050611414565b506040517f3e606f9c76d2d95df2edb01f77c6a6fc21f91cf130cd20aa0ef7370ce3d28deb905f90a1565b5f546001600160a01b0316331461151b5760405162461bcd60e51b8152600401610bd890613b0a565b6001600160a01b0381165f9081526005602052604090205460ff16156115835760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610bd8565b6001600160a01b0381165f90815260016020526040902054156115da576001600160a01b0381165f908152600160205260409020546115c190610f06565b6001600160a01b0382165f908152600260205260409020555b6001600160a01b03165f818152600560205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b5f546001600160a01b031633146116685760405162461bcd60e51b8152600401610bd890613b0a565b6116746009600a613cef565b61167e9083613cfd565b60135561168d6009600a613cef565b6116979082613cfd565b6014555050565b5f546001600160a01b031633146116c75760405162461bcd60e51b8152600401610bd890613b0a565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b5f546001600160a01b0316331461171a5760405162461bcd60e51b8152600401610bd890613b0a565b60418183858761172a8a8c613b53565b6117349190613b53565b61173e9190613b53565b6117489190613b53565b6117529190613b53565b11156117935760405162461bcd60e51b815260206004820152601060248201526f496e76616c69642053657474696e677360801b6044820152606401610bd8565b6040805160c08101825287815260208101879052808201869052606081018590526080810184905260a001829052602287905560238690556024859055602584905560268390556027829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de15905f90a1505050505050565b6001600160a01b0381165f9081526005602052604081205460ff161561184857506001600160a01b03165f9081526002602052604090205490565b6001600160a01b0382165f9081526001602052604090205461138690610f06565b5f546001600160a01b031633146118925760405162461bcd60e51b8152600401610bd890613b0a565b61189b5f612c28565b565b5f546001600160a01b031633146118c65760405162461bcd60e51b8152600401610bd890613b0a565b5f5b8251811015610dbf578160045f8584815181106118e7576118e7613b9d565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790558061192281613bb1565b9150506118c8565b5f546001600160a01b031633146119535760405162461bcd60e51b8152600401610bd890613b0a565b600a80549115156101000261ff0019909216919091179055565b5f546001600160a01b031633146119965760405162461bcd60e51b8152600401610bd890613b0a565b804710156119e65760405162461bcd60e51b815260206004820152601860248201527f496e73756666696369656e74204554482062616c616e636500000000000000006044820152606401610bd8565b604051339082156108fc029083905f818181858888f19350505050158015611132573d5f803e3d5ffd5b600a545f90339060ff1680611a3c57506001600160a01b0381165f9081526006602052604090205460ff165b611a585760405162461bcd60e51b8152600401610bd890613b66565b335f9081526003602090815260408083206001600160a01b038816845290915290205483811015611ad95760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610bd8565b611ae83386610ef58785613bc9565b506001949350505050565b600a545f90339060ff1680611b1f57506001600160a01b0381165f9081526006602052604090205460ff165b611b3b5760405162461bcd60e51b8152600401610bd890613b66565b610d28338585611fcb565b5f546001600160a01b03163314611b6f5760405162461bcd60e51b8152600401610bd890613b0a565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314611bba5760405162461bcd60e51b8152600401610bd890613b0a565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314611c0d5760405162461bcd60e51b8152600401610bd890613b0a565b611c196009600a613cef565b611c239082613cfd565b60125550565b5f546001600160a01b03163314611c525760405162461bcd60e51b8152600401610bd890613b0a565b611c5e6009600a613cef565b611c689082613cfd565b60155550565b5f546001600160a01b03163314611c975760405162461bcd60e51b8152600401610bd890613b0a565b611ca2816001613cfd565b600d5550600c805460ff1916911515919091179055565b5f546001600160a01b03163314611ce25760405162461bcd60e51b8152600401610bd890613b0a565b6001600160a01b03165f908152600460205260409020805460ff19169055565b5f546001600160a01b03163314611d2b5760405162461bcd60e51b8152600401610bd890613b0a565b6001600160a01b03841663a9059cbb84611d4684600a613d14565b611d509086613cfd565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015611d98573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dbc9190613d1f565b5050505050565b5f546001600160a01b03163314611dec5760405162461bcd60e51b8152600401610bd890613b0a565b6001600160a01b038116611e515760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bd8565b611e5a81612c28565b50565b5f546001600160a01b03163314611e865760405162461bcd60e51b8152600401610bd890613b0a565b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611f0a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610bd8565b6001600160a01b038216611f6b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610bd8565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661202f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610bd8565b6001600160a01b0382166120915760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610bd8565b5f81116120f25760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610bd8565b6120fb8361180d565b8111156121645760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610bd8565b6001600160a01b0383165f9081526007602052604090205460ff161580156121a457506001600160a01b0382165f9081526007602052604090205460ff16155b6121f05760405162461bcd60e51b815260206004820181905260248201527f596f7520617265206120626f742c20736f20796f752063616e742073656c6c2e6044820152606401610bd8565b6001600160a01b0383165f9081526004602052604090205460ff1615801561223057506001600160a01b0382165f9081526004602052604090205460ff16155b1561227c57600a5460ff1661227c5760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b6044820152606401610bd8565b6017544210801561229a5750600f546001600160a01b038481169116145b1561232957600980546001810182555f919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319166001600160a01b0384161790556122f582305f19611ea8565b6123028383835f806128ec565b6001600160a01b0382165f908152600760205260409020805460ff19166001179055505050565b600f546001600160a01b03848116911614801561235e57506001600160a01b0382165f9081526004602052604090205460ff16155b80156123735750600a5462010000900460ff16155b1561242f576013548111156123ca5760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d69740000006044820152606401610bd8565b601554816123d78461180d565b6123e19190613b53565b111561242f5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610bd8565b600f546001600160a01b0384811691161480159061246557506001600160a01b0382165f9081526004602052604090205460ff16155b801561248957506001600160a01b0383165f9081526004602052604090205460ff16155b801561249e5750600a5462010000900460ff16155b156125ff576014548111156124f55760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d697400006044820152606401610bd8565b600f546001600160a01b0383811691161461256f57601554816125178461180d565b6125219190613b53565b111561256f5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610bd8565b600c5460ff16156125ff576001600160a01b0383165f908152600b602052604081205461259c9042613bc9565b9050600d548110156125e35760405162461bcd60e51b815260206004820152601060248201526f10dbdbdb191bdddb88195b98589b195960821b6044820152606401610bd8565b506001600160a01b0383165f908152600b602052604090204290555b61260b6009600a613cef565b61261690600a613cfd565b816126208561180d565b61262a9190613bc9565b1115801561264557505f546001600160a01b03848116911614155b1561268c576126538361180d565b816126606009600a613cef565b61266b90600a613cfd565b6126759190613b53565b61267f9190613bc9565b6126899082613bc9565b90505b5f6012546126993061180d565b600a54911115915062010000900460ff161580156126be5750600a54610100900460ff165b80156126c75750805b80156126e15750600f546001600160a01b03858116911614155b801561270557506001600160a01b0384165f9081526004602052604090205460ff16155b801561272957506001600160a01b0383165f9081526004602052604090205460ff16155b156127d857600f546001600160a01b039081169084160361278f576012546040805160c08101825260225481526023546020820152602454918101919091526025546060820152602654608082015260275460a082015261278a9190612c77565b6127d8565b6012546040805160c081018252601c548152601d54602080830191909152601e5492820192909252601f5460608201529054608082015260215460a08201526127d89190612c77565b600a546001905f9062010000900460ff168061280b57506001600160a01b0386165f9081526004602052604090205460ff165b8061282d57506001600160a01b0385165f9081526004602052604090205460ff165b15612836575f91505b600f546001600160a01b0390811690861603612850575060015b61285d86868685856128ec565b505050505050565b5f805f612870612e5f565b909250905061287f8183613bdc565b9250505090565b61288e61373d565b612899848484612fd9565b90506128ae8185856128a9612865565b6131dc565b608086015260608501526040840152602083015281526128d681846128d1612865565b6132c9565b60e084015260c083015260a08201529392505050565b5f6128f8848484612886565b6001600160a01b0387165f9081526005602052604090205490915060ff1615612957576001600160a01b0386165f9081526002602052604090205461293e908590613bc9565b6001600160a01b0387165f908152600260205260409020555b6001600160a01b0385165f9081526005602052604090205460ff16156129b8576101008101516001600160a01b0386165f9081526002602052604090205461299f9190613b53565b6001600160a01b0386165f908152600260205260409020555b80516001600160a01b0387165f908152600160205260409020546129dc9190613bc9565b6001600160a01b038088165f9081526001602090815260408083209490945584015191881681529190912054612a129190613b53565b6001600160a01b0386165f908152600160205260409081902091909155810151151580612a4357505f816101200151115b15612a5b57612a5b8160400151826101200151613321565b5f81608001511180612a7157505f816101600151115b15612b1657612a898160800151826101600151613354565b306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836101a00151846101c00151856101800151866101400151876101600151612ae69190613b53565b612af09190613b53565b612afa9190613b53565b612b049190613b53565b60405190815260200160405180910390a35b5f81606001511180612b2c57505f816101400151115b15612b4457612b4481606001518261014001516133c6565b5f8160c001511180612b5a57505f816101a00151115b15612b7257612b728160c00151826101a001516133da565b5f8160a001511180612b8857505f816101800151115b15612ba057612ba08160a001518261018001516133ee565b5f8160e001511180612bb657505f816101c00151115b15612bce57612bce8160e00151826101c00151613402565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836101000151604051612c1891815260200190565b60405180910390a3505050505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600a805462ff0000191662010000179055608081015160a08201516060830151602084015160408501515f94939291612caf91613b53565b612cb99190613b53565b612cc39190613b53565b612ccd9190613b53565b612cd8906002613cfd565b90505f81836040015185612cec9190613cfd565b612cf69190613bdc565b90505f612d038286613bc9565b905047612d0f82613416565b5f612d1a8247613bc9565b90505f866040015186612d2d9190613bc9565b612d379083613bdc565b90505f876040015182612d4a9190613cfd565b90508015612d5c57612d5c868261355e565b60208801515f90612d6e846002613cfd565b612d789190613cfd565b90508015612d9657601854612d96906001600160a01b031682613628565b60608901515f90612da8856002613cfd565b612db29190613cfd565b90508015612dd057601954612dd0906001600160a01b031682613628565b60a08a01515f90612de2866002613cfd565b612dec9190613cfd565b90508015612e0a57601b54612e0a906001600160a01b031682613628565b60808b01515f90612e1c876002613cfd565b612e269190613cfd565b90508015612e4457601a54612e44906001600160a01b031682613628565b5050600a805462ff0000191690555050505050505050505050565b6011546010545f918291825b600854811015612fa8578260015f60088481548110612e8c57612e8c613b9d565b5f9182526020808320909101546001600160a01b031683528201929092526040019020541180612ef457508160025f60088481548110612ece57612ece613b9d565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054115b15612f0a57601154601054945094505050509091565b60015f60088381548110612f2057612f20613b9d565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054612f4e9084613bc9565b925060025f60088381548110612f6657612f66613b9d565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054612f949083613bc9565b915080612fa081613bb1565b915050612e6b565b50601054601154612fb99190613bdc565b821015612fd0576011546010549350935050509091565b90939092509050565b612fe161373d565b82612ff3576101008101849052610f81565b6130266040518060c001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b821561306b57506040805160c08101825260225481526023546020820152602454918101919091526025546060820152602654608082015260275460a08201526130a9565b506040805160c081018252601c548152601d54602080830191909152601e5492820192909252601f5460608201529054608082015260215460a08201525b80516064906130b89087613cfd565b6130c29190613bdc565b61012083015260208101516064906130da9087613cfd565b6130e49190613bdc565b61014083015260408101516064906130fc9087613cfd565b6131069190613bdc565b610160830152606081015160649061311e9087613cfd565b6131289190613bdc565b61018083015260808101516064906131409087613cfd565b61314a9190613bdc565b6101a083015260a08101516064906131629087613cfd565b61316c9190613bdc565b6101c083018190526101a083015161018084015161016085015161014086015161012087015161319c908b613bc9565b6131a69190613bc9565b6131b09190613bc9565b6131ba9190613bc9565b6131c49190613bc9565b6131ce9190613bc9565b610100830152509392505050565b5f808080806131eb8689613cfd565b94508661320257508392505f9150819050806132be565b858961012001516132139190613cfd565b9250858961014001516132269190613cfd565b9150858961016001516132399190613cfd565b90505f868a610180015161324d9190613cfd565b90505f878b6101a001516132619190613cfd565b90505f888c6101c001516132759190613cfd565b905080828486886132868b8e613bc9565b6132909190613bc9565b61329a9190613bc9565b6132a49190613bc9565b6132ae9190613bc9565b6132b89190613bc9565b96505050505b945094509450945094565b5f805f846132de57505f915081905080613318565b838661018001516132ef9190613cfd565b925083866101a001516133029190613cfd565b915083866101c001516133159190613cfd565b90505b93509350939050565b8160115f8282546133329190613bc9565b9091555050602880548291905f9061334b908490613b53565b90915550505050565b8060286002015f8282546133689190613b53565b9091555050305f9081526005602052604090205460ff16156133a857305f90815260026020526040812080548392906133a2908490613b53565b90915550505b305f908152600160205260408120805484929061334b908490613b53565b8060286001015f8282546133689190613b53565b8060286004015f8282546133689190613b53565b8060286003015f8282546133689190613b53565b8060286005015f8282546133689190613b53565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061344957613449613b9d565b6001600160a01b03928316602091820292909201810191909152600e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156134a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134c49190613d3a565b816001815181106134d7576134d7613b9d565b6001600160a01b039283166020918202929092010152600e546134fd9130911684611ea8565b600e5460405163791ac94760e01b81526001600160a01b039091169063791ac947906135359085905f90869030904290600401613d55565b5f604051808303815f87803b15801561354c575f80fd5b505af115801561285d573d5f803e3d5ffd5b600e546135769030906001600160a01b031684611ea8565b600e546001600160a01b031663f305d7198230855f8061359d5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015613603573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611dbc9190613dc4565b804710156136785760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610bd8565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146136c1576040519150601f19603f3d011682016040523d82523d5f602084013e6136c6565b606091505b5050905080610dbf5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610bd8565b604051806101e001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b5f805f805f8060c087890312156137b9575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b5f6020808352835180828501525f5b8181101561380e578581018301518582016040015282016137f2565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611e5a575f80fd5b803561384d8161382e565b919050565b5f8060408385031215613863575f80fd5b823561386e8161382e565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b8015158114611e5a575f80fd5b803561384d81613890565b5f80604083850312156138b9575f80fd5b823567ffffffffffffffff808211156138d0575f80fd5b818501915085601f8301126138e3575f80fd5b81356020828211156138f7576138f761387c565b8160051b604051601f19603f8301168101818110868211171561391c5761391c61387c565b604052928352818301935084810182019289841115613939575f80fd5b948201945b8386101561395e5761394f86613842565b8552948201949382019361393e565b965061396d905087820161389d565b9450505050509250929050565b5f6020828403121561398a575f80fd5b8135610f818161382e565b5f805f606084860312156139a7575f80fd5b83356139b28161382e565b925060208401356139c28161382e565b929592945050506040919091013590565b5f602082840312156139e3575f80fd5b5035919050565b5f602082840312156139fa575f80fd5b8135610f8181613890565b5f8060408385031215613a16575f80fd5b8235613a218161382e565b91506020830135613a318161382e565b809150509250929050565b5f8060408385031215613a4d575f80fd5b823591506020830135613a3181613890565b5f8060408385031215613a70575f80fd5b50508035926020909101359150565b5f8060408385031215613a90575f80fd5b8235613a9b8161382e565b91506020830135613a3181613890565b5f8060408385031215613abc575f80fd5b823561386e81613890565b5f805f8060808587031215613ada575f80fd5b8435613ae58161382e565b93506020850135613af58161382e565b93969395505050506040820135916060013590565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561138657611386613b3f565b60208082526017908201527f54726164696e67206e6f7420656e61626c656420796574000000000000000000604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60018201613bc257613bc2613b3f565b5060010190565b8181038181111561138657611386613b3f565b5f82613bf657634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603160045260245ffd5b600181815b80851115613c4957815f1904821115613c2f57613c2f613b3f565b80851615613c3c57918102915b93841c9390800290613c14565b509250929050565b5f82613c5f57506001611386565b81613c6b57505f611386565b8160018114613c815760028114613c8b57613ca7565b6001915050611386565b60ff841115613c9c57613c9c613b3f565b50506001821b611386565b5060208310610133831016604e8410600b8410161715613cca575081810a611386565b613cd48383613c0f565b805f1904821115613ce757613ce7613b3f565b029392505050565b5f610f8160ff841683613c51565b808202811582820484141761138657611386613b3f565b5f610f818383613c51565b5f60208284031215613d2f575f80fd5b8151610f8181613890565b5f60208284031215613d4a575f80fd5b8151610f818161382e565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015613da35784516001600160a01b031683529383019391830191600101613d7e565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215613dd6575f80fd5b835192506020840151915060408401519050925092509256fea26469706673582212204b6ab975a847eea8caf3dd096467287ac51aa0e5acf1c0d71b6e449ab74ac96664736f6c63430008140033

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

0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000000000000000000000000000000000000000001e

-----Decoded View---------------
Arg [0] : routerAddress (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [1] : antiSnipeSeconds (uint256): 30

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [1] : 000000000000000000000000000000000000000000000000000000000000001e


Deployed Bytecode Sourcemap

3233:24414:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12148:352;;;;;;;;;;-1:-1:-1;12148:352:0;;;;;:::i;:::-;;:::i;:::-;;7527:83;;;;;;;;;;-1:-1:-1;7597:5:0;;;;;;;;;;;;-1:-1:-1;;;7597:5:0;;;;7527:83;;;;;;;:::i;:::-;;;;;;;;8287:181;;;;;;;;;;-1:-1:-1;8287:181:0;;;;;:::i;:::-;;:::i;:::-;;;1855:14:1;;1848:22;1830:41;;1818:2;1803:18;8287:181:0;1690:187:1;26349:207:0;;;;;;;;;;-1:-1:-1;26349:207:0;;;;;:::i;:::-;;:::i;7823:95::-;;;;;;;;;;-1:-1:-1;7903:7:0;;7823:95;;;3612:25:1;;;3600:2;3585:18;7823:95:0;3466:177:1;25438:102:0;;;;;;;;;;-1:-1:-1;25438:102:0;;;;;:::i;:::-;;:::i;8476:430::-;;;;;;;;;;-1:-1:-1;8476:430:0;;;;;:::i;:::-;;:::i;10634:248::-;;;;;;;;;;-1:-1:-1;10634:248:0;;;;;:::i;:::-;;:::i;7709:83::-;;;;;;;;;;-1:-1:-1;7709:83:0;;4305:1;4688:36:1;;4676:2;4661:18;7709:83:0;4546:184:1;11297:475:0;;;;;;;;;;-1:-1:-1;11297:475:0;;;;;:::i;:::-;;:::i;10355:171::-;;;;;;;;;;-1:-1:-1;10355:171:0;;;;;:::i;:::-;;:::i;8914:228::-;;;;;;;;;;-1:-1:-1;8914:228:0;;;;;:::i;:::-;;:::i;25552:110::-;;;;;;;;;;-1:-1:-1;25552:110:0;;;;;:::i;:::-;;:::i;27035:154::-;;;;;;;;;;-1:-1:-1;27035:154:0;;;;;:::i;:::-;;:::i;11780:111::-;;;;;;;;;;-1:-1:-1;11780:111:0;;;;;:::i;:::-;;:::i;9875:470::-;;;;;;;;;;-1:-1:-1;9875:470:0;;;;;:::i;:::-;;:::i;3803:26::-;;;;;;;;;;-1:-1:-1;3803:26:0;;;;;;;;22121:384;;;;;;;;;;;;;:::i;10956:333::-;;;;;;;;;;-1:-1:-1;10956:333:0;;;;;:::i;:::-;;:::i;12017:123::-;;;;;;;;;;-1:-1:-1;12017:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;12105:27:0;12081:4;12105:27;;;:18;:27;;;;;;;;;12017:123;26709:183;;;;;;;;;;-1:-1:-1;26709:183:0;;;;;:::i;:::-;;:::i;26211:126::-;;;;;;;;;;-1:-1:-1;26211:126:0;;;;;:::i;:::-;;:::i;12512:360::-;;;;;;;;;;-1:-1:-1;12512:360:0;;;;;:::i;:::-;;:::i;3622:48::-;;;;;;;;;;-1:-1:-1;3622:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4599:51;;;;;;;;;;;;;;;;4657:53;;;;;;;;;;;;;;;;4542:50;;;;;;;;;;;;;;;;3836:23;;;;;;;;;;-1:-1:-1;3836:23:0;;;;;;;;;;;7926:198;;;;;;;;;;-1:-1:-1;7926:198:0;;;;;:::i;:::-;;:::i;1662:94::-;;;;;;;;;;;;;:::i;5402:45::-;;;;;;;;;;-1:-1:-1;5402:45:0;;;;;;;;;;;;;;;;;;;;;;;;;6615:25:1;;;6671:2;6656:18;;6649:34;;;;6699:18;;;6692:34;;;;6757:2;6742:18;;6735:34;6800:3;6785:19;;6778:35;6844:3;6829:19;;6822:35;6602:3;6587:19;5402:45:0;6328:535:1;4787:74:0;;;;;;;;;;-1:-1:-1;4787:74:0;;;;-1:-1:-1;;;;;4787:74:0;;;;;;-1:-1:-1;;;;;7032:32:1;;;7014:51;;7002:2;6987:18;4787:74:0;6868:203:1;5027:73:0;;;;;;;;;;-1:-1:-1;5027:73:0;;;;-1:-1:-1;;;;;5027:73:0;;;9747:120;;;;;;;;;;-1:-1:-1;9747:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;9839:20:0;9815:4;9839:20;;;:11;:20;;;;;;;;;9747:120;1439:87;;;;;;;;;;-1:-1:-1;1485:7:0;1512:6;-1:-1:-1;;;;;1512:6:0;1439:87;;25095:209;;;;;;;;;;-1:-1:-1;25095:209:0;;;;;:::i;:::-;;:::i;4868:69::-;;;;;;;;;;-1:-1:-1;4868:69:0;;;;-1:-1:-1;;;;;4868:69:0;;;26098:101;;;;;;;;;;-1:-1:-1;26098:101:0;;;;;:::i;:::-;;:::i;7616:87::-;;;;;;;;;;-1:-1:-1;7688:7:0;;;;;;;;;;;;-1:-1:-1;;;7688:7:0;;;;7616:87;;5711:36;;;;;;;;;;-1:-1:-1;5711:36:0;;;;;;;;;;;;;;;;;;;;;27201:196;;;;;;;;;;-1:-1:-1;27201:196:0;;;;;:::i;:::-;;:::i;9150:390::-;;;;;;;;;;-1:-1:-1;9150:390:0;;;;;:::i;:::-;;:::i;4242:19::-;;;;;;;;;;-1:-1:-1;4242:19:0;;;;-1:-1:-1;;;;;4242:19:0;;;9552:187;;;;;;;;;;-1:-1:-1;9552:187:0;;;;;:::i;:::-;;:::i;25312:114::-;;;;;;;;;;-1:-1:-1;25312:114:0;;;;;:::i;:::-;;:::i;26568:129::-;;;;;;;;;;-1:-1:-1;26568:129:0;;;;;:::i;:::-;;:::i;25960:130::-;;;;;;;;;;-1:-1:-1;25960:130:0;;;;;:::i;:::-;;:::i;4011:40::-;;;;;;;;;;;;;;;;26904:123;;;;;;;;;;-1:-1:-1;26904:123:0;;;;;:::i;:::-;;:::i;8136:143::-;;;;;;;;;;-1:-1:-1;8136:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;8244:18:0;;;8217:7;8244:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8136:143;4945:75;;;;;;;;;;-1:-1:-1;4945:75:0;;;;-1:-1:-1;;;;;4945:75:0;;;4478:57;;;;;;;;;;;;;;;;25800:152;;;;;;;;;;-1:-1:-1;25800:152:0;;;;;:::i;:::-;;:::i;10534:92::-;;;;;;;;;;-1:-1:-1;10603:8:0;:15;10534:92;;11899:110;;;;;;;;;;-1:-1:-1;11899:110:0;;;;;:::i;:::-;;:::i;3969:35::-;;;;;;;;;;-1:-1:-1;3969:35:0;;;;;;;;27409:193;;;;;;;;;;-1:-1:-1;27409:193:0;;;;;:::i;:::-;;:::i;1764:192::-;;;;;;;;;;-1:-1:-1;1764:192:0;;;;;:::i;:::-;;:::i;5454:49::-;;;;;;;;;;-1:-1:-1;5454:49:0;;;;;;;;;;;;;;;;;;;;;25674:114;;;;;;;;;;-1:-1:-1;25674:114:0;;;;;:::i;:::-;;:::i;4214:21::-;;;;;;;;;;-1:-1:-1;4214:21:0;;;;-1:-1:-1;;;;;4214:21:0;;;12148:352;1485:7;1512:6;-1:-1:-1;;;;;1512:6:0;940:10;1574:23;1566:68;;;;-1:-1:-1;;;1566:68:0;;;;;;;:::i;:::-;;;;;;;;;12363:2:::1;12351:8:::0;12340:10;12335:4;12324:10;12308:15:::1;12313:10:::0;12308:4;:15:::1;:::i;:::-;:26;;;;:::i;:::-;:31;;;;:::i;:::-;:42;;;;:::i;:::-;:51;;;;:::i;:::-;:57;;12300:86;;;::::0;-1:-1:-1;;;12300:86:0;;8968:2:1;12300:86:0::1;::::0;::::1;8950:21:1::0;9007:2;8987:18;;;8980:30;-1:-1:-1;;;9026:18:1;;;9019:46;9082:18;;12300:86:0::1;8766:340:1::0;12300:86:0::1;12405:58;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12397:5:::1;:66:::0;;;;;;;;;;;;;;;;;;;;;;12479:13;::::1;::::0;-1:-1:-1;;12479:13:0::1;12148:352:::0;;;;;;:::o;8287:181::-;4116:14;;8382:4;;8362:10;;4116:14;;;:42;;-1:-1:-1;;;;;;4134:24:0;;;;;;:15;:24;;;;;;;;4116:42;4108:78;;;;-1:-1:-1;;;4108:78:0;;;;;;;:::i;:::-;8399:39:::1;940:10:::0;8422:7:::1;8431:6;8399:8;:39::i;:::-;-1:-1:-1::0;8456:4:0::1;::::0;8287:181;-1:-1:-1;;;8287:181:0:o;26349:207::-;1485:7;1512:6;-1:-1:-1;;;;;1512:6:0;940:10;1574:23;1566:68;;;;-1:-1:-1;;;1566:68:0;;;;;;;:::i;:::-;26448:9:::1;26444:105;26466:8;:15;26462:1;:19;26444:105;;;26532:5;26502:14;:27;26517:8;26526:1;26517:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;26502:27:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;26502:27:0;:35;;-1:-1:-1;;26502:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26483:3;::::1;::::0;::::1;:::i;:::-;;;;26444:105;;;;26349:207:::0;;:::o;25438:102::-;1485:7;1512:6;-1:-1:-1;;;;;1512:6:0;940:10;1574:23;1566:68;;;;-1:-1:-1;;;1566:68:0;;;;;;;:::i;:::-;25511:9:::1;:21:::0;;-1:-1:-1;;;;;;25511:21:0::1;-1:-1:-1::0;;;;;25511:21:0;;;::::1;::::0;;;::::1;::::0;;25438:102::o;8476:430::-;4116:14;;8590:4;;8573:6;;4116:14;;;:42;;-1:-1:-1;;;;;;4134:24:0;;;;;;:15;:24;;;;;;;;4116:42;4108:78;;;;-1:-1:-1;;;4108:78:0;;;;;;;:::i;:::-;8607:36:::1;8617:6;8625:9;8636:6;8607:9;:36::i;:::-;-1:-1:-1::0;;;;;8683:19:0;::::1;8656:24;8683:19:::0;;;:11:::1;:19;::::0;;;;;;;940:10;8683:33;;;;;;;;8735:26;;::::1;;8727:79;;;::::0;-1:-1:-1;;;8727:79:0;;9937:2:1;8727:79:0::1;::::0;::::1;9919:21:1::0;9976:2;9956:18;;;9949:30;10015:34;9995:18;;;9988:62;-1:-1:-1;;;10066:18:1;;;10059:38;10114:19;;8727:79:0::1;9735:404:1::0;8727:79:0::1;8817:57;8826:6:::0;940:10;8848:25:::1;8867:6:::0;8848:16;:25:::1;:::i;:::-;8817:8;:57::i;:::-;-1:-1:-1::0;8894:4:0::1;::::0;8476:430;-1:-1:-1;;;;;8476:430:0:o;10634:248::-;10700:7;10739;;10728;:18;;10720:73;;;;-1:-1:-1;;;10720:73:0;;10479:2:1;10720:73:0;;;10461:21:1;10518:2;10498:18;;;10491:30;10557:34;10537:18;;;10530:62;-1:-1:-1;;;10608:18:1;;;10601:40;10658:19;;10720:73:0;10277:406:1;10720:73:0;10804:19;10827:10;:8;:10::i;:::-;10804:33;-1:-1:-1;10855:19:0;10804:33;10855:7;:19;:::i;:::-;10848:26;10634:248;-1:-1:-1;;;10634:248:0:o;11297:475::-;1485:7;1512:6;-1:-1:-1;;;;;1512:6:0;940:10;1574:23;1566:68;;;;-1:-1:-1;;;1566:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11379:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;11371:56;;;::::0;-1:-1:-1;;;11371:56:0;;11112:2:1;11371:56:0::1;::::0;::::1;11094:21:1::0;11151:2;11131:18;;;11124:30;11190:25;11170:18;;;11163:53;11233:18;;11371:56:0::1;10910:347:1::0;11371:56:0::1;11443:9;11438:327;11462:9;:16:::0;11458:20;::::1;11438:327;;;11520:7;-1:-1:-1::0;;;;;11504:23:0::1;:9;11514:1;11504:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;11504:12:0::1;:23:::0;11500:254:::1;;11563:9;11573:16:::0;;:20:::1;::::0;11592:1:::1;::::0;11573:20:::1;:::i;:::-;11563:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;11548:9:::1;:12:::0;;-1:-1:-1;;;;;11563:31:0;;::::1;::::0;11558:1;;11548:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;11548:46:0::1;-1:-1:-1::0;;;;;11548:46:0;;::::1;;::::0;;11613:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;11652:11:::1;:20:::0;;;;:28;;-1:-1:-1;;11652:28:0::1;::::0;;11699:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;11699:15:0;;;;;-1:-1:-1;;;;;;11699:15:0::1;::::0;;;;;11438:327:::1;11297:475:::0;:::o;11500:254::-:1;11480:3:::0;::::1;::::0;::::1;:::i;:::-;;;;11438:327;;;;11297:475:::0;:::o;10355:171::-;1485:7;1512:6;-1:-1:-1;;;;;1512:6:0;940:10;1574:23;1566:68;;;;-1:-1:-1;;;1566:68:0;;;;;;;:::i;:::-;10422:14:::1;:22:::0;;-1:-1:-1;;10455:19:0;-1:-1:-1;;10422:22:0;::::1;;10455:19:::0;;;;;;;10422:22:::1;10455:19:::0;;::::1;;::::0;;10512:6:::1;::::0;10494:24:::1;::::0;:15:::1;:24;:::i;:::-;10485:6;:33:::0;-1:-1:-1;10355:171:0:o;8914:228::-;4116:14;;9015:4;;8994:10;;4116:14;;;:42;;-1:-1:-1;;;;;;4134:24:0;;;;;;:15;:24;;;;;;;;4116:42;4108:78;;;;-1:-1:-1;;;4108:78:0;;;;;;;:::i;:::-;940:10;9064:25:::1;::::0;;;:11:::1;:25;::::0;;;;;;;-1:-1:-1;;;;;9064:34:0;::::1;::::0;;;;;;;;9032:80:::1;::::0;940:10;9055:7;;9064:47:::1;::::0;9101:10;;9064:47:::1;:::i;25552:110::-:0;1485:7;1512:6;-1:-1:-1;;;;;1512:6:0;940:10;1574:23;1566:68;;;;-1:-1:-1;;;1566:68:0;;;;;;;:::i;:::-;25629:13:::1;:25:::0;;-1:-1:-1;;;;;;25629:25:0::1;-1:-1:-1::0;;;;;25629:25:0;;;::::1;::::0;;;::::1;::::0;;25552:110::o;27035:154::-;1485:7;1512:6;-1:-1:-1;;;;;1512:6:0;940:10;1574:23;1566:68;;;;-1:-1:-1;;;1566:68:0;;;;;;;:::i;:::-;27129:6:::1;:27:::0;;-1:-1:-1;;;;;27129:27:0;;::::1;-1:-1:-1::0;;;;;;27129:27:0;;::::1;;::::0;;;27167:4:::1;:14:::0;;;;;::::1;::::0;::::1;;::::0;;27035:154::o;11780:111::-;1485:7;1512:6;-1:-1:-1;;;;;1512:6:0;940:10;1574:23;1566:68;;;;-1:-1:-1;;;1566:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11849:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;11849:34:0::1;11879:4;11849:34;::::0;;11780:111::o;9875:470::-;9965:7;10004;;9993;:18;;9985:62;;;;-1:-1:-1;;;9985:62:0;;11596:2:1;9985:62:0;;;11578:21:1;11635:2;11615:18;;;11608:30;11674:33;11654:18;;;11647:61;11725:18;;9985:62:0;11394:355:1;9985:62:0;10063:17;10058:280;;10097:28;10128:32;10139:7;10148:4;10154:5;10128:10;:32::i;:::-;10182:9;;-1:-1:-1;10175:16:0;;-1:-1:-1;10175:16:0;10058:280;10224:28;10255:32;10266:7;10275:4;10281:5;10255:10;:32::i;:::-;10309:17;;;;-1:-1:-1;10302:24:0;;-1:-1:-1;10302:24:0;10058:280;9875:470;;;;:::o;22121:384::-;1485:7;1512:6;-1:-1:-1;;;;;1512:6:0;940:10;1574:23;1566:68;;;;-1:-1:-1;;;1566:68:0;;;;;;;:::i;:::-;22196:15:::1;22187:6;;:24;22179:72;;;::::0;-1:-1:-1;;;22179:72:0;;11956:2:1;22179:72:0::1;::::0;::::1;11938:21:1::0;11995:2;11975:18;;;11968:30;12034:34;12014:18;;;12007:62;-1:-1:-1;;;12085:18:1;;;12078:33;12128:19;;22179:72:0::1;11754:399:1::0;22179:72:0::1;22266:9;22262:199;22285:8;:15:::0;22281:19;::::1;22262:199;;;22321:11;22365:14;4305:1:::0;22365:2:::1;:14;:::i;:::-;22360:19;::::0;:2:::1;:19;:::i;:::-;22335:22;22345:8;22354:1;22345:11;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;22345:11:0::1;22335:9;:22::i;:::-;:44;;;;:::i;:::-;22321:58;;22394:55;22409:8;22418:1;22409:11;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;22409:11:0::1;22422:7;1485::::0;1512:6;-1:-1:-1;;;;;1512:6:0;;1439:87;22422:7:::1;22431:3;22436:5;22443::::0;22394:14:::1;:55::i;:::-;-1:-1:-1::0;22302:3:0;::::1;::::0;::::1;:::i;:::-;;;;22262:199;;;-1:-1:-1::0;22476:21:0::1;::::0;::::1;::::0;;;::::1;22121:384::o:0;10956:333::-;1485:7;1512:6;-1:-1:-1;;;;;1512:6:0;940:10;1574:23;1566:68;;;;-1:-1:-1;;;1566:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11039:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;11038:21;11030:61;;;::::0;-1:-1:-1;;;11030:61:0;;13916:2:1;11030:61:0::1;::::0;::::1;13898:21:1::0;13955:2;13935:18;;;13928:30;13994:29;13974:18;;;13967:57;14041:18;;11030:61:0::1;13714:351:1::0;11030:61:0::1;-1:-1:-1::0;;;;;11105:16:0;::::1;11124:1;11105:16:::0;;;:7:::1;:16;::::0;;;;;:20;11102:108:::1;;-1:-1:-1::0;;;;;11181:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;11161:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;11142:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;11102:108:::1;-1:-1:-1::0;;;;;11220:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;11220:27:0::1;11243:4;11220:27:::0;;::::1;::::0;;;11258:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;11258:23:0::1;::::0;;::::1;::::0;;10956:333::o;26709:183::-;1485:7;1512:6;-1:-1:-1;;;;;1512:6:0;940:10;1574:23;1566:68;;;;-1:-1:-1;;;1566:68:0;;;;;;;:::i;:::-;26820:14:::1;4305:1:::0;26820:2:::1;:14;:::i;:::-;26811:23;::::0;:6;:23:::1;:::i;:::-;26797:11;:37:::0;26870:14:::1;4305:1:::0;26870:2:::1;:14;:::i;:::-;26860:24;::::0;:7;:24:::1;:::i;:::-;26845:12;:39:::0;-1:-1:-1;;26709:183:0:o;26211:126::-;1485:7;1512:6;-1:-1:-1;;;;;1512:6:0;940:10;1574:23;1566:68;;;;-1:-1:-1;;;1566:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26298:23:0;;;::::1;;::::0;;;:14:::1;:23;::::0;;;;:31;;-1:-1:-1;;26298:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26211:126::o;12512:360::-;1485:7;1512:6;-1:-1:-1;;;;;1512:6:0;940:10;1574:23;1566:68;;;;-1:-1:-1;;;1566:68:0;;;;;;;:::i;:::-;12731:2:::1;12719:8:::0;12708:10;12703:4;12692:10;12676:15:::1;12681:10:::0;12676:4;:15:::1;:::i;:::-;:26;;;;:::i;:::-;:31;;;;:::i;:::-;:42;;;;:::i;:::-;:51;;;;:::i;:::-;:57;;12668:86;;;::::0;-1:-1:-1;;;12668:86:0;;8968:2:1;12668:86:0::1;::::0;::::1;8950:21:1::0;9007:2;8987:18;;;8980:30;-1:-1:-1;;;9026:18:1;;;9019:46;9082:18;;12668:86:0::1;8766:340:1::0;12668:86:0::1;12777:58;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;;;;;12765:9:::1;:70:::0;;;;;;;;;;;;;;;;;;;;;;;12851:13;::::1;::::0;-1:-1:-1;;12851:13:0::1;12512:360:::0;;;;;;:::o;7926:198::-;-1:-1:-1;;;;;8016:20:0;;7992:7;8016:20;;;:11;:20;;;;;;;;8012:49;;;-1:-1:-1;;;;;;8045:16:0;;;;;:7;:16;;;;;;;7926:198::o;8012:49::-;-1:-1:-1;;;;;8099:16:0;;;;;;:7;:16;;;;;;8079:37;;:19;:37::i;1662:94::-;1485:7;1512:6;-1:-1:-1;;;;;1512:6:0;940:10;1574:23;1566:68;;;;-1:-1:-1;;;1566:68:0;;;;;;;:::i;:::-;1727:21:::1;1745:1;1727:9;:21::i;:::-;1662:94::o:0;25095:209::-;1485:7;1512:6;-1:-1:-1;;;;;1512:6:0;940:10;1574:23;1566:68;;;;-1:-1:-1;;;1566:68:0;;;;;;;:::i;:::-;25191:9:::1;25187:110;25210:8;:15;25206:1;:19;25187:110;;;25280:5;25246:18;:31;25265:8;25274:1;25265:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;25246:31:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;25246:31:0;:39;;-1:-1:-1;;25246:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25227:3;::::1;::::0;::::1;:::i;:::-;;;;25187:110;;26098:101:::0;1485:7;1512:6;-1:-1:-1;;;;;1512:6:0;940:10;1574:23;1566:68;;;;-1:-1:-1;;;1566:68:0;;;;;;;:::i;:::-;26169:11:::1;:22:::0;;;::::1;;;;-1:-1:-1::0;;26169:22:0;;::::1;::::0;;;::::1;::::0;;26098:101::o;27201:196::-;1485:7;1512:6;-1:-1:-1;;;;;1512:6:0;940:10;1574:23;1566:68;;;;-1:-1:-1;;;1566:68:0;;;;;;;:::i;:::-;27301:9:::1;27276:21;:34;;27268:71;;;::::0;-1:-1:-1;;;27268:71:0;;14272:2:1;27268:71:0::1;::::0;::::1;14254:21:1::0;14311:2;14291:18;;;14284:30;14350:26;14330:18;;;14323:54;14394:18;;27268:71:0::1;14070:348:1::0;27268:71:0::1;27350:39;::::0;27358:10:::1;::::0;27350:39;::::1;;;::::0;27379:9;;27350:39:::1;::::0;;;27379:9;27358:10;27350:39;::::1;;;;;;;;;;;;;::::0;::::1;;;;9150:390:::0;4116:14;;9256:4;;9235:10;;4116:14;;;:42;;-1:-1:-1;;;;;;4134:24:0;;;;;;:15;:24;;;;;;;;4116:42;4108:78;;;;-1:-1:-1;;;4108:78:0;;;;;;;:::i;:::-;940:10;9273:24:::1;9300:25:::0;;;:11:::1;:25;::::0;;;;;;;-1:-1:-1;;;;;9300:34:0;::::1;::::0;;;;;;;;9353:35;;::::1;;9345:85;;;::::0;-1:-1:-1;;;9345:85:0;;14625:2:1;9345:85:0::1;::::0;::::1;14607:21:1::0;14664:2;14644:18;;;14637:30;14703:34;14683:18;;;14676:62;-1:-1:-1;;;14754:18:1;;;14747:35;14799:19;;9345:85:0::1;14423:401:1::0;9345:85:0::1;9441:67;940:10:::0;9464:7;9473:34:::1;9492:15:::0;9473:16;:34:::1;:::i;9441:67::-;-1:-1:-1::0;9528:4:0::1;::::0;9150:390;-1:-1:-1;;;;9150:390:0:o;9552:187::-;4116:14;;9650:4;;9629:10;;4116:14;;;:42;;-1:-1:-1;;;;;;4134:24:0;;;;;;:15;:24;;;;;;;;4116:42;4108:78;;;;-1:-1:-1;;;4108:78:0;;;;;;;:::i;:::-;9671:40:::1;9681:10;9693:9;9704:6;9671:9;:40::i;25312:114::-:0;1485:7;1512:6;-1:-1:-1;;;;;1512:6:0;940:10;1574:23;1566:68;;;;-1:-1:-1;;;1566:68:0;;;;;;;:::i;:::-;25391:15:::1;:27:::0;;-1:-1:-1;;;;;;25391:27:0::1;-1:-1:-1::0;;;;;25391:27:0;;;::::1;::::0;;;::::1;::::0;;25312:114::o;26568:129::-;1485:7;1512:6;-1:-1:-1;;;;;1512:6:0;940:10;1574:23;1566:68;;;;-1:-1:-1;;;1566:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26657:24:0;;;::::1;;::::0;;;:15:::1;:24;::::0;;;;:32;;-1:-1:-1;;26657:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26568:129::o;25960:130::-;1485:7;1512:6;-1:-1:-1;;;;;1512:6:0;940:10;1574:23;1566:68;;;;-1:-1:-1;;;1566:68:0;;;;;;;:::i;:::-;26069:13:::1;4305:1;26069:2;:13;:::i;:::-;26060:22;::::0;:6;:22:::1;:::i;:::-;26039:18;:43:::0;-1:-1:-1;25960:130:0:o;26904:123::-;1485:7;1512:6;-1:-1:-1;;;;;1512:6:0;940:10;1574:23;1566:68;;;;-1:-1:-1;;;1566:68:0;;;;;;;:::i;:::-;27005:14:::1;4305:1:::0;27005:2:::1;:14;:::i;:::-;26996:23;::::0;:6;:23:::1;:::i;:::-;26979:14;:40:::0;-1:-1:-1;26904:123:0:o;25800:152::-;1485:7;1512:6;-1:-1:-1;;;;;1512:6:0;940:10;1574:23;1566:68;;;;-1:-1:-1;;;1566:68:0;;;;;;;:::i;:::-;25894:16:::1;:4:::0;25901:9:::1;25894:16;:::i;:::-;25879:12;:31:::0;-1:-1:-1;25921:15:0::1;:23:::0;;-1:-1:-1;;25921:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25800:152::o;11899:110::-;1485:7;1512:6;-1:-1:-1;;;;;1512:6:0;940:10;1574:23;1566:68;;;;-1:-1:-1;;;1566:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11966:27:0::1;11996:5;11966:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;11966:35:0::1;::::0;;11899:110::o;27409:193::-;1485:7;1512:6;-1:-1:-1;;;;;1512:6:0;940:10;1574:23;1566:68;;;;-1:-1:-1;;;1566:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27534:27:0;::::1;;27562:3:::0;27581:12:::1;27585:8:::0;27581:2:::1;:12;:::i;:::-;27567:26;::::0;:12;:26:::1;:::i;:::-;27534:60;::::0;-1:-1:-1;;;;;;27534:60:0::1;::::0;;;;;;-1:-1:-1;;;;;15157:32:1;;;27534:60:0::1;::::0;::::1;15139:51:1::0;15206:18;;;15199:34;15112:18;;27534:60:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27409:193:::0;;;;:::o;1764:192::-;1485:7;1512:6;-1:-1:-1;;;;;1512:6:0;940:10;1574:23;1566:68;;;;-1:-1:-1;;;1566:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1853:22:0;::::1;1845:73;;;::::0;-1:-1:-1;;;1845:73:0;;15696:2:1;1845:73:0::1;::::0;::::1;15678:21:1::0;15735:2;15715:18;;;15708:30;15774:34;15754:18;;;15747:62;-1:-1:-1;;;15825:18:1;;;15818:36;15871:19;;1845:73:0::1;15494:402:1::0;1845:73:0::1;1929:19;1939:8;1929:9;:19::i;:::-;1764:192:::0;:::o;25674:114::-;1485:7;1512:6;-1:-1:-1;;;;;1512:6:0;940:10;1574:23;1566:68;;;;-1:-1:-1;;;1566:68:0;;;;;;;:::i;:::-;25753:15:::1;:27:::0;;-1:-1:-1;;;;;;25753:27:0::1;-1:-1:-1::0;;;;;25753:27:0;;;::::1;::::0;;;::::1;::::0;;25674:114::o;17621:335::-;-1:-1:-1;;;;;17714:19:0;;17706:68;;;;-1:-1:-1;;;17706:68:0;;16103:2:1;17706:68:0;;;16085:21:1;16142:2;16122:18;;;16115:30;16181:34;16161:18;;;16154:62;-1:-1:-1;;;16232:18:1;;;16225:34;16276:19;;17706:68:0;15901:400:1;17706:68:0;-1:-1:-1;;;;;17793:21:0;;17785:68;;;;-1:-1:-1;;;17785:68:0;;16508:2:1;17785:68:0;;;16490:21:1;16547:2;16527:18;;;16520:30;16586:34;16566:18;;;16559:62;-1:-1:-1;;;16637:18:1;;;16630:32;16679:19;;17785:68:0;16306:398:1;17785:68:0;-1:-1:-1;;;;;17864:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;17916:32;;3612:25:1;;;17916:32:0;;3585:18:1;17916:32:0;;;;;;;17621:335;;;:::o;17964:2683::-;-1:-1:-1;;;;;18052:18:0;;18044:68;;;;-1:-1:-1;;;18044:68:0;;16911:2:1;18044:68:0;;;16893:21:1;16950:2;16930:18;;;16923:30;16989:34;16969:18;;;16962:62;-1:-1:-1;;;17040:18:1;;;17033:35;17085:19;;18044:68:0;16709:401:1;18044:68:0;-1:-1:-1;;;;;18131:16:0;;18123:64;;;;-1:-1:-1;;;18123:64:0;;17317:2:1;18123:64:0;;;17299:21:1;17356:2;17336:18;;;17329:30;17395:34;17375:18;;;17368:62;-1:-1:-1;;;17446:18:1;;;17439:33;17489:19;;18123:64:0;17115:399:1;18123:64:0;18215:1;18206:6;:10;18198:64;;;;-1:-1:-1;;;18198:64:0;;17721:2:1;18198:64:0;;;17703:21:1;17760:2;17740:18;;;17733:30;17799:34;17779:18;;;17772:62;-1:-1:-1;;;17850:18:1;;;17843:39;17899:19;;18198:64:0;17519:405:1;18198:64:0;18291:15;18301:4;18291:9;:15::i;:::-;18281:6;:25;;18273:86;;;;-1:-1:-1;;;18273:86:0;;18131:2:1;18273:86:0;;;18113:21:1;18170:2;18150:18;;;18143:30;18209:34;18189:18;;;18182:62;-1:-1:-1;;;18260:18:1;;;18253:47;18317:19;;18273:86:0;17929:413:1;18273:86:0;-1:-1:-1;;;;;18379:20:0;;;;;;:14;:20;;;;;;;;18378:21;:44;;;;-1:-1:-1;;;;;;18404:18:0;;;;;;:14;:18;;;;;;;;18403:19;18378:44;18370:89;;;;-1:-1:-1;;;18370:89:0;;18549:2:1;18370:89:0;;;18531:21:1;;;18568:18;;;18561:30;18627:34;18607:18;;;18600:62;18679:18;;18370:89:0;18347:356:1;18370:89:0;-1:-1:-1;;;;;18484:24:0;;;;;;:18;:24;;;;;;;;18483:25;:52;;;;-1:-1:-1;;;;;;18513:22:0;;;;;;:18;:22;;;;;;;;18512:23;18483:52;18480:128;;;18559:14;;;;18551:45;;;;-1:-1:-1;;;18551:45:0;;18910:2:1;18551:45:0;;;18892:21:1;18949:2;18929:18;;;18922:30;-1:-1:-1;;;18968:18:1;;;18961:48;19026:18;;18551:45:0;18708:342:1;18551:45:0;18641:6;;18623:15;:24;:40;;;;-1:-1:-1;18659:4:0;;-1:-1:-1;;;;;18651:12:0;;;18659:4;;18651:12;18623:40;18620:2010;;;18716:8;:17;;;;;;;-1:-1:-1;18716:17:0;;;;;;;;-1:-1:-1;;;;;;18716:17:0;-1:-1:-1;;;;;18716:17:0;;;;;18748:30;18716:17;18768:4;-1:-1:-1;;18748:8:0;:30::i;:::-;18793:46;18808:4;18814:2;18818:6;18826:5;18833;18793:14;:46::i;:::-;-1:-1:-1;;;;;18854:18:0;;;;;;:14;:18;;;;;:25;;-1:-1:-1;;18854:25:0;18875:4;18854:25;;;26444:105:::1;26349:207:::0;;:::o;18620:2010::-;18921:4;;-1:-1:-1;;;;;18913:12:0;;;18921:4;;18913:12;:39;;;;-1:-1:-1;;;;;;18930:22:0;;;;;;:18;:22;;;;;;;;18929:23;18913:39;:52;;;;-1:-1:-1;18957:8:0;;;;;;;18956:9;18913:52;18910:258;;;19003:11;;18993:6;:21;;18985:63;;;;-1:-1:-1;;;18985:63:0;;19257:2:1;18985:63:0;;;19239:21:1;19296:2;19276:18;;;19269:30;19335:31;19315:18;;;19308:59;19384:18;;18985:63:0;19055:353:1;18985:63:0;19101:14;;19091:6;19075:13;19085:2;19075:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;19067:85;;;;-1:-1:-1;;;19067:85:0;;19615:2:1;19067:85:0;;;19597:21:1;;;19634:18;;;19627:30;19693:34;19673:18;;;19666:62;19745:18;;19067:85:0;19413:356:1;19067:85:0;19207:4;;-1:-1:-1;;;;;19199:12:0;;;19207:4;;19199:12;;;;:39;;-1:-1:-1;;;;;;19216:22:0;;;;;;:18;:22;;;;;;;;19215:23;19199:39;:68;;;;-1:-1:-1;;;;;;19243:24:0;;;;;;:18;:24;;;;;;;;19242:25;19199:68;:81;;;;-1:-1:-1;19272:8:0;;;;;;;19271:9;19199:81;19196:613;;;19318:12;;19308:6;:22;;19300:65;;;;-1:-1:-1;;;19300:65:0;;19976:2:1;19300:65:0;;;19958:21:1;20015:2;19995:18;;;19988:30;20054:32;20034:18;;;20027:60;20104:18;;19300:65:0;19774:354:1;19300:65:0;19393:4;;-1:-1:-1;;;;;19387:10:0;;;19393:4;;19387:10;19384:142;;19455:14;;19445:6;19429:13;19439:2;19429:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;19421:85;;;;-1:-1:-1;;;19421:85:0;;19615:2:1;19421:85:0;;;19597:21:1;;;19634:18;;;19627:30;19693:34;19673:18;;;19666:62;19745:18;;19421:85:0;19413:356:1;19421:85:0;19547:15;;;;19544:250;;;-1:-1:-1;;;;;19625:15:0;;19586:18;19625:15;;;:9;:15;;;;;;19607:33;;:15;:33;:::i;:::-;19586:54;;19685:12;;19671:10;:26;;19663:55;;;;-1:-1:-1;;;19663:55:0;;20335:2:1;19663:55:0;;;20317:21:1;20374:2;20354:18;;;20347:30;-1:-1:-1;;;20393:18:1;;;20386:46;20449:18;;19663:55:0;20133:340:1;19663:55:0;-1:-1:-1;;;;;;19741:15:0;;;;;;:9;:15;;;;;19759;19741:33;;19544:250;19874:14;4305:1;19874:2;:14;:::i;:::-;19868:20;;:2;:20;:::i;:::-;19858:6;19840:15;19850:4;19840:9;:15::i;:::-;:24;;;;:::i;:::-;:48;;:67;;;;-1:-1:-1;1485:7:0;1512:6;-1:-1:-1;;;;;19892:15:0;;;1512:6;;19892:15;;19840:67;19837:130;;;19951:15;19961:4;19951:9;:15::i;:::-;19942:6;19925:14;4305:1;19925:2;:14;:::i;:::-;19920:19;;:2;:19;:::i;:::-;:28;;;;:::i;:::-;:46;;;;:::i;:::-;19909:58;;;;:::i;:::-;;;19837:130;19996:12;20039:18;;20011:24;20029:4;20011:9;:24::i;:::-;20076:8;;-1:-1:-1;;20011:46:0;;-1:-1:-1;20076:8:0;;;;;20075:9;:24;;;;-1:-1:-1;20088:11:0;;;;;;;20075:24;:35;;;;;20103:7;20075:35;:51;;;;-1:-1:-1;20122:4:0;;-1:-1:-1;;;;;20114:12:0;;;20122:4;;20114:12;;20075:51;:80;;;;-1:-1:-1;;;;;;20131:24:0;;;;;;:18;:24;;;;;;;;20130:25;20075:80;:107;;;;-1:-1:-1;;;;;;20160:22:0;;;;;;:18;:22;;;;;;;;20159:23;20075:107;20072:273;;;20211:4;;-1:-1:-1;;;;;20211:4:0;;;20205:10;;;;20202:127;;20233:18;;20218:45;;;;;;;;20253:9;20218:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20233:18;20218:14;:45::i;:::-;20202:127;;;20303:18;;20288:41;;;;;;;;20323:5;20288:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20303:18;20288:14;:41::i;:::-;20430:8;;20374:4;;20359:12;;20430:8;;;;;;:36;;-1:-1:-1;;;;;;20442:24:0;;;;;;:18;:24;;;;;;;;20430:36;:62;;;-1:-1:-1;;;;;;20470:22:0;;;;;;:18;:22;;;;;;;;20430:62;20427:82;;;20504:5;20494:15;;20427:82;20533:4;;-1:-1:-1;;;;;20533:4:0;;;20527:10;;;;20524:28;;-1:-1:-1;20548:4:0;20524:28;20569:49;20584:4;20590:2;20594:6;20602:7;20611:6;20569:14;:49::i;:::-;18895:1735;;;17964:2683;;;:::o;16907:158::-;16948:7;16969:15;16986;17005:19;:17;:19::i;:::-;16968:56;;-1:-1:-1;16968:56:0;-1:-1:-1;17042:15:0;16968:56;;17042:15;:::i;:::-;17035:22;;;;16907:158;:::o;14431:508::-;14517:36;;:::i;:::-;14578:37;14590:7;14599;14608:6;14578:11;:37::i;:::-;14566:49;;14735:53;14748:9;14759:7;14768;14777:10;:8;:10::i;:::-;14735:12;:53::i;:::-;14711:20;;;14626:162;14689:20;;;14626:162;14673:14;;;14626:162;14646:25;;;14626:162;;;14860:44;14627:9;14884:7;14893:10;:8;:10::i;:::-;14860:12;:44::i;:::-;14838:18;;;14799:105;14816:20;;;14799:105;14800:14;;;14799:105;14431:508;;;;;:::o;20730:1310::-;20854:28;20885:36;20896:7;20905;20914:6;20885:10;:36::i;:::-;-1:-1:-1;;;;;20938:19:0;;;;;;:11;:19;;;;;;20854:67;;-1:-1:-1;20938:19:0;;20934:115;;;-1:-1:-1;;;;;21014:15:0;;;;;;:7;:15;;;;;;:23;;21030:7;;21014:23;:::i;:::-;-1:-1:-1;;;;;20996:15:0;;;;;;:7;:15;;;;;:41;20934:115;-1:-1:-1;;;;;21063:22:0;;;;;;:11;:22;;;;;;;;21059:130;;;21160:17;;;;-1:-1:-1;;;;;21141:18:0;;;;;;:7;:18;;;;;;:36;;21160:17;21141:36;:::i;:::-;-1:-1:-1;;;;;21120:18:0;;;;;;:7;:18;;;;;:57;21059:130;21235:9;;-1:-1:-1;;;;;21219:15:0;;21235:9;21219:15;;;:7;:15;;;;;;:25;;21235:9;21219:25;:::i;:::-;-1:-1:-1;;;;;21201:15:0;;;;;;;:7;:15;;;;;;;;:43;;;;21295:17;;;21276:18;;;;;;;;;;:36;;21295:17;21276:36;:::i;:::-;-1:-1:-1;;;;;21255:18:0;;;;;;:7;:18;;;;;;;:57;;;;21336:6;;;:10;;;:24;;;21359:1;21350;:6;;;:10;21336:24;21333:56;;;21362:27;21374:1;:6;;;21382:1;:6;;;21362:11;:27::i;:::-;21418:1;21403;:12;;;:16;:36;;;;21438:1;21423;:12;;;:16;21403:36;21400:225;;;21456:41;21471:1;:12;;;21484:1;:12;;;21456:14;:41::i;:::-;21542:4;-1:-1:-1;;;;;21517:96:0;21526:6;-1:-1:-1;;;;;21517:96:0;;21600:1;:12;;;21587:1;:10;;;21579:1;:6;;;21564:1;:12;;;21549:1;:12;;;:27;;;;:::i;:::-;:36;;;;:::i;:::-;:48;;;;:::i;:::-;:63;;;;:::i;:::-;21517:96;;3612:25:1;;;3600:2;3585:18;21517:96:0;;;;;;;21400:225;21653:1;21638;:12;;;:16;:36;;;;21673:1;21658;:12;;;:16;21638:36;21635:83;;;21676:42;21691:1;:12;;;21705:1;:12;;;21676:14;:42::i;:::-;21747:1;21732;:12;;;:16;:36;;;;21767:1;21752;:12;;;:16;21732:36;21729:83;;;21770:42;21785:1;:12;;;21799:1;:12;;;21770:14;:42::i;:::-;21835:1;21826;:6;;;:10;:24;;;;21849:1;21840;:6;;;:10;21826:24;21823:53;;;21852:24;21861:1;:6;;;21869:1;:6;;;21852:8;:24::i;:::-;21903:1;21890;:10;;;:14;:32;;;;21921:1;21908;:10;;;:14;21890:32;21887:73;;;21924:36;21937:1;:10;;;21949:1;:10;;;21924:12;:36::i;:::-;21993:9;-1:-1:-1;;;;;21976:46:0;21985:6;-1:-1:-1;;;;;21976:46:0;;22004:1;:17;;;21976:46;;;;3612:25:1;;3600:2;3585:18;;3466:177;21976:46:0;;;;;;;;20841:1199;20730:1310;;;;;:::o;1964:173::-;2020:16;2039:6;;-1:-1:-1;;;;;2056:17:0;;;-1:-1:-1;;;;;;2056:17:0;;;;;;2089:40;;2039:6;;;;;;;2089:40;;2020:16;2089:40;2009:128;1964:173;:::o;22513:1497::-;6340:8;:15;;-1:-1:-1;;6340:15:0;;;;;22694:14:::1;::::0;::::1;::::0;22679:12:::1;::::0;::::1;::::0;22668:8:::1;::::0;::::1;::::0;22651:14:::1;::::0;::::1;::::0;22634::::1;::::0;::::1;::::0;6340:15;;22694:14;22679:12;22668:8;22634:31:::1;::::0;::::1;:::i;:::-;:42;;;;:::i;:::-;:57;;;;:::i;:::-;:74;;;;:::i;:::-;22633:80;::::0;22712:1:::1;22633:80;:::i;:::-;22611:102;;22724:32;22794:11;22777:4;:14;;;22759:15;:32;;;;:::i;:::-;:46;;;;:::i;:::-;22724:81:::0;-1:-1:-1;22816:14:0::1;22833:42;22724:81:::0;22833:15;:42:::1;:::i;:::-;22816:59:::0;-1:-1:-1;22913:21:0::1;22947:24;22816:59:::0;22947:16:::1;:24::i;:::-;22984:20;23007:38;23031:14:::0;23007:21:::1;:38;:::i;:::-;22984:61;;23056:19;23107:4;:14;;;23093:11;:28;;;;:::i;:::-;23077:45;::::0;:12;:45:::1;:::i;:::-;23056:66;;23133:29;23179:4;:14;;;23165:11;:28;;;;:::i;:::-;23133:60:::0;-1:-1:-1;23209:25:0;;23206:117:::1;;23250:61;23263:24;23289:21;23250:12;:61::i;:::-;23376:14;::::0;::::1;::::0;23335:20:::1;::::0;23358:15:::1;:11:::0;23372:1:::1;23358:15;:::i;:::-;:32;;;;:::i;:::-;23335:55:::0;-1:-1:-1;23404:16:0;;23401:95:::1;;23444:15;::::0;23436:48:::1;::::0;-1:-1:-1;;;;;23444:15:0::1;23471:12:::0;23436:34:::1;:48::i;:::-;23541:8;::::0;::::1;::::0;23506:14:::1;::::0;23523:15:::1;:11:::0;23537:1:::1;23523:15;:::i;:::-;:26;;;;:::i;:::-;23506:43:::0;-1:-1:-1;23563:10:0;;23560:77:::1;;23597:9;::::0;23589:36:::1;::::0;-1:-1:-1;;;;;23597:9:0::1;23618:6:::0;23589:28:::1;:36::i;:::-;23696:12;::::0;::::1;::::0;23657:18:::1;::::0;23678:15:::1;:11:::0;23692:1:::1;23678:15;:::i;:::-;:30;;;;:::i;:::-;23657:51:::0;-1:-1:-1;23722:14:0;;23719:89:::1;;23760:13;::::0;23752:44:::1;::::0;-1:-1:-1;;;;;23760:13:0::1;23785:10:::0;23752:32:::1;:44::i;:::-;23869:14;::::0;::::1;::::0;23828:20:::1;::::0;23851:15:::1;:11:::0;23865:1:::1;23851:15;:::i;:::-;:32;;;;:::i;:::-;23828:55:::0;-1:-1:-1;23897:16:0;;23894:95:::1;;23937:15;::::0;23929:48:::1;::::0;-1:-1:-1;;;;;23937:15:0::1;23964:12:::0;23929:34:::1;:48::i;:::-;-1:-1:-1::0;;6378:8:0;:16;;-1:-1:-1;;6378:16:0;;;-1:-1:-1;;;;;;;;;;;22513:1497:0:o;17073:540::-;17170:7;;17206;;17123;;;;;17224:279;17248:9;:16;17244:20;;17224:279;;;17314:7;17290;:21;17298:9;17308:1;17298:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;17298:12:0;17290:21;;;;;;;;;;;;;:31;;:66;;;17349:7;17325;:21;17333:9;17343:1;17333:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;17333:12:0;17325:21;;;;;;;;;;;;;:31;17290:66;17286:97;;;17366:7;;17375;;17358:25;;;;;;;17073:540;;:::o;17286:97::-;17416:7;:21;17424:9;17434:1;17424:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;17424:12:0;17416:21;;;;;;;;;;;;;17408:29;;:7;:29;:::i;:::-;17398:39;;17470:7;:21;17478:9;17488:1;17478:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;17478:12:0;17470:21;;;;;;;;;;;;;17462:29;;:7;:29;:::i;:::-;17452:39;-1:-1:-1;17266:3:0;;;;:::i;:::-;;;;17224:279;;;;17535:7;;17527;;:15;;;;:::i;:::-;17517:7;:25;17513:56;;;17552:7;;17561;;17544:25;;;;;;17073:540;;:::o;17513:56::-;17588:7;;17597;;-1:-1:-1;17073:540:0;-1:-1:-1;17073:540:0:o;14947:732::-;15034:28;;:::i;:::-;15081:7;15077:86;;15103:17;;;:27;;;15143:8;;15077:86;15173:17;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15173:17:0;15204:6;15201:55;;;-1:-1:-1;15212:16:0;;;;;;;;15219:9;15212:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15201:55;;;-1:-1:-1;15244:12:0;;;;;;;;15251:5;15244:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15201:55;15294:8;;15303:3;;15286:16;;:7;:16;:::i;:::-;:20;;;;:::i;:::-;15277:6;;;:29;15340:14;;;;15355:3;;15332:22;;:7;:22;:::i;:::-;:26;;;;:::i;:::-;15317:12;;;:41;15392:14;;;;15407:3;;15384:22;;:7;:22;:::i;:::-;:26;;;;:::i;:::-;15369:12;;;:41;15438:8;;;;15447:3;;15430:16;;:7;:16;:::i;:::-;:20;;;;:::i;:::-;15421:6;;;:29;15484:14;;;;15499:3;;15476:22;;:7;:22;:::i;:::-;:26;;;;:::i;:::-;15461:12;;;:41;15534:12;;;;15547:3;;15526:20;;:7;:20;:::i;:::-;:24;;;;:::i;:::-;15513:10;;;:37;;;15629:12;;;;15622:6;;;;15609:12;;;;15596;;;;15589:6;;;;15581:14;;:7;:14;:::i;:::-;:27;;;;:::i;:::-;:40;;;;:::i;:::-;:47;;;;:::i;:::-;:60;;;;:::i;:::-;:71;;;;:::i;:::-;15561:17;;;:91;-1:-1:-1;14947:732:0;;;;;:::o;15687:796::-;15813:15;;;;;15928:19;15936:11;15928:7;:19;:::i;:::-;15918:29;;15964:7;15960:69;;-1:-1:-1;15993:7:0;;-1:-1:-1;16011:1:0;;-1:-1:-1;16011:1:0;;-1:-1:-1;16011:1:0;15986:31;;15960:69;16055:11;16048:1;:6;;;:18;;;;:::i;:::-;16041:25;;16103:11;16090:1;:12;;;:24;;;;:::i;:::-;16077:37;;16151:11;16138:1;:12;;;:24;;;;:::i;:::-;16125:37;;16173:12;16195:11;16188:1;:6;;;:18;;;;:::i;:::-;16173:33;;16217:18;16251:11;16238:1;:12;;;:24;;;;:::i;:::-;16217:45;;16273:16;16303:11;16292:1;:10;;;:22;;;;:::i;:::-;16273:41;-1:-1:-1;16273:41:0;16384:10;16379:4;16368:10;16357;16344:12;16352:4;16344:7;:12;:::i;:::-;:23;;;;:::i;:::-;:34;;;;:::i;:::-;:39;;;;:::i;:::-;:50;;;;:::i;:::-;:59;;;;:::i;:::-;16325:78;;16414:61;;;15687:796;;;;;;;;;;:::o;16495:404::-;16604:12;16617:18;16636:16;16671:7;16667:51;;-1:-1:-1;16700:1:0;;-1:-1:-1;16700:1:0;;-1:-1:-1;16700:1:0;16693:13;;16667:51;16744:11;16737:1;:6;;;:18;;;;:::i;:::-;16730:25;;16792:11;16779:1;:12;;;:24;;;;:::i;:::-;16766:37;;16836:11;16825:1;:10;;;:22;;;;:::i;:::-;16814:33;;16495:404;;;;;;;;:::o;12880:123::-;12958:4;12948:7;;:14;;;;;;;:::i;:::-;;;;-1:-1:-1;;12973:11:0;:22;;12991:4;;12973:11;:15;;:22;;12991:4;;12973:22;:::i;:::-;;;;-1:-1:-1;;;;12880:123:0:o;13011:284::-;13118:10;13094:11;:21;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;;13164:4:0;13144:26;;;;:11;:26;;;;;;;;13141:101;;;13212:4;13196:22;;;;:7;:22;;;;;:34;;13220:10;;13196:22;:34;;13220:10;;13196:34;:::i;:::-;;;;-1:-1:-1;;13141:101:0;13268:4;13252:22;;;;:7;:22;;;;;:35;;13277:10;;13252:22;:35;;13277:10;;13252:35;:::i;13303:284::-;13410:10;13386:11;:21;;;:34;;;;;;;:::i;14135:284::-;14242:10;14218:11;:21;;;:34;;;;;;;:::i;13599:242::-;13682:4;13664:11;:15;;;:22;;;;;;;:::i;13853:270::-;13952:8;13930:11;:19;;;:30;;;;;;;:::i;24521:562::-;24671:16;;;24685:1;24671:16;;;;;;;;24647:21;;24671:16;;;;;;;;;;-1:-1:-1;24671:16:0;24647:40;;24716:4;24698;24703:1;24698:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24698:23:0;;;:7;;;;;;;;;;:23;;;;24742:6;;:13;;;-1:-1:-1;;;24742:13:0;;;;:6;;;;;:11;;:13;;;;;24698:7;;24742:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24732:4;24737:1;24732:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24732:23:0;;;:7;;;;;;;;;:23;24800:6;;24768:53;;24785:4;;24800:6;24809:11;24768:8;:53::i;:::-;24860:6;;:215;;-1:-1:-1;;;24860:215:0;;-1:-1:-1;;;;;24860:6:0;;;;:57;;:215;;24932:11;;24860:6;;25002:4;;25029;;25049:15;;24860:215;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24018:495;24198:6;;24166:53;;24183:4;;-1:-1:-1;;;;;24198:6:0;24207:11;24166:8;:53::i;:::-;24262:6;;-1:-1:-1;;;;;24262:6:0;:22;24292:9;24325:4;24345:11;24262:6;;24457:7;1485;1512:6;-1:-1:-1;;;;;1512:6:0;;1439:87;24457:7;24262:243;;;;;;-1:-1:-1;;;;;;24262:243:0;;;-1:-1:-1;;;;;22078:15:1;;;24262:243:0;;;22060:34:1;22110:18;;;22103:34;;;;22153:18;;;22146:34;;;;22196:18;;;22189:34;22260:15;;;22239:19;;;22232:44;24479:15:0;22292:19:1;;;22285:35;21994:19;;24262:243:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2907:317::-;3022:6;2997:21;:31;;2989:73;;;;-1:-1:-1;;;2989:73:0;;22844:2:1;2989:73:0;;;22826:21:1;22883:2;22863:18;;;22856:30;22922:31;22902:18;;;22895:59;22971:18;;2989:73:0;22642:353:1;2989:73:0;3076:12;3094:9;-1:-1:-1;;;;;3094:14:0;3116:6;3094:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3075:52;;;3146:7;3138:78;;;;-1:-1:-1;;;3138:78:0;;23412:2:1;3138:78:0;;;23394:21:1;23451:2;23431:18;;;23424:30;23490:34;23470:18;;;23463:62;23561:28;23541:18;;;23534:56;23607:19;;3138:78:0;23210:422:1;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:523:1:-;118:6;126;134;142;150;158;211:3;199:9;190:7;186:23;182:33;179:53;;;228:1;225;218:12;179:53;-1:-1:-1;;251:23:1;;;321:2;306:18;;293:32;;-1:-1:-1;372:2:1;357:18;;344:32;;423:2;408:18;;395:32;;-1:-1:-1;474:3:1;459:19;;446:33;;-1:-1:-1;526:3:1;511:19;498:33;;-1:-1:-1;14:523:1;-1:-1:-1;14:523:1:o;542:548::-;654:4;683:2;712;701:9;694:21;744:6;738:13;787:6;782:2;771:9;767:18;760:34;812:1;822:140;836:6;833:1;830:13;822:140;;;931:14;;;927:23;;921:30;897:17;;;916:2;893:26;886:66;851:10;;822:140;;;826:3;1011:1;1006:2;997:6;986:9;982:22;978:31;971:42;1081:2;1074;1070:7;1065:2;1057:6;1053:15;1049:29;1038:9;1034:45;1030:54;1022:62;;;;542:548;;;;:::o;1095:131::-;-1:-1:-1;;;;;1170:31:1;;1160:42;;1150:70;;1216:1;1213;1206:12;1231:134;1299:20;;1328:31;1299:20;1328:31;:::i;:::-;1231:134;;;:::o;1370:315::-;1438:6;1446;1499:2;1487:9;1478:7;1474:23;1470:32;1467:52;;;1515:1;1512;1505:12;1467:52;1554:9;1541:23;1573:31;1598:5;1573:31;:::i;:::-;1623:5;1675:2;1660:18;;;;1647:32;;-1:-1:-1;;;1370:315:1:o;1882:127::-;1943:10;1938:3;1934:20;1931:1;1924:31;1974:4;1971:1;1964:15;1998:4;1995:1;1988:15;2014:118;2100:5;2093:13;2086:21;2079:5;2076:32;2066:60;;2122:1;2119;2112:12;2137:128;2202:20;;2231:28;2202:20;2231:28;:::i;2270:1191::-;2360:6;2368;2421:2;2409:9;2400:7;2396:23;2392:32;2389:52;;;2437:1;2434;2427:12;2389:52;2477:9;2464:23;2506:18;2547:2;2539:6;2536:14;2533:34;;;2563:1;2560;2553:12;2533:34;2601:6;2590:9;2586:22;2576:32;;2646:7;2639:4;2635:2;2631:13;2627:27;2617:55;;2668:1;2665;2658:12;2617:55;2704:2;2691:16;2726:4;2749:2;2745;2742:10;2739:36;;;2755:18;;:::i;:::-;2801:2;2798:1;2794:10;2833:2;2827:9;2896:2;2892:7;2887:2;2883;2879:11;2875:25;2867:6;2863:38;2951:6;2939:10;2936:22;2931:2;2919:10;2916:18;2913:46;2910:72;;;2962:18;;:::i;:::-;2998:2;2991:22;3048:18;;;3082:15;;;;-1:-1:-1;3124:11:1;;;3120:20;;;3152:19;;;3149:39;;;3184:1;3181;3174:12;3149:39;3208:11;;;;3228:148;3244:6;3239:3;3236:15;3228:148;;;3310:23;3329:3;3310:23;:::i;:::-;3298:36;;3261:12;;;;3354;;;;3228:148;;;3395:6;-1:-1:-1;3420:35:1;;-1:-1:-1;3436:18:1;;;3420:35;:::i;:::-;3410:45;;;;;;2270:1191;;;;;:::o;3648:247::-;3707:6;3760:2;3748:9;3739:7;3735:23;3731:32;3728:52;;;3776:1;3773;3766:12;3728:52;3815:9;3802:23;3834:31;3859:5;3834:31;:::i;3900:456::-;3977:6;3985;3993;4046:2;4034:9;4025:7;4021:23;4017:32;4014:52;;;4062:1;4059;4052:12;4014:52;4101:9;4088:23;4120:31;4145:5;4120:31;:::i;:::-;4170:5;-1:-1:-1;4227:2:1;4212:18;;4199:32;4240:33;4199:32;4240:33;:::i;:::-;3900:456;;4292:7;;-1:-1:-1;;;4346:2:1;4331:18;;;;4318:32;;3900:456::o;4361:180::-;4420:6;4473:2;4461:9;4452:7;4448:23;4444:32;4441:52;;;4489:1;4486;4479:12;4441:52;-1:-1:-1;4512:23:1;;4361:180;-1:-1:-1;4361:180:1:o;4735:241::-;4791:6;4844:2;4832:9;4823:7;4819:23;4815:32;4812:52;;;4860:1;4857;4850:12;4812:52;4899:9;4886:23;4918:28;4940:5;4918:28;:::i;4981:388::-;5049:6;5057;5110:2;5098:9;5089:7;5085:23;5081:32;5078:52;;;5126:1;5123;5116:12;5078:52;5165:9;5152:23;5184:31;5209:5;5184:31;:::i;:::-;5234:5;-1:-1:-1;5291:2:1;5276:18;;5263:32;5304:33;5263:32;5304:33;:::i;:::-;5356:7;5346:17;;;4981:388;;;;;:::o;5374:309::-;5439:6;5447;5500:2;5488:9;5479:7;5475:23;5471:32;5468:52;;;5516:1;5513;5506:12;5468:52;5552:9;5539:23;5529:33;;5612:2;5601:9;5597:18;5584:32;5625:28;5647:5;5625:28;:::i;5688:248::-;5756:6;5764;5817:2;5805:9;5796:7;5792:23;5788:32;5785:52;;;5833:1;5830;5823:12;5785:52;-1:-1:-1;;5856:23:1;;;5926:2;5911:18;;;5898:32;;-1:-1:-1;5688:248:1:o;5941:382::-;6006:6;6014;6067:2;6055:9;6046:7;6042:23;6038:32;6035:52;;;6083:1;6080;6073:12;6035:52;6122:9;6109:23;6141:31;6166:5;6141:31;:::i;:::-;6191:5;-1:-1:-1;6248:2:1;6233:18;;6220:32;6261:30;6220:32;6261:30;:::i;7076:309::-;7141:6;7149;7202:2;7190:9;7181:7;7177:23;7173:32;7170:52;;;7218:1;7215;7208:12;7170:52;7257:9;7244:23;7276:28;7298:5;7276:28;:::i;7390:525::-;7476:6;7484;7492;7500;7553:3;7541:9;7532:7;7528:23;7524:33;7521:53;;;7570:1;7567;7560:12;7521:53;7609:9;7596:23;7628:31;7653:5;7628:31;:::i;:::-;7678:5;-1:-1:-1;7735:2:1;7720:18;;7707:32;7748:33;7707:32;7748:33;:::i;:::-;7390:525;;7800:7;;-1:-1:-1;;;;7854:2:1;7839:18;;7826:32;;7905:2;7890:18;7877:32;;7390:525::o;8143:356::-;8345:2;8327:21;;;8364:18;;;8357:30;8423:34;8418:2;8403:18;;8396:62;8490:2;8475:18;;8143:356::o;8504:127::-;8565:10;8560:3;8556:20;8553:1;8546:31;8596:4;8593:1;8586:15;8620:4;8617:1;8610:15;8636:125;8701:9;;;8722:10;;;8719:36;;;8735:18;;:::i;9111:347::-;9313:2;9295:21;;;9352:2;9332:18;;;9325:30;9391:25;9386:2;9371:18;;9364:53;9449:2;9434:18;;9111:347::o;9463:127::-;9524:10;9519:3;9515:20;9512:1;9505:31;9555:4;9552:1;9545:15;9579:4;9576:1;9569:15;9595:135;9634:3;9655:17;;;9652:43;;9675:18;;:::i;:::-;-1:-1:-1;9722:1:1;9711:13;;9595:135::o;10144:128::-;10211:9;;;10232:11;;;10229:37;;;10246:18;;:::i;10688:217::-;10728:1;10754;10744:132;;10798:10;10793:3;10789:20;10786:1;10779:31;10833:4;10830:1;10823:15;10861:4;10858:1;10851:15;10744:132;-1:-1:-1;10890:9:1;;10688:217::o;11262:127::-;11323:10;11318:3;11314:20;11311:1;11304:31;11354:4;11351:1;11344:15;11378:4;11375:1;11368:15;12158:422;12247:1;12290:5;12247:1;12304:270;12325:7;12315:8;12312:21;12304:270;;;12384:4;12380:1;12376:6;12372:17;12366:4;12363:27;12360:53;;;12393:18;;:::i;:::-;12443:7;12433:8;12429:22;12426:55;;;12463:16;;;;12426:55;12542:22;;;;12502:15;;;;12304:270;;;12308:3;12158:422;;;;;:::o;12585:806::-;12634:5;12664:8;12654:80;;-1:-1:-1;12705:1:1;12719:5;;12654:80;12753:4;12743:76;;-1:-1:-1;12790:1:1;12804:5;;12743:76;12835:4;12853:1;12848:59;;;;12921:1;12916:130;;;;12828:218;;12848:59;12878:1;12869:10;;12892:5;;;12916:130;12953:3;12943:8;12940:17;12937:43;;;12960:18;;:::i;:::-;-1:-1:-1;;13016:1:1;13002:16;;13031:5;;12828:218;;13130:2;13120:8;13117:16;13111:3;13105:4;13102:13;13098:36;13092:2;13082:8;13079:16;13074:2;13068:4;13065:12;13061:35;13058:77;13055:159;;;-1:-1:-1;13167:19:1;;;13199:5;;13055:159;13246:34;13271:8;13265:4;13246:34;:::i;:::-;13316:6;13312:1;13308:6;13304:19;13295:7;13292:32;13289:58;;;13327:18;;:::i;:::-;13365:20;;12585:806;-1:-1:-1;;;12585:806:1:o;13396:140::-;13454:5;13483:47;13524:4;13514:8;13510:19;13504:4;13483:47;:::i;13541:168::-;13614:9;;;13645;;13662:15;;;13656:22;;13642:37;13632:71;;13683:18;;:::i;14829:131::-;14889:5;14918:36;14945:8;14939:4;14918:36;:::i;15244:245::-;15311:6;15364:2;15352:9;15343:7;15339:23;15335:32;15332:52;;;15380:1;15377;15370:12;15332:52;15412:9;15406:16;15431:28;15453:5;15431:28;:::i;20478:251::-;20548:6;20601:2;20589:9;20580:7;20576:23;20572:32;20569:52;;;20617:1;20614;20607:12;20569:52;20649:9;20643:16;20668:31;20693:5;20668:31;:::i;20734:980::-;20996:4;21044:3;21033:9;21029:19;21075:6;21064:9;21057:25;21101:2;21139:6;21134:2;21123:9;21119:18;21112:34;21182:3;21177:2;21166:9;21162:18;21155:31;21206:6;21241;21235:13;21272:6;21264;21257:22;21310:3;21299:9;21295:19;21288:26;;21349:2;21341:6;21337:15;21323:29;;21370:1;21380:195;21394:6;21391:1;21388:13;21380:195;;;21459:13;;-1:-1:-1;;;;;21455:39:1;21443:52;;21550:15;;;;21515:12;;;;21491:1;21409:9;21380:195;;;-1:-1:-1;;;;;;;21631:32:1;;;;21626:2;21611:18;;21604:60;-1:-1:-1;;;21695:3:1;21680:19;21673:35;21592:3;20734:980;-1:-1:-1;;;20734:980:1:o;22331:306::-;22419:6;22427;22435;22488:2;22476:9;22467:7;22463:23;22459:32;22456:52;;;22504:1;22501;22494:12;22456:52;22533:9;22527:16;22517:26;;22583:2;22572:9;22568:18;22562:25;22552:35;;22627:2;22616:9;22612:18;22606:25;22596:35;;22331:306;;;;;:::o

Swarm Source

ipfs://4b6ab975a847eea8caf3dd096467287ac51aa0e5acf1c0d71b6e449ab74ac966
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.