ETH Price: $3,257.71 (+2.27%)
Gas: 1 Gwei

Token

Shetama ($She)
 

Overview

Max Total Supply

6,733,958,296,728.705389431 $She

Holders

56

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
Null: 0x000...000
Balance
0 $She

Value
$0.00
0x0000000000000000000000000000000000000000
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:
Shetama

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-02-03
*/

// SPDX-License-Identifier: MIT

//*************************************************************************************************//

// Provided by EarthWalkers Dev Team
// TG : https://t.me/shetamatoken

//*************************************************************************************************//

pragma solidity ^0.8.17;
 
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);
}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
 
    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}
 
interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);
 
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
 
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
 
    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);
 
    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
 
    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to);
    event Sync(uint112 reserve0, uint112 reserve1);
 
    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);
 
    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;
    function initialize(address, address) external;
}
 
interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
 
    function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); 
    function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); 
    function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); 
    function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); 
    function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); 
    function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); 
    function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); 
    function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); 
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); 
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); 
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); 
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); 
 
    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}
 
interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); 
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); 
    function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; 
    function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; 
    function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; 
}

library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        uint256 c = a + b;
        if (c < a) return (false, 0);
        return (true, c);
    }
 
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b > a) return (false, 0);
        return (true, a - b);
    }
 
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) return (true, 0);
        uint256 c = a * b;
        if (c / a != b) return (false, 0);
        return (true, c);
    }
 
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a / b);
    }
 
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a % b);
    }
 
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
 
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        return a - b;
    }
 
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) return 0;
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
 
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: division by zero");
        return a / b;
    }
 
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: modulo by zero");
        return a % b;
    }
 
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        return a - b;
    }
 
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a / b;
    }
 
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a % b;
    }
}
 
library SafeMathInt {
  function mul(int256 a, int256 b) internal pure returns (int256) {
    // Prevent overflow when multiplying INT256_MIN with -1
    // https://github.com/RequestNetwork/requestNetwork/issues/43
    require(!(a == - 2**255 && b == -1) && !(b == - 2**255 && a == -1));
 
    int256 c = a * b;
    require((b == 0) || (c / b == a));
    return c;
  }
 
  function div(int256 a, int256 b) internal pure returns (int256) {
    // Prevent overflow when dividing INT256_MIN by -1
    // https://github.com/RequestNetwork/requestNetwork/issues/43
    require(!(a == - 2**255 && b == -1) && (b > 0));
 
    return a / b;
  }
 
  function sub(int256 a, int256 b) internal pure returns (int256) {
    require((b >= 0 && a - b <= a) || (b < 0 && a - b > a));
 
    return a - b;
  }
 
  function add(int256 a, int256 b) internal pure returns (int256) {
    int256 c = a + b;
    require((b >= 0 && c >= a) || (b < 0 && c < a));
    return c;
  }
 
  function toUint256Safe(int256 a) internal pure returns (uint256) {
    require(a >= 0);
    return uint256(a);
  }
}
 
library SafeMathUint {
  function toInt256Safe(uint256 a) internal pure returns (int256) {
    int256 b = int256(a);
    require(b >= 0);
    return b;
  }
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {return payable(msg.sender);}
 
    function _msgData() internal view virtual returns (bytes memory) {
        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 () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), 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 {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
 
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract ERC20 is Context, IERC20 {
    using SafeMath for uint256;
 
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
 
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;
 
    constructor (string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }
 
    function name() public view virtual returns (string memory) {return _name;}
    function symbol() public view virtual returns (string memory) {return _symbol;}
    function totalSupply() public view virtual override returns (uint256) {return _totalSupply;}
    function balanceOf(address account) public view virtual override returns (uint256) {return _balances[account];}

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
 
    function allowance(address owner, address spender) public view virtual override returns (uint256) {return _allowances[owner][spender];}
 
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
 
    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "transfer amount exceeds allowance"));
        return true;
    }
 
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }
 
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "decreased allowance below zero"));
        return true;
    }
 
    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "transfer from the zero address");
        require(recipient != address(0), "transfer to the zero address");
 
        _beforeTokenTransfer(sender, recipient, amount);
 
        _balances[sender] = _balances[sender].sub(amount, "transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }
 
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "mint to the zero address");
 
        _beforeTokenTransfer(address(0), account, amount);
 
        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }
 
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "burn from the zero address");
 
        _beforeTokenTransfer(account, address(0), amount);
 
        _balances[account] = _balances[account].sub(amount, "burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }
 
    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "approve from the zero address");
        require(spender != address(0), "approve to the zero address");
 
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
 
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
}
 
abstract contract SharedOwnable is Ownable {
    address private _creator;
    mapping(address => bool) private _sharedOwners;
    event SharedOwnershipAdded(address indexed sharedOwner);

    constructor() Ownable() {
        _creator = msg.sender;
        _setSharedOwner(msg.sender);
        renounceOwnership();
    }
    modifier onlySharedOwners() {require(_sharedOwners[msg.sender], "SharedOwnable: caller is not a shared owner"); _;}
    function getCreator() external view returns (address) {return _creator;}
    function isSharedOwner(address account) external view returns (bool) {return _sharedOwners[account];}
    function setSharedOwner(address account) internal onlySharedOwners {_setSharedOwner(account);}
    function _setSharedOwner(address account) private {_sharedOwners[account] = true; emit SharedOwnershipAdded(account);}
    function EraseSharedOwner(address account) internal onlySharedOwners {_eraseSharedOwner(account);}
    function _eraseSharedOwner(address account) private {_sharedOwners[account] = false;}
}

contract SafeToken is SharedOwnable {
    address payable safeManager;
    constructor() {safeManager = payable(msg.sender);}
    function setSafeManager(address payable _safeManager) public onlySharedOwners {safeManager = _safeManager;}
    function withdraw(address _token, uint256 _amount) external { require(msg.sender == safeManager); IERC20(_token).transfer(safeManager, _amount);}
    function withdrawETH(uint256 _amount) external {require(msg.sender == safeManager); safeManager.transfer(_amount);}
}

contract Main is ERC20, SharedOwnable, SafeToken {
    using SafeMath for uint256;
 
    IUniswapV2Router02 public uniswapV2Router;
    address private immutable uniswapV2Pair;
    address payable private MarketingWallet; 
    address payable private TeamWallet; 
    address payable private MultiUseWallet;
    address payable private StakingWallet;
    address private DeadWallet;
    address private UniswapRouter;
    address [] List; 
        
    bool private swapping;
    bool private swapAndLiquifyEnabled = true;
    bool public tradingEnabled = false;
    bool private JeetsFee = false;
    bool private JeetsBurn = false;
    bool private JeetsStaking = false;
    bool private AutoDistribution = true;
    bool private DelayOption = false;

    uint256 private marketingETHPortion = 0;
    uint256 private teamETHPortion = 0;
    uint256 private multiuseETHPortion = 0;
    uint256 private stakingPortion = 0;

    uint256 private MaxSell;
    uint256 private MaxWallet;
    uint256 private SwapMin;
    uint256 private MaxSwap;
    uint256 private MaxTaxes;
    uint256 private MaxTokenToSwap;
    uint256 private maxSellTransactionAmount;
    uint256 private maxWalletAmount;
    uint256 private swapTokensAtAmount;
    uint8 private decimal;
    uint256 private InitialSupply;
    uint256 private DispatchSupply;
    uint256 private _liquidityUnlockTime = 0;
    uint256 private counter;
    uint256 private MinTime = 0;
    
    // Tax Fees
    uint256 private _LiquidityFee = 2;
    uint256 private _BurnFee = 1;
    uint256 private _MarketingFee= 2;
    uint256 private _TeamFee= 1;
    uint256 private _MultiUseFee= 0;
    uint256 private _StakingFee= 0;
    uint256 private _Wallet2WalletFee = 0; // no wallet to wallet fee
    uint256 private _BuyFee = 5;
    uint256 private _SellFee = 0;
    uint8 private VminDiv = 1;
    uint8 private VmaxDiv = 10;
    uint8 private MaxJeetsFee = 15;

    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isWhitelisted;
    mapping (address => bool) private _isExcludedFromMaxTx;
    mapping (address => bool) private _isBlacklisted; 
    mapping (address => uint256) private LastTimeSell; 
    mapping (address => bool) public automatedMarketMakerPairs;
 
    event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event LiquidityWalletUpdated(address indexed newLiquidityWallet, address indexed oldLiquidityWallet);
    event SwapAndLiquify(uint256 tokensSwapped, uint256 ETHReceived, uint256 tokensIntoLiqudity);
    event ExtendLiquidityLock(uint256 extendedLockTime);
    
    constructor(string memory name_, string memory symbol_, uint8 decimal_, address marketing_, address team_, address multiuse_, uint256 supply_, uint256 dispatch_, uint8 maxtaxes_) ERC20(name_, symbol_) {
    	
        MarketingWallet = payable(marketing_);
        TeamWallet = payable(team_); 
        MultiUseWallet = payable(multiuse_);
        StakingWallet = payable(marketing_);
        DeadWallet = 0x000000000000000000000000000000000000dEaD;
        decimal = decimal_;
        InitialSupply = supply_*10**decimal;
        DispatchSupply = dispatch_*10**decimal;
        MaxSwap = supply_ * 1 / 100;
        MaxSell = supply_ * 3 / 100;
        MaxWallet = supply_ * 3 / 100;
        SwapMin = supply_ * 1 / 1000;
        MaxTokenToSwap = MaxSwap*10**decimal;
        maxSellTransactionAmount = MaxSell * 10**decimal; // max sell 1% of supply
        maxWalletAmount = MaxWallet * 10**decimal; // max wallet amount 2%
        swapTokensAtAmount = SwapMin * 10**decimal;
        MaxTaxes = maxtaxes_;
              
	    UniswapRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

	    IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(UniswapRouter);
        // Create a uniswap pair for this new token
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
 
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = _uniswapV2Pair;
        _setAutomatedMarketMakerPair(_uniswapV2Pair, true);

        _SellFee = _LiquidityFee.add(_MarketingFee).add(_TeamFee).add(_MultiUseFee).add(_StakingFee).add(_BurnFee);//YY%

        // exclude from paying fees or having max transaction amount
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[DeadWallet] = true;
        _isExcludedFromFees[MarketingWallet] = true;
        _isExcludedFromFees[TeamWallet] = true;
        _isExcludedFromFees[MultiUseWallet] = true;
        _isExcludedFromFees[StakingWallet] = true;
        _isExcludedFromFees[msg.sender] = true;
 
        // exclude from max tx
        _isExcludedFromMaxTx[address(this)] = true;
        _isExcludedFromMaxTx[DeadWallet] = true;
        _isExcludedFromMaxTx[MarketingWallet] = true;
        _isExcludedFromMaxTx[TeamWallet] = true;
        _isExcludedFromMaxTx[MultiUseWallet] = true;
        _isExcludedFromMaxTx[StakingWallet] = true;
        _isExcludedFromMaxTx[msg.sender] = true;

        // Whitelist
        _isWhitelisted[address(this)] = true;
        _isWhitelisted[DeadWallet] = true;
        _isWhitelisted[MarketingWallet] = true;
        _isWhitelisted[TeamWallet] = true;
        _isWhitelisted[MultiUseWallet] = true;
        _isWhitelisted[StakingWallet] = true;
        _isWhitelisted[msg.sender] = true;
        
        //  _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again
        if(DispatchSupply == 0) {_mint(address(this), InitialSupply);} 
        else if (DispatchSupply == InitialSupply) {_mint(msg.sender, DispatchSupply);}
        else {
            _mint(msg.sender, DispatchSupply);
            _mint(address(this), InitialSupply - DispatchSupply);
        }
    }
 
    receive() external payable {}
    //******************************************************************************************************
    // Public functions
    //******************************************************************************************************
    function decimals() public view returns (uint8) { return decimal; }
    function GetExclusions(address account) public view returns(bool MaxTx, bool Fees, bool Blacklist, bool Whitelist){return (_isExcludedFromMaxTx[account], _isExcludedFromFees[account], _isBlacklisted[account], _isWhitelisted[account]);}
    function GetFees() public view returns(uint Buy, uint Sell, uint Wallet2Wallet, uint Liquidity, uint Marketing, uint Team, uint MultiUse, uint Staking, uint Burn){return (_BuyFee, _SellFee, _Wallet2WalletFee, _LiquidityFee, _MarketingFee, _TeamFee, _MultiUseFee, _StakingFee, _BurnFee);}
    function GetLimits() public view returns(uint256 SellMax, uint256 WalletMax, uint256 TaxMax, uint256 MinSwap, uint256 SwapMax, bool SwapLiq, bool ENtrading, bool autodistribution){return (MaxSell, MaxWallet, MaxTaxes, SwapMin, MaxSwap, swapAndLiquifyEnabled, tradingEnabled, AutoDistribution);}
    function GetDelay() public view returns (bool delayoption, uint256 mintime) {return (DelayOption, MinTime);}
    function GetContractAddresses() public view returns(address marketing, address team, address multiuse, address staking, address Dead, address LP){return (address(MarketingWallet), address(TeamWallet), address(MultiUseWallet), address(StakingWallet), address(DeadWallet), address(uniswapV2Pair));}
    function GetJeetsTaxInfo() external view returns (bool jeetsfee, bool jeetsburn, bool jeetsstaking, uint vmaxdiv, uint vmindiv, uint maxjeetsfee) {return(JeetsFee, JeetsBurn, JeetsStaking, VmaxDiv, VminDiv, MaxJeetsFee);}
    function GetContractBalance() external view returns (uint256 stakingportion, uint256 marketingETH, uint256 teamETH , uint256 multiuseETH) {return(stakingPortion, marketingETHPortion, teamETHPortion , multiuseETHPortion);}
    
    function GetSupplyInfo() public view returns (uint256 initialSupply, uint256 circulatingSupply, uint256 burntTokens) {
        uint256 supply = totalSupply ();
        uint256 tokensBurnt = InitialSupply - supply;
        return (InitialSupply, supply, tokensBurnt);
    }
        
    function getLiquidityUnlockTime() public view returns (uint256 Days, uint256 Hours, uint256 Minutes, uint256 Seconds) {
        if (block.timestamp < _liquidityUnlockTime){
            Days = (_liquidityUnlockTime - block.timestamp) / 86400;
            Hours = (_liquidityUnlockTime - block.timestamp - Days * 86400) / 3600;
            Minutes = (_liquidityUnlockTime - block.timestamp - Days * 86400 - Hours * 3600 ) / 60;
            Seconds = _liquidityUnlockTime - block.timestamp - Days * 86400 - Hours * 3600 - Minutes * 60;
            return (Days, Hours, Minutes, Seconds);
        } 
        return (0, 0, 0, 0);
    }
    //******************************************************************************************************
    // Write OnlyOwners functions
    //******************************************************************************************************
    function AddSharedOwner(address account) public onlySharedOwners {
        setSharedOwner(account);
        _isExcludedFromFees[address(account)] = true;
        _isExcludedFromMaxTx[address(account)] = true;
        _isWhitelisted[address(account)] = true;
    }

    function RemoveharedOwner(address account) public onlySharedOwners {
        EraseSharedOwner(account);
        _isExcludedFromFees[address(account)] = false;
        _isExcludedFromMaxTx[address(account)] = false;
        _isWhitelisted[address(account)] = false;
    }
    
    function setProjectWallet (address payable _newMarketingWallet, address payable _newTeamWallet, address payable _newMultiUseWallet, address payable _newStakingWallet) external onlySharedOwners {
        if (_newMarketingWallet != MarketingWallet) {
            _isExcludedFromFees[MarketingWallet] = false;
            _isExcludedFromMaxTx[MarketingWallet] = false;
            _isWhitelisted[MarketingWallet] = false;
               
            _isExcludedFromFees[_newMarketingWallet] = true;
            _isExcludedFromMaxTx[_newMarketingWallet] = true;
            _isWhitelisted[_newMarketingWallet] = true;
  	        MarketingWallet = _newMarketingWallet;
        }
        if (_newTeamWallet != TeamWallet) {
            _isExcludedFromFees[TeamWallet] = false;
            _isExcludedFromMaxTx[TeamWallet] = false;
            _isWhitelisted[TeamWallet] = false;
                       
            _isExcludedFromFees[_newTeamWallet] = true;
            _isExcludedFromMaxTx[_newTeamWallet] = true;
            _isWhitelisted[_newTeamWallet] = true;
            TeamWallet = _newTeamWallet;
        }
        if (_newMultiUseWallet != MultiUseWallet) {
            _isExcludedFromFees[MultiUseWallet] = false;
            _isExcludedFromMaxTx[MultiUseWallet] = false;
            _isWhitelisted[MultiUseWallet] = false;
                       
            _isExcludedFromFees[_newMultiUseWallet] = true;
            _isExcludedFromMaxTx[_newMultiUseWallet] = true;
            _isWhitelisted[_newMultiUseWallet] = true;
            MultiUseWallet = _newMultiUseWallet;
        }
        if (_newStakingWallet != StakingWallet) {
            _isExcludedFromFees[StakingWallet] = false;
            _isExcludedFromMaxTx[StakingWallet] = false;
            _isWhitelisted[StakingWallet] = false;
                       
            _isExcludedFromFees[_newStakingWallet] = true;
            _isExcludedFromMaxTx[_newStakingWallet] = true;
            _isWhitelisted[_newStakingWallet] = true;
            StakingWallet = _newStakingWallet;
        }
    }
        
    function SetDelay (bool delayoption, uint256 mintime) external onlySharedOwners {
        require(mintime <= 28800, "MinTime Can't be more than a Day" );
        MinTime = mintime;
        DelayOption = delayoption;
    }
    
    function SetLimits(uint256 _maxWallet, uint256 _maxSell, uint256 _minswap, uint256 _swapmax, uint256 claimWait, uint256 MaxTax, bool _swapAndLiquifyEnabled, bool autodistribution) external onlySharedOwners {
        uint256 supply = totalSupply ();
        require(_maxWallet * 10**decimal >= supply / 100 && _maxWallet * 10**decimal <= supply, "MawWallet must be between totalsupply and 1% of totalsupply");
        require(_maxSell * 10**decimal >= supply / 1000 && _maxSell * 10**decimal <= supply, "MawSell must be between totalsupply and 0.1% of totalsupply" );
        require(_minswap * 10**decimal >= supply / 10000 && _minswap <= _swapmax / 2, "MinSwap must be between maxswap/2 and 0.01% of totalsupply" );
        require(claimWait >= 3600 && claimWait <= 86400, "claimWait must be updated to between 1 and 24 hours");
        require(MaxTax >= 1 && MaxTax <= 25, "Max Tax must be updated to between 1 and 25 percent");
        require(_swapmax >= _minswap.mul(2) && _swapmax * 10**decimal <= supply, "MaxSwap must be between totalsupply and SwapMin x 2" );

        MaxSwap = _swapmax;
        MaxTokenToSwap = MaxSwap * 10**decimal;
        MaxWallet = _maxWallet;
        maxWalletAmount = MaxWallet * 10**decimal;
        MaxSell = _maxSell;
        maxSellTransactionAmount = MaxSell * 10**decimal;
        SwapMin = _minswap;
        swapTokensAtAmount = SwapMin * 10**decimal;
        MaxTaxes = MaxTax;
        AutoDistribution = autodistribution;   
        swapAndLiquifyEnabled = _swapAndLiquifyEnabled;
        emit SwapAndLiquifyEnabledUpdated(_swapAndLiquifyEnabled);
    }
  
    function SetTaxes(uint256 newBuyTax, uint256 wallet2walletfee, uint256 newLiquidityTax, uint256 newBurnTax, uint256 newMarketingTax, uint256 newTeamTax, uint256 newMultiUseTax, uint256 newStakingTax) external onlySharedOwners() {
        require(newBuyTax <= MaxTaxes && newBuyTax >= newBurnTax, "Total Tax can't exceed MaxTaxes. or be lower than burn tax");
        uint256 TransferTax = newMarketingTax.add(newTeamTax).add(newMultiUseTax).add(newStakingTax);
        require(TransferTax.add(newLiquidityTax).add(newBurnTax) <= MaxTaxes, "Total Tax can't exceed MaxTaxes.");
        require(newMarketingTax >= 0 && newTeamTax >= 0 && newMultiUseTax >= 0 && newBuyTax >= 0 && newLiquidityTax >= 0 && newBurnTax >= 0,"No tax can be negative");
        if(wallet2walletfee != 0){require(wallet2walletfee >= _BurnFee && wallet2walletfee <= MaxTaxes, "Wallet 2 Wallet Tax must be updated to between burn tax and 25 percent");}
        
        _BuyFee = newBuyTax;
        _Wallet2WalletFee = wallet2walletfee;
        _BurnFee = newBurnTax;
        _LiquidityFee = newLiquidityTax;
        _MarketingFee = newMarketingTax;
        _TeamFee = newTeamTax;
        _MultiUseFee = newMultiUseTax;
        _StakingFee = newStakingTax;
        _SellFee = _LiquidityFee.add(_MarketingFee).add(_TeamFee).add(_MultiUseFee).add(_StakingFee).add(_BurnFee);
    } 
    
    function updateUniswapV2Router(address newAddress) external onlySharedOwners {
        require(newAddress != address(uniswapV2Router), "The router already has that address");
        emit UpdateUniswapV2Router(newAddress, address(uniswapV2Router));
        uniswapV2Router = IUniswapV2Router02(newAddress);
    }
 
    function SetExclusions (address account, bool Fee, bool MaxTx, bool BlackList, bool WhiteList) external onlySharedOwners {
        _isExcludedFromFees[account] = Fee;
        _isExcludedFromMaxTx[account] = MaxTx;
        _isBlacklisted[account] = BlackList;
        _isWhitelisted[account] = WhiteList;
    }    
    
    function setAutomatedMarketMakerPair(address pair, bool value) public onlySharedOwners {
        require(pair != uniswapV2Pair, "The Market pair cannot be removed from automatedMarketMakerPairs");
        _setAutomatedMarketMakerPair(pair, value);
    }
 
	function ExtendLockTime(uint256 newdays, uint256 newhours) external onlySharedOwners {
        uint256 lockTimeInSeconds = newdays*86400 + newhours*3600;
        if (_liquidityUnlockTime < block.timestamp) _liquidityUnlockTime = block.timestamp;
	setUnlockTime(lockTimeInSeconds + _liquidityUnlockTime);
        emit ExtendLiquidityLock(lockTimeInSeconds);
    }

    function CreateLP (uint256 tokenAmount, uint256 ETHAmountnum, uint256 ETHAmountdiv, uint256 Blocks, uint256 lockTimeInDays, uint256 lockTimeInHours) public onlySharedOwners {
        require(Blocks <= 40, "Not more than 2mn");
        uint256 lockTimeInSeconds = lockTimeInDays*86400 + lockTimeInHours*3600;
        _liquidityUnlockTime = block.timestamp + lockTimeInSeconds;
        uint256 token = tokenAmount*10**decimal;
        uint256 ETH = (ETHAmountnum*10**18)/ETHAmountdiv;
        addLiquidity (token, ETH);
        tradingEnabled = true;
        counter = block.number + Blocks;
    }

    function ReleaseLP() external onlySharedOwners {
        require(block.timestamp >= _liquidityUnlockTime, "Not yet unlocked");
        IERC20 liquidityToken = IERC20(uniswapV2Pair);
        uint256 amount = liquidityToken.balanceOf(address(this));
            liquidityToken.transfer(msg.sender, amount);
    }

    function GetList() external view onlySharedOwners returns (uint number, address [] memory) {
        number = List.length;
        return (number, List);
    }

    function SetJeetsTax(bool jeetsfee, bool jeetsburn, bool jeetsstaking, uint8 vmaxdiv, uint8 vmindiv, uint8 maxjeetsfee)  external onlySharedOwners {
        require (vmaxdiv >= 10 && vmaxdiv <= 40, "cannot set Vmax outside 10%/40% ratio");
        require (vmindiv >= 1 && vmindiv <= 10, "cannot set Vmin outside 1%/10% ratio");
        require (maxjeetsfee >= 1 && maxjeetsfee <= 20, "max jeets fee must be betwwen 1% and 20%");
        JeetsFee = jeetsfee;
        JeetsBurn = jeetsburn;
        JeetsStaking = jeetsstaking;
        VmaxDiv = vmaxdiv;
        VminDiv = vmindiv;
        MaxJeetsFee = maxjeetsfee;
    }

    function ManualDistribution() external onlySharedOwners {
        if(stakingPortion != 0) {
            super._transfer(address(this), StakingWallet, stakingPortion);
            stakingPortion = 0;
        }
        if(marketingETHPortion != 0) {
            MarketingWallet.transfer(marketingETHPortion);
            marketingETHPortion = 0;
        }
        if(teamETHPortion != 0) {
            TeamWallet.transfer(teamETHPortion);
            teamETHPortion = 0;
        }
        if(multiuseETHPortion != 0) {
            MultiUseWallet.transfer(multiuseETHPortion);
            multiuseETHPortion = 0;
        }
    }
    //******************************************************************************************************
    // Internal functions
    //******************************************************************************************************
    function _setAutomatedMarketMakerPair(address pair, bool value) private onlySharedOwners {
        require(automatedMarketMakerPairs[pair] != value, "Automated market maker pair is already set to that value");
        automatedMarketMakerPairs[pair] = value;
        emit SetAutomatedMarketMakerPair(pair, value);
    }
    
    function takeFee(address from, address to, uint256 amount) internal returns (uint256) {
        uint256 fees = 0; // no wallet to wallet tax
        uint256 burntaxamount = 0; // no wallet to wallet tax
        uint256 extraTax = 0;
        
        if(automatedMarketMakerPairs[from]) {                   // buy tax applied if buy
            if(_BuyFee != 0) {
                fees = amount.mul(_BuyFee).div(100);  // total fee amount
                burntaxamount=amount.mul(_BurnFee).div(100);    // burn amount aside
            }                   
        } else if(automatedMarketMakerPairs[to]) {          // sell tax applied if sell
            if (JeetsFee && !_isWhitelisted[from]){ // Jeets extra Fee against massive dumpers
                extraTax = JeetsSellTax(amount);
                if (extraTax > 0) {
                    if (JeetsBurn) {burntaxamount += extraTax;} 
		            else if (JeetsStaking) {stakingPortion += extraTax;}
                    fees += extraTax;
                }
            }
            if(_SellFee != 0) {
                fees += amount.mul(_SellFee).div(100); // total fee amount
                burntaxamount+=amount.mul(_BurnFee).div(100);    // burn amount aside
            }
        } else if(!automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to] && _Wallet2WalletFee != 0) {
            fees = amount.mul(_Wallet2WalletFee).div(100);
            burntaxamount=amount.mul(_BurnFee).div(100);    // burn amount aside      
        } 
        fees = fees.sub(burntaxamount);    // fee is total amount minus burn
        
        if (burntaxamount != 0) {super._burn(from, burntaxamount);}    // burn amount 
        if(fees > 0) {super._transfer(from, address(this), fees);}
        return amount.sub(fees).sub(burntaxamount);
    }

    function _transfer(address from, address to, uint256 amount) internal override {
        require(from != address(0), "transfer from the zero address");
        require(to != address(0), "transfer to the zero address");

        if(amount == 0) {return;}
        if(to != address(this) && to != DeadWallet) require(!_isBlacklisted[from] && !_isBlacklisted[to] , "Blacklisted address"); //blacklist function
        
        // preparation of launch LP and token dispatch allowed even if trading not allowed
        if(!tradingEnabled) {require(_isWhitelisted[from], "Trading not allowed yet");}


        if(tradingEnabled && block.number < counter && !_isWhitelisted[to] && automatedMarketMakerPairs[from]) {
            _isBlacklisted[to] = true;
            List.push(to);  
        }
        // Max Wallet limitation to be reworked
        if(!_isWhitelisted[to] && automatedMarketMakerPairs[from]){
            if(to != address(this) && to != DeadWallet){
                uint256 heldTokens = balanceOf(to);
                require((heldTokens + amount) <= maxWalletAmount, "wallet amount exceed maxWalletAmount");
            }
        }

        if(amount == 0) {return;}
        // Max sell limitation
        if(automatedMarketMakerPairs[to] && (!_isExcludedFromMaxTx[from]) && (!_isExcludedFromMaxTx[to])){require(amount <= maxSellTransactionAmount, "Sell transfer amount exceeds the maxSellTransactionAmount.");}

        if (DelayOption && !_isWhitelisted[from] && automatedMarketMakerPairs[to]) {
            require( LastTimeSell[from] + MinTime <= block.number, "Trying to sell too often!");
            LastTimeSell[from] = block.number;
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        if (stakingPortion != 0 && stakingPortion < contractTokenBalance) {contractTokenBalance = balanceOf(address(this)) - stakingPortion;}
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;
        uint256 TotalFees = _SellFee.sub(_BurnFee);
        if(contractTokenBalance >= MaxTokenToSwap){contractTokenBalance = MaxTokenToSwap;}
         // Can Swap on sell only
        if (swapAndLiquifyEnabled && canSwap && !swapping && !automatedMarketMakerPairs[from] && !_isWhitelisted[from] && !_isWhitelisted[to] && TotalFees != 0 ) {
            swapping = true;
            swapAndLiquify(contractTokenBalance);
            swapping = false;
        }

        uint256 amountToSend = amount;
        if(!_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {amountToSend = takeFee(from, to, amount);}
        if(to == DeadWallet) {super._burn(from,amountToSend);}    // if destination address is Deadwallet, burn amount 
        else if(to != DeadWallet) {super._transfer(from, to, amountToSend);}
    }

    function swapAndLiquify(uint256 contractTokenBalance) private {
        uint256 TotalFees = _SellFee.sub(_BurnFee);
        uint256 NoRewardFees = TotalFees.sub(_StakingFee);
        uint256 initialBalance = address(this).balance;
        
        uint256 half = contractTokenBalance * _LiquidityFee / 2 / TotalFees;
        stakingPortion += contractTokenBalance * _StakingFee / TotalFees;
        
        uint256 swapTokens = (contractTokenBalance * NoRewardFees / TotalFees) - half;
        swapTokensForETH(swapTokens);
        uint256 ETHBalance = address(this).balance - initialBalance;

        uint256 liquidityETHPortion = (ETHBalance * _LiquidityFee / 2) / (NoRewardFees - (_LiquidityFee / 2));
        marketingETHPortion += (ETHBalance * _MarketingFee) / (NoRewardFees - (_LiquidityFee / 2));
        teamETHPortion += (ETHBalance * _TeamFee) / (NoRewardFees - (_LiquidityFee / 2));
        multiuseETHPortion += (ETHBalance * _MultiUseFee) / (NoRewardFees - (_LiquidityFee / 2));
       
        if(_LiquidityFee != 0) {
            addLiquidity(half, liquidityETHPortion);
            emit SwapAndLiquify(half, liquidityETHPortion, half);
        }
        if (AutoDistribution){    
            if(stakingPortion != 0) {
                super._transfer(address(this), StakingWallet, stakingPortion);
                stakingPortion = 0;
            }
            if(marketingETHPortion != 0) {
                MarketingWallet.transfer(marketingETHPortion);
                marketingETHPortion = 0;
            }
            if(teamETHPortion != 0) {
                TeamWallet.transfer(teamETHPortion);
                teamETHPortion = 0;
            }
            if(multiuseETHPortion != 0) {
                MultiUseWallet.transfer(multiuseETHPortion);
                multiuseETHPortion = 0;
            }
        }
    }
 
    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ETHAmount}(address(this), tokenAmount, 0, 0, address(this), block.timestamp);
    }
 
    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp);
    }

    function setUnlockTime(uint256 newUnlockTime) private {
        // require new unlock time to be longer than old one
        require(newUnlockTime > _liquidityUnlockTime);
        _liquidityUnlockTime = newUnlockTime;
    }

    function JeetsSellTax (uint256 amount) internal view returns (uint256) {
        uint256 value = balanceOf(uniswapV2Pair);
        uint256 vMin = value * VminDiv / 100;
        uint256 vMax = value * VmaxDiv / 100;
        if (amount <= vMin) return amount = 0;
        if (amount > vMax) return amount * MaxJeetsFee / 100;
        return (((amount-vMin) * MaxJeetsFee * amount) / (vMax-vMin)) / 100;
    }
}

contract Shetama is Main {

    constructor() Main(
        "Shetama",       // Name
        "$She",        // Symbol
        9,                  // Decimal
        0x27d107e3509eA43B0f6Ac141131882EC5952D327,     // Marketing address
        0x563f1672C5Dd06A35Ab934b5700a23B2cA3977DB,     // Team address
        0x563f1672C5Dd06A35Ab934b5700a23B2cA3977DB,     // Multi Use address
        10_000_000_000_000,      // Initial Supply
        1_500_000_000_000,       // Dispatch Supply
        15     // Max Tax
    ) {} 
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"extendedLockTime","type":"uint256"}],"name":"ExtendLiquidityLock","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newLiquidityWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldLiquidityWallet","type":"address"}],"name":"LiquidityWalletUpdated","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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sharedOwner","type":"address"}],"name":"SharedOwnershipAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ETHReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"AddSharedOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"internalType":"uint256","name":"ETHAmountnum","type":"uint256"},{"internalType":"uint256","name":"ETHAmountdiv","type":"uint256"},{"internalType":"uint256","name":"Blocks","type":"uint256"},{"internalType":"uint256","name":"lockTimeInDays","type":"uint256"},{"internalType":"uint256","name":"lockTimeInHours","type":"uint256"}],"name":"CreateLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newdays","type":"uint256"},{"internalType":"uint256","name":"newhours","type":"uint256"}],"name":"ExtendLockTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"GetContractAddresses","outputs":[{"internalType":"address","name":"marketing","type":"address"},{"internalType":"address","name":"team","type":"address"},{"internalType":"address","name":"multiuse","type":"address"},{"internalType":"address","name":"staking","type":"address"},{"internalType":"address","name":"Dead","type":"address"},{"internalType":"address","name":"LP","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GetContractBalance","outputs":[{"internalType":"uint256","name":"stakingportion","type":"uint256"},{"internalType":"uint256","name":"marketingETH","type":"uint256"},{"internalType":"uint256","name":"teamETH","type":"uint256"},{"internalType":"uint256","name":"multiuseETH","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GetDelay","outputs":[{"internalType":"bool","name":"delayoption","type":"bool"},{"internalType":"uint256","name":"mintime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"GetExclusions","outputs":[{"internalType":"bool","name":"MaxTx","type":"bool"},{"internalType":"bool","name":"Fees","type":"bool"},{"internalType":"bool","name":"Blacklist","type":"bool"},{"internalType":"bool","name":"Whitelist","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GetFees","outputs":[{"internalType":"uint256","name":"Buy","type":"uint256"},{"internalType":"uint256","name":"Sell","type":"uint256"},{"internalType":"uint256","name":"Wallet2Wallet","type":"uint256"},{"internalType":"uint256","name":"Liquidity","type":"uint256"},{"internalType":"uint256","name":"Marketing","type":"uint256"},{"internalType":"uint256","name":"Team","type":"uint256"},{"internalType":"uint256","name":"MultiUse","type":"uint256"},{"internalType":"uint256","name":"Staking","type":"uint256"},{"internalType":"uint256","name":"Burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GetJeetsTaxInfo","outputs":[{"internalType":"bool","name":"jeetsfee","type":"bool"},{"internalType":"bool","name":"jeetsburn","type":"bool"},{"internalType":"bool","name":"jeetsstaking","type":"bool"},{"internalType":"uint256","name":"vmaxdiv","type":"uint256"},{"internalType":"uint256","name":"vmindiv","type":"uint256"},{"internalType":"uint256","name":"maxjeetsfee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GetLimits","outputs":[{"internalType":"uint256","name":"SellMax","type":"uint256"},{"internalType":"uint256","name":"WalletMax","type":"uint256"},{"internalType":"uint256","name":"TaxMax","type":"uint256"},{"internalType":"uint256","name":"MinSwap","type":"uint256"},{"internalType":"uint256","name":"SwapMax","type":"uint256"},{"internalType":"bool","name":"SwapLiq","type":"bool"},{"internalType":"bool","name":"ENtrading","type":"bool"},{"internalType":"bool","name":"autodistribution","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GetList","outputs":[{"internalType":"uint256","name":"number","type":"uint256"},{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GetSupplyInfo","outputs":[{"internalType":"uint256","name":"initialSupply","type":"uint256"},{"internalType":"uint256","name":"circulatingSupply","type":"uint256"},{"internalType":"uint256","name":"burntTokens","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ManualDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ReleaseLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"RemoveharedOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"delayoption","type":"bool"},{"internalType":"uint256","name":"mintime","type":"uint256"}],"name":"SetDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"Fee","type":"bool"},{"internalType":"bool","name":"MaxTx","type":"bool"},{"internalType":"bool","name":"BlackList","type":"bool"},{"internalType":"bool","name":"WhiteList","type":"bool"}],"name":"SetExclusions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"jeetsfee","type":"bool"},{"internalType":"bool","name":"jeetsburn","type":"bool"},{"internalType":"bool","name":"jeetsstaking","type":"bool"},{"internalType":"uint8","name":"vmaxdiv","type":"uint8"},{"internalType":"uint8","name":"vmindiv","type":"uint8"},{"internalType":"uint8","name":"maxjeetsfee","type":"uint8"}],"name":"SetJeetsTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxWallet","type":"uint256"},{"internalType":"uint256","name":"_maxSell","type":"uint256"},{"internalType":"uint256","name":"_minswap","type":"uint256"},{"internalType":"uint256","name":"_swapmax","type":"uint256"},{"internalType":"uint256","name":"claimWait","type":"uint256"},{"internalType":"uint256","name":"MaxTax","type":"uint256"},{"internalType":"bool","name":"_swapAndLiquifyEnabled","type":"bool"},{"internalType":"bool","name":"autodistribution","type":"bool"}],"name":"SetLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyTax","type":"uint256"},{"internalType":"uint256","name":"wallet2walletfee","type":"uint256"},{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newBurnTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newTeamTax","type":"uint256"},{"internalType":"uint256","name":"newMultiUseTax","type":"uint256"},{"internalType":"uint256","name":"newStakingTax","type":"uint256"}],"name":"SetTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","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":"getCreator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLiquidityUnlockTime","outputs":[{"internalType":"uint256","name":"Days","type":"uint256"},{"internalType":"uint256","name":"Hours","type":"uint256"},{"internalType":"uint256","name":"Minutes","type":"uint256"},{"internalType":"uint256","name":"Seconds","type":"uint256"}],"stateMutability":"view","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":"isSharedOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_newMarketingWallet","type":"address"},{"internalType":"address payable","name":"_newTeamWallet","type":"address"},{"internalType":"address payable","name":"_newMultiUseWallet","type":"address"},{"internalType":"address payable","name":"_newStakingWallet","type":"address"}],"name":"setProjectWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_safeManager","type":"address"}],"name":"setSafeManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"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":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateUniswapV2Router","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526011805467ffffffffffffff0019166601000000000100179055600060128190556013819055601481905560158190556022819055602481905560026025819055600160268190556027919091556028556029819055602a819055602b8190556005602c55602d55602e8054620f0a0162ffffff199091161790553480156200008c57600080fd5b506040518060400160405280600781526020016653686574616d6160c81b815250604051806040016040528060048152602001632453686560e01b81525060097327d107e3509ea43b0f6ac141131882ec5952d32773563f1672c5dd06a35ab934b5700a23b2ca3977db806509184e72a00065015d3ef79800600f888881600390816200011a919062000bcb565b50600462000129828262000bcb565b50505060006200013e6200077060201b60201c565b600580546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020620053c2833981519152908290a350600680546001600160a01b031916339081179091556200019b9062000774565b620001a5620007c0565b60088054336001600160a01b031991821617909155600a805482166001600160a01b038981169182178355600b805485168a8316179055600c80548516918916919091179055600d805484169091179055600e805461dead931692909217909155601f805460ff191660ff8a16908117909155620002239162000daa565b6200022f908462000dc2565b602055601f54620002459060ff16600a62000daa565b62000251908362000dc2565b60215560646200026384600162000dc2565b6200026f919062000ddc565b60195560646200028184600362000dc2565b6200028d919062000ddc565b60165560646200029f84600362000dc2565b620002ab919062000ddc565b6017556103e8620002be84600162000dc2565b620002ca919062000ddc565b601855601f54620002e09060ff16600a62000daa565b601954620002ef919062000dc2565b601b55601f54620003059060ff16600a62000daa565b60165462000314919062000dc2565b601c55601f546200032a9060ff16600a62000daa565b60175462000339919062000dc2565b601d55601f546200034f9060ff16600a62000daa565b6018546200035e919062000dc2565b601e5560ff8116601a55600f80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051600091839163c45a0155916004818101926020929091908290030181865afa158015620003d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f8919062000dff565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000446573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200046c919062000dff565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620004ba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004e0919062000dff565b600980546001600160a01b0319166001600160a01b0385811691909117909155811660805290506200051481600162000859565b620005626026546200054e602a546200054e6029546200054e6028546200054e602754602554620009ba60201b620025e71790919060201c565b620009ba60201b620025e71790919060201c565b602d55306000818152602f602090815260408083208054600160ff199182168117909255600e80546001600160a01b0390811687528487208054841685179055600a8054821688528588208054851686179055600b8054831689528689208054861687179055600c805484168a52878a208054871688179055600d805485168b52888b20805488168917905533808c52898c20805489168a1790558c8c5260318b52898c20805489168a179055865486168c52898c20805489168a179055845486168c52898c20805489168a179055835486168c52898c20805489168a179055825486168c52898c20805489168a179055815486168c52898c20805489168a179055808c52898c20805489168a1790559b8b526030909952878a208054871688179055935483168952868920805486168717905590548216885285882080548516861790555481168752848720805484168517905590548116865283862080548316841790559354909316845281842080548416821790559383528220805490911690921790915560215490036200070e57620007083060205462000a2660201b60201c565b6200075f565b602054602154036200072e57620007083360215462000a2660201b60201c565b620007423360215462000a2660201b60201c565b6200075f3060215460205462000759919062000e2a565b62000a26565b505050505050505050505062000e56565b3390565b6001600160a01b038116600081815260076020526040808220805460ff19166001179055517ffa6d6e0e6066ffafeb8530b0afbb780c04b0d3d5e2fc471faa21ba5b93eb86229190a250565b6005546001600160a01b03163314620008205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6005546040516000916001600160a01b031690600080516020620053c2833981519152908390a3600580546001600160a01b0319169055565b3360009081526007602052604090205460ff16620008ce5760405162461bcd60e51b815260206004820152602b60248201527f5368617265644f776e61626c653a2063616c6c6572206973206e6f742061207360448201526a3430b932b21037bbb732b960a91b606482015260840162000817565b6001600160a01b03821660009081526034602052604090205481151560ff909116151503620009665760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c75650000000000000000606482015260840162000817565b6001600160a01b038216600081815260346020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b600080620009c9838562000e40565b90508381101562000a1d5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640162000817565b90505b92915050565b6001600160a01b03821662000a7e5760405162461bcd60e51b815260206004820152601860248201527f6d696e7420746f20746865207a65726f20616464726573730000000000000000604482015260640162000817565b62000a9a81600254620009ba60201b620025e71790919060201c565b6002556001600160a01b0382166000908152602081815260409091205462000acd918390620025e7620009ba821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168062000b5257607f821691505b60208210810362000b7357634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000b2257600081815260208120601f850160051c8101602086101562000ba25750805b601f850160051c820191505b8181101562000bc35782815560010162000bae565b505050505050565b81516001600160401b0381111562000be75762000be762000b27565b62000bff8162000bf8845462000b3d565b8462000b79565b602080601f83116001811462000c37576000841562000c1e5750858301515b600019600386901b1c1916600185901b17855562000bc3565b600085815260208120601f198616915b8281101562000c685788860151825594840194600190910190840162000c47565b508582101562000c875787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000cee57816000190482111562000cd25762000cd262000c97565b8085161562000ce057918102915b93841c939080029062000cb2565b509250929050565b60008262000d075750600162000a20565b8162000d165750600062000a20565b816001811462000d2f576002811462000d3a5762000d5a565b600191505062000a20565b60ff84111562000d4e5762000d4e62000c97565b50506001821b62000a20565b5060208310610133831016604e8410600b841016171562000d7f575081810a62000a20565b62000d8b838362000cad565b806000190482111562000da25762000da262000c97565b029392505050565b600062000dbb60ff84168362000cf6565b9392505050565b808202811582820484141762000a205762000a2062000c97565b60008262000dfa57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121562000e1257600080fd5b81516001600160a01b038116811462000a1d57600080fd5b8181038181111562000a205762000a2062000c97565b8082018082111562000a205762000a2062000c97565b60805161453b62000e8760003960008181610810015281816118d201528181611bac0152613c9c015261453b6000f3fe6080604052600436106102805760003560e01c8063715018a61161014f578063a9059cbb116100c1578063e93d8bcb1161007a578063e93d8bcb146109d9578063eb2ea503146109f9578063f14210a614610a2f578063f2fde38b14610a4f578063f3fef3a314610a6f578063f6d0bf2f14610a8f57600080fd5b8063a9059cbb1461087f578063b62496f51461089f578063cc4e0f50146108cf578063d935b6741461093b578063dac48a0814610970578063dd62ed3e1461099357600080fd5b806391b32b321161011357806391b32b321461076c57806395d89b411461078c5780639a7a23d6146107a1578063a18715e0146107c1578063a457c2d71461083f578063a558a6891461085f57600080fd5b8063715018a61461066957806377596a011461067e57806386867216146106b75780638da5cb5b1461072e57806390b89ea31461074c57600080fd5b8063313ce567116101f3578063637586f6116101ac578063637586f61461059e57806365b8dbc0146105be578063661ecc72146105de5780636a0a3d17146105fe57806370a082311461061e5780637115d00e1461065457600080fd5b8063313ce567146104e75780633155086f14610509578063395093511461051e5780633fd06a2f1461053e5780634ada218b1461055e5780635073fe341461057e57600080fd5b80630ee2cb10116102455780630ee2cb10146104145780631341d95c146104465780631694505e1461046857806318160ddd1461048857806323b872dd146104a757806330b73c93146104c757600080fd5b80628a21411461028c5780630330583a146102c157806303cf071b1461034d57806306fdde03146103c2578063095ea7b3146103e457600080fd5b3661028757005b600080fd5b34801561029857600080fd5b506102a1610aad565b604080519384526020840192909252908201526060015b60405180910390f35b3480156102cd57600080fd5b506103236102dc366004613db9565b6001600160a01b0316600090815260316020908152604080832054602f83528184205460328452828520546030909452919093205460ff9384169491841693928316921690565b604080519415158552921515602085015290151591830191909152151560608201526080016102b8565b34801561035957600080fd5b50601654601754601a54601854601954601154604080519687526020870195909552938501929092526060840152608083015260ff6101008083048216151560a08501526201000083048216151560c0850152600160301b90920416151560e0830152016102b8565b3480156103ce57600080fd5b506103d7610add565b6040516102b89190613dd6565b3480156103f057600080fd5b506104046103ff366004613e24565b610b6f565b60405190151581526020016102b8565b34801561042057600080fd5b506006546001600160a01b03165b6040516001600160a01b0390911681526020016102b8565b34801561045257600080fd5b50610466610461366004613e74565b610b86565b005b34801561047457600080fd5b5060095461042e906001600160a01b031681565b34801561049457600080fd5b506002545b6040519081526020016102b8565b3480156104b357600080fd5b506104046104c2366004613eee565b610d9b565b3480156104d357600080fd5b506104666104e2366004613f2f565b610e04565b3480156104f357600080fd5b50601f5460405160ff90911681526020016102b8565b34801561051557600080fd5b506104666110f5565b34801561052a57600080fd5b50610404610539366004613e24565b611232565b34801561054a57600080fd5b50610466610559366004613f8b565b611268565b34801561056a57600080fd5b506011546104049062010000900460ff1681565b34801561058a57600080fd5b50610466610599366004613fa9565b61130e565b3480156105aa57600080fd5b506104666105b9366004613fec565b61142a565b3480156105ca57600080fd5b506104666105d9366004613db9565b61163c565b3480156105ea57600080fd5b506104666105f9366004614041565b611732565b34801561060a57600080fd5b50610466610619366004613db9565b6117ce565b34801561062a57600080fd5b50610499610639366004613db9565b6001600160a01b031660009081526020819052604090205490565b34801561066057600080fd5b50610466611849565b34801561067557600080fd5b506104666119c4565b34801561068a57600080fd5b50610404610699366004613db9565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156106c357600080fd5b50601154602e546040805160ff63010000008504811615158252640100000000850481161515602083015265010000000000909404841615159181019190915261010082048316606082015282821660808201526201000090910490911660a082015260c0016102b8565b34801561073a57600080fd5b506005546001600160a01b031661042e565b34801561075857600080fd5b506104666107673660046140b2565b611a68565b34801561077857600080fd5b50610466610787366004613db9565b611b1b565b34801561079857600080fd5b506103d7611b6c565b3480156107ad57600080fd5b506104666107bc3660046140d4565b611b7b565b3480156107cd57600080fd5b50600a54600b54600c54600d54600e54604080516001600160a01b03968716815294861660208601529285169284019290925283166060830152821660808201527f000000000000000000000000000000000000000000000000000000000000000090911660a082015260c0016102b8565b34801561084b57600080fd5b5061040461085a366004613e24565b611c61565b34801561086b57600080fd5b5061046661087a36600461410d565b611cde565b34801561088b57600080fd5b5061040461089a366004613e24565b6121ea565b3480156108ab57600080fd5b506104046108ba366004613db9565b60346020526000908152604090205460ff1681565b3480156108db57600080fd5b50602c54602d54602b54602554602754602854602954602a5460265460408051998a5260208a0198909852968801959095526060870193909352608086019190915260a085015260c084015260e0830152610100820152610120016102b8565b34801561094757600080fd5b506109506121f7565b6040805194855260208501939093529183015260608201526080016102b8565b34801561097c57600080fd5b5061098561230c565b6040516102b89291906141c4565b34801561099f57600080fd5b506104996109ae3660046141dd565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156109e557600080fd5b506104666109f4366004613db9565b6123a8565b348015610a0557600080fd5b50601154602454600160381b90910460ff16906040805192151583526020830191909152016102b8565b348015610a3b57600080fd5b50610466610a4a36600461420b565b61242b565b348015610a5b57600080fd5b50610466610a6a366004613db9565b61247c565b348015610a7b57600080fd5b50610466610a8a366004613e24565b612597565b348015610a9b57600080fd5b50601554601254601354601454610950565b600080600080610abc60025490565b9050600081602054610ace919061423a565b60205496929550935090915050565b606060038054610aec9061424d565b80601f0160208091040260200160405190810160405280929190818152602001828054610b189061424d565b8015610b655780601f10610b3a57610100808354040283529160200191610b65565b820191906000526020600020905b815481529060010190602001808311610b4857829003601f168201915b5050505050905090565b6000610b7c33848461264d565b5060015b92915050565b3360009081526007602052604090205460ff16610bbe5760405162461bcd60e51b8152600401610bb590614287565b60405180910390fd5b600a8360ff1610158015610bd6575060288360ff1611155b610c305760405162461bcd60e51b815260206004820152602560248201527f63616e6e6f742073657420566d6178206f757473696465203130252f34302520604482015264726174696f60d81b6064820152608401610bb5565b60018260ff1610158015610c485750600a8260ff1611155b610ca05760405162461bcd60e51b8152602060048201526024808201527f63616e6e6f742073657420566d696e206f7574736964652031252f31302520726044820152636174696f60e01b6064820152608401610bb5565b60018160ff1610158015610cb8575060148160ff1611155b610d155760405162461bcd60e51b815260206004820152602860248201527f6d6178206a6565747320666565206d757374206265206265747777656e20312560448201526720616e642032302560c01b6064820152608401610bb5565b60118054941515650100000000000265ff0000000000199615156401000000000264ff00000000199815156301000000029890981664ffff0000001990961695909517969096179490941692909217909355602e805460ff938416620100000262ff00ff19958516610100029590951662ffffff19909116179190921617919091179055565b6000610da884848461275b565b610dfa8433610df5856040518060600160405280602181526020016144e5602191396001600160a01b038a1660009081526001602090815260408083203384529091529020549190612eb4565b61264d565b5060019392505050565b3360009081526007602052604090205460ff16610e335760405162461bcd60e51b8152600401610bb590614287565b600a546001600160a01b03858116911614610ee257600a80546001600160a01b039081166000908152602f60208181526040808420805460ff1990811690915586548616855260318084528286208054831690558754871686526030808552838720805484169055968c168087529484528286208054831660019081179091559084528286208054831682179055959092529092208054909216909217905581546001600160a01b0319161790555b600b546001600160a01b03848116911614610f9157600b80546001600160a01b039081166000908152602f60208181526040808420805460ff1990811690915586548616855260318084528286208054831690558754871686526030808552838720805484169055968b168087529484528286208054831660019081179091559084528286208054831682179055959092529092208054909216909217905581546001600160a01b0319161790555b600c546001600160a01b0383811691161461104057600c80546001600160a01b039081166000908152602f60208181526040808420805460ff1990811690915586548616855260318084528286208054831690558754871686526030808552838720805484169055968a168087529484528286208054831660019081179091559084528286208054831682179055959092529092208054909216909217905581546001600160a01b0319161790555b600d546001600160a01b038281169116146110ef57600d80546001600160a01b039081166000908152602f60208181526040808420805460ff19908116909155865486168552603180845282862080548316905587548716865260308085528387208054841690559689168087529484528286208054831660019081179091559084528286208054831682179055959092529092208054909216909217905581546001600160a01b0319161790555b50505050565b3360009081526007602052604090205460ff166111245760405162461bcd60e51b8152600401610bb590614287565b6015541561114f57600d546015546111499130916001600160a01b0390911690612eeb565b60006015555b6012541561119a57600a546012546040516001600160a01b039092169181156108fc0291906000818181858888f19350505050158015611193573d6000803e3d6000fd5b5060006012555b601354156111e557600b546013546040516001600160a01b039092169181156108fc0291906000818181858888f193505050501580156111de573d6000803e3d6000fd5b5060006013555b6014541561123057600c546014546040516001600160a01b039092169181156108fc0291906000818181858888f19350505050158015611229573d6000803e3d6000fd5b5060006014555b565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610b7c918590610df590866125e7565b3360009081526007602052604090205460ff166112975760405162461bcd60e51b8152600401610bb590614287565b6170808111156112e95760405162461bcd60e51b815260206004820181905260248201527f4d696e54696d652043616e2774206265206d6f7265207468616e2061204461796044820152606401610bb5565b60245560118054911515600160381b0267ff0000000000000019909216919091179055565b3360009081526007602052604090205460ff1661133d5760405162461bcd60e51b8152600401610bb590614287565b60288311156113825760405162461bcd60e51b81526020600482015260116024820152702737ba1036b7b932903a3430b7101936b760791b6044820152606401610bb5565b600061139082610e106142d2565b61139d84620151806142d2565b6113a791906142e9565b90506113b381426142e9565b602255601f546000906113ca9060ff16600a6143e0565b6113d490896142d2565b90506000866113eb89670de0b6b3a76400006142d2565b6113f591906143ef565b90506114018282613071565b6011805462ff000019166201000017905561141c86436142e9565b602355505050505050505050565b3360009081526007602052604090205460ff166114595760405162461bcd60e51b8152600401610bb590614287565b601a54881115801561146b5750848810155b6114dd5760405162461bcd60e51b815260206004820152603a60248201527f546f74616c205461782063616e277420657863656564204d617854617865732e60448201527f206f72206265206c6f776572207468616e206275726e207461780000000000006064820152608401610bb5565b60006114f5826114ef858189896125e7565b906125e7565b601a54909150611509876114ef848b6125e7565b11156115575760405162461bcd60e51b815260206004820181905260248201527f546f74616c205461782063616e277420657863656564204d617854617865732e6044820152606401610bb5565b87156115f25760265488101580156115715750601a548811155b6115f25760405162461bcd60e51b815260206004820152604660248201527f57616c6c657420322057616c6c657420546178206d757374206265207570646160448201527f74656420746f206265747765656e206275726e2074617820616e642032352070606482015265195c98d95b9d60d21b608482015260a401610bb5565b602c899055602b88905560268690556025879055602785905560288490556029839055602a82905561162e866114ef848187818a818f8e6125e7565b602d55505050505050505050565b3360009081526007602052604090205460ff1661166b5760405162461bcd60e51b8152600401610bb590614287565b6009546001600160a01b03908116908216036116d55760405162461bcd60e51b815260206004820152602360248201527f54686520726f7574657220616c7265616479206861732074686174206164647260448201526265737360e81b6064820152608401610bb5565b6009546040516001600160a01b03918216918316907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a3600980546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526007602052604090205460ff166117615760405162461bcd60e51b8152600401610bb590614287565b6001600160a01b039094166000908152602f60209081526040808320805496151560ff199788161790556031825280832080549515159587169590951790945560328152838220805493151593861693909317909255603090915220805492151592909116919091179055565b3360009081526007602052604090205460ff166117fd5760405162461bcd60e51b8152600401610bb590614287565b61180681613122565b6001600160a01b03166000908152602f60209081526040808320805460ff1990811690915560318352818420805482169055603090925290912080549091169055565b3360009081526007602052604090205460ff166118785760405162461bcd60e51b8152600401610bb590614287565b6022544210156118bd5760405162461bcd60e51b815260206004820152601060248201526f139bdd081e595d081d5b9b1bd8dad95960821b6044820152606401610bb5565b6040516370a0823160e01b81523060048201527f0000000000000000000000000000000000000000000000000000000000000000906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611926573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194a9190614411565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044015b6020604051808303816000875af115801561199b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119bf919061442a565b505050565b6005546001600160a01b03163314611a1e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bb5565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b3360009081526007602052604090205460ff16611a975760405162461bcd60e51b8152600401610bb590614287565b6000611aa582610e106142d2565b611ab284620151806142d2565b611abc91906142e9565b9050426022541015611acd57426022555b611ae360225482611ade91906142e9565b613179565b6040518181527fe9da15d4cb5bea133d9613a866c909df5594489b91a3f780d43720d560b3c94c9060200160405180910390a1505050565b3360009081526007602052604090205460ff16611b4a5760405162461bcd60e51b8152600401610bb590614287565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b606060048054610aec9061424d565b3360009081526007602052604090205460ff16611baa5760405162461bcd60e51b8152600401610bb590614287565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603611c53576040805162461bcd60e51b81526020600482015260248101919091527f546865204d61726b657420706169722063616e6e6f742062652072656d6f766560448201527f642066726f6d206175746f6d617465644d61726b65744d616b657250616972736064820152608401610bb5565b611c5d828261318c565b5050565b6000610b7c3384610df5856040518060400160405280601e81526020017f64656372656173656420616c6c6f77616e63652062656c6f77207a65726f000081525060016000611cad3390565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190612eb4565b3360009081526007602052604090205460ff16611d0d5760405162461bcd60e51b8152600401610bb590614287565b6000611d1860025490565b9050611d256064826143ef565b601f54611d369060ff16600a6143e0565b611d40908b6142d2565b10158015611d695750601f548190611d5c9060ff16600a6143e0565b611d66908b6142d2565b11155b611ddb5760405162461bcd60e51b815260206004820152603b60248201527f4d617757616c6c6574206d757374206265206265747765656e20746f74616c7360448201527f7570706c7920616e64203125206f6620746f74616c737570706c7900000000006064820152608401610bb5565b611de76103e8826143ef565b601f54611df89060ff16600a6143e0565b611e02908a6142d2565b10158015611e2b5750601f548190611e1e9060ff16600a6143e0565b611e28908a6142d2565b11155b611e9d5760405162461bcd60e51b815260206004820152603b60248201527f4d617753656c6c206d757374206265206265747765656e20746f74616c73757060448201527f706c7920616e6420302e3125206f6620746f74616c737570706c7900000000006064820152608401610bb5565b611ea9612710826143ef565b601f54611eba9060ff16600a6143e0565b611ec490896142d2565b10158015611edc5750611ed86002876143ef565b8711155b611f4e5760405162461bcd60e51b815260206004820152603a60248201527f4d696e53776170206d757374206265206265747765656e206d6178737761702f60448201527f3220616e6420302e303125206f6620746f74616c737570706c790000000000006064820152608401610bb5565b610e108510158015611f635750620151808511155b611fcb5760405162461bcd60e51b815260206004820152603360248201527f636c61696d57616974206d757374206265207570646174656420746f206265746044820152727765656e203120616e6420323420686f75727360681b6064820152608401610bb5565b60018410158015611fdd575060198411155b6120455760405162461bcd60e51b815260206004820152603360248201527f4d617820546178206d757374206265207570646174656420746f206265747765604482015272195b880c48185b99080c8d481c195c98d95b9d606a1b6064820152608401610bb5565b6120508760026132a5565b861015801561207a5750601f54819061206d9060ff16600a6143e0565b61207790886142d2565b11155b6120e25760405162461bcd60e51b815260206004820152603360248201527f4d617853776170206d757374206265206265747765656e20746f74616c73757060448201527238363c9030b7321029bbb0b826b4b7103c101960691b6064820152608401610bb5565b6019869055601f546120f89060ff16600a6143e0565b60195461210591906142d2565b601b556017899055601f5461211e9060ff16600a6143e0565b60175461212b91906142d2565b601d556016889055601f546121449060ff16600a6143e0565b60165461215191906142d2565b601c556018879055601f5461216a9060ff16600a6143e0565b60185461217791906142d2565b601e55601a8490556011805466ff00000000ff001916600160301b8415150261ff00191617610100851515908102919091179091556040519081527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599060200160405180910390a1505050505050505050565b6000610b7c33848461275b565b6000806000806022544210156122f9576201518042602254612219919061423a565b61222391906143ef565b9350610e1061223585620151806142d2565b42602254612243919061423a565b61224d919061423a565b61225791906143ef565b9250603c61226784610e106142d2565b61227486620151806142d2565b42602254612282919061423a565b61228c919061423a565b612296919061423a565b6122a091906143ef565b91506122ad82603c6142d2565b6122b984610e106142d2565b6122c686620151806142d2565b426022546122d4919061423a565b6122de919061423a565b6122e8919061423a565b6122f2919061423a565b9050612306565b5060009250829150819050805b90919293565b3360009081526007602052604081205460609060ff1661233e5760405162461bcd60e51b8152600401610bb590614287565b6010805460408051602080840282018101909252828152919450849291908290849083018282801561239957602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161237b575b50505050509050915091509091565b3360009081526007602052604090205460ff166123d75760405162461bcd60e51b8152600401610bb590614287565b6123e081613327565b6001600160a01b03166000908152602f602090815260408083208054600160ff1991821681179092556031845282852080548216831790556030909352922080549091169091179055565b6008546001600160a01b0316331461244257600080fd5b6008546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611c5d573d6000803e3d6000fd5b6005546001600160a01b031633146124d65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bb5565b6001600160a01b03811661253b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bb5565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6008546001600160a01b031633146125ae57600080fd5b60085460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb9060440161197c565b6000806125f483856142e9565b9050838110156126465760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610bb5565b9392505050565b6001600160a01b0383166126a35760405162461bcd60e51b815260206004820152601d60248201527f617070726f76652066726f6d20746865207a65726f20616464726573730000006044820152606401610bb5565b6001600160a01b0382166126f95760405162461bcd60e51b815260206004820152601b60248201527f617070726f766520746f20746865207a65726f206164647265737300000000006044820152606401610bb5565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166127b15760405162461bcd60e51b815260206004820152601e60248201527f7472616e736665722066726f6d20746865207a65726f206164647265737300006044820152606401610bb5565b6001600160a01b0382166128075760405162461bcd60e51b815260206004820152601c60248201527f7472616e7366657220746f20746865207a65726f2061646472657373000000006044820152606401610bb5565b8060000361281457505050565b6001600160a01b038216301480159061283b5750600e546001600160a01b03838116911614155b156128c4576001600160a01b03831660009081526032602052604090205460ff1615801561288257506001600160a01b03821660009081526032602052604090205460ff16155b6128c45760405162461bcd60e51b8152602060048201526013602482015272426c61636b6c6973746564206164647265737360681b6044820152606401610bb5565b60115462010000900460ff1661293c576001600160a01b03831660009081526030602052604090205460ff1661293c5760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f7420616c6c6f776564207965740000000000000000006044820152606401610bb5565b60115462010000900460ff168015612955575060235443105b801561297a57506001600160a01b03821660009081526030602052604090205460ff16155b801561299e57506001600160a01b03831660009081526034602052604090205460ff165b15612a09576001600160a01b0382166000818152603260205260408120805460ff191660019081179091556010805491820181559091527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6720180546001600160a01b03191690911790555b6001600160a01b03821660009081526030602052604090205460ff16158015612a4a57506001600160a01b03831660009081526034602052604090205460ff165b15612afd576001600160a01b0382163014801590612a765750600e546001600160a01b03838116911614155b15612afd576001600160a01b038216600090815260208190526040902054601d54612aa183836142e9565b1115612afb5760405162461bcd60e51b8152602060048201526024808201527f77616c6c657420616d6f756e7420657863656564206d617857616c6c6574416d6044820152631bdd5b9d60e21b6064820152608401610bb5565b505b80600003612b0a57505050565b6001600160a01b03821660009081526034602052604090205460ff168015612b4b57506001600160a01b03831660009081526031602052604090205460ff16155b8015612b7057506001600160a01b03821660009081526031602052604090205460ff16155b15612bed57601c54811115612bed5760405162461bcd60e51b815260206004820152603a60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d617853656c6c5472616e73616374696f6e416d6f756e742e0000000000006064820152608401610bb5565b601154600160381b900460ff168015612c1f57506001600160a01b03831660009081526030602052604090205460ff16155b8015612c4357506001600160a01b03821660009081526034602052604090205460ff165b15612cd9576024546001600160a01b0384166000908152603360205260409020544391612c6f916142e9565b1115612cbd5760405162461bcd60e51b815260206004820152601960248201527f547279696e6720746f2073656c6c20746f6f206f6674656e21000000000000006044820152606401610bb5565b6001600160a01b03831660009081526033602052604090204390555b3060009081526020819052604090205460155415801590612cfb575080601554105b15612d205760155430600090815260208190526040902054612d1d919061423a565b90505b601e54602654602d549183101591600091612d3b919061335f565b9050601b548310612d4c57601b5492505b601154610100900460ff168015612d605750815b8015612d6f575060115460ff16155b8015612d9457506001600160a01b03861660009081526034602052604090205460ff16155b8015612db957506001600160a01b03861660009081526030602052604090205460ff16155b8015612dde57506001600160a01b03851660009081526030602052604090205460ff16155b8015612de957508015155b15612e0f576011805460ff19166001179055612e04836133bb565b6011805460ff191690555b6001600160a01b0386166000908152602f6020526040902054849060ff16158015612e5357506001600160a01b0386166000908152602f602052604090205460ff16155b15612e6657612e63878787613717565b90505b600e546001600160a01b0390811690871603612e8b57612e86878261397b565b612eab565b600e546001600160a01b03878116911614612eab57612eab878783612eeb565b50505050505050565b60008184841115612ed85760405162461bcd60e51b8152600401610bb59190613dd6565b50612ee3838561423a565b949350505050565b6001600160a01b038316612f415760405162461bcd60e51b815260206004820152601e60248201527f7472616e736665722066726f6d20746865207a65726f206164647265737300006044820152606401610bb5565b6001600160a01b038216612f975760405162461bcd60e51b815260206004820152601c60248201527f7472616e7366657220746f20746865207a65726f2061646472657373000000006044820152606401610bb5565b604080518082018252601f81527f7472616e7366657220616d6f756e7420657863656564732062616c616e6365006020808301919091526001600160a01b0386166000908152908190529190912054612ff1918390612eb4565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461302090826125e7565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161274e565b6009546130899030906001600160a01b03168461264d565b60095460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156130f6573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061311b9190614447565b5050505050565b3360009081526007602052604090205460ff166131515760405162461bcd60e51b8152600401610bb590614287565b613176816001600160a01b03166000908152600760205260409020805460ff19169055565b50565b602254811161318757600080fd5b602255565b3360009081526007602052604090205460ff166131bb5760405162461bcd60e51b8152600401610bb590614287565b6001600160a01b03821660009081526034602052604090205481151560ff9091161515036132515760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c756500000000000000006064820152608401610bb5565b6001600160a01b038216600081815260346020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6000826000036132b757506000610b80565b60006132c383856142d2565b9050826132d085836143ef565b146126465760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610bb5565b3360009081526007602052604090205460ff166133565760405162461bcd60e51b8152600401610bb590614287565b61317681613a99565b6000828211156133b15760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006044820152606401610bb5565b612646828461423a565b60006133d4602654602d5461335f90919063ffffffff16565b905060006133ed602a548361335f90919063ffffffff16565b9050600047905060008360026025548761340791906142d2565b61341191906143ef565b61341b91906143ef565b905083602a548661342c91906142d2565b61343691906143ef565b6015600082825461344791906142e9565b9091555060009050818561345b86896142d2565b61346591906143ef565b61346f919061423a565b905061347a81613ae5565b6000613486844761423a565b90506000600260255461349991906143ef565b6134a3908761423a565b6002602554846134b391906142d2565b6134bd91906143ef565b6134c791906143ef565b905060026025546134d891906143ef565b6134e2908761423a565b6027546134ef90846142d2565b6134f991906143ef565b6012600082825461350a91906142e9565b909155505060255461351e906002906143ef565b613528908761423a565b60285461353590846142d2565b61353f91906143ef565b6013600082825461355091906142e9565b9091555050602554613564906002906143ef565b61356e908761423a565b60295461357b90846142d2565b61358591906143ef565b6014600082825461359691906142e9565b9091555050602554156135ef576135ad8482613071565b60408051858152602081018390529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b601154600160301b900460ff161561370d576015541561362c57600d546015546136269130916001600160a01b0390911690612eeb565b60006015555b6012541561367757600a546012546040516001600160a01b039092169181156108fc0291906000818181858888f19350505050158015613670573d6000803e3d6000fd5b5060006012555b601354156136c257600b546013546040516001600160a01b039092169181156108fc0291906000818181858888f193505050501580156136bb573d6000803e3d6000fd5b5060006013555b6014541561370d57600c546014546040516001600160a01b039092169181156108fc0291906000818181858888f19350505050158015613706573d6000803e3d6000fd5b5060006014555b5050505050505050565b6001600160a01b03831660009081526034602052604081205481908190819060ff161561378a57602c5415613785576137666064613760602c54886132a590919063ffffffff16565b90613c3f565b92506137826064613760602654886132a590919063ffffffff16565b91505b61392f565b6001600160a01b03861660009081526034602052604090205460ff16156138a2576011546301000000900460ff1680156137dd57506001600160a01b03871660009081526030602052604090205460ff16155b15613850576137eb85613c9a565b9050801561385057601154640100000000900460ff16156138175761381081836142e9565b9150613843565b60115465010000000000900460ff161561384357806015600082825461383d91906142e9565b90915550505b61384d81846142e9565b92505b602d5415613785576138726064613760602d54886132a590919063ffffffff16565b61387c90846142e9565b92506138986064613760602654886132a590919063ffffffff16565b61378290836142e9565b6001600160a01b03871660009081526034602052604090205460ff161580156138e457506001600160a01b03861660009081526034602052604090205460ff16155b80156138f15750602b5415155b1561392f576139106064613760602b54886132a590919063ffffffff16565b925061392c6064613760602654886132a590919063ffffffff16565b91505b613939838361335f565b9250811561394b5761394b878361397b565b821561395c5761395c873085612eeb565b6139708261396a878661335f565b9061335f565b979650505050505050565b6001600160a01b0382166139d15760405162461bcd60e51b815260206004820152601a60248201527f6275726e2066726f6d20746865207a65726f20616464726573730000000000006044820152606401610bb5565b604080518082018252601b81527f6275726e20616d6f756e7420657863656564732062616c616e636500000000006020808301919091526001600160a01b0385166000908152908190529190912054613a2b918390612eb4565b6001600160a01b038316600090815260208190526040902055600254613a51908261335f565b6002556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038116600081815260076020526040808220805460ff19166001179055517ffa6d6e0e6066ffafeb8530b0afbb780c04b0d3d5e2fc471faa21ba5b93eb86229190a250565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613b1a57613b1a614475565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015613b73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b97919061448b565b81600181518110613baa57613baa614475565b6001600160a01b039283166020918202929092010152600954613bd0913091168461264d565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac94790613c099085906000908690309042906004016144a8565b600060405180830381600087803b158015613c2357600080fd5b505af1158015613c37573d6000803e3d6000fd5b505050505050565b6000808211613c905760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f0000000000006044820152606401610bb5565b61264682846143ef565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316600090815260208190526040812054602e548290606490613ce89060ff16846142d2565b613cf291906143ef565b602e54909150600090606490613d1090610100900460ff16856142d2565b613d1a91906143ef565b9050818511613d2e57506000949350505050565b80851115613d6257602e54606490613d4f9062010000900460ff16876142d2565b613d5991906143ef565b95945050505050565b6064613d6e838361423a565b602e54879062010000900460ff16613d86868361423a565b613d9091906142d2565b613d9a91906142d2565b613d4f91906143ef565b6001600160a01b038116811461317657600080fd5b600060208284031215613dcb57600080fd5b813561264681613da4565b600060208083528351808285015260005b81811015613e0357858101830151858201604001528201613de7565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215613e3757600080fd5b8235613e4281613da4565b946020939093013593505050565b801515811461317657600080fd5b803560ff81168114613e6f57600080fd5b919050565b60008060008060008060c08789031215613e8d57600080fd5b8635613e9881613e50565b95506020870135613ea881613e50565b94506040870135613eb881613e50565b9350613ec660608801613e5e565b9250613ed460808801613e5e565b9150613ee260a08801613e5e565b90509295509295509295565b600080600060608486031215613f0357600080fd5b8335613f0e81613da4565b92506020840135613f1e81613da4565b929592945050506040919091013590565b60008060008060808587031215613f4557600080fd5b8435613f5081613da4565b93506020850135613f6081613da4565b92506040850135613f7081613da4565b91506060850135613f8081613da4565b939692955090935050565b60008060408385031215613f9e57600080fd5b8235613e4281613e50565b60008060008060008060c08789031215613fc257600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600080600080600080600080610100898b03121561400957600080fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b600080600080600060a0868803121561405957600080fd5b853561406481613da4565b9450602086013561407481613e50565b9350604086013561408481613e50565b9250606086013561409481613e50565b915060808601356140a481613e50565b809150509295509295909350565b600080604083850312156140c557600080fd5b50508035926020909101359150565b600080604083850312156140e757600080fd5b82356140f281613da4565b9150602083013561410281613e50565b809150509250929050565b600080600080600080600080610100898b03121561412a57600080fd5b883597506020890135965060408901359550606089013594506080890135935060a0890135925060c089013561415f81613e50565b915060e089013561416f81613e50565b809150509295985092959890939650565b600081518084526020808501945080840160005b838110156141b95781516001600160a01b031687529582019590820190600101614194565b509495945050505050565b828152604060208201526000612ee36040830184614180565b600080604083850312156141f057600080fd5b82356141fb81613da4565b9150602083013561410281613da4565b60006020828403121561421d57600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610b8057610b80614224565b600181811c9082168061426157607f821691505b60208210810361428157634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602b908201527f5368617265644f776e61626c653a2063616c6c6572206973206e6f742061207360408201526a3430b932b21037bbb732b960a91b606082015260800190565b8082028115828204841417610b8057610b80614224565b80820180821115610b8057610b80614224565b600181815b8085111561433757816000190482111561431d5761431d614224565b8085161561432a57918102915b93841c9390800290614301565b509250929050565b60008261434e57506001610b80565b8161435b57506000610b80565b8160018114614371576002811461437b57614397565b6001915050610b80565b60ff84111561438c5761438c614224565b50506001821b610b80565b5060208310610133831016604e8410600b84101617156143ba575081810a610b80565b6143c483836142fc565b80600019048211156143d8576143d8614224565b029392505050565b600061264660ff84168361433f565b60008261440c57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561442357600080fd5b5051919050565b60006020828403121561443c57600080fd5b815161264681613e50565b60008060006060848603121561445c57600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561449d57600080fd5b815161264681613da4565b85815284602082015260a0604082015260006144c760a0830186614180565b6001600160a01b039490941660608301525060800152939250505056fe7472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122012b38527d68c84de5bcf6358e6f9e1fd71525b26be115572bd00508dc003809464736f6c634300081100338be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0

Deployed Bytecode

0x6080604052600436106102805760003560e01c8063715018a61161014f578063a9059cbb116100c1578063e93d8bcb1161007a578063e93d8bcb146109d9578063eb2ea503146109f9578063f14210a614610a2f578063f2fde38b14610a4f578063f3fef3a314610a6f578063f6d0bf2f14610a8f57600080fd5b8063a9059cbb1461087f578063b62496f51461089f578063cc4e0f50146108cf578063d935b6741461093b578063dac48a0814610970578063dd62ed3e1461099357600080fd5b806391b32b321161011357806391b32b321461076c57806395d89b411461078c5780639a7a23d6146107a1578063a18715e0146107c1578063a457c2d71461083f578063a558a6891461085f57600080fd5b8063715018a61461066957806377596a011461067e57806386867216146106b75780638da5cb5b1461072e57806390b89ea31461074c57600080fd5b8063313ce567116101f3578063637586f6116101ac578063637586f61461059e57806365b8dbc0146105be578063661ecc72146105de5780636a0a3d17146105fe57806370a082311461061e5780637115d00e1461065457600080fd5b8063313ce567146104e75780633155086f14610509578063395093511461051e5780633fd06a2f1461053e5780634ada218b1461055e5780635073fe341461057e57600080fd5b80630ee2cb10116102455780630ee2cb10146104145780631341d95c146104465780631694505e1461046857806318160ddd1461048857806323b872dd146104a757806330b73c93146104c757600080fd5b80628a21411461028c5780630330583a146102c157806303cf071b1461034d57806306fdde03146103c2578063095ea7b3146103e457600080fd5b3661028757005b600080fd5b34801561029857600080fd5b506102a1610aad565b604080519384526020840192909252908201526060015b60405180910390f35b3480156102cd57600080fd5b506103236102dc366004613db9565b6001600160a01b0316600090815260316020908152604080832054602f83528184205460328452828520546030909452919093205460ff9384169491841693928316921690565b604080519415158552921515602085015290151591830191909152151560608201526080016102b8565b34801561035957600080fd5b50601654601754601a54601854601954601154604080519687526020870195909552938501929092526060840152608083015260ff6101008083048216151560a08501526201000083048216151560c0850152600160301b90920416151560e0830152016102b8565b3480156103ce57600080fd5b506103d7610add565b6040516102b89190613dd6565b3480156103f057600080fd5b506104046103ff366004613e24565b610b6f565b60405190151581526020016102b8565b34801561042057600080fd5b506006546001600160a01b03165b6040516001600160a01b0390911681526020016102b8565b34801561045257600080fd5b50610466610461366004613e74565b610b86565b005b34801561047457600080fd5b5060095461042e906001600160a01b031681565b34801561049457600080fd5b506002545b6040519081526020016102b8565b3480156104b357600080fd5b506104046104c2366004613eee565b610d9b565b3480156104d357600080fd5b506104666104e2366004613f2f565b610e04565b3480156104f357600080fd5b50601f5460405160ff90911681526020016102b8565b34801561051557600080fd5b506104666110f5565b34801561052a57600080fd5b50610404610539366004613e24565b611232565b34801561054a57600080fd5b50610466610559366004613f8b565b611268565b34801561056a57600080fd5b506011546104049062010000900460ff1681565b34801561058a57600080fd5b50610466610599366004613fa9565b61130e565b3480156105aa57600080fd5b506104666105b9366004613fec565b61142a565b3480156105ca57600080fd5b506104666105d9366004613db9565b61163c565b3480156105ea57600080fd5b506104666105f9366004614041565b611732565b34801561060a57600080fd5b50610466610619366004613db9565b6117ce565b34801561062a57600080fd5b50610499610639366004613db9565b6001600160a01b031660009081526020819052604090205490565b34801561066057600080fd5b50610466611849565b34801561067557600080fd5b506104666119c4565b34801561068a57600080fd5b50610404610699366004613db9565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156106c357600080fd5b50601154602e546040805160ff63010000008504811615158252640100000000850481161515602083015265010000000000909404841615159181019190915261010082048316606082015282821660808201526201000090910490911660a082015260c0016102b8565b34801561073a57600080fd5b506005546001600160a01b031661042e565b34801561075857600080fd5b506104666107673660046140b2565b611a68565b34801561077857600080fd5b50610466610787366004613db9565b611b1b565b34801561079857600080fd5b506103d7611b6c565b3480156107ad57600080fd5b506104666107bc3660046140d4565b611b7b565b3480156107cd57600080fd5b50600a54600b54600c54600d54600e54604080516001600160a01b03968716815294861660208601529285169284019290925283166060830152821660808201527f0000000000000000000000002e808f155665a31a768df93042eb3ad6fd771d6690911660a082015260c0016102b8565b34801561084b57600080fd5b5061040461085a366004613e24565b611c61565b34801561086b57600080fd5b5061046661087a36600461410d565b611cde565b34801561088b57600080fd5b5061040461089a366004613e24565b6121ea565b3480156108ab57600080fd5b506104046108ba366004613db9565b60346020526000908152604090205460ff1681565b3480156108db57600080fd5b50602c54602d54602b54602554602754602854602954602a5460265460408051998a5260208a0198909852968801959095526060870193909352608086019190915260a085015260c084015260e0830152610100820152610120016102b8565b34801561094757600080fd5b506109506121f7565b6040805194855260208501939093529183015260608201526080016102b8565b34801561097c57600080fd5b5061098561230c565b6040516102b89291906141c4565b34801561099f57600080fd5b506104996109ae3660046141dd565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156109e557600080fd5b506104666109f4366004613db9565b6123a8565b348015610a0557600080fd5b50601154602454600160381b90910460ff16906040805192151583526020830191909152016102b8565b348015610a3b57600080fd5b50610466610a4a36600461420b565b61242b565b348015610a5b57600080fd5b50610466610a6a366004613db9565b61247c565b348015610a7b57600080fd5b50610466610a8a366004613e24565b612597565b348015610a9b57600080fd5b50601554601254601354601454610950565b600080600080610abc60025490565b9050600081602054610ace919061423a565b60205496929550935090915050565b606060038054610aec9061424d565b80601f0160208091040260200160405190810160405280929190818152602001828054610b189061424d565b8015610b655780601f10610b3a57610100808354040283529160200191610b65565b820191906000526020600020905b815481529060010190602001808311610b4857829003601f168201915b5050505050905090565b6000610b7c33848461264d565b5060015b92915050565b3360009081526007602052604090205460ff16610bbe5760405162461bcd60e51b8152600401610bb590614287565b60405180910390fd5b600a8360ff1610158015610bd6575060288360ff1611155b610c305760405162461bcd60e51b815260206004820152602560248201527f63616e6e6f742073657420566d6178206f757473696465203130252f34302520604482015264726174696f60d81b6064820152608401610bb5565b60018260ff1610158015610c485750600a8260ff1611155b610ca05760405162461bcd60e51b8152602060048201526024808201527f63616e6e6f742073657420566d696e206f7574736964652031252f31302520726044820152636174696f60e01b6064820152608401610bb5565b60018160ff1610158015610cb8575060148160ff1611155b610d155760405162461bcd60e51b815260206004820152602860248201527f6d6178206a6565747320666565206d757374206265206265747777656e20312560448201526720616e642032302560c01b6064820152608401610bb5565b60118054941515650100000000000265ff0000000000199615156401000000000264ff00000000199815156301000000029890981664ffff0000001990961695909517969096179490941692909217909355602e805460ff938416620100000262ff00ff19958516610100029590951662ffffff19909116179190921617919091179055565b6000610da884848461275b565b610dfa8433610df5856040518060600160405280602181526020016144e5602191396001600160a01b038a1660009081526001602090815260408083203384529091529020549190612eb4565b61264d565b5060019392505050565b3360009081526007602052604090205460ff16610e335760405162461bcd60e51b8152600401610bb590614287565b600a546001600160a01b03858116911614610ee257600a80546001600160a01b039081166000908152602f60208181526040808420805460ff1990811690915586548616855260318084528286208054831690558754871686526030808552838720805484169055968c168087529484528286208054831660019081179091559084528286208054831682179055959092529092208054909216909217905581546001600160a01b0319161790555b600b546001600160a01b03848116911614610f9157600b80546001600160a01b039081166000908152602f60208181526040808420805460ff1990811690915586548616855260318084528286208054831690558754871686526030808552838720805484169055968b168087529484528286208054831660019081179091559084528286208054831682179055959092529092208054909216909217905581546001600160a01b0319161790555b600c546001600160a01b0383811691161461104057600c80546001600160a01b039081166000908152602f60208181526040808420805460ff1990811690915586548616855260318084528286208054831690558754871686526030808552838720805484169055968a168087529484528286208054831660019081179091559084528286208054831682179055959092529092208054909216909217905581546001600160a01b0319161790555b600d546001600160a01b038281169116146110ef57600d80546001600160a01b039081166000908152602f60208181526040808420805460ff19908116909155865486168552603180845282862080548316905587548716865260308085528387208054841690559689168087529484528286208054831660019081179091559084528286208054831682179055959092529092208054909216909217905581546001600160a01b0319161790555b50505050565b3360009081526007602052604090205460ff166111245760405162461bcd60e51b8152600401610bb590614287565b6015541561114f57600d546015546111499130916001600160a01b0390911690612eeb565b60006015555b6012541561119a57600a546012546040516001600160a01b039092169181156108fc0291906000818181858888f19350505050158015611193573d6000803e3d6000fd5b5060006012555b601354156111e557600b546013546040516001600160a01b039092169181156108fc0291906000818181858888f193505050501580156111de573d6000803e3d6000fd5b5060006013555b6014541561123057600c546014546040516001600160a01b039092169181156108fc0291906000818181858888f19350505050158015611229573d6000803e3d6000fd5b5060006014555b565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610b7c918590610df590866125e7565b3360009081526007602052604090205460ff166112975760405162461bcd60e51b8152600401610bb590614287565b6170808111156112e95760405162461bcd60e51b815260206004820181905260248201527f4d696e54696d652043616e2774206265206d6f7265207468616e2061204461796044820152606401610bb5565b60245560118054911515600160381b0267ff0000000000000019909216919091179055565b3360009081526007602052604090205460ff1661133d5760405162461bcd60e51b8152600401610bb590614287565b60288311156113825760405162461bcd60e51b81526020600482015260116024820152702737ba1036b7b932903a3430b7101936b760791b6044820152606401610bb5565b600061139082610e106142d2565b61139d84620151806142d2565b6113a791906142e9565b90506113b381426142e9565b602255601f546000906113ca9060ff16600a6143e0565b6113d490896142d2565b90506000866113eb89670de0b6b3a76400006142d2565b6113f591906143ef565b90506114018282613071565b6011805462ff000019166201000017905561141c86436142e9565b602355505050505050505050565b3360009081526007602052604090205460ff166114595760405162461bcd60e51b8152600401610bb590614287565b601a54881115801561146b5750848810155b6114dd5760405162461bcd60e51b815260206004820152603a60248201527f546f74616c205461782063616e277420657863656564204d617854617865732e60448201527f206f72206265206c6f776572207468616e206275726e207461780000000000006064820152608401610bb5565b60006114f5826114ef858189896125e7565b906125e7565b601a54909150611509876114ef848b6125e7565b11156115575760405162461bcd60e51b815260206004820181905260248201527f546f74616c205461782063616e277420657863656564204d617854617865732e6044820152606401610bb5565b87156115f25760265488101580156115715750601a548811155b6115f25760405162461bcd60e51b815260206004820152604660248201527f57616c6c657420322057616c6c657420546178206d757374206265207570646160448201527f74656420746f206265747765656e206275726e2074617820616e642032352070606482015265195c98d95b9d60d21b608482015260a401610bb5565b602c899055602b88905560268690556025879055602785905560288490556029839055602a82905561162e866114ef848187818a818f8e6125e7565b602d55505050505050505050565b3360009081526007602052604090205460ff1661166b5760405162461bcd60e51b8152600401610bb590614287565b6009546001600160a01b03908116908216036116d55760405162461bcd60e51b815260206004820152602360248201527f54686520726f7574657220616c7265616479206861732074686174206164647260448201526265737360e81b6064820152608401610bb5565b6009546040516001600160a01b03918216918316907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a3600980546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526007602052604090205460ff166117615760405162461bcd60e51b8152600401610bb590614287565b6001600160a01b039094166000908152602f60209081526040808320805496151560ff199788161790556031825280832080549515159587169590951790945560328152838220805493151593861693909317909255603090915220805492151592909116919091179055565b3360009081526007602052604090205460ff166117fd5760405162461bcd60e51b8152600401610bb590614287565b61180681613122565b6001600160a01b03166000908152602f60209081526040808320805460ff1990811690915560318352818420805482169055603090925290912080549091169055565b3360009081526007602052604090205460ff166118785760405162461bcd60e51b8152600401610bb590614287565b6022544210156118bd5760405162461bcd60e51b815260206004820152601060248201526f139bdd081e595d081d5b9b1bd8dad95960821b6044820152606401610bb5565b6040516370a0823160e01b81523060048201527f0000000000000000000000002e808f155665a31a768df93042eb3ad6fd771d66906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611926573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194a9190614411565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044015b6020604051808303816000875af115801561199b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119bf919061442a565b505050565b6005546001600160a01b03163314611a1e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bb5565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b3360009081526007602052604090205460ff16611a975760405162461bcd60e51b8152600401610bb590614287565b6000611aa582610e106142d2565b611ab284620151806142d2565b611abc91906142e9565b9050426022541015611acd57426022555b611ae360225482611ade91906142e9565b613179565b6040518181527fe9da15d4cb5bea133d9613a866c909df5594489b91a3f780d43720d560b3c94c9060200160405180910390a1505050565b3360009081526007602052604090205460ff16611b4a5760405162461bcd60e51b8152600401610bb590614287565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b606060048054610aec9061424d565b3360009081526007602052604090205460ff16611baa5760405162461bcd60e51b8152600401610bb590614287565b7f0000000000000000000000002e808f155665a31a768df93042eb3ad6fd771d666001600160a01b0316826001600160a01b031603611c53576040805162461bcd60e51b81526020600482015260248101919091527f546865204d61726b657420706169722063616e6e6f742062652072656d6f766560448201527f642066726f6d206175746f6d617465644d61726b65744d616b657250616972736064820152608401610bb5565b611c5d828261318c565b5050565b6000610b7c3384610df5856040518060400160405280601e81526020017f64656372656173656420616c6c6f77616e63652062656c6f77207a65726f000081525060016000611cad3390565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190612eb4565b3360009081526007602052604090205460ff16611d0d5760405162461bcd60e51b8152600401610bb590614287565b6000611d1860025490565b9050611d256064826143ef565b601f54611d369060ff16600a6143e0565b611d40908b6142d2565b10158015611d695750601f548190611d5c9060ff16600a6143e0565b611d66908b6142d2565b11155b611ddb5760405162461bcd60e51b815260206004820152603b60248201527f4d617757616c6c6574206d757374206265206265747765656e20746f74616c7360448201527f7570706c7920616e64203125206f6620746f74616c737570706c7900000000006064820152608401610bb5565b611de76103e8826143ef565b601f54611df89060ff16600a6143e0565b611e02908a6142d2565b10158015611e2b5750601f548190611e1e9060ff16600a6143e0565b611e28908a6142d2565b11155b611e9d5760405162461bcd60e51b815260206004820152603b60248201527f4d617753656c6c206d757374206265206265747765656e20746f74616c73757060448201527f706c7920616e6420302e3125206f6620746f74616c737570706c7900000000006064820152608401610bb5565b611ea9612710826143ef565b601f54611eba9060ff16600a6143e0565b611ec490896142d2565b10158015611edc5750611ed86002876143ef565b8711155b611f4e5760405162461bcd60e51b815260206004820152603a60248201527f4d696e53776170206d757374206265206265747765656e206d6178737761702f60448201527f3220616e6420302e303125206f6620746f74616c737570706c790000000000006064820152608401610bb5565b610e108510158015611f635750620151808511155b611fcb5760405162461bcd60e51b815260206004820152603360248201527f636c61696d57616974206d757374206265207570646174656420746f206265746044820152727765656e203120616e6420323420686f75727360681b6064820152608401610bb5565b60018410158015611fdd575060198411155b6120455760405162461bcd60e51b815260206004820152603360248201527f4d617820546178206d757374206265207570646174656420746f206265747765604482015272195b880c48185b99080c8d481c195c98d95b9d606a1b6064820152608401610bb5565b6120508760026132a5565b861015801561207a5750601f54819061206d9060ff16600a6143e0565b61207790886142d2565b11155b6120e25760405162461bcd60e51b815260206004820152603360248201527f4d617853776170206d757374206265206265747765656e20746f74616c73757060448201527238363c9030b7321029bbb0b826b4b7103c101960691b6064820152608401610bb5565b6019869055601f546120f89060ff16600a6143e0565b60195461210591906142d2565b601b556017899055601f5461211e9060ff16600a6143e0565b60175461212b91906142d2565b601d556016889055601f546121449060ff16600a6143e0565b60165461215191906142d2565b601c556018879055601f5461216a9060ff16600a6143e0565b60185461217791906142d2565b601e55601a8490556011805466ff00000000ff001916600160301b8415150261ff00191617610100851515908102919091179091556040519081527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599060200160405180910390a1505050505050505050565b6000610b7c33848461275b565b6000806000806022544210156122f9576201518042602254612219919061423a565b61222391906143ef565b9350610e1061223585620151806142d2565b42602254612243919061423a565b61224d919061423a565b61225791906143ef565b9250603c61226784610e106142d2565b61227486620151806142d2565b42602254612282919061423a565b61228c919061423a565b612296919061423a565b6122a091906143ef565b91506122ad82603c6142d2565b6122b984610e106142d2565b6122c686620151806142d2565b426022546122d4919061423a565b6122de919061423a565b6122e8919061423a565b6122f2919061423a565b9050612306565b5060009250829150819050805b90919293565b3360009081526007602052604081205460609060ff1661233e5760405162461bcd60e51b8152600401610bb590614287565b6010805460408051602080840282018101909252828152919450849291908290849083018282801561239957602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161237b575b50505050509050915091509091565b3360009081526007602052604090205460ff166123d75760405162461bcd60e51b8152600401610bb590614287565b6123e081613327565b6001600160a01b03166000908152602f602090815260408083208054600160ff1991821681179092556031845282852080548216831790556030909352922080549091169091179055565b6008546001600160a01b0316331461244257600080fd5b6008546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611c5d573d6000803e3d6000fd5b6005546001600160a01b031633146124d65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bb5565b6001600160a01b03811661253b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bb5565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6008546001600160a01b031633146125ae57600080fd5b60085460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb9060440161197c565b6000806125f483856142e9565b9050838110156126465760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610bb5565b9392505050565b6001600160a01b0383166126a35760405162461bcd60e51b815260206004820152601d60248201527f617070726f76652066726f6d20746865207a65726f20616464726573730000006044820152606401610bb5565b6001600160a01b0382166126f95760405162461bcd60e51b815260206004820152601b60248201527f617070726f766520746f20746865207a65726f206164647265737300000000006044820152606401610bb5565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166127b15760405162461bcd60e51b815260206004820152601e60248201527f7472616e736665722066726f6d20746865207a65726f206164647265737300006044820152606401610bb5565b6001600160a01b0382166128075760405162461bcd60e51b815260206004820152601c60248201527f7472616e7366657220746f20746865207a65726f2061646472657373000000006044820152606401610bb5565b8060000361281457505050565b6001600160a01b038216301480159061283b5750600e546001600160a01b03838116911614155b156128c4576001600160a01b03831660009081526032602052604090205460ff1615801561288257506001600160a01b03821660009081526032602052604090205460ff16155b6128c45760405162461bcd60e51b8152602060048201526013602482015272426c61636b6c6973746564206164647265737360681b6044820152606401610bb5565b60115462010000900460ff1661293c576001600160a01b03831660009081526030602052604090205460ff1661293c5760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f7420616c6c6f776564207965740000000000000000006044820152606401610bb5565b60115462010000900460ff168015612955575060235443105b801561297a57506001600160a01b03821660009081526030602052604090205460ff16155b801561299e57506001600160a01b03831660009081526034602052604090205460ff165b15612a09576001600160a01b0382166000818152603260205260408120805460ff191660019081179091556010805491820181559091527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6720180546001600160a01b03191690911790555b6001600160a01b03821660009081526030602052604090205460ff16158015612a4a57506001600160a01b03831660009081526034602052604090205460ff165b15612afd576001600160a01b0382163014801590612a765750600e546001600160a01b03838116911614155b15612afd576001600160a01b038216600090815260208190526040902054601d54612aa183836142e9565b1115612afb5760405162461bcd60e51b8152602060048201526024808201527f77616c6c657420616d6f756e7420657863656564206d617857616c6c6574416d6044820152631bdd5b9d60e21b6064820152608401610bb5565b505b80600003612b0a57505050565b6001600160a01b03821660009081526034602052604090205460ff168015612b4b57506001600160a01b03831660009081526031602052604090205460ff16155b8015612b7057506001600160a01b03821660009081526031602052604090205460ff16155b15612bed57601c54811115612bed5760405162461bcd60e51b815260206004820152603a60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d617853656c6c5472616e73616374696f6e416d6f756e742e0000000000006064820152608401610bb5565b601154600160381b900460ff168015612c1f57506001600160a01b03831660009081526030602052604090205460ff16155b8015612c4357506001600160a01b03821660009081526034602052604090205460ff165b15612cd9576024546001600160a01b0384166000908152603360205260409020544391612c6f916142e9565b1115612cbd5760405162461bcd60e51b815260206004820152601960248201527f547279696e6720746f2073656c6c20746f6f206f6674656e21000000000000006044820152606401610bb5565b6001600160a01b03831660009081526033602052604090204390555b3060009081526020819052604090205460155415801590612cfb575080601554105b15612d205760155430600090815260208190526040902054612d1d919061423a565b90505b601e54602654602d549183101591600091612d3b919061335f565b9050601b548310612d4c57601b5492505b601154610100900460ff168015612d605750815b8015612d6f575060115460ff16155b8015612d9457506001600160a01b03861660009081526034602052604090205460ff16155b8015612db957506001600160a01b03861660009081526030602052604090205460ff16155b8015612dde57506001600160a01b03851660009081526030602052604090205460ff16155b8015612de957508015155b15612e0f576011805460ff19166001179055612e04836133bb565b6011805460ff191690555b6001600160a01b0386166000908152602f6020526040902054849060ff16158015612e5357506001600160a01b0386166000908152602f602052604090205460ff16155b15612e6657612e63878787613717565b90505b600e546001600160a01b0390811690871603612e8b57612e86878261397b565b612eab565b600e546001600160a01b03878116911614612eab57612eab878783612eeb565b50505050505050565b60008184841115612ed85760405162461bcd60e51b8152600401610bb59190613dd6565b50612ee3838561423a565b949350505050565b6001600160a01b038316612f415760405162461bcd60e51b815260206004820152601e60248201527f7472616e736665722066726f6d20746865207a65726f206164647265737300006044820152606401610bb5565b6001600160a01b038216612f975760405162461bcd60e51b815260206004820152601c60248201527f7472616e7366657220746f20746865207a65726f2061646472657373000000006044820152606401610bb5565b604080518082018252601f81527f7472616e7366657220616d6f756e7420657863656564732062616c616e6365006020808301919091526001600160a01b0386166000908152908190529190912054612ff1918390612eb4565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461302090826125e7565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161274e565b6009546130899030906001600160a01b03168461264d565b60095460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156130f6573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061311b9190614447565b5050505050565b3360009081526007602052604090205460ff166131515760405162461bcd60e51b8152600401610bb590614287565b613176816001600160a01b03166000908152600760205260409020805460ff19169055565b50565b602254811161318757600080fd5b602255565b3360009081526007602052604090205460ff166131bb5760405162461bcd60e51b8152600401610bb590614287565b6001600160a01b03821660009081526034602052604090205481151560ff9091161515036132515760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c756500000000000000006064820152608401610bb5565b6001600160a01b038216600081815260346020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6000826000036132b757506000610b80565b60006132c383856142d2565b9050826132d085836143ef565b146126465760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610bb5565b3360009081526007602052604090205460ff166133565760405162461bcd60e51b8152600401610bb590614287565b61317681613a99565b6000828211156133b15760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006044820152606401610bb5565b612646828461423a565b60006133d4602654602d5461335f90919063ffffffff16565b905060006133ed602a548361335f90919063ffffffff16565b9050600047905060008360026025548761340791906142d2565b61341191906143ef565b61341b91906143ef565b905083602a548661342c91906142d2565b61343691906143ef565b6015600082825461344791906142e9565b9091555060009050818561345b86896142d2565b61346591906143ef565b61346f919061423a565b905061347a81613ae5565b6000613486844761423a565b90506000600260255461349991906143ef565b6134a3908761423a565b6002602554846134b391906142d2565b6134bd91906143ef565b6134c791906143ef565b905060026025546134d891906143ef565b6134e2908761423a565b6027546134ef90846142d2565b6134f991906143ef565b6012600082825461350a91906142e9565b909155505060255461351e906002906143ef565b613528908761423a565b60285461353590846142d2565b61353f91906143ef565b6013600082825461355091906142e9565b9091555050602554613564906002906143ef565b61356e908761423a565b60295461357b90846142d2565b61358591906143ef565b6014600082825461359691906142e9565b9091555050602554156135ef576135ad8482613071565b60408051858152602081018390529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b601154600160301b900460ff161561370d576015541561362c57600d546015546136269130916001600160a01b0390911690612eeb565b60006015555b6012541561367757600a546012546040516001600160a01b039092169181156108fc0291906000818181858888f19350505050158015613670573d6000803e3d6000fd5b5060006012555b601354156136c257600b546013546040516001600160a01b039092169181156108fc0291906000818181858888f193505050501580156136bb573d6000803e3d6000fd5b5060006013555b6014541561370d57600c546014546040516001600160a01b039092169181156108fc0291906000818181858888f19350505050158015613706573d6000803e3d6000fd5b5060006014555b5050505050505050565b6001600160a01b03831660009081526034602052604081205481908190819060ff161561378a57602c5415613785576137666064613760602c54886132a590919063ffffffff16565b90613c3f565b92506137826064613760602654886132a590919063ffffffff16565b91505b61392f565b6001600160a01b03861660009081526034602052604090205460ff16156138a2576011546301000000900460ff1680156137dd57506001600160a01b03871660009081526030602052604090205460ff16155b15613850576137eb85613c9a565b9050801561385057601154640100000000900460ff16156138175761381081836142e9565b9150613843565b60115465010000000000900460ff161561384357806015600082825461383d91906142e9565b90915550505b61384d81846142e9565b92505b602d5415613785576138726064613760602d54886132a590919063ffffffff16565b61387c90846142e9565b92506138986064613760602654886132a590919063ffffffff16565b61378290836142e9565b6001600160a01b03871660009081526034602052604090205460ff161580156138e457506001600160a01b03861660009081526034602052604090205460ff16155b80156138f15750602b5415155b1561392f576139106064613760602b54886132a590919063ffffffff16565b925061392c6064613760602654886132a590919063ffffffff16565b91505b613939838361335f565b9250811561394b5761394b878361397b565b821561395c5761395c873085612eeb565b6139708261396a878661335f565b9061335f565b979650505050505050565b6001600160a01b0382166139d15760405162461bcd60e51b815260206004820152601a60248201527f6275726e2066726f6d20746865207a65726f20616464726573730000000000006044820152606401610bb5565b604080518082018252601b81527f6275726e20616d6f756e7420657863656564732062616c616e636500000000006020808301919091526001600160a01b0385166000908152908190529190912054613a2b918390612eb4565b6001600160a01b038316600090815260208190526040902055600254613a51908261335f565b6002556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038116600081815260076020526040808220805460ff19166001179055517ffa6d6e0e6066ffafeb8530b0afbb780c04b0d3d5e2fc471faa21ba5b93eb86229190a250565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613b1a57613b1a614475565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015613b73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b97919061448b565b81600181518110613baa57613baa614475565b6001600160a01b039283166020918202929092010152600954613bd0913091168461264d565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac94790613c099085906000908690309042906004016144a8565b600060405180830381600087803b158015613c2357600080fd5b505af1158015613c37573d6000803e3d6000fd5b505050505050565b6000808211613c905760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f0000000000006044820152606401610bb5565b61264682846143ef565b7f0000000000000000000000002e808f155665a31a768df93042eb3ad6fd771d666001600160a01b0316600090815260208190526040812054602e548290606490613ce89060ff16846142d2565b613cf291906143ef565b602e54909150600090606490613d1090610100900460ff16856142d2565b613d1a91906143ef565b9050818511613d2e57506000949350505050565b80851115613d6257602e54606490613d4f9062010000900460ff16876142d2565b613d5991906143ef565b95945050505050565b6064613d6e838361423a565b602e54879062010000900460ff16613d86868361423a565b613d9091906142d2565b613d9a91906142d2565b613d4f91906143ef565b6001600160a01b038116811461317657600080fd5b600060208284031215613dcb57600080fd5b813561264681613da4565b600060208083528351808285015260005b81811015613e0357858101830151858201604001528201613de7565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215613e3757600080fd5b8235613e4281613da4565b946020939093013593505050565b801515811461317657600080fd5b803560ff81168114613e6f57600080fd5b919050565b60008060008060008060c08789031215613e8d57600080fd5b8635613e9881613e50565b95506020870135613ea881613e50565b94506040870135613eb881613e50565b9350613ec660608801613e5e565b9250613ed460808801613e5e565b9150613ee260a08801613e5e565b90509295509295509295565b600080600060608486031215613f0357600080fd5b8335613f0e81613da4565b92506020840135613f1e81613da4565b929592945050506040919091013590565b60008060008060808587031215613f4557600080fd5b8435613f5081613da4565b93506020850135613f6081613da4565b92506040850135613f7081613da4565b91506060850135613f8081613da4565b939692955090935050565b60008060408385031215613f9e57600080fd5b8235613e4281613e50565b60008060008060008060c08789031215613fc257600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600080600080600080600080610100898b03121561400957600080fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b600080600080600060a0868803121561405957600080fd5b853561406481613da4565b9450602086013561407481613e50565b9350604086013561408481613e50565b9250606086013561409481613e50565b915060808601356140a481613e50565b809150509295509295909350565b600080604083850312156140c557600080fd5b50508035926020909101359150565b600080604083850312156140e757600080fd5b82356140f281613da4565b9150602083013561410281613e50565b809150509250929050565b600080600080600080600080610100898b03121561412a57600080fd5b883597506020890135965060408901359550606089013594506080890135935060a0890135925060c089013561415f81613e50565b915060e089013561416f81613e50565b809150509295985092959890939650565b600081518084526020808501945080840160005b838110156141b95781516001600160a01b031687529582019590820190600101614194565b509495945050505050565b828152604060208201526000612ee36040830184614180565b600080604083850312156141f057600080fd5b82356141fb81613da4565b9150602083013561410281613da4565b60006020828403121561421d57600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610b8057610b80614224565b600181811c9082168061426157607f821691505b60208210810361428157634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602b908201527f5368617265644f776e61626c653a2063616c6c6572206973206e6f742061207360408201526a3430b932b21037bbb732b960a91b606082015260800190565b8082028115828204841417610b8057610b80614224565b80820180821115610b8057610b80614224565b600181815b8085111561433757816000190482111561431d5761431d614224565b8085161561432a57918102915b93841c9390800290614301565b509250929050565b60008261434e57506001610b80565b8161435b57506000610b80565b8160018114614371576002811461437b57614397565b6001915050610b80565b60ff84111561438c5761438c614224565b50506001821b610b80565b5060208310610133831016604e8410600b84101617156143ba575081810a610b80565b6143c483836142fc565b80600019048211156143d8576143d8614224565b029392505050565b600061264660ff84168361433f565b60008261440c57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561442357600080fd5b5051919050565b60006020828403121561443c57600080fd5b815161264681613e50565b60008060006060848603121561445c57600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561449d57600080fd5b815161264681613da4565b85815284602082015260a0604082015260006144c760a0830186614180565b6001600160a01b039490941660608301525060800152939250505056fe7472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122012b38527d68c84de5bcf6358e6f9e1fd71525b26be115572bd00508dc003809464736f6c63430008110033

Deployed Bytecode Sourcemap

46255:536:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26992:276;;;;;;;;;;;;;:::i;:::-;;;;216:25:1;;;272:2;257:18;;250:34;;;;300:18;;;293:34;204:2;189:18;26992:276:0;;;;;;;;25282:235;;;;;;;;;;-1:-1:-1;25282:235:0;;;;;:::i;:::-;-1:-1:-1;;;;;25405:29:0;25342:10;25405:29;;;:20;:29;;;;;;;;;25436:19;:28;;;;;;25466:14;:23;;;;;;25491:14;:23;;;;;;;;25405:29;;;;;25436:28;;;;25466:23;;;;25491;;25282:235;;;;;958:14:1;;951:22;933:41;;1017:14;;1010:22;1005:2;990:18;;983:50;1076:14;;1069:22;1049:18;;;1042:50;;;;1135:14;1128:22;1123:2;1108:18;;1101:50;920:3;905:19;25282:235:0;726:431:1;25816:294:0;;;;;;;;;;-1:-1:-1;26004:7:0;;26013:9;;26024:8;;26034:7;;26043;;26052:21;;25816:294;;;1487:25:1;;;1543:2;1528:18;;1521:34;;;;1571:18;;;1564:34;;;;1629:2;1614:18;;1607:34;1672:3;1657:19;;1650:35;26052:21:0;;;;;;;1729:14:1;1722:22;1716:3;1701:19;;1694:51;26075:14:0;;;;;1789::1;1782:22;1776:3;1761:19;;1754:51;-1:-1:-1;;;26091:16:0;;;;1849:14:1;1842:22;1836:3;1821:19;;1814:51;1459:19;25816:294:0;1162:709:1;13707:75:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;14418:169::-;;;;;;;;;;-1:-1:-1;14418:169:0;;;;;:::i;:::-;;:::i;:::-;;;2914:14:1;;2907:22;2889:41;;2877:2;2862:18;14418:169:0;2749:187:1;17642:72:0;;;;;;;;;;-1:-1:-1;17704:8:0;;-1:-1:-1;;;;;17704:8:0;17642:72;;;-1:-1:-1;;;;;3105:32:1;;;3087:51;;3075:2;3060:18;17642:72:0;2941:203:1;36507:631:0;;;;;;;;;;-1:-1:-1;36507:631:0;;;;;:::i;:::-;;:::i;:::-;;18858:41;;;;;;;;;;-1:-1:-1;18858:41:0;;;;-1:-1:-1;;;;;18858:41:0;;;13873:92;;;;;;;;;;-1:-1:-1;13951:12:0;;13873:92;;;4542:25:1;;;4530:2;4515:18;13873:92:0;4396:177:1;14596:314:0;;;;;;;;;;-1:-1:-1;14596:314:0;;;;;:::i;:::-;;:::i;28747:2104::-;;;;;;;;;;-1:-1:-1;28747:2104:0;;;;;:::i;:::-;;:::i;25209:67::-;;;;;;;;;;-1:-1:-1;25266:7:0;;25209:67;;25266:7;;;;5889:36:1;;5877:2;5862:18;25209:67:0;5747:184:1;37146:642:0;;;;;;;;;;;;;:::i;14919:218::-;;;;;;;;;;-1:-1:-1;14919:218:0;;;;;:::i;:::-;;:::i;30867:225::-;;;;;;;;;;-1:-1:-1;30867:225:0;;;;;:::i;:::-;;:::i;19308:34::-;;;;;;;;;;-1:-1:-1;19308:34:0;;;;;;;;;;;35402:604;;;;;;;;;;-1:-1:-1;35402:604:0;;;;;:::i;:::-;;:::i;32733:1364::-;;;;;;;;;;-1:-1:-1;32733:1364:0;;;;;:::i;:::-;;:::i;34110:316::-;;;;;;;;;;-1:-1:-1;34110:316:0;;;;;:::i;:::-;;:::i;34435:314::-;;;;;;;;;;-1:-1:-1;34435:314:0;;;;;:::i;:::-;;:::i;28460:275::-;;;;;;;;;;-1:-1:-1;28460:275:0;;;;;:::i;:::-;;:::i;13971:111::-;;;;;;;;;;-1:-1:-1;13971:111:0;;;;;:::i;:::-;-1:-1:-1;;;;;14062:18:0;14045:7;14062:18;;;;;;;;;;;;13971:111;36014:315;;;;;;;;;;;;;:::i;12870:148::-;;;;;;;;;;;;;:::i;17720:101::-;;;;;;;;;;-1:-1:-1;17720:101:0;;;;;:::i;:::-;-1:-1:-1;;;;;17797:22:0;17783:4;17797:22;;;:13;:22;;;;;;;;;17720:101;26532:221;;;;;;;;;;-1:-1:-1;26686:8:0;;26721:7;;26532:221;;;26686:8;;;;;;8532:14:1;8525:22;8507:41;;26696:9:0;;;;;8591:14:1;8584:22;8579:2;8564:18;;8557:50;26707:12:0;;;;;;8650:14:1;8643:22;8623:18;;;8616:50;;;;26686:8:0;26721:7;;;;8697:2:1;8682:18;;8675:34;26730:7:0;;;8740:3:1;8725:19;;8718:35;26739:11:0;;;;;;;8784:3:1;8769:19;;8762:35;8494:3;8479:19;26532:221:0;8238:565:1;12661:71:0;;;;;;;;;;-1:-1:-1;12724:6:0;;-1:-1:-1;;;;;12724:6:0;12661:71;;35027:367;;;;;;;;;;-1:-1:-1;35027:367:0;;;;;:::i;:::-;;:::i;18380:107::-;;;;;;;;;;-1:-1:-1;18380:107:0;;;;;:::i;:::-;;:::i;13788:79::-;;;;;;;;;;;;;:::i;34765:256::-;;;;;;;;;;-1:-1:-1;34765:256:0;;;;;:::i;:::-;;:::i;26230:296::-;;;;;;;;;;-1:-1:-1;26392:15:0;;26418:10;;26439:14;;26464:13;;26488:10;;26230:296;;;-1:-1:-1;;;;;26392:15:0;;;10033:34:1;;26418:10:0;;;10098:2:1;10083:18;;10076:43;26439:14:0;;;10135:18:1;;;10128:43;;;;26464:13:0;;10202:2:1;10187:18;;10180:43;26488:10:0;;10254:3:1;10239:19;;10232:44;26509:13:0;10313:15:1;;;10013:3;10292:19;;10285:44;9982:3;9967:19;26230:296:0;9708:627:1;15146:262:0;;;;;;;;;;-1:-1:-1;15146:262:0;;;;;:::i;:::-;;:::i;31104:1619::-;;;;;;;;;;-1:-1:-1;31104:1619:0;;;;;:::i;:::-;;:::i;14090:175::-;;;;;;;;;;-1:-1:-1;14090:175:0;;;;;:::i;:::-;;:::i;21028:58::-;;;;;;;;;;-1:-1:-1;21028:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;25523:287;;;;;;;;;;-1:-1:-1;25694:7:0;;25703:8;;25713:17;;25732:13;;25747;;25762:8;;25772:12;;25786:11;;25799:8;;25523:287;;;11505:25:1;;;11561:2;11546:18;;11539:34;;;;11589:18;;;11582:34;;;;11647:2;11632:18;;11625:34;;;;11690:3;11675:19;;11668:35;;;;11734:3;11719:19;;11712:35;11778:3;11763:19;;11756:35;11822:3;11807:19;;11800:35;11866:3;11851:19;;11844:35;11492:3;11477:19;25523:287:0;11134:751:1;27284:639:0;;;;;;;;;;;;;:::i;:::-;;;;12121:25:1;;;12177:2;12162:18;;12155:34;;;;12205:18;;;12198:34;12263:2;12248:18;;12241:34;12108:3;12093:19;27284:639:0;11890:391:1;36337:162:0;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;14274:135::-;;;;;;;;;;-1:-1:-1;14274:135:0;;;;;:::i;:::-;-1:-1:-1;;;;;14380:18:0;;;14363:7;14380:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;14274:135;28184:268;;;;;;;;;;-1:-1:-1;28184:268:0;;;;;:::i;:::-;;:::i;26116:108::-;;;;;;;;;;-1:-1:-1;26201:11:0;;26214:7;;-1:-1:-1;;;26201:11:0;;;;;;26116:108;;;13675:14:1;;13668:22;13650:41;;13722:2;13707:18;;13700:34;;;;13623:18;26116:108:0;13482:258:1;18644:115:0;;;;;;;;;;-1:-1:-1;18644:115:0;;;;;:::i;:::-;;:::i;13027:244::-;;;;;;;;;;-1:-1:-1;13027:244:0;;;;;:::i;:::-;;:::i;18493:145::-;;;;;;;;;;-1:-1:-1;18493:145:0;;;;;:::i;:::-;;:::i;26759:221::-;;;;;;;;;;-1:-1:-1;26905:14:0;;26921:19;;26942:14;;26959:18;;26759:221;;26992:276;27038:21;27061:25;27088:19;27120:14;27137;13951:12;;;13873:92;27137:14;27120:31;;27162:19;27200:6;27184:13;;:22;;;;:::i;:::-;27225:13;;;27240:6;;-1:-1:-1;27162:44:0;-1:-1:-1;26992:276:0;;-1:-1:-1;;26992:276:0:o;13707:75::-;13752:13;13775:5;13768:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13707:75;:::o;14418:169::-;14501:4;14518:39;12069:10;14541:7;14550:6;14518:8;:39::i;:::-;-1:-1:-1;14575:4:0;14418:169;;;;;:::o;36507:631::-;17572:10;17558:25;;;;:13;:25;;;;;;;;17550:81;;;;-1:-1:-1;;;17550:81:0;;;;;;;:::i;:::-;;;;;;;;;36685:2:::1;36674:7;:13;;;;:30;;;;;36702:2;36691:7;:13;;;;36674:30;36665:81;;;::::0;-1:-1:-1;;;36665:81:0;;15194:2:1;36665:81:0::1;::::0;::::1;15176:21:1::0;15233:2;15213:18;;;15206:30;15272:34;15252:18;;;15245:62;-1:-1:-1;;;15323:18:1;;;15316:35;15368:19;;36665:81:0::1;14992:401:1::0;36665:81:0::1;36777:1;36766:7;:12;;;;:29;;;;;36793:2;36782:7;:13;;;;36766:29;36757:79;;;::::0;-1:-1:-1;;;36757:79:0;;15600:2:1;36757:79:0::1;::::0;::::1;15582:21:1::0;15639:2;15619:18;;;15612:30;15678:34;15658:18;;;15651:62;-1:-1:-1;;;15729:18:1;;;15722:34;15773:19;;36757:79:0::1;15398:400:1::0;36757:79:0::1;36871:1;36856:11;:16;;;;:37;;;;;36891:2;36876:11;:17;;;;36856:37;36847:91;;;::::0;-1:-1:-1;;;36847:91:0;;16005:2:1;36847:91:0::1;::::0;::::1;15987:21:1::0;16044:2;16024:18;;;16017:30;16083:34;16063:18;;;16056:62;-1:-1:-1;;;16134:18:1;;;16127:38;16182:19;;36847:91:0::1;15803:404:1::0;36847:91:0::1;36949:8;:19:::0;;37011:27;::::1;;::::0;::::1;-1:-1:-1::0;;36979:21:0;::::1;;::::0;::::1;-1:-1:-1::0;;36949:19:0;::::1;;::::0;::::1;36979:21:::0;;;;-1:-1:-1;;36979:21:0;;;;;;;;;;::::1;37011:27:::0;;;::::1;::::0;;;::::1;::::0;;;37049:7:::1;:17:::0;;36949:19:::1;37105:25:::0;;::::1;::::0;::::1;-1:-1:-1::0;;37049:17:0;;::::1;36949:19;37049:17;37105:25:::0;;;;-1:-1:-1;;37105:25:0;;;;37077:17;;;::::1;37105:25:::0;;;;::::1;::::0;;36507:631::o;14596:314::-;14702:4;14719:36;14729:6;14737:9;14748:6;14719:9;:36::i;:::-;14766:114;14775:6;12069:10;14797:82;14835:6;14797:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14797:19:0;;;;;;:11;:19;;;;;;;;12069:10;14797:33;;;;;;;;;;:37;:82::i;:::-;14766:8;:114::i;:::-;-1:-1:-1;14898:4:0;14596:314;;;;;:::o;28747:2104::-;17572:10;17558:25;;;;:13;:25;;;;;;;;17550:81;;;;-1:-1:-1;;;17550:81:0;;;;;;;:::i;:::-;28978:15:::1;::::0;-1:-1:-1;;;;;28955:38:0;;::::1;28978:15:::0;::::1;28955:38;28951:479;;29030:15;::::0;;-1:-1:-1;;;;;29030:15:0;;::::1;29049:5;29010:36:::0;;;:19:::1;:36;::::0;;;;;;;:44;;-1:-1:-1;;29010:44:0;;::::1;::::0;;;29090:15;;;::::1;29069:37:::0;;:20:::1;:37:::0;;;;;;:45;;;::::1;::::0;;29144:15;;;::::1;29129:31:::0;;:14:::1;:31:::0;;;;;;:39;;;::::1;::::0;;29200:40;;::::1;::::0;;;;;;;;;:47;;;::::1;29030:15:::0;29200:47;;::::1;::::0;;;29262:41;;;;;;:48;;;::::1;::::0;::::1;::::0;;29325:35;;;;;;;:42;;;;::::1;::::0;;::::1;::::0;;29381:37;;-1:-1:-1;;;;;;29381:37:0::1;;::::0;;28951:479:::1;29462:10;::::0;-1:-1:-1;;;;;29444:28:0;;::::1;29462:10:::0;::::1;29444:28;29440:438;;29509:10;::::0;;-1:-1:-1;;;;;29509:10:0;;::::1;29523:5;29489:31:::0;;;:19:::1;:31;::::0;;;;;;;:39;;-1:-1:-1;;29489:39:0;;::::1;::::0;;;29564:10;;;::::1;29543:32:::0;;:20:::1;:32:::0;;;;;;:40;;;::::1;::::0;;29613:10;;;::::1;29598:26:::0;;:14:::1;:26:::0;;;;;;:34;;;::::1;::::0;;29672:35;;::::1;::::0;;;;;;;;;:42;;;::::1;29509:10:::0;29672:42;;::::1;::::0;;;29729:36;;;;;;:43;;;::::1;::::0;::::1;::::0;;29787:30;;;;;;;:37;;;;::::1;::::0;;::::1;::::0;;29839:27;;-1:-1:-1;;;;;;29839:27:0::1;;::::0;;29440:438:::1;29914:14;::::0;-1:-1:-1;;;;;29892:36:0;;::::1;29914:14:::0;::::1;29892:36;29888:478;;29965:14;::::0;;-1:-1:-1;;;;;29965:14:0;;::::1;29983:5;29945:35:::0;;;:19:::1;:35;::::0;;;;;;;:43;;-1:-1:-1;;29945:43:0;;::::1;::::0;;;30024:14;;;::::1;30003:36:::0;;:20:::1;:36:::0;;;;;;:44;;;::::1;::::0;;30077:14;;;::::1;30062:30:::0;;:14:::1;:30:::0;;;;;;:38;;;::::1;::::0;;30140:39;;::::1;::::0;;;;;;;;;:46;;;::::1;29965:14:::0;30140:46;;::::1;::::0;;;30201:40;;;;;;:47;;;::::1;::::0;::::1;::::0;;30263:34;;;;;;;:41;;;;::::1;::::0;;::::1;::::0;;30319:35;;-1:-1:-1;;;;;;30319:35:0::1;;::::0;;29888:478:::1;30401:13;::::0;-1:-1:-1;;;;;30380:34:0;;::::1;30401:13:::0;::::1;30380:34;30376:468;;30451:13;::::0;;-1:-1:-1;;;;;30451:13:0;;::::1;30468:5;30431:34:::0;;;:19:::1;:34;::::0;;;;;;;:42;;-1:-1:-1;;30431:42:0;;::::1;::::0;;;30509:13;;;::::1;30488:35:::0;;:20:::1;:35:::0;;;;;;:43;;;::::1;::::0;;30561:13;;;::::1;30546:29:::0;;:14:::1;:29:::0;;;;;;:37;;;::::1;::::0;;30623:38;;::::1;::::0;;;;;;;;;:45;;;::::1;30451:13:::0;30623:45;;::::1;::::0;;;30683:39;;;;;;:46;;;::::1;::::0;::::1;::::0;;30744:33;;;;;;;:40;;;;::::1;::::0;;::::1;::::0;;30799:33;;-1:-1:-1;;;;;;30799:33:0::1;;::::0;;30376:468:::1;28747:2104:::0;;;;:::o;37146:642::-;17572:10;17558:25;;;;:13;:25;;;;;;;;17550:81;;;;-1:-1:-1;;;17550:81:0;;;;;;;:::i;:::-;37216:14:::1;::::0;:19;37213:145:::1;;37283:13;::::0;37298:14:::1;::::0;37252:61:::1;::::0;37276:4:::1;::::0;-1:-1:-1;;;;;37283:13:0;;::::1;::::0;37252:15:::1;:61::i;:::-;37345:1;37328:14;:18:::0;37213:145:::1;37371:19;::::0;:24;37368:139:::1;;37412:15;::::0;37437:19:::1;::::0;37412:45:::1;::::0;-1:-1:-1;;;;;37412:15:0;;::::1;::::0;:45;::::1;;;::::0;37437:19;37412:15:::1;:45:::0;:15;:45;37437:19;37412:15;:45;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;37494:1:0::1;37472:19;:23:::0;37368:139:::1;37520:14;::::0;:19;37517:119:::1;;37556:10;::::0;37576:14:::1;::::0;37556:35:::1;::::0;-1:-1:-1;;;;;37556:10:0;;::::1;::::0;:35;::::1;;;::::0;37576:14;37556:10:::1;:35:::0;:10;:35;37576:14;37556:10;:35;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;37623:1:0::1;37606:14;:18:::0;37517:119:::1;37649:18;::::0;:23;37646:135:::1;;37689:14;::::0;37713:18:::1;::::0;37689:43:::1;::::0;-1:-1:-1;;;;;37689:14:0;;::::1;::::0;:43;::::1;;;::::0;37713:18;37689:14:::1;:43:::0;:14;:43;37713:18;37689:14;:43;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;37768:1:0::1;37747:18;:22:::0;37646:135:::1;37146:642::o:0;14919:218::-;12069:10;15007:4;15056:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15056:34:0;;;;;;;;;;15007:4;;15024:83;;15047:7;;15056:50;;15095:10;15056:38;:50::i;30867:225::-;17572:10;17558:25;;;;:13;:25;;;;;;;;17550:81;;;;-1:-1:-1;;;17550:81:0;;;;;;;:::i;:::-;30977:5:::1;30966:7;:16;;30958:62;;;::::0;-1:-1:-1;;;30958:62:0;;16414:2:1;30958:62:0::1;::::0;::::1;16396:21:1::0;;;16433:18;;;16426:30;16492:34;16472:18;;;16465:62;16544:18;;30958:62:0::1;16212:356:1::0;30958:62:0::1;31031:7;:17:::0;31059:11:::1;:25:::0;;;::::1;;-1:-1:-1::0;;;31059:25:0::1;-1:-1:-1::0;;31059:25:0;;::::1;::::0;;;::::1;::::0;;30867:225::o;35402:604::-;17572:10;17558:25;;;;:13;:25;;;;;;;;17550:81;;;;-1:-1:-1;;;17550:81:0;;;;;;;:::i;:::-;35604:2:::1;35594:6;:12;;35586:42;;;::::0;-1:-1:-1;;;35586:42:0;;16775:2:1;35586:42:0::1;::::0;::::1;16757:21:1::0;16814:2;16794:18;;;16787:30;-1:-1:-1;;;16833:18:1;;;16826:47;16890:18;;35586:42:0::1;16573:341:1::0;35586:42:0::1;35639:25;35690:20;:15:::0;35706:4:::1;35690:20;:::i;:::-;35667;:14:::0;35682:5:::1;35667:20;:::i;:::-;:43;;;;:::i;:::-;35639:71:::0;-1:-1:-1;35744:35:0::1;35639:71:::0;35744:15:::1;:35;:::i;:::-;35721:20;:58:::0;35822:7:::1;::::0;35790:13:::1;::::0;35818:11:::1;::::0;35822:7:::1;;35818:2;:11;:::i;:::-;35806:23;::::0;:11;:23:::1;:::i;:::-;35790:39:::0;-1:-1:-1;35840:11:0::1;35876:12:::0;35855:19:::1;:12:::0;35868:6:::1;35855:19;:::i;:::-;35854:34;;;;:::i;:::-;35840:48;;35899:25;35913:5;35920:3;35899:12;:25::i;:::-;35935:14;:21:::0;;-1:-1:-1;;35935:21:0::1;::::0;::::1;::::0;;35977::::1;35992:6:::0;35977:12:::1;:21;:::i;:::-;35967:7;:31:::0;-1:-1:-1;;;;;;;;;35402:604:0:o;32733:1364::-;17572:10;17558:25;;;;:13;:25;;;;;;;;17550:81;;;;-1:-1:-1;;;17550:81:0;;;;;;;:::i;:::-;32993:8:::1;;32980:9;:21;;:48;;;;;33018:10;33005:9;:23;;32980:48;32972:119;;;::::0;-1:-1:-1;;;32972:119:0;;19029:2:1;32972:119:0::1;::::0;::::1;19011:21:1::0;19068:2;19048:18;;;19041:30;19107:34;19087:18;;;19080:62;19178:28;19158:18;;;19151:56;19224:19;;32972:119:0::1;18827:422:1::0;32972:119:0::1;33102:19;33124:70;33180:13:::0;33124:51:::1;33160:14:::0;33124:51;:15;33144:10;33124:19:::1;:31::i;:::-;:35:::0;::::1;:51::i;:70::-;33265:8;::::0;33102:92;;-1:-1:-1;33213:48:0::1;33250:10:::0;33213:32:::1;33102:92:::0;33229:15;33213::::1;:32::i;:48::-;:60;;33205:105;;;::::0;-1:-1:-1;;;33205:105:0;;19456:2:1;33205:105:0::1;::::0;::::1;19438:21:1::0;;;19475:18;;;19468:30;19534:34;19514:18;;;19507:62;19586:18;;33205:105:0::1;19254:356:1::0;33205:105:0::1;33492:21:::0;;33489:171:::1;;33543:8;;33523:16;:28;;:60;;;;;33575:8;;33555:16;:28;;33523:60;33515:143;;;::::0;-1:-1:-1;;;33515:143:0;;20168:2:1;33515:143:0::1;::::0;::::1;20150:21:1::0;20207:2;20187:18;;;20180:30;20246:34;20226:18;;;20219:62;20317:34;20297:18;;;20290:62;-1:-1:-1;;;20368:19:1;;;20361:37;20415:19;;33515:143:0::1;19966:474:1::0;33515:143:0::1;33680:7;:19:::0;;;33710:17:::1;:36:::0;;;33757:8:::1;:21:::0;;;33789:13:::1;:31:::0;;;33831:13:::1;:31:::0;;;33873:8:::1;:21:::0;;;33905:12:::1;:29:::0;;;33945:11:::1;:27:::0;;;33994:95:::1;33768:10:::0;33994:81:::1;33959:13:::0;33994:81;33920:14;33994:81;33884:10;33994:81;33805:15;33847;33994:17:::1;:32::i;:95::-;33983:8;:106:::0;-1:-1:-1;;;;;;;;;32733:1364:0:o;34110:316::-;17572:10;17558:25;;;;:13;:25;;;;;;;;17550:81;;;;-1:-1:-1;;;17550:81:0;;;;;;;:::i;:::-;34228:15:::1;::::0;-1:-1:-1;;;;;34228:15:0;;::::1;34206:38:::0;;::::1;::::0;34198:86:::1;;;::::0;-1:-1:-1;;;34198:86:0;;20647:2:1;34198:86:0::1;::::0;::::1;20629:21:1::0;20686:2;20666:18;;;20659:30;20725:34;20705:18;;;20698:62;-1:-1:-1;;;20776:18:1;;;20769:33;20819:19;;34198:86:0::1;20445:399:1::0;34198:86:0::1;34342:15;::::0;34300:59:::1;::::0;-1:-1:-1;;;;;34342:15:0;;::::1;::::0;34300:59;::::1;::::0;::::1;::::0;34342:15:::1;::::0;34300:59:::1;34370:15;:48:::0;;-1:-1:-1;;;;;;34370:48:0::1;-1:-1:-1::0;;;;;34370:48:0;;;::::1;::::0;;;::::1;::::0;;34110:316::o;34435:314::-;17572:10;17558:25;;;;:13;:25;;;;;;;;17550:81;;;;-1:-1:-1;;;17550:81:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34567:28:0;;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;:34;;;::::1;;-1:-1:-1::0;;34567:34:0;;::::1;;::::0;;34612:20:::1;:29:::0;;;;;:37;;;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;34660:14:::1;:23:::0;;;;;:35;;;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;34706:14:::1;:23:::0;;;;:35;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;34435:314::o;28460:275::-;17572:10;17558:25;;;;:13;:25;;;;;;;;17550:81;;;;-1:-1:-1;;;17550:81:0;;;;;;;:::i;:::-;28538:25:::1;28555:7;28538:16;:25::i;:::-;-1:-1:-1::0;;;;;28574:37:0::1;28614:5;28574:37:::0;;;:19:::1;:37;::::0;;;;;;;:45;;-1:-1:-1;;28574:45:0;;::::1;::::0;;;28630:20:::1;:38:::0;;;;;:46;;;::::1;::::0;;28687:14:::1;:32:::0;;;;;;:40;;;;::::1;::::0;;28460:275::o;36014:315::-;17572:10;17558:25;;;;:13;:25;;;;;;;;17550:81;;;;-1:-1:-1;;;17550:81:0;;;;;;;:::i;:::-;36099:20:::1;;36080:15;:39;;36072:68;;;::::0;-1:-1:-1;;;36072:68:0;;21051:2:1;36072:68:0::1;::::0;::::1;21033:21:1::0;21090:2;21070:18;;;21063:30;-1:-1:-1;;;21109:18:1;;;21102:46;21165:18;;36072:68:0::1;20849:340:1::0;36072:68:0::1;36224:39;::::0;-1:-1:-1;;;36224:39:0;;36257:4:::1;36224:39;::::0;::::1;3087:51:1::0;36182:13:0::1;::::0;36151:21:::1;::::0;-1:-1:-1;;;;;36224:24:0;::::1;::::0;::::1;::::0;3060:18:1;;36224:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36278:43;::::0;-1:-1:-1;;;36278:43:0;;36302:10:::1;36278:43;::::0;::::1;21557:51:1::0;21624:18;;;21617:34;;;36207:56:0;;-1:-1:-1;;;;;;36278:23:0;::::1;::::0;::::1;::::0;21530:18:1;;36278:43:0::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;36061:268;;36014:315::o:0;12870:148::-;12724:6;;-1:-1:-1;;;;;12724:6:0;12069:10;12781:23;12773:68;;;;-1:-1:-1;;;12773:68:0;;22114:2:1;12773:68:0;;;22096:21:1;;;22133:18;;;22126:30;22192:34;22172:18;;;22165:62;22244:18;;12773:68:0;21912:356:1;12773:68:0;12961:6:::1;::::0;12940:40:::1;::::0;12977:1:::1;::::0;-1:-1:-1;;;;;12961:6:0::1;::::0;12940:40:::1;::::0;12977:1;;12940:40:::1;12991:6;:19:::0;;-1:-1:-1;;;;;;12991:19:0::1;::::0;;12870:148::o;35027:367::-;17572:10;17558:25;;;;:13;:25;;;;;;;;17550:81;;;;-1:-1:-1;;;17550:81:0;;;;;;;:::i;:::-;35123:25:::1;35167:13;:8:::0;35176:4:::1;35167:13;:::i;:::-;35151;:7:::0;35159:5:::1;35151:13;:::i;:::-;:29;;;;:::i;:::-;35123:57;;35218:15;35195:20;;:38;35191:82;;;35258:15;35235:20;:38:::0;35191:82:::1;35277:55;35311:20;;35291:17;:40;;;;:::i;:::-;35277:13;:55::i;:::-;35348:38;::::0;4542:25:1;;;35348:38:0::1;::::0;4530:2:1;4515:18;35348:38:0::1;;;;;;;35112:282;35027:367:::0;;:::o;18380:107::-;17572:10;17558:25;;;;:13;:25;;;;;;;;17550:81;;;;-1:-1:-1;;;17550:81:0;;;;;;;:::i;:::-;18459:11:::1;:26:::0;;-1:-1:-1;;;;;;18459:26:0::1;-1:-1:-1::0;;;;;18459:26:0;;;::::1;::::0;;;::::1;::::0;;18380:107::o;13788:79::-;13835:13;13858:7;13851:14;;;;;:::i;34765:256::-;17572:10;17558:25;;;;:13;:25;;;;;;;;17550:81;;;;-1:-1:-1;;;17550:81:0;;;;;;;:::i;:::-;34879:13:::1;-1:-1:-1::0;;;;;34871:21:0::1;:4;-1:-1:-1::0;;;;;34871:21:0::1;::::0;34863:98:::1;;;::::0;;-1:-1:-1;;;34863:98:0;;22475:2:1;34863:98:0::1;::::0;::::1;22457:21:1::0;22494:18;;;22487:30;;;;22553:34;22533:18;;;22526:62;22624:34;22604:18;;;22597:62;22676:19;;34863:98:0::1;22273:428:1::0;34863:98:0::1;34972:41;35001:4;35007:5;34972:28;:41::i;:::-;34765:256:::0;;:::o;15146:262::-;15239:4;15256:122;12069:10;15279:7;15288:89;15327:15;15288:89;;;;;;;;;;;;;;;;;:11;:25;15300:12;12069:10;;11983:99;15300:12;-1:-1:-1;;;;;15288:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;15288:25:0;;;:34;;;;;;;;;;;:89;:38;:89::i;31104:1619::-;17572:10;17558:25;;;;:13;:25;;;;;;;;17550:81;;;;-1:-1:-1;;;17550:81:0;;;;;;;:::i;:::-;31321:14:::1;31338;13951:12:::0;;;13873:92;31338:14:::1;31321:31:::0;-1:-1:-1;31399:12:0::1;31408:3;31321:31:::0;31399:12:::1;:::i;:::-;31388:7;::::0;31384:11:::1;::::0;31388:7:::1;;31384:2;:11;:::i;:::-;31371:24;::::0;:10;:24:::1;:::i;:::-;:40;;:78;;;;-1:-1:-1::0;31432:7:0::1;::::0;31443:6;;31428:11:::1;::::0;31432:7:::1;;31428:2;:11;:::i;:::-;31415:24;::::0;:10;:24:::1;:::i;:::-;:34;;31371:78;31363:150;;;::::0;-1:-1:-1;;;31363:150:0;;22908:2:1;31363:150:0::1;::::0;::::1;22890:21:1::0;22947:2;22927:18;;;22920:30;22986:34;22966:18;;;22959:62;23057:29;23037:18;;;23030:57;23104:19;;31363:150:0::1;22706:423:1::0;31363:150:0::1;31558:13;31567:4;31558:6:::0;:13:::1;:::i;:::-;31547:7;::::0;31543:11:::1;::::0;31547:7:::1;;31543:2;:11;:::i;:::-;31532:22;::::0;:8;:22:::1;:::i;:::-;:39;;:75;;;;-1:-1:-1::0;31590:7:0::1;::::0;31601:6;;31586:11:::1;::::0;31590:7:::1;;31586:2;:11;:::i;:::-;31575:22;::::0;:8;:22:::1;:::i;:::-;:32;;31532:75;31524:148;;;::::0;-1:-1:-1;;;31524:148:0;;23336:2:1;31524:148:0::1;::::0;::::1;23318:21:1::0;23375:2;23355:18;;;23348:30;23414:34;23394:18;;;23387:62;23485:29;23465:18;;;23458:57;23532:19;;31524:148:0::1;23134:423:1::0;31524:148:0::1;31717:14;31726:5;31717:6:::0;:14:::1;:::i;:::-;31706:7;::::0;31702:11:::1;::::0;31706:7:::1;;31702:2;:11;:::i;:::-;31691:22;::::0;:8;:22:::1;:::i;:::-;:40;;:68;;;;-1:-1:-1::0;31747:12:0::1;31758:1;31747:8:::0;:12:::1;:::i;:::-;31735:8;:24;;31691:68;31683:140;;;::::0;-1:-1:-1;;;31683:140:0;;23764:2:1;31683:140:0::1;::::0;::::1;23746:21:1::0;23803:2;23783:18;;;23776:30;23842:34;23822:18;;;23815:62;23913:28;23893:18;;;23886:56;23959:19;;31683:140:0::1;23562:422:1::0;31683:140:0::1;31855:4;31842:9;:17;;:39;;;;;31876:5;31863:9;:18;;31842:39;31834:103;;;::::0;-1:-1:-1;;;31834:103:0;;24191:2:1;31834:103:0::1;::::0;::::1;24173:21:1::0;24230:2;24210:18;;;24203:30;24269:34;24249:18;;;24242:62;-1:-1:-1;;;24320:18:1;;;24313:49;24379:19;;31834:103:0::1;23989:415:1::0;31834:103:0::1;31966:1;31956:6;:11;;:27;;;;;31981:2;31971:6;:12;;31956:27;31948:91;;;::::0;-1:-1:-1;;;31948:91:0;;24611:2:1;31948:91:0::1;::::0;::::1;24593:21:1::0;24650:2;24630:18;;;24623:30;24689:34;24669:18;;;24662:62;-1:-1:-1;;;24740:18:1;;;24733:49;24799:19;;31948:91:0::1;24409:415:1::0;31948:91:0::1;32070:15;:8:::0;32083:1:::1;32070:12;:15::i;:::-;32058:8;:27;;:63;;;;-1:-1:-1::0;32104:7:0::1;::::0;32115:6;;32100:11:::1;::::0;32104:7:::1;;32100:2;:11;:::i;:::-;32089:22;::::0;:8;:22:::1;:::i;:::-;:32;;32058:63;32050:128;;;::::0;-1:-1:-1;;;32050:128:0;;25031:2:1;32050:128:0::1;::::0;::::1;25013:21:1::0;25070:2;25050:18;;;25043:30;25109:34;25089:18;;;25082:62;-1:-1:-1;;;25160:18:1;;;25153:49;25219:19;;32050:128:0::1;24829:415:1::0;32050:128:0::1;32191:7;:18:::0;;;32251:7:::1;::::0;32247:11:::1;::::0;32251:7:::1;;32247:2;:11;:::i;:::-;32237:7;;:21;;;;:::i;:::-;32220:14;:38:::0;32269:9:::1;:22:::0;;;32336:7:::1;::::0;32332:11:::1;::::0;32336:7:::1;;32332:2;:11;:::i;:::-;32320:9;;:23;;;;:::i;:::-;32302:15;:41:::0;32354:7:::1;:18:::0;;;32424:7:::1;::::0;32420:11:::1;::::0;32424:7:::1;;32420:2;:11;:::i;:::-;32410:7;;:21;;;;:::i;:::-;32383:24;:48:::0;32442:7:::1;:18:::0;;;32506:7:::1;::::0;32502:11:::1;::::0;32506:7:::1;;32502:2;:11;:::i;:::-;32492:7;;:21;;;;:::i;:::-;32471:18;:42:::0;32524:8:::1;:17:::0;;;32552:16:::1;:35:::0;;-1:-1:-1;;32601:46:0;-1:-1:-1;;;32552:35:0;::::1;;;-1:-1:-1::0;;32601:46:0;;32552:35:::1;32601:46:::0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;32663:52:::1;::::0;2889:41:1;;;32663:52:0::1;::::0;2877:2:1;2862:18;32663:52:0::1;;;;;;;31310:1413;31104:1619:::0;;;;;;;;:::o;14090:175::-;14176:4;14193:42;12069:10;14217:9;14228:6;14193:9;:42::i;27284:639::-;27339:12;27353:13;27368:15;27385;27435:20;;27417:15;:38;27413:472;;;27521:5;27502:15;27479:20;;:38;;;;:::i;:::-;27478:48;;;;:::i;:::-;27471:55;-1:-1:-1;27607:4:0;27591:12;27471:55;27598:5;27591:12;:::i;:::-;27573:15;27550:20;;:38;;;;:::i;:::-;:53;;;;:::i;:::-;27549:62;;;;:::i;:::-;27541:70;-1:-1:-1;27710:2:0;27693:12;27541:70;27701:4;27693:12;:::i;:::-;27678;:4;27685:5;27678:12;:::i;:::-;27660:15;27637:20;;:38;;;;:::i;:::-;:53;;;;:::i;:::-;:68;;;;:::i;:::-;27636:76;;;;:::i;:::-;27626:86;-1:-1:-1;27808:12:0;27626:86;27818:2;27808:12;:::i;:::-;27793;:5;27801:4;27793:12;:::i;:::-;27778;:4;27785:5;27778:12;:::i;:::-;27760:15;27737:20;;:38;;;;:::i;:::-;:53;;;;:::i;:::-;:68;;;;:::i;:::-;:83;;;;:::i;:::-;27727:93;;27835:38;;27413:472;-1:-1:-1;27904:1:0;;-1:-1:-1;27904:1:0;;-1:-1:-1;27904:1:0;;-1:-1:-1;27904:1:0;27284:639;;;;;:::o;36337:162::-;17572:10;36396:11;17558:25;;;:13;:25;;;;;;36409:17;;17558:25;;17550:81;;;;-1:-1:-1;;;17550:81:0;;;;;;;:::i;:::-;36448:4:::1;:11:::0;;36470:21:::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;;;36448:11;;-1:-1:-1;36448:11:0;;:4;36470:21;36448:4;;:11;;36470:21;::::1;36448:4:::0;:11;36470:21;::::1;;;;;;;;;;;;;;;;::::0;;-1:-1:-1;;;;;36470:21:0::1;::::0;;;;;::::1;::::0;::::1;;::::0;;::::1;;;;;;;;;;;;;;;36337:162:::0;;:::o;28184:268::-;17572:10;17558:25;;;;:13;:25;;;;;;;;17550:81;;;;-1:-1:-1;;;17550:81:0;;;;;;;:::i;:::-;28260:23:::1;28275:7;28260:14;:23::i;:::-;-1:-1:-1::0;;;;;28294:37:0::1;;::::0;;;:19:::1;:37;::::0;;;;;;;:44;;28334:4:::1;-1:-1:-1::0;;28294:44:0;;::::1;::::0;::::1;::::0;;;28349:20:::1;:38:::0;;;;;:45;;;::::1;::::0;::::1;::::0;;28405:14:::1;:32:::0;;;;;:39;;;;::::1;::::0;;::::1;::::0;;28184:268::o;18644:115::-;18714:11;;-1:-1:-1;;;;;18714:11:0;18700:10;:25;18692:34;;;;;;18728:11;;:29;;-1:-1:-1;;;;;18728:11:0;;;;:29;;;;;18749:7;;18728:11;:29;:11;:29;18749:7;18728:11;:29;;;;;;;;;;;;;;;;;;;13027:244;12724:6;;-1:-1:-1;;;;;12724:6:0;12069:10;12781:23;12773:68;;;;-1:-1:-1;;;12773:68:0;;22114:2:1;12773:68:0;;;22096:21:1;;;22133:18;;;22126:30;22192:34;22172:18;;;22165:62;22244:18;;12773:68:0;21912:356:1;12773:68:0;-1:-1:-1;;;;;13116:22:0;::::1;13108:73;;;::::0;-1:-1:-1;;;13108:73:0;;25451:2:1;13108:73:0::1;::::0;::::1;25433:21:1::0;25490:2;25470:18;;;25463:30;25529:34;25509:18;;;25502:62;-1:-1:-1;;;25580:18:1;;;25573:36;25626:19;;13108:73:0::1;25249:402:1::0;13108:73:0::1;13218:6;::::0;13197:38:::1;::::0;-1:-1:-1;;;;;13197:38:0;;::::1;::::0;13218:6:::1;::::0;13197:38:::1;::::0;13218:6:::1;::::0;13197:38:::1;13246:6;:17:::0;;-1:-1:-1;;;;;;13246:17:0::1;-1:-1:-1::0;;;;;13246:17:0;;;::::1;::::0;;;::::1;::::0;;13027:244::o;18493:145::-;18577:11;;-1:-1:-1;;;;;18577:11:0;18563:10;:25;18555:34;;;;;;18615:11;;18591:45;;-1:-1:-1;;;18591:45:0;;-1:-1:-1;;;;;18615:11:0;;;18591:45;;;21557:51:1;21624:18;;;21617:34;;;18591:23:0;;;;;;21530:18:1;;18591:45:0;21383:274:1;9239:179:0;9297:7;;9329:5;9333:1;9329;:5;:::i;:::-;9317:17;;9358:1;9353;:6;;9345:46;;;;-1:-1:-1;;;9345:46:0;;26145:2:1;9345:46:0;;;26127:21:1;26184:2;26164:18;;;26157:30;26223:29;26203:18;;;26196:57;26270:18;;9345:46:0;25943:351:1;9345:46:0;9409:1;9239:179;-1:-1:-1;;;9239:179:0:o;16743:333::-;-1:-1:-1;;;;;16845:19:0;;16837:61;;;;-1:-1:-1;;;16837:61:0;;26501:2:1;16837:61:0;;;26483:21:1;26540:2;26520:18;;;26513:30;26579:31;26559:18;;;26552:59;26628:18;;16837:61:0;26299:353:1;16837:61:0;-1:-1:-1;;;;;16917:21:0;;16909:61;;;;-1:-1:-1;;;16909:61:0;;26859:2:1;16909:61:0;;;26841:21:1;26898:2;26878:18;;;26871:30;26937:29;26917:18;;;26910:57;26984:18;;16909:61:0;26657:351:1;16909:61:0;-1:-1:-1;;;;;16984:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;17036:32;;4542:25:1;;;17036:32:0;;4515:18:1;17036:32:0;;;;;;;;16743:333;;;:::o;40216:2799::-;-1:-1:-1;;;;;40314:18:0;;40306:61;;;;-1:-1:-1;;;40306:61:0;;27215:2:1;40306:61:0;;;27197:21:1;27254:2;27234:18;;;27227:30;27293:32;27273:18;;;27266:60;27343:18;;40306:61:0;27013:354:1;40306:61:0;-1:-1:-1;;;;;40386:16:0;;40378:57;;;;-1:-1:-1;;;40378:57:0;;27574:2:1;40378:57:0;;;27556:21:1;27613:2;27593:18;;;27586:30;27652;27632:18;;;27625:58;27700:18;;40378:57:0;27372:352:1;40378:57:0;40451:6;40461:1;40451:11;40448:25;;40216:2799;;;:::o;40448:25::-;-1:-1:-1;;;;;40486:19:0;;40500:4;40486:19;;;;:39;;-1:-1:-1;40515:10:0;;-1:-1:-1;;;;;40509:16:0;;;40515:10;;40509:16;;40486:39;40483:121;;;-1:-1:-1;;;;;40536:20:0;;;;;;:14;:20;;;;;;;;40535:21;:44;;;;-1:-1:-1;;;;;;40561:18:0;;;;;;:14;:18;;;;;;;;40560:19;40535:44;40527:77;;;;-1:-1:-1;;;40527:77:0;;27931:2:1;40527:77:0;;;27913:21:1;27970:2;27950:18;;;27943:30;-1:-1:-1;;;27989:18:1;;;27982:49;28048:18;;40527:77:0;27729:343:1;40527:77:0;40742:14;;;;;;;40738:79;;-1:-1:-1;;;;;40767:20:0;;;;;;:14;:20;;;;;;;;40759:56;;;;-1:-1:-1;;;40759:56:0;;28279:2:1;40759:56:0;;;28261:21:1;28318:2;28298:18;;;28291:30;28357:25;28337:18;;;28330:53;28400:18;;40759:56:0;28077:347:1;40759:56:0;40834:14;;;;;;;:40;;;;;40867:7;;40852:12;:22;40834:40;:63;;;;-1:-1:-1;;;;;;40879:18:0;;;;;;:14;:18;;;;;;;;40878:19;40834:63;:98;;;;-1:-1:-1;;;;;;40901:31:0;;;;;;:25;:31;;;;;;;;40834:98;40831:185;;;-1:-1:-1;;;;;40949:18:0;;;;;;:14;:18;;;;;:25;;-1:-1:-1;;40949:25:0;40970:4;40949:25;;;;;;40989:4;:13;;;;;;;;;;;;;;-1:-1:-1;;;;;;40989:13:0;;;;;;40831:185;-1:-1:-1;;;;;41079:18:0;;;;;;:14;:18;;;;;;;;41078:19;:54;;;;-1:-1:-1;;;;;;41101:31:0;;;;;;:25;:31;;;;;;;;41078:54;41075:304;;;-1:-1:-1;;;;;41151:19:0;;41165:4;41151:19;;;;:39;;-1:-1:-1;41180:10:0;;-1:-1:-1;;;;;41174:16:0;;;41180:10;;41174:16;;41151:39;41148:220;;;-1:-1:-1;;;;;14062:18:0;;41210;14062;;;;;;;;;;;41296:15;;41272:19;41285:6;14062:18;41272:19;:::i;:::-;41271:40;;41263:89;;;;-1:-1:-1;;;41263:89:0;;28631:2:1;41263:89:0;;;28613:21:1;28670:2;28650:18;;;28643:30;28709:34;28689:18;;;28682:62;-1:-1:-1;;;28760:18:1;;;28753:34;28804:19;;41263:89:0;28429:400:1;41263:89:0;41191:177;41148:220;41394:6;41404:1;41394:11;41391:25;;40216:2799;;;:::o;41391:25::-;-1:-1:-1;;;;;41461:29:0;;;;;;:25;:29;;;;;;;;:62;;;;-1:-1:-1;;;;;;41496:26:0;;;;;;:20;:26;;;;;;;;41495:27;41461:62;:93;;;;-1:-1:-1;;;;;;41529:24:0;;;;;;:20;:24;;;;;;;;41528:25;41461:93;41458:205;;;41574:24;;41564:6;:34;;41556:105;;;;-1:-1:-1;;;41556:105:0;;29036:2:1;41556:105:0;;;29018:21:1;29075:2;29055:18;;;29048:30;29114:34;29094:18;;;29087:62;29185:28;29165:18;;;29158:56;29231:19;;41556:105:0;28834:422:1;41556:105:0;41679:11;;-1:-1:-1;;;41679:11:0;;;;:36;;;;-1:-1:-1;;;;;;41695:20:0;;;;;;:14;:20;;;;;;;;41694:21;41679:36;:69;;;;-1:-1:-1;;;;;;41719:29:0;;;;;;:25;:29;;;;;;;;41679:69;41675:233;;;41795:7;;-1:-1:-1;;;;;41774:18:0;;;;;;:12;:18;;;;;;41806:12;;41774:28;;;:::i;:::-;:44;;41765:83;;;;-1:-1:-1;;;41765:83:0;;29463:2:1;41765:83:0;;;29445:21:1;29502:2;29482:18;;;29475:30;29541:27;29521:18;;;29514:55;29586:18;;41765:83:0;29261:349:1;41765:83:0;-1:-1:-1;;;;;41863:18:0;;;;;;:12;:18;;;;;41884:12;41863:33;;41675:233;41969:4;41920:28;14062:18;;;;;;;;;;;41990:14;;:19;;;;:60;;;42030:20;42013:14;;:37;41990:60;41986:133;;;42103:14;;42094:4;14045:7;14062:18;;;;;;;;;;;42076:41;;;;:::i;:::-;42053:64;;41986:133;42168:18;;42230:8;;42217;;42144:42;;;;;42129:12;;42217:22;;:8;:12;:22::i;:::-;42197:42;;42277:14;;42253:20;:38;42250:82;;42316:14;;42293:37;;42250:82;42381:21;;;;;;;:32;;;;;42406:7;42381:32;:45;;;;-1:-1:-1;42418:8:0;;;;42417:9;42381:45;:81;;;;-1:-1:-1;;;;;;42431:31:0;;;;;;:25;:31;;;;;;;;42430:32;42381:81;:106;;;;-1:-1:-1;;;;;;42467:20:0;;;;;;:14;:20;;;;;;;;42466:21;42381:106;:129;;;;-1:-1:-1;;;;;;42492:18:0;;;;;;:14;:18;;;;;;;;42491:19;42381:129;:147;;;;-1:-1:-1;42514:14:0;;;42381:147;42377:278;;;42546:8;:15;;-1:-1:-1;;42546:15:0;42557:4;42546:15;;;42576:36;42591:20;42576:14;:36::i;:::-;42627:8;:16;;-1:-1:-1;;42627:16:0;;;42377:278;-1:-1:-1;;;;;42711:25:0;;42667:20;42711:25;;;:19;:25;;;;;;42690:6;;42711:25;;42710:26;:54;;;;-1:-1:-1;;;;;;42741:23:0;;;;;;:19;:23;;;;;;;;42740:24;42710:54;42707:102;;;42782:25;42790:4;42796:2;42800:6;42782:7;:25::i;:::-;42767:40;;42707:102;42828:10;;-1:-1:-1;;;;;42828:10:0;;;42822:16;;;;42819:189;;42841:30;42853:4;42858:12;42841:11;:30::i;:::-;42819:189;;;42954:10;;-1:-1:-1;;;;;42948:16:0;;;42954:10;;42948:16;42945:63;;42967:39;42983:4;42989:2;42993:12;42967:15;:39::i;:::-;40295:2720;;;;40216:2799;;;:::o;10145:166::-;10231:7;10267:12;10259:6;;;;10251:29;;;;-1:-1:-1;;;10251:29:0;;;;;;;;:::i;:::-;-1:-1:-1;10298:5:0;10302:1;10298;:5;:::i;:::-;10291:12;10145:166;-1:-1:-1;;;;10145:166:0:o;15417:520::-;-1:-1:-1;;;;;15523:20:0;;15515:63;;;;-1:-1:-1;;;15515:63:0;;27215:2:1;15515:63:0;;;27197:21:1;27254:2;27234:18;;;27227:30;27293:32;27273:18;;;27266:60;27343:18;;15515:63:0;27013:354:1;15515:63:0;-1:-1:-1;;;;;15597:23:0;;15589:64;;;;-1:-1:-1;;;15589:64:0;;27574:2:1;15589:64:0;;;27556:21:1;27613:2;27593:18;;;27586:30;27652;27632:18;;;27625:58;27700:18;;15589:64:0;27372:352:1;15589:64:0;15748;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15748:17:0;;-1:-1:-1;15748:17:0;;;;;;;;;;;;:64;;15770:6;;15748:21;:64::i;:::-;-1:-1:-1;;;;;15728:17:0;;;:9;:17;;;;;;;;;;;:84;;;;15846:20;;;;;;;:32;;15871:6;15846:24;:32::i;:::-;-1:-1:-1;;;;;15823:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;15894:35;4542:25:1;;;15823:20:0;;15894:35;;;;;;4515:18:1;15894:35:0;4396:177:1;44911:277:0;45024:15;;44992:62;;45009:4;;-1:-1:-1;;;;;45024:15:0;45042:11;44992:8;:62::i;:::-;45065:15;;:115;;-1:-1:-1;;;45065:115:0;;45123:4;45065:115;;;29956:34:1;;;30006:18;;;29999:34;;;45065:15:0;30049:18:1;;;30042:34;;;30092:18;;;30085:34;30135:19;;;30128:44;45164:15:0;30188:19:1;;;30181:35;-1:-1:-1;;;;;45065:15:0;;;;:31;;45104:9;;29890:19:1;;45065:115:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;44911:277;;:::o;18051:98::-;17572:10;17558:25;;;;:13;:25;;;;;;;;17550:81;;;;-1:-1:-1;;;17550:81:0;;;;;;;:::i;:::-;18121:26:::1;18139:7;-1:-1:-1::0;;;;;18208:22:0;18233:5;18208:22;;;:13;:22;;;;;:30;;-1:-1:-1;;18208:30:0;;;18155:85;18121:26:::1;18051:98:::0;:::o;45600:227::-;45751:20;;45735:13;:36;45727:45;;;;;;45783:20;:36;45600:227::o;38041:323::-;17572:10;17558:25;;;;:13;:25;;;;;;;;17550:81;;;;-1:-1:-1;;;17550:81:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38149:31:0;::::1;;::::0;;;:25:::1;:31;::::0;;;;;:40;::::1;;:31;::::0;;::::1;:40;;::::0;38141:109:::1;;;::::0;-1:-1:-1;;;38141:109:0;;30740:2:1;38141:109:0::1;::::0;::::1;30722:21:1::0;30779:2;30759:18;;;30752:30;30818:34;30798:18;;;30791:62;30889:26;30869:18;;;30862:54;30933:19;;38141:109:0::1;30538:420:1::0;38141:109:0::1;-1:-1:-1::0;;;;;38261:31:0;::::1;;::::0;;;:25:::1;:31;::::0;;;;;:39;;-1:-1:-1;;38261:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;38316:40;;38261:39;;:31;38316:40:::1;::::0;::::1;38041:323:::0;;:::o;9594:220::-;9652:7;9676:1;9681;9676:6;9672:20;;-1:-1:-1;9691:1:0;9684:8;;9672:20;9703:9;9715:5;9719:1;9715;:5;:::i;:::-;9703:17;-1:-1:-1;9748:1:0;9739:5;9743:1;9703:17;9739:5;:::i;:::-;:10;9731:56;;;;-1:-1:-1;;;9731:56:0;;31165:2:1;9731:56:0;;;31147:21:1;31204:2;31184:18;;;31177:30;31243:34;31223:18;;;31216:62;-1:-1:-1;;;31294:18:1;;;31287:31;31335:19;;9731:56:0;30963:397:1;17827:94:0;17572:10;17558:25;;;;:13;:25;;;;;;;;17550:81;;;;-1:-1:-1;;;17550:81:0;;;;;;;:::i;:::-;17895:24:::1;17911:7;17895:15;:24::i;9427:158::-:0;9485:7;9518:1;9513;:6;;9505:49;;;;-1:-1:-1;;;9505:49:0;;31567:2:1;9505:49:0;;;31549:21:1;31606:2;31586:18;;;31579:30;31645:32;31625:18;;;31618:60;31695:18;;9505:49:0;31365:354:1;9505:49:0;9572:5;9576:1;9572;:5;:::i;43023:1879::-;43096:17;43116:22;43129:8;;43116;;:12;;:22;;;;:::i;:::-;43096:42;;43149:20;43172:26;43186:11;;43172:9;:13;;:26;;;;:::i;:::-;43149:49;;43209:22;43234:21;43209:46;;43276:12;43334:9;43330:1;43314:13;;43291:20;:36;;;;:::i;:::-;:40;;;;:::i;:::-;:52;;;;:::i;:::-;43276:67;;43409:9;43395:11;;43372:20;:34;;;;:::i;:::-;:46;;;;:::i;:::-;43354:14;;:64;;;;;;;:::i;:::-;;;;-1:-1:-1;43439:18:0;;-1:-1:-1;43512:4:0;43499:9;43461:35;43484:12;43461:20;:35;:::i;:::-;:47;;;;:::i;:::-;43460:56;;;;:::i;:::-;43439:77;;43527:28;43544:10;43527:16;:28::i;:::-;43566:18;43587:38;43611:14;43587:21;:38;:::i;:::-;43566:59;;43638:27;43736:1;43720:13;;:17;;;;:::i;:::-;43704:34;;:12;:34;:::i;:::-;43698:1;43682:13;;43669:10;:26;;;;:::i;:::-;:30;;;;:::i;:::-;43668:71;;;;:::i;:::-;43638:101;;43837:1;43821:13;;:17;;;;:::i;:::-;43805:34;;:12;:34;:::i;:::-;43787:13;;43774:26;;:10;:26;:::i;:::-;43773:67;;;;:::i;:::-;43750:19;;:90;;;;;;;:::i;:::-;;;;-1:-1:-1;;43912:13:0;;:17;;43928:1;;43912:17;:::i;:::-;43896:34;;:12;:34;:::i;:::-;43883:8;;43870:21;;:10;:21;:::i;:::-;43869:62;;;;:::i;:::-;43851:14;;:80;;;;;;;:::i;:::-;;;;-1:-1:-1;;44011:13:0;;:17;;44027:1;;44011:17;:::i;:::-;43995:34;;:12;:34;:::i;:::-;43978:12;;43965:25;;:10;:25;:::i;:::-;43964:66;;;;:::i;:::-;43942:18;;:88;;;;;;;:::i;:::-;;;;-1:-1:-1;;44053:13:0;;:18;44050:156;;44088:39;44101:4;44107:19;44088:12;:39::i;:::-;44147:47;;;216:25:1;;;272:2;257:18;;250:34;;;300:18;;;293:34;;;44147:47:0;;204:2:1;189:18;44147:47:0;;;;;;;44050:156;44220:16;;-1:-1:-1;;;44220:16:0;;;;44216:679;;;44259:14;;:19;44256:157;;44330:13;;44345:14;;44299:61;;44323:4;;-1:-1:-1;;;;;44330:13:0;;;;44299:15;:61::i;:::-;44396:1;44379:14;:18;44256:157;44430:19;;:24;44427:151;;44475:15;;44500:19;;44475:45;;-1:-1:-1;;;;;44475:15:0;;;;:45;;;;;44500:19;44475:15;:45;:15;:45;44500:19;44475:15;:45;;;;;;;;;;;;;;;;;;;;-1:-1:-1;44561:1:0;44539:19;:23;44427:151;44595:14;;:19;44592:131;;44635:10;;44655:14;;44635:35;;-1:-1:-1;;;;;44635:10:0;;;;:35;;;;;44655:14;44635:10;:35;:10;:35;44655:14;44635:10;:35;;;;;;;;;;;;;;;;;;;;-1:-1:-1;44706:1:0;44689:14;:18;44592:131;44740:18;;:23;44737:147;;44784:14;;44808:18;;44784:43;;-1:-1:-1;;;;;44784:14:0;;;;:43;;;;;44808:18;44784:14;:43;:14;:43;44808:18;44784:14;:43;;;;;;;;;;;;;;;;;;;;-1:-1:-1;44867:1:0;44846:18;:22;44737:147;43085:1817;;;;;;;43023:1879;:::o;38376:1832::-;-1:-1:-1;;;;;38634:31:0;;38453:7;38634:31;;;:25;:31;;;;;;38453:7;;;;;;38634:31;;38631:1272;;;38729:7;;:12;38726:194;;38769:28;38793:3;38769:19;38780:7;;38769:6;:10;;:19;;;;:::i;:::-;:23;;:28::i;:::-;38762:35;;38851:29;38876:3;38851:20;38862:8;;38851:6;:10;;:20;;;;:::i;:29::-;38837:43;;38726:194;38631:1272;;;-1:-1:-1;;;;;38959:29:0;;;;;;:25;:29;;;;;;;;38956:947;;;39046:8;;;;;;;:33;;;;-1:-1:-1;;;;;;39059:20:0;;;;;;:14;:20;;;;;;;;39058:21;39046:33;39042:376;;;39153:20;39166:6;39153:12;:20::i;:::-;39142:31;-1:-1:-1;39196:12:0;;39192:211;;39237:9;;;;;;;39233:112;;;39249:25;39266:8;39249:25;;:::i;:::-;;;39233:112;;;39302:12;;;;;;;39298:47;;;39335:8;39317:14;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;;39298:47:0;39367:16;39375:8;39367:16;;:::i;:::-;;;39192:211;39435:8;;:13;39432:197;;39477:29;39502:3;39477:20;39488:8;;39477:6;:10;;:20;;;;:::i;:29::-;39469:37;;;;:::i;:::-;;;39560:29;39585:3;39560:20;39571:8;;39560:6;:10;;:20;;;;:::i;:29::-;39545:44;;;;:::i;38956:947::-;-1:-1:-1;;;;;39650:31:0;;;;;;:25;:31;;;;;;;;39649:32;:66;;;;-1:-1:-1;;;;;;39686:29:0;;;;;;:25;:29;;;;;;;;39685:30;39649:66;:92;;;;-1:-1:-1;39719:17:0;;:22;;39649:92;39646:257;;;39765:38;39799:3;39765:29;39776:17;;39765:6;:10;;:29;;;;:::i;:38::-;39758:45;;39832:29;39857:3;39832:20;39843:8;;39832:6;:10;;:20;;;;:::i;:29::-;39818:43;;39646:257;39921:23;:4;39930:13;39921:8;:23::i;:::-;39914:30;-1:-1:-1;40006:18:0;;40002:59;;40027:32;40039:4;40045:13;40027:11;:32::i;:::-;40093:8;;40090:58;;40104:42;40120:4;40134;40141;40104:15;:42::i;:::-;40165:35;40186:13;40165:16;:6;40176:4;40165:10;:16::i;:::-;:20;;:35::i;:::-;40158:42;38376:1832;-1:-1:-1;;;;;;;38376:1832:0:o;16328:406::-;-1:-1:-1;;;;;16412:21:0;;16404:60;;;;-1:-1:-1;;;16404:60:0;;31926:2:1;16404:60:0;;;31908:21:1;31965:2;31945:18;;;31938:30;32004:28;31984:18;;;31977:56;32050:18;;16404:60:0;31724:350:1;16404:60:0;16562:61;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16562:18:0;;-1:-1:-1;16562:18:0;;;;;;;;;;;;:61;;16585:6;;16562:22;:61::i;:::-;-1:-1:-1;;;;;16541:18:0;;:9;:18;;;;;;;;;;:82;16649:12;;:24;;16666:6;16649:16;:24::i;:::-;16634:12;:39;16689:37;;4542:25:1;;;16715:1:0;;-1:-1:-1;;;;;16689:37:0;;;;;4530:2:1;4515:18;16689:37:0;;;;;;;16328:406;;:::o;17927:118::-;-1:-1:-1;;;;;17978:22:0;;;;;;:13;:22;;;;;;:29;;-1:-1:-1;;17978:29:0;18003:4;17978:29;;;18014;;;17978:22;18014:29;17927:118;:::o;45197:395::-;45287:16;;;45301:1;45287:16;;;;;;;;45263:21;;45287:16;;;;;;;;;;-1:-1:-1;45287:16:0;45263:40;;45332:4;45314;45319:1;45314:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;45314:23:0;;;:7;;;;;;;;;;:23;;;;45358:15;;:22;;;-1:-1:-1;;;45358:22:0;;;;:15;;;;;:20;;:22;;;;;45314:7;;45358:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;45348:4;45353:1;45348:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;45348:32:0;;;:7;;;;;;;;;:32;45423:15;;45391:62;;45408:4;;45423:15;45441:11;45391:8;:62::i;:::-;45464:15;;:120;;-1:-1:-1;;;45464:120:0;;-1:-1:-1;;;;;45464:15:0;;;;:66;;:120;;45531:11;;45464:15;;45547:4;;45561;;45568:15;;45464:120;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45252:340;45197:395;:::o;9823:153::-;9881:7;9913:1;9909;:5;9901:44;;;;-1:-1:-1;;;9901:44:0;;33388:2:1;9901:44:0;;;33370:21:1;33427:2;33407:18;;;33400:30;33466:28;33446:18;;;33439:56;33512:18;;9901:44:0;33186:350:1;9901:44:0;9963:5;9967:1;9963;:5;:::i;45835:413::-;45943:13;-1:-1:-1;;;;;14062:18:0;45897:7;14062:18;;;;;;;;;;;45991:7;;45897;;46001:3;;45983:15;;45991:7;;14062:18;45983:15;:::i;:::-;:21;;;;:::i;:::-;46038:7;;45968:36;;-1:-1:-1;46015:12:0;;46048:3;;46030:15;;46038:7;;;;;46030:5;:15;:::i;:::-;:21;;;;:::i;:::-;46015:36;;46076:4;46066:6;:14;46062:37;;-1:-1:-1;46098:1:0;;45835:413;-1:-1:-1;;;;45835:413:0:o;46062:37::-;46123:4;46114:6;:13;46110:52;;;46145:11;;46159:3;;46136:20;;46145:11;;;;;46136:6;:20;:::i;:::-;:26;;;;:::i;:::-;46129:33;45835:413;-1:-1:-1;;;;;45835:413:0:o;46110:52::-;46237:3;46223:9;46228:4;46223;:9;:::i;:::-;46198:11;;46212:6;;46198:11;;;;;46183;46190:4;46212:6;46183:11;:::i;:::-;46182:27;;;;:::i;:::-;:36;;;;:::i;:::-;46181:52;;;;:::i;338:131:1:-;-1:-1:-1;;;;;413:31:1;;403:42;;393:70;;459:1;456;449:12;474:247;533:6;586:2;574:9;565:7;561:23;557:32;554:52;;;602:1;599;592:12;554:52;641:9;628:23;660:31;685:5;660:31;:::i;1876:548::-;1988:4;2017:2;2046;2035:9;2028:21;2078:6;2072:13;2121:6;2116:2;2105:9;2101:18;2094:34;2146:1;2156:140;2170:6;2167:1;2164:13;2156:140;;;2265:14;;;2261:23;;2255:30;2231:17;;;2250:2;2227:26;2220:66;2185:10;;2156:140;;;2160:3;2345:1;2340:2;2331:6;2320:9;2316:22;2312:31;2305:42;2415:2;2408;2404:7;2399:2;2391:6;2387:15;2383:29;2372:9;2368:45;2364:54;2356:62;;;;1876:548;;;;:::o;2429:315::-;2497:6;2505;2558:2;2546:9;2537:7;2533:23;2529:32;2526:52;;;2574:1;2571;2564:12;2526:52;2613:9;2600:23;2632:31;2657:5;2632:31;:::i;:::-;2682:5;2734:2;2719:18;;;;2706:32;;-1:-1:-1;;;2429:315:1:o;3149:118::-;3235:5;3228:13;3221:21;3214:5;3211:32;3201:60;;3257:1;3254;3247:12;3272:156;3338:20;;3398:4;3387:16;;3377:27;;3367:55;;3418:1;3415;3408:12;3367:55;3272:156;;;:::o;3433:724::-;3522:6;3530;3538;3546;3554;3562;3615:3;3603:9;3594:7;3590:23;3586:33;3583:53;;;3632:1;3629;3622:12;3583:53;3671:9;3658:23;3690:28;3712:5;3690:28;:::i;:::-;3737:5;-1:-1:-1;3794:2:1;3779:18;;3766:32;3807:30;3766:32;3807:30;:::i;:::-;3856:7;-1:-1:-1;3915:2:1;3900:18;;3887:32;3928:30;3887:32;3928:30;:::i;:::-;3977:7;-1:-1:-1;4003:36:1;4035:2;4020:18;;4003:36;:::i;:::-;3993:46;;4058:37;4090:3;4079:9;4075:19;4058:37;:::i;:::-;4048:47;;4114:37;4146:3;4135:9;4131:19;4114:37;:::i;:::-;4104:47;;3433:724;;;;;;;;:::o;4578:456::-;4655:6;4663;4671;4724:2;4712:9;4703:7;4699:23;4695:32;4692:52;;;4740:1;4737;4730:12;4692:52;4779:9;4766:23;4798:31;4823:5;4798:31;:::i;:::-;4848:5;-1:-1:-1;4905:2:1;4890:18;;4877:32;4918:33;4877:32;4918:33;:::i;:::-;4578:456;;4970:7;;-1:-1:-1;;;5024:2:1;5009:18;;;;4996:32;;4578:456::o;5039:703::-;5157:6;5165;5173;5181;5234:3;5222:9;5213:7;5209:23;5205:33;5202:53;;;5251:1;5248;5241:12;5202:53;5290:9;5277:23;5309:31;5334:5;5309:31;:::i;:::-;5359:5;-1:-1:-1;5416:2:1;5401:18;;5388:32;5429:33;5388:32;5429:33;:::i;:::-;5481:7;-1:-1:-1;5540:2:1;5525:18;;5512:32;5553:33;5512:32;5553:33;:::i;:::-;5605:7;-1:-1:-1;5664:2:1;5649:18;;5636:32;5677:33;5636:32;5677:33;:::i;:::-;5039:703;;;;-1:-1:-1;5039:703:1;;-1:-1:-1;;5039:703:1:o;5936:309::-;6001:6;6009;6062:2;6050:9;6041:7;6037:23;6033:32;6030:52;;;6078:1;6075;6068:12;6030:52;6117:9;6104:23;6136:28;6158:5;6136:28;:::i;6250:523::-;6354:6;6362;6370;6378;6386;6394;6447:3;6435:9;6426:7;6422:23;6418:33;6415:53;;;6464:1;6461;6454:12;6415:53;-1:-1:-1;;6487:23:1;;;6557:2;6542:18;;6529:32;;-1:-1:-1;6608:2:1;6593:18;;6580:32;;6659:2;6644:18;;6631:32;;-1:-1:-1;6710:3:1;6695:19;;6682:33;;-1:-1:-1;6762:3:1;6747:19;6734:33;;-1:-1:-1;6250:523:1;-1:-1:-1;6250:523:1:o;6778:661::-;6900:6;6908;6916;6924;6932;6940;6948;6956;7009:3;6997:9;6988:7;6984:23;6980:33;6977:53;;;7026:1;7023;7016:12;6977:53;-1:-1:-1;;7049:23:1;;;7119:2;7104:18;;7091:32;;-1:-1:-1;7170:2:1;7155:18;;7142:32;;7221:2;7206:18;;7193:32;;-1:-1:-1;7272:3:1;7257:19;;7244:33;;-1:-1:-1;7324:3:1;7309:19;;7296:33;;-1:-1:-1;7376:3:1;7361:19;;7348:33;;-1:-1:-1;7428:3:1;7413:19;7400:33;;-1:-1:-1;6778:661:1;-1:-1:-1;6778:661:1:o;7444:789::-;7527:6;7535;7543;7551;7559;7612:3;7600:9;7591:7;7587:23;7583:33;7580:53;;;7629:1;7626;7619:12;7580:53;7668:9;7655:23;7687:31;7712:5;7687:31;:::i;:::-;7737:5;-1:-1:-1;7794:2:1;7779:18;;7766:32;7807:30;7766:32;7807:30;:::i;:::-;7856:7;-1:-1:-1;7915:2:1;7900:18;;7887:32;7928:30;7887:32;7928:30;:::i;:::-;7977:7;-1:-1:-1;8036:2:1;8021:18;;8008:32;8049:30;8008:32;8049:30;:::i;:::-;8098:7;-1:-1:-1;8157:3:1;8142:19;;8129:33;8171:30;8129:33;8171:30;:::i;:::-;8220:7;8210:17;;;7444:789;;;;;;;;:::o;8808:248::-;8876:6;8884;8937:2;8925:9;8916:7;8912:23;8908:32;8905:52;;;8953:1;8950;8943:12;8905:52;-1:-1:-1;;8976:23:1;;;9046:2;9031:18;;;9018:32;;-1:-1:-1;8808:248:1:o;9321:382::-;9386:6;9394;9447:2;9435:9;9426:7;9422:23;9418:32;9415:52;;;9463:1;9460;9453:12;9415:52;9502:9;9489:23;9521:31;9546:5;9521:31;:::i;:::-;9571:5;-1:-1:-1;9628:2:1;9613:18;;9600:32;9641:30;9600:32;9641:30;:::i;:::-;9690:7;9680:17;;;9321:382;;;;;:::o;10340:789::-;10456:6;10464;10472;10480;10488;10496;10504;10512;10565:3;10553:9;10544:7;10540:23;10536:33;10533:53;;;10582:1;10579;10572:12;10533:53;10618:9;10605:23;10595:33;;10675:2;10664:9;10660:18;10647:32;10637:42;;10726:2;10715:9;10711:18;10698:32;10688:42;;10777:2;10766:9;10762:18;10749:32;10739:42;;10828:3;10817:9;10813:19;10800:33;10790:43;;10880:3;10869:9;10865:19;10852:33;10842:43;;10935:3;10924:9;10920:19;10907:33;10949:28;10971:5;10949:28;:::i;:::-;10996:5;-1:-1:-1;11053:3:1;11038:19;;11025:33;11067:30;11025:33;11067:30;:::i;:::-;11116:7;11106:17;;;10340:789;;;;;;;;;;;:::o;12286:461::-;12339:3;12377:5;12371:12;12404:6;12399:3;12392:19;12430:4;12459:2;12454:3;12450:12;12443:19;;12496:2;12489:5;12485:14;12517:1;12527:195;12541:6;12538:1;12535:13;12527:195;;;12606:13;;-1:-1:-1;;;;;12602:39:1;12590:52;;12662:12;;;;12697:15;;;;12638:1;12556:9;12527:195;;;-1:-1:-1;12738:3:1;;12286:461;-1:-1:-1;;;;;12286:461:1:o;12752:332::-;12959:6;12948:9;12941:25;13002:2;12997;12986:9;12982:18;12975:30;12922:4;13022:56;13074:2;13063:9;13059:18;13051:6;13022:56;:::i;13089:388::-;13157:6;13165;13218:2;13206:9;13197:7;13193:23;13189:32;13186:52;;;13234:1;13231;13224:12;13186:52;13273:9;13260:23;13292:31;13317:5;13292:31;:::i;:::-;13342:5;-1:-1:-1;13399:2:1;13384:18;;13371:32;13412:33;13371:32;13412:33;:::i;13745:180::-;13804:6;13857:2;13845:9;13836:7;13832:23;13828:32;13825:52;;;13873:1;13870;13863:12;13825:52;-1:-1:-1;13896:23:1;;13745:180;-1:-1:-1;13745:180:1:o;13930:127::-;13991:10;13986:3;13982:20;13979:1;13972:31;14022:4;14019:1;14012:15;14046:4;14043:1;14036:15;14062:128;14129:9;;;14150:11;;;14147:37;;;14164:18;;:::i;14195:380::-;14274:1;14270:12;;;;14317;;;14338:61;;14392:4;14384:6;14380:17;14370:27;;14338:61;14445:2;14437:6;14434:14;14414:18;14411:38;14408:161;;14491:10;14486:3;14482:20;14479:1;14472:31;14526:4;14523:1;14516:15;14554:4;14551:1;14544:15;14408:161;;14195:380;;;:::o;14580:407::-;14782:2;14764:21;;;14821:2;14801:18;;;14794:30;14860:34;14855:2;14840:18;;14833:62;-1:-1:-1;;;14926:2:1;14911:18;;14904:41;14977:3;14962:19;;14580:407::o;16919:168::-;16992:9;;;17023;;17040:15;;;17034:22;;17020:37;17010:71;;17061:18;;:::i;17092:125::-;17157:9;;;17178:10;;;17175:36;;;17191:18;;:::i;17222:422::-;17311:1;17354:5;17311:1;17368:270;17389:7;17379:8;17376:21;17368:270;;;17448:4;17444:1;17440:6;17436:17;17430:4;17427:27;17424:53;;;17457:18;;:::i;:::-;17507:7;17497:8;17493:22;17490:55;;;17527:16;;;;17490:55;17606:22;;;;17566:15;;;;17368:270;;;17372:3;17222:422;;;;;:::o;17649:806::-;17698:5;17728:8;17718:80;;-1:-1:-1;17769:1:1;17783:5;;17718:80;17817:4;17807:76;;-1:-1:-1;17854:1:1;17868:5;;17807:76;17899:4;17917:1;17912:59;;;;17985:1;17980:130;;;;17892:218;;17912:59;17942:1;17933:10;;17956:5;;;17980:130;18017:3;18007:8;18004:17;18001:43;;;18024:18;;:::i;:::-;-1:-1:-1;;18080:1:1;18066:16;;18095:5;;17892:218;;18194:2;18184:8;18181:16;18175:3;18169:4;18166:13;18162:36;18156:2;18146:8;18143:16;18138:2;18132:4;18129:12;18125:35;18122:77;18119:159;;;-1:-1:-1;18231:19:1;;;18263:5;;18119:159;18310:34;18335:8;18329:4;18310:34;:::i;:::-;18380:6;18376:1;18372:6;18368:19;18359:7;18356:32;18353:58;;;18391:18;;:::i;:::-;18429:20;;17649:806;-1:-1:-1;;;17649:806:1:o;18460:140::-;18518:5;18547:47;18588:4;18578:8;18574:19;18568:4;18547:47;:::i;18605:217::-;18645:1;18671;18661:132;;18715:10;18710:3;18706:20;18703:1;18696:31;18750:4;18747:1;18740:15;18778:4;18775:1;18768:15;18661:132;-1:-1:-1;18807:9:1;;18605:217::o;21194:184::-;21264:6;21317:2;21305:9;21296:7;21292:23;21288:32;21285:52;;;21333:1;21330;21323:12;21285:52;-1:-1:-1;21356:16:1;;21194:184;-1:-1:-1;21194:184:1:o;21662:245::-;21729:6;21782:2;21770:9;21761:7;21757:23;21753:32;21750:52;;;21798:1;21795;21788:12;21750:52;21830:9;21824:16;21849:28;21871:5;21849:28;:::i;30227:306::-;30315:6;30323;30331;30384:2;30372:9;30363:7;30359:23;30355:32;30352:52;;;30400:1;30397;30390:12;30352:52;30429:9;30423:16;30413:26;;30479:2;30468:9;30464:18;30458:25;30448:35;;30523:2;30512:9;30508:18;30502:25;30492:35;;30227:306;;;;;:::o;32211:127::-;32272:10;32267:3;32263:20;32260:1;32253:31;32303:4;32300:1;32293:15;32327:4;32324:1;32317:15;32343:251;32413:6;32466:2;32454:9;32445:7;32441:23;32437:32;32434:52;;;32482:1;32479;32472:12;32434:52;32514:9;32508:16;32533:31;32558:5;32533:31;:::i;32599:582::-;32898:6;32887:9;32880:25;32941:6;32936:2;32925:9;32921:18;32914:34;32984:3;32979:2;32968:9;32964:18;32957:31;32861:4;33005:57;33057:3;33046:9;33042:19;33034:6;33005:57;:::i;:::-;-1:-1:-1;;;;;33098:32:1;;;;33093:2;33078:18;;33071:60;-1:-1:-1;33162:3:1;33147:19;33140:35;32997:65;32599:582;-1:-1:-1;;;32599:582:1:o

Swarm Source

ipfs://12b38527d68c84de5bcf6358e6f9e1fd71525b26be115572bd00508dc0038094
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.