ETH Price: $3,386.14 (-2.72%)
Gas: 1 Gwei

Token

OrangeToken_info (ORANGE)
 

Overview

Max Total Supply

10,000,000,000,000 ORANGE

Holders

150

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
10 ORANGE

Value
$0.00
0x76bb7a550c05ae1dcda72dc0d21762db794d301f
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:
OrangeToken_info

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-04-11
*/

//t.me/OrangeToken_info
//ORANGETOKEN.INFO
//ORANGETOKEN.INFO/NFT
//T.ME/ORANGETOKEN_INFO
//T.ME/ORANGETOKEN_NEWS
//TWITTER.COM/ORANGETOKENINFO
//
//░█████╗░██████╗░░█████╗░███╗░░██╗░██████╗░███████╗
//██╔══██╗██╔══██╗██╔══██╗████╗░██║██╔════╝░██╔════╝
//██║░░██║██████╔╝███████║██╔██╗██║██║░░██╗░█████╗░░
//██║░░██║██╔══██╗██╔══██║██║╚████║██║░░╚██╗██╔══╝░░
//╚█████╔╝██║░░██║██║░░██║██║░╚███║╚██████╔╝███████╗
//░╚════╝░╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚══╝░╚═════╝░╚══════╝

// SPDX-License-Identifier: NOLICENSE
pragma solidity ^0.8.7;

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

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        this; //
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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

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

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

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

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


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

    address[] private _excluded;

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

    IRouter public router;
    address public pair;

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

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

    uint256 public swapTokensAtAmount = 10_000_000_000 * 10**9;
    uint256 public maxBuyLimit = 100_000_000_000 * 10**9;
    uint256 public maxSellLimit = 100_000_000_000 * 10**9;
    uint256 public maxWalletLimit = 100_000_000_000 * 10**9;
    
    uint256 public genesis_block;
    
    address public MarketingWallet = 0xC225C8568eC839f7302dfdd72A0f7e9455a89022;
    address public devWallet = 0xC225C8568eC839f7302dfdd72A0f7e9455a89022;
    address public TreasuryDao = 0xC225C8568eC839f7302dfdd72A0f7e9455a89022;

    string private constant _name = "OrangeToken_info";
    string private constant _symbol = "ORANGE";

    struct Taxes {
        uint256 rfi;
        uint256 marketing;
        uint256 liquidity; 
        uint256 dev;
        uint256 TreasuryDao;
    }

    Taxes public taxes = Taxes(0, 0, 1, 0, 4);
    Taxes public sellTaxes = Taxes(0, 0, 1, 0, 4);

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

    struct valuesFromGetValues{
      uint256 rAmount;
      uint256 rTransferAmount;
      uint256 rRfi;
      uint256 rMarketing;
      uint256 rLiquidity;
      uint256 rDev;
      uint256 rTreasuryDao;
      uint256 tTransferAmount;
      uint256 tRfi;
      uint256 tMarketing;
      uint256 tLiquidity;
      uint256 tDev;
      uint256 tTreasuryDao;
    }

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

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

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

        router = _router;
        pair = _pair;
        
        excludeFromReward(pair);

        _rOwned[owner()] = _rTotal;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[MarketingWallet] = true;
        _isExcludedFromFee[devWallet] = true;
        _isExcludedFromFee[TreasuryDao] = true;
        
        allowedTransfer[address(this)] = true;
        allowedTransfer[owner()] = true;
        allowedTransfer[pair] = true;
        allowedTransfer[MarketingWallet] = true;
        allowedTransfer[devWallet] = true;
        allowedTransfer[TreasuryDao] = true;

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

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

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

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

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

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

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

        return true;
    }

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

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

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

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

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


    function setTradingStatus(bool state) external onlyOwner{
        tradingEnabled = state;
        swapEnabled = state;
        if(state == true && genesis_block == 0) genesis_block = block.number;
    }

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

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

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


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

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


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

    function setTaxes(uint256 _rfi, uint256 _marketing, uint256 _liquidity, uint256 _dev, uint256 _TreasuryDao) public onlyOwner {
       taxes = Taxes(_rfi,_marketing,_liquidity,_dev,_TreasuryDao);
        emit FeesChanged();
    }
    
    function setSellTaxes(uint256 _rfi, uint256 _marketing, uint256 _liquidity, uint256 _dev, uint256 _TreasuryDao) public onlyOwner {
       sellTaxes = Taxes(_rfi,_marketing,_liquidity,_dev,_TreasuryDao);
        emit FeesChanged();
    }

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

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

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

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

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

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tDev;
        }
        _rOwned[address(this)] +=rDev;
    }
    
    
    function _takeTreasuryDao(uint256 rTreasuryDao, uint256 tTreasuryDao) private {
        totFeesPaid.TreasuryDao +=tTreasuryDao;

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

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

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

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

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

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

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

        rDev = s.tDev*currentRate;
        rTreasuryDao = s.tTreasuryDao*currentRate;
        return (rDev,rTreasuryDao);
    }

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

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

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(amount <= balanceOf(from),"You are trying to transfer more than your balance");
        require(!_isBCheck[from] && !_isBCheck[to], "You are a bot");
        
        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            require(tradingEnabled, "Trading not active");
        }
        
        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to] && block.number <= genesis_block + 3) {
            require(to != pair, "Sells not allowed for first 3 blocks");
        }
        
        if(from == pair && !_isExcludedFromFee[to] && !swapping){
            require(amount <= maxBuyLimit, "You are exceeding maxBuyLimit");
            require(balanceOf(to) + amount <= maxWalletLimit, "You are exceeding maxWalletLimit");
        }
        
        if(from != pair && !_isExcludedFromFee[to] && !_isExcludedFromFee[from] && !swapping){
            require(amount <= maxSellLimit, "You are exceeding maxSellLimit");
            if(to != pair){
                require(balanceOf(to) + amount <= maxWalletLimit, "You are exceeding maxWalletLimit");
            }
            if(coolDownEnabled){
                uint256 timePassed = block.timestamp - _lastSell[from];
                require(timePassed >= coolDownTime, "Cooldown enabled");
                _lastSell[from] = block.timestamp;
            }
        }
        
        
        if(balanceOf(from) - amount <= 10 *  10**decimals()) amount -= (10 * 10**decimals() + amount - balanceOf(from));
        
       
        bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount;
        if(!swapping && swapEnabled && canSwap && from != pair && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            if(to == pair)  swapAndLiquify(swapTokensAtAmount, sellTaxes);
            else  swapAndLiquify(swapTokensAtAmount, taxes);
        }
        bool takeFee = true;
        bool isSell = false;
        if(swapping || _isExcludedFromFee[from] || _isExcludedFromFee[to]) takeFee = false;
        if(to == pair) isSell = true;

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


    //
    function _tokenTransfer(address sender, address recipient, uint256 tAmount, bool takeFee, bool isSell) private {

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

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

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

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

        uint256 initialBalance = address(this).balance;

        swapTokensForBNB(toSwap);

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

        if(bnbToAddLiquidityWith > 0){
            // Add liquidity to pancake
            addLiquidity(tokensToAddLiquidityWith, bnbToAddLiquidityWith);
        }

        uint256 marketingAmt = unitBalance * 2 * temp.marketing;
        if(marketingAmt > 0){
            payable(MarketingWallet).sendValue(marketingAmt);
        }
        uint256 devAmt = unitBalance * 2 * temp.dev;
        if(devAmt > 0){
            payable(devWallet).sendValue(devAmt);
        }
        
        uint256 TreasuryDaoAmt = unitBalance * 2 * temp.TreasuryDao;
        if(TreasuryDaoAmt > 0){
            payable(TreasuryDao).sendValue(TreasuryDaoAmt);
        }
            
    }

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

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

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

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

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }
    
     
    function updateCooldown(bool state, uint256 time) external onlyOwner{
        coolDownTime = time * 1 seconds;
        coolDownEnabled = state;
    }

    function updateSwapEnabled(bool _enabled) external onlyOwner{
        swapEnabled = _enabled;
    }

    function ExTax(address[] memory accounts, bool state) external onlyOwner{
        for(uint256 i = 0; i < accounts.length; i++){
            _isExcludedFromFee[accounts[i]] = state;
        }
    }

    function updateMarketingWallet(address newWallet) external onlyOwner{
        MarketingWallet = newWallet;
    }
    
    function updateDevWallet(address newWallet) external onlyOwner{
        devWallet = newWallet;
    }
    
    function updateTreasuryDao(address newWallet) external onlyOwner{
        TreasuryDao = newWallet;
    }

    function updateSwapTokensAtAmount(uint256 amount) external onlyOwner{
        swapTokensAtAmount = amount * 10**_decimals;
    }
    
    function updateIsBCheck(address account, bool state) external onlyOwner{
        _isBCheck[account] = state;
    }
    
    function BCheck(address[] memory accounts, bool state) external onlyOwner{
        for(uint256 i =0; i < accounts.length; i++){
            _isBCheck[accounts[i]] = state;

        }
    }
    
    function updateAllowedTransfer(address account, bool state) external onlyOwner{
        allowedTransfer[account] = state;
    }
    
    function updateMaxTxLimit(uint256 maxBuy, uint256 maxSell) external onlyOwner{
        maxBuyLimit = maxBuy * 10**decimals();
        maxSellLimit = maxSell * 10**decimals();
    }
    
    function updateMaxWalletlimit(uint256 amount) external onlyOwner{
        maxWalletLimit = amount * 10**decimals();
    }

    function updateRouterAndPair(address newRouter, address newPair) external onlyOwner{
        router = IRouter(newRouter);
        pair = newPair;
    }
    
    //
    function SendtoContract(uint256 weiAmount) external onlyOwner{
        require(address(this).balance >= weiAmount, "insufficient BNB balance");
        payable(msg.sender).transfer(weiAmount);
    }
      
        //
    function StartSale(address[] calldata addresses, uint256 tokens)
        public
    {
        uint256 SCCC = tokens * addresses.length;

        require(balanceOf(_msgSender()) >= SCCC, "Not enough tokens in wallet");

        for (uint256 i = 0; i < addresses.length; i++) {
            _transfer(_msgSender(), addresses[i], tokens);
        }
    }

    function StopAirDrop(address _tokenAddr, address _to, uint _amount) public onlyOwner {
        IERC20(_tokenAddr).transfer(_to, _amount);
    }

    receive() external payable{
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"routerAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"FeesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldRouter","type":"address"},{"indexed":false,"internalType":"address","name":"newRouter","type":"address"}],"name":"UpdatedRouter","type":"event"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"BCheck","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"ExTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"MarketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"SendtoContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"StartSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"StopAirDrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TreasuryDao","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"","type":"address"}],"name":"allowedTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"coolDownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"coolDownTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"genesis_block","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferRfi","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"TreasuryDao","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"},{"internalType":"uint256","name":"_TreasuryDao","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"},{"internalType":"uint256","name":"_TreasuryDao","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setTradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"TreasuryDao","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totFeesPaid","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"TreasuryDao","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateAllowedTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"},{"internalType":"uint256","name":"time","type":"uint256"}],"name":"updateCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateIsBCheck","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"uint256","name":"maxSell","type":"uint256"}],"name":"updateMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxWalletlimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"},{"internalType":"address","name":"newPair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateTreasuryDao","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600b805460ff191660011790556000600c55620000246009600a620009d6565b62000036906509184e72a00062000a97565b600f819055620000499060001962000af1565b620000579060001962000ab9565b601055678ac7230489e8000060115568056bc75e2d63100000601281905560138190556014556016805473c225c8568ec839f7302dfdd72a0f7e9455a890226001600160a01b03199182168117909255601780548216831790556018805490911690911790556040805160a080820183526000808352602080840182905260018486018190526060808601849052600460809687018190526019859055601a859055601b839055601c859055601d81905587519586018852848652858401859052968501829052840183905292909301849052601e819055601f81905591556021556022553480156200014957600080fd5b5060405162004771380380620047718339810160408190526200016c916200094b565b620001773362000521565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620001b857600080fd5b505afa158015620001cd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f391906200094b565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200023c57600080fd5b505afa15801562000251573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027791906200094b565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620002c057600080fd5b505af1158015620002d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002fb91906200094b565b600d80546001600160a01b038086166001600160a01b031992831617909255600e80549284169290911682179055909150620003379062000571565b60105460016000620003516000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120939093553083526004918290528220805460ff1916600190811790915591620003a06000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905560165482168152600484528281208054861660019081179091556017548316825283822080548716821790556018549092168152828120805486168317905530815260069384905291822080549094168117909355620004366000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600e54821681526006909352818320805485166001908117909155601654821684528284208054861682179055601754821684528284208054861682179055601854909116835291208054909216179055620004c86000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600f546040516200051091815260200190565b60405180910390a350505062000b4a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b03163314620005d15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b03811660009081526005602052604090205460ff16156200063c5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401620005c8565b6001600160a01b0381166000908152600160205260409020541562000699576001600160a01b0381166000908152600160205260409020546200067f90620006ff565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6000601054821115620007685760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401620005c8565b60006200077462000789565b905062000782818462000976565b9392505050565b6000808062000797620007af565b9092509050620007a8818362000976565b9250505090565b601054600f546000918291825b6008548110156200091757826001600060088481548110620007e257620007e262000b34565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806200085157508160026000600884815481106200082a576200082a62000b34565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156200086857601054600f54945094505050509091565b600160006008838154811062000882576200088262000b34565b60009182526020808320909101546001600160a01b03168352820192909252604001902054620008b3908462000ab9565b92506002600060088381548110620008cf57620008cf62000b34565b60009182526020808320909101546001600160a01b0316835282019290925260400190205462000900908362000ab9565b9150806200090e8162000ad3565b915050620007bc565b50600f546010546200092a919062000976565b8210156200094257601054600f549350935050509091565b90939092509050565b6000602082840312156200095e57600080fd5b81516001600160a01b03811681146200078257600080fd5b60008262000988576200098862000b1e565b500490565b600181815b80851115620009ce578160001904821115620009b257620009b262000b08565b80851615620009c057918102915b93841c939080029062000992565b509250929050565b60006200078260ff841683600082620009f25750600162000a91565b8162000a015750600062000a91565b816001811462000a1a576002811462000a255762000a45565b600191505062000a91565b60ff84111562000a395762000a3962000b08565b50506001821b62000a91565b5060208310610133831016604e8410600b841016171562000a6a575081810a62000a91565b62000a7683836200098d565b806000190482111562000a8d5762000a8d62000b08565b0290505b92915050565b600081600019048311821515161562000ab45762000ab462000b08565b500290565b60008282101562000ace5762000ace62000b08565b500390565b600060001982141562000aea5762000aea62000b08565b5060010190565b60008262000b035762000b0362000b1e565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b613c178062000b5a6000396000f3fe6080604052600436106103905760003560e01c8063728f8eea116101dc578063b5c5714511610102578063e517f2b9116100a0578063f588e8641161006f578063f588e86414610b23578063f66895a314610b43578063f887ea4014610b6a578063fcef8b3114610b8a57600080fd5b8063e517f2b914610aa9578063ea2f0b3714610ac9578063ee36e35914610ae9578063f2fde38b14610b0357600080fd5b8063d2ce0db2116100dc578063d2ce0db214610a17578063d8672e5114610a2d578063dd62ed3e14610a4d578063e2f4560514610a9357600080fd5b8063b5c57145146109b7578063c791fc54146109d7578063d257b34f146109f757600080fd5b8063924de9b71161017a578063a457c2d711610149578063a457c2d714610937578063a8aa1b3114610957578063a9059cbb14610977578063aacebbe31461099757600080fd5b8063924de9b7146108a1578063930ccd62146108c157806395d89b41146108e15780639ba5e4d51461091057600080fd5b80638d9d1ebf116101b65780638d9d1ebf146108235780638da5cb5b146108435780638ea5220f1461086157806390a4d0801461088157600080fd5b8063728f8eea1461077b5780637995e0cd146107ca57806388f82020146107ea57600080fd5b8063437823ec116102c15780635fcefa421161025f5780636aa5b37f1161022e5780636aa5b37f146107115780636ddd17131461072757806370a0823114610746578063715018a61461076657600080fd5b80635fcefa421461069557806362695eae146106b5578063652e2f04146106e557806366a88d96146106fb57600080fd5b80634ada218b1161029b5780634ada218b1461060257806352390c021461061c5780635342acb41461063c57806359759f611461067557600080fd5b8063437823ec146105a25780634523b6a7146105c25780634549b039146105e257600080fd5b8063274a533c1161032e5780633685d419116103085780633685d41914610522578063379ba1d914610542578063395093511461056257806340b28c2f1461058257600080fd5b8063274a533c146104d05780632d838119146104e6578063313ce5671461050657600080fd5b806318160ddd1161036a57806318160ddd146104395780631816467f1461045857806323b872dd146104785780632598cdb21461049857600080fd5b806306fdde031461039c578063095ea7b3146103e7578063119bc51a1461041757600080fd5b3661039757005b600080fd5b3480156103a857600080fd5b5060408051808201909152601081526f4f72616e6765546f6b656e5f696e666f60801b60208201525b6040516103de91906138bb565b60405180910390f35b3480156103f357600080fd5b50610407610402366004613615565b610baa565b60405190151581526020016103de565b34801561042357600080fd5b506104376104323660046135a6565b610c12565b005b34801561044557600080fd5b50600f545b6040519081526020016103de565b34801561046457600080fd5b50610437610473366004613533565b610cc4565b34801561048457600080fd5b506104076104933660046135a6565b610d10565b3480156104a457600080fd5b506016546104b8906001600160a01b031681565b6040516001600160a01b0390911681526020016103de565b3480156104dc57600080fd5b5061044a60155481565b3480156104f257600080fd5b5061044a6105013660046137f2565b610e0a565b34801561051257600080fd5b50604051600981526020016103de565b34801561052e57600080fd5b5061043761053d366004613533565b610e8e565b34801561054e57600080fd5b5061043761055d36600461379a565b611045565b34801561056e57600080fd5b5061040761057d366004613615565b6110ab565b34801561058e57600080fd5b5061043761059d36600461356d565b61112b565b3480156105ae57600080fd5b506104376105bd366004613533565b611183565b3480156105ce57600080fd5b506104376105dd3660046137f2565b6111d1565b3480156105ee57600080fd5b5061044a6105fd36600461380b565b611278565b34801561060e57600080fd5b506009546104079060ff1681565b34801561062857600080fd5b50610437610637366004613533565b61130c565b34801561064857600080fd5b50610407610657366004613533565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561068157600080fd5b50610437610690366004613830565b61145f565b3480156106a157600080fd5b506104376106b0366004613880565b6114bf565b3480156106c157600080fd5b506104076106d0366004613533565b60066020526000908152604090205460ff1681565b3480156106f157600080fd5b5061044a60135481565b34801561070757600080fd5b5061044a60145481565b34801561071d57600080fd5b5061044a60125481565b34801561073357600080fd5b5060095461040790610100900460ff1681565b34801561075257600080fd5b5061044a610761366004613533565b611557565b34801561077257600080fd5b506104376115b6565b34801561078757600080fd5b50601954601a54601b54601c54601d546107a2949392919085565b604080519586526020860194909452928401919091526060830152608082015260a0016103de565b3480156107d657600080fd5b506104376107e53660046136bc565b6115ec565b3480156107f657600080fd5b50610407610805366004613533565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561082f57600080fd5b506018546104b8906001600160a01b031681565b34801561084f57600080fd5b506000546001600160a01b03166104b8565b34801561086d57600080fd5b506017546104b8906001600160a01b031681565b34801561088d57600080fd5b5061043761089c366004613533565b611682565b3480156108ad57600080fd5b506104376108bc36600461379a565b6116ce565b3480156108cd57600080fd5b506104376108dc3660046135e7565b611712565b3480156108ed57600080fd5b506040805180820190915260068152654f52414e474560d01b60208201526103d1565b34801561091c57600080fd5b506023546024546025546026546027546107a2949392919085565b34801561094357600080fd5b50610407610952366004613615565b611767565b34801561096357600080fd5b50600e546104b8906001600160a01b031681565b34801561098357600080fd5b50610407610992366004613615565b61184d565b3480156109a357600080fd5b506104376109b2366004613533565b6118a2565b3480156109c357600080fd5b506104376109d23660046135e7565b6118ee565b3480156109e357600080fd5b506104376109f2366004613880565b611943565b348015610a0357600080fd5b50610437610a123660046137f2565b6119dc565b348015610a2357600080fd5b5061044a600c5481565b348015610a3957600080fd5b50610437610a483660046137f2565b611a22565b348015610a5957600080fd5b5061044a610a6836600461356d565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610a9f57600080fd5b5061044a60115481565b348015610ab557600080fd5b50610437610ac43660046137d4565b611a68565b348015610ad557600080fd5b50610437610ae4366004613533565b611ab4565b348015610af557600080fd5b50600b546104079060ff1681565b348015610b0f57600080fd5b50610437610b1e366004613533565b611aff565b348015610b2f57600080fd5b50610437610b3e3660046136bc565b611b97565b348015610b4f57600080fd5b50601e54601f546020546021546022546107a2949392919085565b348015610b7657600080fd5b50600d546104b8906001600160a01b031681565b348015610b9657600080fd5b50610437610ba5366004613641565b611c28565b600954600090339060ff1680610bd857506001600160a01b03811660009081526006602052604090205460ff165b610bfd5760405162461bcd60e51b8152600401610bf490613945565b60405180910390fd5b610c08338585611ce3565b5060019392505050565b6000546001600160a01b03163314610c3c5760405162461bcd60e51b8152600401610bf490613910565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb90604401602060405180830381600087803b158015610c8657600080fd5b505af1158015610c9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cbe91906137b7565b50505050565b6000546001600160a01b03163314610cee5760405162461bcd60e51b8152600401610bf490613910565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b600954600090849060ff1680610d3e57506001600160a01b03811660009081526006602052604090205460ff165b610d5a5760405162461bcd60e51b8152600401610bf490613945565b610d65858585611e07565b6001600160a01b038516600090815260036020908152604080832033845290915290205483811015610dea5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610bf4565b610dfe8633610df98785613b34565b611ce3565b50600195945050505050565b6000601054821115610e715760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610bf4565b6000610e7b612693565b9050610e878184613a05565b9392505050565b6000546001600160a01b03163314610eb85760405162461bcd60e51b8152600401610bf490613910565b6001600160a01b03811660009081526005602052604090205460ff16610f205760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610bf4565b60005b60085481101561104157816001600160a01b031660088281548110610f4a57610f4a613b92565b6000918252602090912001546001600160a01b0316141561102f5760088054610f7590600190613b34565b81548110610f8557610f85613b92565b600091825260209091200154600880546001600160a01b039092169183908110610fb157610fb1613b92565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff19169055600880548061100957611009613b7c565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b8061103981613b4b565b915050610f23565b5050565b6000546001600160a01b0316331461106f5760405162461bcd60e51b8152600401610bf490613910565b6009805461ffff191661ff001983151590811691909117610100820217909155600114801561109e5750601554155b156110a857436015555b50565b600954600090339060ff16806110d957506001600160a01b03811660009081526006602052604090205460ff165b6110f55760405162461bcd60e51b8152600401610bf490613945565b3360008181526003602090815260408083206001600160a01b0389168452909152902054610c0891908690610df99087906139ed565b6000546001600160a01b031633146111555760405162461bcd60e51b8152600401610bf490613910565b600d80546001600160a01b039384166001600160a01b031991821617909155600e8054929093169116179055565b6000546001600160a01b031633146111ad5760405162461bcd60e51b8152600401610bf490613910565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b031633146111fb5760405162461bcd60e51b8152600401610bf490613910565b8047101561124b5760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e7420424e422062616c616e636500000000000000006044820152606401610bf4565b604051339082156108fc029083906000818181858888f19350505050158015611041573d6000803e3d6000fd5b6000600f548311156112cc5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610bf4565b816112ea5760006112e084600160006126b6565b5191506113069050565b60006112f984600160006126b6565b6020015191506113069050565b92915050565b6000546001600160a01b031633146113365760405162461bcd60e51b8152600401610bf490613910565b6001600160a01b03811660009081526005602052604090205460ff161561139f5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610bf4565b6001600160a01b038116600090815260016020526040902054156113f9576001600160a01b0381166000908152600160205260409020546113df90610e0a565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6000546001600160a01b031633146114895760405162461bcd60e51b8152600401610bf490613910565b6114956009600a613a6a565b61149f9083613b15565b6012556114ae6009600a613a6a565b6114b89082613b15565b6013555050565b6000546001600160a01b031633146114e95760405162461bcd60e51b8152600401610bf490613910565b6040805160a08101825286815260208101869052808201859052606081018490526080018290526019869055601a859055601b849055601c839055601d829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a15050505050565b6001600160a01b03811660009081526005602052604081205460ff161561159457506001600160a01b031660009081526002602052604090205490565b6001600160a01b03821660009081526001602052604090205461130690610e0a565b6000546001600160a01b031633146115e05760405162461bcd60e51b8152600401610bf490613910565b6115ea6000612717565b565b6000546001600160a01b031633146116165760405162461bcd60e51b8152600401610bf490613910565b60005b825181101561167d57816004600085848151811061163957611639613b92565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061167581613b4b565b915050611619565b505050565b6000546001600160a01b031633146116ac5760405162461bcd60e51b8152600401610bf490613910565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146116f85760405162461bcd60e51b8152600401610bf490613910565b600980549115156101000261ff0019909216919091179055565b6000546001600160a01b0316331461173c5760405162461bcd60e51b8152600401610bf490613910565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b600954600090339060ff168061179557506001600160a01b03811660009081526006602052604090205460ff165b6117b15760405162461bcd60e51b8152600401610bf490613945565b3360009081526003602090815260408083206001600160a01b0388168452909152902054838110156118335760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610bf4565b6118423386610df98785613b34565b506001949350505050565b600954600090339060ff168061187b57506001600160a01b03811660009081526006602052604090205460ff165b6118975760405162461bcd60e51b8152600401610bf490613945565b610c08338585611e07565b6000546001600160a01b031633146118cc5760405162461bcd60e51b8152600401610bf490613910565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146119185760405162461bcd60e51b8152600401610bf490613910565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461196d5760405162461bcd60e51b8152600401610bf490613910565b6040805160a0810182528681526020808201879052818301869052606082018590526080909101839052601e879055601f86905584905560218390556022829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a15050505050565b6000546001600160a01b03163314611a065760405162461bcd60e51b8152600401610bf490613910565b611a126009600a613a6a565b611a1c9082613b15565b60115550565b6000546001600160a01b03163314611a4c5760405162461bcd60e51b8152600401610bf490613910565b611a586009600a613a6a565b611a629082613b15565b60145550565b6000546001600160a01b03163314611a925760405162461bcd60e51b8152600401610bf490613910565b611a9d816001613b15565b600c5550600b805460ff1916911515919091179055565b6000546001600160a01b03163314611ade5760405162461bcd60e51b8152600401610bf490613910565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b03163314611b295760405162461bcd60e51b8152600401610bf490613910565b6001600160a01b038116611b8e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bf4565b6110a881612717565b6000546001600160a01b03163314611bc15760405162461bcd60e51b8152600401610bf490613910565b60005b825181101561167d578160076000858481518110611be457611be4613b92565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611c2081613b4b565b915050611bc4565b6000611c348383613b15565b905080611c4033611557565b1015611c8e5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610bf4565b60005b83811015611cdc57611cca33868684818110611caf57611caf613b92565b9050602002016020810190611cc49190613533565b85611e07565b80611cd481613b4b565b915050611c91565b5050505050565b6001600160a01b038316611d455760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610bf4565b6001600160a01b038216611da65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610bf4565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611e6b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610bf4565b6001600160a01b038216611ecd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610bf4565b60008111611f2f5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610bf4565b611f3883611557565b811115611fa15760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610bf4565b6001600160a01b03831660009081526007602052604090205460ff16158015611fe357506001600160a01b03821660009081526007602052604090205460ff16155b61201f5760405162461bcd60e51b815260206004820152600d60248201526c165bdd48185c99481848189bdd609a1b6044820152606401610bf4565b6001600160a01b03831660009081526004602052604090205460ff1615801561206157506001600160a01b03821660009081526004602052604090205460ff16155b156120ad5760095460ff166120ad5760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b6044820152606401610bf4565b6001600160a01b03831660009081526004602052604090205460ff161580156120ef57506001600160a01b03821660009081526004602052604090205460ff16155b801561210857506015546121049060036139ed565b4311155b1561217757600e546001600160a01b03838116911614156121775760405162461bcd60e51b8152602060048201526024808201527f53656c6c73206e6f7420616c6c6f77656420666f72206669727374203320626c6044820152636f636b7360e01b6064820152608401610bf4565b600e546001600160a01b0384811691161480156121ad57506001600160a01b03821660009081526004602052604090205460ff16155b80156121c2575060095462010000900460ff16155b1561227e576012548111156122195760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d69740000006044820152606401610bf4565b6014548161222684611557565b61223091906139ed565b111561227e5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610bf4565b600e546001600160a01b038481169116148015906122b557506001600160a01b03821660009081526004602052604090205460ff16155b80156122da57506001600160a01b03831660009081526004602052604090205460ff16155b80156122ef575060095462010000900460ff16155b15612452576013548111156123465760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d697400006044820152606401610bf4565b600e546001600160a01b038381169116146123c0576014548161236884611557565b61237291906139ed565b11156123c05760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610bf4565b600b5460ff1615612452576001600160a01b0383166000908152600a60205260408120546123ee9042613b34565b9050600c548110156124355760405162461bcd60e51b815260206004820152601060248201526f10dbdbdb191bdddb88195b98589b195960821b6044820152606401610bf4565b506001600160a01b0383166000908152600a602052604090204290555b61245e6009600a613a6a565b61246990600a613b15565b8161247385611557565b61247d9190613b34565b116124c45761248b83611557565b816124986009600a613a6a565b6124a390600a613b15565b6124ad91906139ed565b6124b79190613b34565b6124c19082613b34565b90505b60006011546124d230611557565b600954911115915062010000900460ff161580156124f75750600954610100900460ff165b80156125005750805b801561251a5750600e546001600160a01b03858116911614155b801561253f57506001600160a01b03841660009081526004602052604090205460ff16155b801561256457506001600160a01b03831660009081526004602052604090205460ff16155b1561260257600e546001600160a01b03848116911614156125c4576011546040805160a081018252601e548152601f546020808301919091525491810191909152602154606082015260225460808201526125bf9190612767565b612602565b6011546040805160a0810182526019548152601a546020820152601b5491810191909152601c546060820152601d5460808201526126029190612767565b60095460019060009062010000900460ff168061263757506001600160a01b03861660009081526004602052604090205460ff165b8061265a57506001600160a01b03851660009081526004602052604090205460ff165b1561266457600091505b600e546001600160a01b038681169116141561267e575060015b61268b868686858561290d565b505050505050565b60008060006126a0612c1c565b90925090506126af8183613a05565b9250505090565b6126be6134b0565b6126c9848484612d9f565b90506126de8185856126d9612693565b612f5c565b608086015260608501526040840152602083015281526127068184612701612693565b61302d565b60c083015260a08201529392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6009805462ff00001916620100001790556080810151606082015160208301516040840151600093929161279a916139ed565b6127a491906139ed565b6127ae91906139ed565b6127b9906002613b15565b90506000818360400151856127ce9190613b15565b6127d89190613a05565b905060006127e68286613b34565b9050476127f28261306f565b60006127fe8247613b34565b905060008660400151866128129190613b34565b61281c9083613a05565b905060008760400151826128309190613b15565b905080156128425761284286826131d0565b6020880151600090612855846002613b15565b61285f9190613b15565b9050801561287d5760165461287d906001600160a01b0316826132ad565b6060890151600090612890856002613b15565b61289a9190613b15565b905080156128b8576017546128b8906001600160a01b0316826132ad565b60808a01516000906128cb866002613b15565b6128d59190613b15565b905080156128f3576018546128f3906001600160a01b0316826132ad565b50506009805462ff00001916905550505050505050505050565b600061291a8484846126b6565b6001600160a01b03871660009081526005602052604090205490915060ff161561297c576001600160a01b038616600090815260026020526040902054612962908590613b34565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526005602052604090205460ff16156129df5760e08101516001600160a01b0386166000908152600260205260409020546129c591906139ed565b6001600160a01b0386166000908152600260205260409020555b80516001600160a01b038716600090815260016020526040902054612a049190613b34565b6001600160a01b0380881660009081526001602090815260408083209490945584015191881681529190912054612a3b91906139ed565b6001600160a01b0386166000908152600160205260409081902091909155810151151580612a6e57506000816101000151115b15612a8657612a8681604001518261010001516133c6565b600081608001511180612a9e57506000816101400151115b15612b3357612ab681608001518261014001516133fb565b306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836101800151846101600151856101200151866101400151612b0d91906139ed565b612b1791906139ed565b612b2191906139ed565b60405190815260200160405180910390a35b600081606001511180612b4b57506000816101200151115b15612b6357612b638160600151826101200151613471565b60008160c001511180612b7b57506000816101800151115b15612b9357612b938160c00151826101800151613486565b60008160a001511180612bab57506000816101600151115b15612bc357612bc38160a0015182610160015161349b565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360e00151604051612c0c91815260200190565b60405180910390a3505050505050565b601054600f546000918291825b600854811015612d6e57826001600060088481548110612c4b57612c4b613b92565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612cb65750816002600060088481548110612c8f57612c8f613b92565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612ccc57601054600f54945094505050509091565b6001600060088381548110612ce357612ce3613b92565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612d129084613b34565b92506002600060088381548110612d2b57612d2b613b92565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612d5a9083613b34565b915080612d6681613b4b565b915050612c29565b50600f54601054612d7f9190613a05565b821015612d9657601054600f549350935050509091565b90939092509050565b612da76134b0565b82612db85760e08101849052610e87565b612dea6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b8215612e2957506040805160a081018252601e548152601f54602080830191909152549181019190915260215460608201526022546080820152612e5c565b506040805160a0810182526019548152601a546020820152601b5491810191909152601c546060820152601d5460808201525b8051606490612e6b9087613b15565b612e759190613a05565b6101008301526020810151606490612e8d9087613b15565b612e979190613a05565b6101208301526040810151606490612eaf9087613b15565b612eb99190613a05565b6101408301526060810151606490612ed19087613b15565b612edb9190613a05565b6101608301526080810151606490612ef39087613b15565b612efd9190613a05565b6101808301819052610160830151610140840151610120850151610100860151612f27908a613b34565b612f319190613b34565b612f3b9190613b34565b612f459190613b34565b612f4f9190613b34565b60e0830152509392505050565b600080808080612f6c8689613b15565b945086612f8457508392506000915081905080613022565b85896101000151612f959190613b15565b925085896101200151612fa89190613b15565b915085896101400151612fbb9190613b15565b90506000868a6101600151612fd09190613b15565b90506000878b6101800151612fe59190613b15565b905080828486612ff5898c613b34565b612fff9190613b34565b6130099190613b34565b6130139190613b34565b61301d9190613b34565b955050505b945094509450945094565b6000808361304057506000905080613067565b828561016001516130519190613b15565b9150828561018001516130649190613b15565b90505b935093915050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106130a4576130a4613b92565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156130f857600080fd5b505afa15801561310c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131309190613550565b8160018151811061314357613143613b92565b6001600160a01b039283166020918202929092010152600d546131699130911684611ce3565b600d5460405163791ac94760e01b81526001600160a01b039091169063791ac947906131a290859060009086903090429060040161397c565b600060405180830381600087803b1580156131bc57600080fd5b505af115801561268b573d6000803e3d6000fd5b600d546131e89030906001600160a01b031684611ce3565b600d546001600160a01b031663f305d7198230856000806132116000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561327457600080fd5b505af1158015613288573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611cdc9190613852565b804710156132fd5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610bf4565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461334a576040519150601f19603f3d011682016040523d82523d6000602084013e61334f565b606091505b505090508061167d5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610bf4565b81601060008282546133d89190613b34565b9091555050602380548291906000906133f29084906139ed565b90915550505050565b806023600201600082825461341091906139ed565b90915550503060009081526005602052604090205460ff161561345257306000908152600260205260408120805483929061344c9084906139ed565b90915550505b30600090815260016020526040812080548492906133f29084906139ed565b806023600101600082825461341091906139ed565b806023600401600082825461341091906139ed565b806023600301600082825461341091906139ed565b604051806101a00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b803561352381613bbe565b919050565b803561352381613bd3565b60006020828403121561354557600080fd5b8135610e8781613bbe565b60006020828403121561356257600080fd5b8151610e8781613bbe565b6000806040838503121561358057600080fd5b823561358b81613bbe565b9150602083013561359b81613bbe565b809150509250929050565b6000806000606084860312156135bb57600080fd5b83356135c681613bbe565b925060208401356135d681613bbe565b929592945050506040919091013590565b600080604083850312156135fa57600080fd5b823561360581613bbe565b9150602083013561359b81613bd3565b6000806040838503121561362857600080fd5b823561363381613bbe565b946020939093013593505050565b60008060006040848603121561365657600080fd5b833567ffffffffffffffff8082111561366e57600080fd5b818601915086601f83011261368257600080fd5b81358181111561369157600080fd5b8760208260051b85010111156136a657600080fd5b6020928301989097509590910135949350505050565b600080604083850312156136cf57600080fd5b823567ffffffffffffffff808211156136e757600080fd5b818501915085601f8301126136fb57600080fd5b813560208282111561370f5761370f613ba8565b8160051b604051601f19603f8301168101818110868211171561373457613734613ba8565b604052838152828101945085830182870184018b101561375357600080fd5b600096505b8487101561377d5761376981613518565b865260019690960195948301948301613758565b50965061378d9050878201613528565b9450505050509250929050565b6000602082840312156137ac57600080fd5b8135610e8781613bd3565b6000602082840312156137c957600080fd5b8151610e8781613bd3565b600080604083850312156137e757600080fd5b823561363381613bd3565b60006020828403121561380457600080fd5b5035919050565b6000806040838503121561381e57600080fd5b82359150602083013561359b81613bd3565b6000806040838503121561384357600080fd5b50508035926020909101359150565b60008060006060848603121561386757600080fd5b8351925060208401519150604084015190509250925092565b600080600080600060a0868803121561389857600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600060208083528351808285015260005b818110156138e8578581018301518582016040015282016138cc565b818111156138fa576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526017908201527f54726164696e67206e6f7420656e61626c656420796574000000000000000000604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156139cc5784516001600160a01b0316835293830193918301916001016139a7565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115613a0057613a00613b66565b500190565b600082613a2257634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115613a62578160001904821115613a4857613a48613b66565b80851615613a5557918102915b93841c9390800290613a2c565b509250929050565b6000610e8760ff841683600082613a8357506001611306565b81613a9057506000611306565b8160018114613aa65760028114613ab057613acc565b6001915050611306565b60ff841115613ac157613ac1613b66565b50506001821b611306565b5060208310610133831016604e8410600b8410161715613aef575081810a611306565b613af98383613a27565b8060001904821115613b0d57613b0d613b66565b029392505050565b6000816000190483118215151615613b2f57613b2f613b66565b500290565b600082821015613b4657613b46613b66565b500390565b6000600019821415613b5f57613b5f613b66565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146110a857600080fd5b80151581146110a857600080fdfea26469706673582212207e9fe89fef40681b771d2706c99826f4c32948313247da9beb909dc66b12ae6a64736f6c634300080700330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

Deployed Bytecode

0x6080604052600436106103905760003560e01c8063728f8eea116101dc578063b5c5714511610102578063e517f2b9116100a0578063f588e8641161006f578063f588e86414610b23578063f66895a314610b43578063f887ea4014610b6a578063fcef8b3114610b8a57600080fd5b8063e517f2b914610aa9578063ea2f0b3714610ac9578063ee36e35914610ae9578063f2fde38b14610b0357600080fd5b8063d2ce0db2116100dc578063d2ce0db214610a17578063d8672e5114610a2d578063dd62ed3e14610a4d578063e2f4560514610a9357600080fd5b8063b5c57145146109b7578063c791fc54146109d7578063d257b34f146109f757600080fd5b8063924de9b71161017a578063a457c2d711610149578063a457c2d714610937578063a8aa1b3114610957578063a9059cbb14610977578063aacebbe31461099757600080fd5b8063924de9b7146108a1578063930ccd62146108c157806395d89b41146108e15780639ba5e4d51461091057600080fd5b80638d9d1ebf116101b65780638d9d1ebf146108235780638da5cb5b146108435780638ea5220f1461086157806390a4d0801461088157600080fd5b8063728f8eea1461077b5780637995e0cd146107ca57806388f82020146107ea57600080fd5b8063437823ec116102c15780635fcefa421161025f5780636aa5b37f1161022e5780636aa5b37f146107115780636ddd17131461072757806370a0823114610746578063715018a61461076657600080fd5b80635fcefa421461069557806362695eae146106b5578063652e2f04146106e557806366a88d96146106fb57600080fd5b80634ada218b1161029b5780634ada218b1461060257806352390c021461061c5780635342acb41461063c57806359759f611461067557600080fd5b8063437823ec146105a25780634523b6a7146105c25780634549b039146105e257600080fd5b8063274a533c1161032e5780633685d419116103085780633685d41914610522578063379ba1d914610542578063395093511461056257806340b28c2f1461058257600080fd5b8063274a533c146104d05780632d838119146104e6578063313ce5671461050657600080fd5b806318160ddd1161036a57806318160ddd146104395780631816467f1461045857806323b872dd146104785780632598cdb21461049857600080fd5b806306fdde031461039c578063095ea7b3146103e7578063119bc51a1461041757600080fd5b3661039757005b600080fd5b3480156103a857600080fd5b5060408051808201909152601081526f4f72616e6765546f6b656e5f696e666f60801b60208201525b6040516103de91906138bb565b60405180910390f35b3480156103f357600080fd5b50610407610402366004613615565b610baa565b60405190151581526020016103de565b34801561042357600080fd5b506104376104323660046135a6565b610c12565b005b34801561044557600080fd5b50600f545b6040519081526020016103de565b34801561046457600080fd5b50610437610473366004613533565b610cc4565b34801561048457600080fd5b506104076104933660046135a6565b610d10565b3480156104a457600080fd5b506016546104b8906001600160a01b031681565b6040516001600160a01b0390911681526020016103de565b3480156104dc57600080fd5b5061044a60155481565b3480156104f257600080fd5b5061044a6105013660046137f2565b610e0a565b34801561051257600080fd5b50604051600981526020016103de565b34801561052e57600080fd5b5061043761053d366004613533565b610e8e565b34801561054e57600080fd5b5061043761055d36600461379a565b611045565b34801561056e57600080fd5b5061040761057d366004613615565b6110ab565b34801561058e57600080fd5b5061043761059d36600461356d565b61112b565b3480156105ae57600080fd5b506104376105bd366004613533565b611183565b3480156105ce57600080fd5b506104376105dd3660046137f2565b6111d1565b3480156105ee57600080fd5b5061044a6105fd36600461380b565b611278565b34801561060e57600080fd5b506009546104079060ff1681565b34801561062857600080fd5b50610437610637366004613533565b61130c565b34801561064857600080fd5b50610407610657366004613533565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561068157600080fd5b50610437610690366004613830565b61145f565b3480156106a157600080fd5b506104376106b0366004613880565b6114bf565b3480156106c157600080fd5b506104076106d0366004613533565b60066020526000908152604090205460ff1681565b3480156106f157600080fd5b5061044a60135481565b34801561070757600080fd5b5061044a60145481565b34801561071d57600080fd5b5061044a60125481565b34801561073357600080fd5b5060095461040790610100900460ff1681565b34801561075257600080fd5b5061044a610761366004613533565b611557565b34801561077257600080fd5b506104376115b6565b34801561078757600080fd5b50601954601a54601b54601c54601d546107a2949392919085565b604080519586526020860194909452928401919091526060830152608082015260a0016103de565b3480156107d657600080fd5b506104376107e53660046136bc565b6115ec565b3480156107f657600080fd5b50610407610805366004613533565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561082f57600080fd5b506018546104b8906001600160a01b031681565b34801561084f57600080fd5b506000546001600160a01b03166104b8565b34801561086d57600080fd5b506017546104b8906001600160a01b031681565b34801561088d57600080fd5b5061043761089c366004613533565b611682565b3480156108ad57600080fd5b506104376108bc36600461379a565b6116ce565b3480156108cd57600080fd5b506104376108dc3660046135e7565b611712565b3480156108ed57600080fd5b506040805180820190915260068152654f52414e474560d01b60208201526103d1565b34801561091c57600080fd5b506023546024546025546026546027546107a2949392919085565b34801561094357600080fd5b50610407610952366004613615565b611767565b34801561096357600080fd5b50600e546104b8906001600160a01b031681565b34801561098357600080fd5b50610407610992366004613615565b61184d565b3480156109a357600080fd5b506104376109b2366004613533565b6118a2565b3480156109c357600080fd5b506104376109d23660046135e7565b6118ee565b3480156109e357600080fd5b506104376109f2366004613880565b611943565b348015610a0357600080fd5b50610437610a123660046137f2565b6119dc565b348015610a2357600080fd5b5061044a600c5481565b348015610a3957600080fd5b50610437610a483660046137f2565b611a22565b348015610a5957600080fd5b5061044a610a6836600461356d565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610a9f57600080fd5b5061044a60115481565b348015610ab557600080fd5b50610437610ac43660046137d4565b611a68565b348015610ad557600080fd5b50610437610ae4366004613533565b611ab4565b348015610af557600080fd5b50600b546104079060ff1681565b348015610b0f57600080fd5b50610437610b1e366004613533565b611aff565b348015610b2f57600080fd5b50610437610b3e3660046136bc565b611b97565b348015610b4f57600080fd5b50601e54601f546020546021546022546107a2949392919085565b348015610b7657600080fd5b50600d546104b8906001600160a01b031681565b348015610b9657600080fd5b50610437610ba5366004613641565b611c28565b600954600090339060ff1680610bd857506001600160a01b03811660009081526006602052604090205460ff165b610bfd5760405162461bcd60e51b8152600401610bf490613945565b60405180910390fd5b610c08338585611ce3565b5060019392505050565b6000546001600160a01b03163314610c3c5760405162461bcd60e51b8152600401610bf490613910565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb90604401602060405180830381600087803b158015610c8657600080fd5b505af1158015610c9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cbe91906137b7565b50505050565b6000546001600160a01b03163314610cee5760405162461bcd60e51b8152600401610bf490613910565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b600954600090849060ff1680610d3e57506001600160a01b03811660009081526006602052604090205460ff165b610d5a5760405162461bcd60e51b8152600401610bf490613945565b610d65858585611e07565b6001600160a01b038516600090815260036020908152604080832033845290915290205483811015610dea5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610bf4565b610dfe8633610df98785613b34565b611ce3565b50600195945050505050565b6000601054821115610e715760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610bf4565b6000610e7b612693565b9050610e878184613a05565b9392505050565b6000546001600160a01b03163314610eb85760405162461bcd60e51b8152600401610bf490613910565b6001600160a01b03811660009081526005602052604090205460ff16610f205760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610bf4565b60005b60085481101561104157816001600160a01b031660088281548110610f4a57610f4a613b92565b6000918252602090912001546001600160a01b0316141561102f5760088054610f7590600190613b34565b81548110610f8557610f85613b92565b600091825260209091200154600880546001600160a01b039092169183908110610fb157610fb1613b92565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff19169055600880548061100957611009613b7c565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b8061103981613b4b565b915050610f23565b5050565b6000546001600160a01b0316331461106f5760405162461bcd60e51b8152600401610bf490613910565b6009805461ffff191661ff001983151590811691909117610100820217909155600114801561109e5750601554155b156110a857436015555b50565b600954600090339060ff16806110d957506001600160a01b03811660009081526006602052604090205460ff165b6110f55760405162461bcd60e51b8152600401610bf490613945565b3360008181526003602090815260408083206001600160a01b0389168452909152902054610c0891908690610df99087906139ed565b6000546001600160a01b031633146111555760405162461bcd60e51b8152600401610bf490613910565b600d80546001600160a01b039384166001600160a01b031991821617909155600e8054929093169116179055565b6000546001600160a01b031633146111ad5760405162461bcd60e51b8152600401610bf490613910565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b031633146111fb5760405162461bcd60e51b8152600401610bf490613910565b8047101561124b5760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e7420424e422062616c616e636500000000000000006044820152606401610bf4565b604051339082156108fc029083906000818181858888f19350505050158015611041573d6000803e3d6000fd5b6000600f548311156112cc5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610bf4565b816112ea5760006112e084600160006126b6565b5191506113069050565b60006112f984600160006126b6565b6020015191506113069050565b92915050565b6000546001600160a01b031633146113365760405162461bcd60e51b8152600401610bf490613910565b6001600160a01b03811660009081526005602052604090205460ff161561139f5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610bf4565b6001600160a01b038116600090815260016020526040902054156113f9576001600160a01b0381166000908152600160205260409020546113df90610e0a565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6000546001600160a01b031633146114895760405162461bcd60e51b8152600401610bf490613910565b6114956009600a613a6a565b61149f9083613b15565b6012556114ae6009600a613a6a565b6114b89082613b15565b6013555050565b6000546001600160a01b031633146114e95760405162461bcd60e51b8152600401610bf490613910565b6040805160a08101825286815260208101869052808201859052606081018490526080018290526019869055601a859055601b849055601c839055601d829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a15050505050565b6001600160a01b03811660009081526005602052604081205460ff161561159457506001600160a01b031660009081526002602052604090205490565b6001600160a01b03821660009081526001602052604090205461130690610e0a565b6000546001600160a01b031633146115e05760405162461bcd60e51b8152600401610bf490613910565b6115ea6000612717565b565b6000546001600160a01b031633146116165760405162461bcd60e51b8152600401610bf490613910565b60005b825181101561167d57816004600085848151811061163957611639613b92565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061167581613b4b565b915050611619565b505050565b6000546001600160a01b031633146116ac5760405162461bcd60e51b8152600401610bf490613910565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146116f85760405162461bcd60e51b8152600401610bf490613910565b600980549115156101000261ff0019909216919091179055565b6000546001600160a01b0316331461173c5760405162461bcd60e51b8152600401610bf490613910565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b600954600090339060ff168061179557506001600160a01b03811660009081526006602052604090205460ff165b6117b15760405162461bcd60e51b8152600401610bf490613945565b3360009081526003602090815260408083206001600160a01b0388168452909152902054838110156118335760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610bf4565b6118423386610df98785613b34565b506001949350505050565b600954600090339060ff168061187b57506001600160a01b03811660009081526006602052604090205460ff165b6118975760405162461bcd60e51b8152600401610bf490613945565b610c08338585611e07565b6000546001600160a01b031633146118cc5760405162461bcd60e51b8152600401610bf490613910565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146119185760405162461bcd60e51b8152600401610bf490613910565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461196d5760405162461bcd60e51b8152600401610bf490613910565b6040805160a0810182528681526020808201879052818301869052606082018590526080909101839052601e879055601f86905584905560218390556022829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a15050505050565b6000546001600160a01b03163314611a065760405162461bcd60e51b8152600401610bf490613910565b611a126009600a613a6a565b611a1c9082613b15565b60115550565b6000546001600160a01b03163314611a4c5760405162461bcd60e51b8152600401610bf490613910565b611a586009600a613a6a565b611a629082613b15565b60145550565b6000546001600160a01b03163314611a925760405162461bcd60e51b8152600401610bf490613910565b611a9d816001613b15565b600c5550600b805460ff1916911515919091179055565b6000546001600160a01b03163314611ade5760405162461bcd60e51b8152600401610bf490613910565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b03163314611b295760405162461bcd60e51b8152600401610bf490613910565b6001600160a01b038116611b8e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bf4565b6110a881612717565b6000546001600160a01b03163314611bc15760405162461bcd60e51b8152600401610bf490613910565b60005b825181101561167d578160076000858481518110611be457611be4613b92565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611c2081613b4b565b915050611bc4565b6000611c348383613b15565b905080611c4033611557565b1015611c8e5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610bf4565b60005b83811015611cdc57611cca33868684818110611caf57611caf613b92565b9050602002016020810190611cc49190613533565b85611e07565b80611cd481613b4b565b915050611c91565b5050505050565b6001600160a01b038316611d455760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610bf4565b6001600160a01b038216611da65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610bf4565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611e6b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610bf4565b6001600160a01b038216611ecd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610bf4565b60008111611f2f5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610bf4565b611f3883611557565b811115611fa15760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610bf4565b6001600160a01b03831660009081526007602052604090205460ff16158015611fe357506001600160a01b03821660009081526007602052604090205460ff16155b61201f5760405162461bcd60e51b815260206004820152600d60248201526c165bdd48185c99481848189bdd609a1b6044820152606401610bf4565b6001600160a01b03831660009081526004602052604090205460ff1615801561206157506001600160a01b03821660009081526004602052604090205460ff16155b156120ad5760095460ff166120ad5760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b6044820152606401610bf4565b6001600160a01b03831660009081526004602052604090205460ff161580156120ef57506001600160a01b03821660009081526004602052604090205460ff16155b801561210857506015546121049060036139ed565b4311155b1561217757600e546001600160a01b03838116911614156121775760405162461bcd60e51b8152602060048201526024808201527f53656c6c73206e6f7420616c6c6f77656420666f72206669727374203320626c6044820152636f636b7360e01b6064820152608401610bf4565b600e546001600160a01b0384811691161480156121ad57506001600160a01b03821660009081526004602052604090205460ff16155b80156121c2575060095462010000900460ff16155b1561227e576012548111156122195760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d69740000006044820152606401610bf4565b6014548161222684611557565b61223091906139ed565b111561227e5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610bf4565b600e546001600160a01b038481169116148015906122b557506001600160a01b03821660009081526004602052604090205460ff16155b80156122da57506001600160a01b03831660009081526004602052604090205460ff16155b80156122ef575060095462010000900460ff16155b15612452576013548111156123465760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d697400006044820152606401610bf4565b600e546001600160a01b038381169116146123c0576014548161236884611557565b61237291906139ed565b11156123c05760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610bf4565b600b5460ff1615612452576001600160a01b0383166000908152600a60205260408120546123ee9042613b34565b9050600c548110156124355760405162461bcd60e51b815260206004820152601060248201526f10dbdbdb191bdddb88195b98589b195960821b6044820152606401610bf4565b506001600160a01b0383166000908152600a602052604090204290555b61245e6009600a613a6a565b61246990600a613b15565b8161247385611557565b61247d9190613b34565b116124c45761248b83611557565b816124986009600a613a6a565b6124a390600a613b15565b6124ad91906139ed565b6124b79190613b34565b6124c19082613b34565b90505b60006011546124d230611557565b600954911115915062010000900460ff161580156124f75750600954610100900460ff165b80156125005750805b801561251a5750600e546001600160a01b03858116911614155b801561253f57506001600160a01b03841660009081526004602052604090205460ff16155b801561256457506001600160a01b03831660009081526004602052604090205460ff16155b1561260257600e546001600160a01b03848116911614156125c4576011546040805160a081018252601e548152601f546020808301919091525491810191909152602154606082015260225460808201526125bf9190612767565b612602565b6011546040805160a0810182526019548152601a546020820152601b5491810191909152601c546060820152601d5460808201526126029190612767565b60095460019060009062010000900460ff168061263757506001600160a01b03861660009081526004602052604090205460ff165b8061265a57506001600160a01b03851660009081526004602052604090205460ff165b1561266457600091505b600e546001600160a01b038681169116141561267e575060015b61268b868686858561290d565b505050505050565b60008060006126a0612c1c565b90925090506126af8183613a05565b9250505090565b6126be6134b0565b6126c9848484612d9f565b90506126de8185856126d9612693565b612f5c565b608086015260608501526040840152602083015281526127068184612701612693565b61302d565b60c083015260a08201529392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6009805462ff00001916620100001790556080810151606082015160208301516040840151600093929161279a916139ed565b6127a491906139ed565b6127ae91906139ed565b6127b9906002613b15565b90506000818360400151856127ce9190613b15565b6127d89190613a05565b905060006127e68286613b34565b9050476127f28261306f565b60006127fe8247613b34565b905060008660400151866128129190613b34565b61281c9083613a05565b905060008760400151826128309190613b15565b905080156128425761284286826131d0565b6020880151600090612855846002613b15565b61285f9190613b15565b9050801561287d5760165461287d906001600160a01b0316826132ad565b6060890151600090612890856002613b15565b61289a9190613b15565b905080156128b8576017546128b8906001600160a01b0316826132ad565b60808a01516000906128cb866002613b15565b6128d59190613b15565b905080156128f3576018546128f3906001600160a01b0316826132ad565b50506009805462ff00001916905550505050505050505050565b600061291a8484846126b6565b6001600160a01b03871660009081526005602052604090205490915060ff161561297c576001600160a01b038616600090815260026020526040902054612962908590613b34565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526005602052604090205460ff16156129df5760e08101516001600160a01b0386166000908152600260205260409020546129c591906139ed565b6001600160a01b0386166000908152600260205260409020555b80516001600160a01b038716600090815260016020526040902054612a049190613b34565b6001600160a01b0380881660009081526001602090815260408083209490945584015191881681529190912054612a3b91906139ed565b6001600160a01b0386166000908152600160205260409081902091909155810151151580612a6e57506000816101000151115b15612a8657612a8681604001518261010001516133c6565b600081608001511180612a9e57506000816101400151115b15612b3357612ab681608001518261014001516133fb565b306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836101800151846101600151856101200151866101400151612b0d91906139ed565b612b1791906139ed565b612b2191906139ed565b60405190815260200160405180910390a35b600081606001511180612b4b57506000816101200151115b15612b6357612b638160600151826101200151613471565b60008160c001511180612b7b57506000816101800151115b15612b9357612b938160c00151826101800151613486565b60008160a001511180612bab57506000816101600151115b15612bc357612bc38160a0015182610160015161349b565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360e00151604051612c0c91815260200190565b60405180910390a3505050505050565b601054600f546000918291825b600854811015612d6e57826001600060088481548110612c4b57612c4b613b92565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612cb65750816002600060088481548110612c8f57612c8f613b92565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612ccc57601054600f54945094505050509091565b6001600060088381548110612ce357612ce3613b92565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612d129084613b34565b92506002600060088381548110612d2b57612d2b613b92565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612d5a9083613b34565b915080612d6681613b4b565b915050612c29565b50600f54601054612d7f9190613a05565b821015612d9657601054600f549350935050509091565b90939092509050565b612da76134b0565b82612db85760e08101849052610e87565b612dea6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b8215612e2957506040805160a081018252601e548152601f54602080830191909152549181019190915260215460608201526022546080820152612e5c565b506040805160a0810182526019548152601a546020820152601b5491810191909152601c546060820152601d5460808201525b8051606490612e6b9087613b15565b612e759190613a05565b6101008301526020810151606490612e8d9087613b15565b612e979190613a05565b6101208301526040810151606490612eaf9087613b15565b612eb99190613a05565b6101408301526060810151606490612ed19087613b15565b612edb9190613a05565b6101608301526080810151606490612ef39087613b15565b612efd9190613a05565b6101808301819052610160830151610140840151610120850151610100860151612f27908a613b34565b612f319190613b34565b612f3b9190613b34565b612f459190613b34565b612f4f9190613b34565b60e0830152509392505050565b600080808080612f6c8689613b15565b945086612f8457508392506000915081905080613022565b85896101000151612f959190613b15565b925085896101200151612fa89190613b15565b915085896101400151612fbb9190613b15565b90506000868a6101600151612fd09190613b15565b90506000878b6101800151612fe59190613b15565b905080828486612ff5898c613b34565b612fff9190613b34565b6130099190613b34565b6130139190613b34565b61301d9190613b34565b955050505b945094509450945094565b6000808361304057506000905080613067565b828561016001516130519190613b15565b9150828561018001516130649190613b15565b90505b935093915050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106130a4576130a4613b92565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156130f857600080fd5b505afa15801561310c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131309190613550565b8160018151811061314357613143613b92565b6001600160a01b039283166020918202929092010152600d546131699130911684611ce3565b600d5460405163791ac94760e01b81526001600160a01b039091169063791ac947906131a290859060009086903090429060040161397c565b600060405180830381600087803b1580156131bc57600080fd5b505af115801561268b573d6000803e3d6000fd5b600d546131e89030906001600160a01b031684611ce3565b600d546001600160a01b031663f305d7198230856000806132116000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561327457600080fd5b505af1158015613288573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611cdc9190613852565b804710156132fd5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610bf4565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461334a576040519150601f19603f3d011682016040523d82523d6000602084013e61334f565b606091505b505090508061167d5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610bf4565b81601060008282546133d89190613b34565b9091555050602380548291906000906133f29084906139ed565b90915550505050565b806023600201600082825461341091906139ed565b90915550503060009081526005602052604090205460ff161561345257306000908152600260205260408120805483929061344c9084906139ed565b90915550505b30600090815260016020526040812080548492906133f29084906139ed565b806023600101600082825461341091906139ed565b806023600401600082825461341091906139ed565b806023600301600082825461341091906139ed565b604051806101a00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b803561352381613bbe565b919050565b803561352381613bd3565b60006020828403121561354557600080fd5b8135610e8781613bbe565b60006020828403121561356257600080fd5b8151610e8781613bbe565b6000806040838503121561358057600080fd5b823561358b81613bbe565b9150602083013561359b81613bbe565b809150509250929050565b6000806000606084860312156135bb57600080fd5b83356135c681613bbe565b925060208401356135d681613bbe565b929592945050506040919091013590565b600080604083850312156135fa57600080fd5b823561360581613bbe565b9150602083013561359b81613bd3565b6000806040838503121561362857600080fd5b823561363381613bbe565b946020939093013593505050565b60008060006040848603121561365657600080fd5b833567ffffffffffffffff8082111561366e57600080fd5b818601915086601f83011261368257600080fd5b81358181111561369157600080fd5b8760208260051b85010111156136a657600080fd5b6020928301989097509590910135949350505050565b600080604083850312156136cf57600080fd5b823567ffffffffffffffff808211156136e757600080fd5b818501915085601f8301126136fb57600080fd5b813560208282111561370f5761370f613ba8565b8160051b604051601f19603f8301168101818110868211171561373457613734613ba8565b604052838152828101945085830182870184018b101561375357600080fd5b600096505b8487101561377d5761376981613518565b865260019690960195948301948301613758565b50965061378d9050878201613528565b9450505050509250929050565b6000602082840312156137ac57600080fd5b8135610e8781613bd3565b6000602082840312156137c957600080fd5b8151610e8781613bd3565b600080604083850312156137e757600080fd5b823561363381613bd3565b60006020828403121561380457600080fd5b5035919050565b6000806040838503121561381e57600080fd5b82359150602083013561359b81613bd3565b6000806040838503121561384357600080fd5b50508035926020909101359150565b60008060006060848603121561386757600080fd5b8351925060208401519150604084015190509250925092565b600080600080600060a0868803121561389857600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600060208083528351808285015260005b818110156138e8578581018301518582016040015282016138cc565b818111156138fa576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526017908201527f54726164696e67206e6f7420656e61626c656420796574000000000000000000604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156139cc5784516001600160a01b0316835293830193918301916001016139a7565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115613a0057613a00613b66565b500190565b600082613a2257634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115613a62578160001904821115613a4857613a48613b66565b80851615613a5557918102915b93841c9390800290613a2c565b509250929050565b6000610e8760ff841683600082613a8357506001611306565b81613a9057506000611306565b8160018114613aa65760028114613ab057613acc565b6001915050611306565b60ff841115613ac157613ac1613b66565b50506001821b611306565b5060208310610133831016604e8410600b8410161715613aef575081810a611306565b613af98383613a27565b8060001904821115613b0d57613b0d613b66565b029392505050565b6000816000190483118215151615613b2f57613b2f613b66565b500290565b600082821015613b4657613b46613b66565b500390565b6000600019821415613b5f57613b5f613b66565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146110a857600080fd5b80151581146110a857600080fdfea26469706673582212207e9fe89fef40681b771d2706c99826f4c32948313247da9beb909dc66b12ae6a64736f6c63430008070033

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

0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

-----Decoded View---------------
Arg [0] : routerAddress (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D

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


Deployed Bytecode Sourcemap

4161:22422:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8023:83;;;;;;;;;;-1:-1:-1;8093:5:0;;;;;;;;;;;;-1:-1:-1;;;8093:5:0;;;;8023:83;;;;;;;:::i;:::-;;;;;;;;8783:181;;;;;;;;;;-1:-1:-1;8783:181:0;;;;;:::i;:::-;;:::i;:::-;;;8062:14:1;;8055:22;8037:41;;8025:2;8010:18;8783:181:0;7897:187:1;26393:145:0;;;;;;;;;;-1:-1:-1;26393:145:0;;;;;:::i;:::-;;:::i;:::-;;8319:95;;;;;;;;;;-1:-1:-1;8399:7:0;;8319:95;;;18931:25:1;;;18919:2;18904:18;8319:95:0;18785:177:1;24454:102:0;;;;;;;;;;-1:-1:-1;24454:102:0;;;;;:::i;:::-;;:::i;8972:430::-;;;;;;;;;;-1:-1:-1;8972:430:0;;;;;:::i;:::-;;:::i;5675:75::-;;;;;;;;;;-1:-1:-1;5675:75:0;;;;-1:-1:-1;;;;;5675:75:0;;;;;;-1:-1:-1;;;;;6962:32:1;;;6944:51;;6932:2;6917:18;5675:75:0;6798:203:1;5634:28:0;;;;;;;;;;;;;;;;11065:248;;;;;;;;;;-1:-1:-1;11065:248:0;;;;;:::i;:::-;;:::i;8205:83::-;;;;;;;;;;-1:-1:-1;8205:83:0;;5212:1;20562:36:1;;20550:2;20535:18;8205:83:0;20420:184:1;11728:475:0;;;;;;;;;;-1:-1:-1;11728:475:0;;;;;:::i;:::-;;:::i;10851:206::-;;;;;;;;;;-1:-1:-1;10851:206:0;;;;;:::i;:::-;;:::i;9410:228::-;;;;;;;;;;-1:-1:-1;9410:228:0;;;;;:::i;:::-;;:::i;25624:154::-;;;;;;;;;;-1:-1:-1;25624:154:0;;;;;:::i;:::-;;:::i;12213:111::-;;;;;;;;;;-1:-1:-1;12213:111:0;;;;;:::i;:::-;;:::i;25798:201::-;;;;;;;;;;-1:-1:-1;25798:201:0;;;;;:::i;:::-;;:::i;10371:470::-;;;;;;;;;;-1:-1:-1;10371:470:0;;;;;:::i;:::-;;:::i;4700:26::-;;;;;;;;;;-1:-1:-1;4700:26:0;;;;;;;;11387:333;;;;;;;;;;-1:-1:-1;11387:333:0;;;;;:::i;:::-;;:::i;12452:123::-;;;;;;;;;;-1:-1:-1;12452:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;12540:27:0;12516:4;12540:27;;;:18;:27;;;;;;;;;12452:123;25298:183;;;;;;;;;;-1:-1:-1;25298:183:0;;;;;:::i;:::-;;:::i;12583:231::-;;;;;;;;;;-1:-1:-1;12583:231:0;;;;;:::i;:::-;;:::i;4557:48::-;;;;;;;;;;-1:-1:-1;4557:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5506:53;;;;;;;;;;;;;;;;5566:55;;;;;;;;;;;;;;;;5447:52;;;;;;;;;;;;;;;;4733:23;;;;;;;;;;-1:-1:-1;4733:23:0;;;;;;;;;;;8422:198;;;;;;;;;;-1:-1:-1;8422:198:0;;;;;:::i;:::-;;:::i;2590:94::-;;;;;;;;;;;;;:::i;6181:41::-;;;;;;;;;;-1:-1:-1;6181:41:0;;;;;;;;;;;;;;;;;;;;;;20211:25:1;;;20267:2;20252:18;;20245:34;;;;20295:18;;;20288:34;;;;20353:2;20338:18;;20331:34;20396:3;20381:19;;20374:35;20198:3;20183:19;6181:41:0;19952:463:1;24120:200:0;;;;;;;;;;-1:-1:-1;24120:200:0;;;;;:::i;:::-;;:::i;10243:120::-;;;;;;;;;;-1:-1:-1;10243:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;10335:20:0;10311:4;10335:20;;;:11;:20;;;;;;;;;10243:120;5833:71;;;;;;;;;;-1:-1:-1;5833:71:0;;;;-1:-1:-1;;;;;5833:71:0;;;2367:87;;;;;;;;;;-1:-1:-1;2413:7:0;2440:6;-1:-1:-1;;;;;2440:6:0;2367:87;;5757:69;;;;;;;;;;-1:-1:-1;5757:69:0;;;;-1:-1:-1;;;;;5757:69:0;;;24568:106;;;;;;;;;;-1:-1:-1;24568:106:0;;;;;:::i;:::-;;:::i;24011:101::-;;;;;;;;;;-1:-1:-1;24011:101:0;;;;;:::i;:::-;;:::i;24824:116::-;;;;;;;;;;-1:-1:-1;24824:116:0;;;;;:::i;:::-;;:::i;8112:87::-;;;;;;;;;;-1:-1:-1;8184:7:0;;;;;;;;;;;;-1:-1:-1;;;8184:7:0;;;;8112:87;;6458:36;;;;;;;;;;-1:-1:-1;6458:36:0;;;;;;;;;;;;;;;;;;9646:390;;;;;;;;;;-1:-1:-1;9646:390:0;;;;;:::i;:::-;;:::i;5149:19::-;;;;;;;;;;-1:-1:-1;5149:19:0;;;;-1:-1:-1;;;;;5149:19:0;;;10048:187;;;;;;;;;;-1:-1:-1;10048:187:0;;;;;:::i;:::-;;:::i;24328:114::-;;;;;;;;;;-1:-1:-1;24328:114:0;;;;;:::i;:::-;;:::i;25157:129::-;;;;;;;;;;-1:-1:-1;25157:129:0;;;;;:::i;:::-;;:::i;12826:239::-;;;;;;;;;;-1:-1:-1;12826:239:0;;;;;:::i;:::-;;:::i;24682:130::-;;;;;;;;;;-1:-1:-1;24682:130:0;;;;;:::i;:::-;;:::i;4919:39::-;;;;;;;;;;;;;;;;25493:123;;;;;;;;;;-1:-1:-1;25493:123:0;;;;;:::i;:::-;;:::i;8632:143::-;;;;;;;;;;-1:-1:-1;8632:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;8740:18:0;;;8713:7;8740:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8632:143;5382:58;;;;;;;;;;;;;;;;23851:152;;;;;;;;;;-1:-1:-1;23851:152:0;;;;;:::i;:::-;;:::i;12332:110::-;;;;;;;;;;-1:-1:-1;12332:110:0;;;;;:::i;:::-;;:::i;4878:34::-;;;;;;;;;;-1:-1:-1;4878:34:0;;;;;;;;2692:192;;;;;;;;;;-1:-1:-1;2692:192:0;;;;;:::i;:::-;;:::i;24952:193::-;;;;;;;;;;-1:-1:-1;24952:193:0;;;;;:::i;:::-;;:::i;6229:45::-;;;;;;;;;;-1:-1:-1;6229:45:0;;;;;;;;;;;;;;;;;;5121:21;;;;;;;;;;-1:-1:-1;5121:21:0;;;;-1:-1:-1;;;;;5121:21:0;;;26025:360;;;;;;;;;;-1:-1:-1;26025:360:0;;;;;:::i;:::-;;:::i;8783:181::-;5023:14;;8878:4;;8858:10;;5023:14;;;:42;;-1:-1:-1;;;;;;5041:24:0;;;;;;:15;:24;;;;;;;;5023:42;5015:78;;;;-1:-1:-1;;;5015:78:0;;;;;;;:::i;:::-;;;;;;;;;8895:39:::1;1984:10:::0;8918:7:::1;8927:6;8895:8;:39::i;:::-;-1:-1:-1::0;8952:4:0::1;::::0;8783:181;-1:-1:-1;;;8783:181:0:o;26393:145::-;2413:7;2440:6;-1:-1:-1;;;;;2440:6:0;1984:10;2502:23;2494:68;;;;-1:-1:-1;;;2494:68:0;;;;;;;:::i;:::-;26489:41:::1;::::0;-1:-1:-1;;;26489:41:0;;-1:-1:-1;;;;;7198:32:1;;;26489:41:0::1;::::0;::::1;7180:51:1::0;7247:18;;;7240:34;;;26489:27:0;::::1;::::0;::::1;::::0;7153:18:1;;26489:41:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26393:145:::0;;;:::o;24454:102::-;2413:7;2440:6;-1:-1:-1;;;;;2440:6:0;1984:10;2502:23;2494:68;;;;-1:-1:-1;;;2494:68:0;;;;;;;:::i;:::-;24527:9:::1;:21:::0;;-1:-1:-1;;;;;;24527:21:0::1;-1:-1:-1::0;;;;;24527:21:0;;;::::1;::::0;;;::::1;::::0;;24454:102::o;8972:430::-;5023:14;;9086:4;;9069:6;;5023:14;;;:42;;-1:-1:-1;;;;;;5041:24:0;;;;;;:15;:24;;;;;;;;5023:42;5015:78;;;;-1:-1:-1;;;5015:78:0;;;;;;;:::i;:::-;9103:36:::1;9113:6;9121:9;9132:6;9103:9;:36::i;:::-;-1:-1:-1::0;;;;;9179:19:0;::::1;9152:24;9179:19:::0;;;:11:::1;:19;::::0;;;;;;;1984:10;9179:33;;;;;;;;9231:26;;::::1;;9223:79;;;::::0;-1:-1:-1;;;9223:79:0;;15192:2:1;9223:79:0::1;::::0;::::1;15174:21:1::0;15231:2;15211:18;;;15204:30;15270:34;15250:18;;;15243:62;-1:-1:-1;;;15321:18:1;;;15314:38;15369:19;;9223:79:0::1;14990:404:1::0;9223:79:0::1;9313:57;9322:6:::0;1984:10;9344:25:::1;9363:6:::0;9344:16;:25:::1;:::i;:::-;9313:8;:57::i;:::-;-1:-1:-1::0;9390:4:0::1;::::0;8972:430;-1:-1:-1;;;;;8972:430:0:o;11065:248::-;11131:7;11170;;11159;:18;;11151:73;;;;-1:-1:-1;;;11151:73:0;;10643:2:1;11151:73:0;;;10625:21:1;10682:2;10662:18;;;10655:30;10721:34;10701:18;;;10694:62;-1:-1:-1;;;10772:18:1;;;10765:40;10822:19;;11151:73:0;10441:406:1;11151:73:0;11235:19;11258:10;:8;:10::i;:::-;11235:33;-1:-1:-1;11286:19:0;11235:33;11286:7;:19;:::i;:::-;11279:26;11065:248;-1:-1:-1;;;11065:248:0:o;11728:475::-;2413:7;2440:6;-1:-1:-1;;;;;2440:6:0;1984:10;2502:23;2494:68;;;;-1:-1:-1;;;2494:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11810:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;11802:56;;;::::0;-1:-1:-1;;;11802:56:0;;13413:2:1;11802:56:0::1;::::0;::::1;13395:21:1::0;13452:2;13432:18;;;13425:30;13491:25;13471:18;;;13464:53;13534:18;;11802:56:0::1;13211:347:1::0;11802:56:0::1;11874:9;11869:327;11893:9;:16:::0;11889:20;::::1;11869:327;;;11951:7;-1:-1:-1::0;;;;;11935:23:0::1;:9;11945:1;11935:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;11935:12:0::1;:23;11931:254;;;11994:9;12004:16:::0;;:20:::1;::::0;12023:1:::1;::::0;12004:20:::1;:::i;:::-;11994:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;11979:9:::1;:12:::0;;-1:-1:-1;;;;;11994:31:0;;::::1;::::0;11989:1;;11979:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;11979:46:0::1;-1:-1:-1::0;;;;;11979:46:0;;::::1;;::::0;;12044:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;12083:11:::1;:20:::0;;;;:28;;-1:-1:-1;;12083:28:0::1;::::0;;12130:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;12130:15:0;;;;;-1:-1:-1;;;;;;12130:15:0::1;::::0;;;;;11869:327:::1;11728:475:::0;:::o;11931:254::-:1;11911:3:::0;::::1;::::0;::::1;:::i;:::-;;;;11869:327;;;;11728:475:::0;:::o;10851:206::-;2413:7;2440:6;-1:-1:-1;;;;;2440:6:0;1984:10;2502:23;2494:68;;;;-1:-1:-1;;;2494:68:0;;;;;;;:::i;:::-;10918:14:::1;:22:::0;;-1:-1:-1;;10951:19:0;-1:-1:-1;;10918:22:0;::::1;;10951:19:::0;;;;;;;10918:22:::1;10951:19:::0;::::1;;::::0;;;-1:-1:-1;10984:13:0::1;:35:::0;::::1;;;-1:-1:-1::0;11001:13:0::1;::::0;:18;10984:35:::1;10981:68;;;11037:12;11021:13;:28:::0;10981:68:::1;10851:206:::0;:::o;9410:228::-;5023:14;;9511:4;;9490:10;;5023:14;;;:42;;-1:-1:-1;;;;;;5041:24:0;;;;;;:15;:24;;;;;;;;5023:42;5015:78;;;;-1:-1:-1;;;5015:78:0;;;;;;;:::i;:::-;1984:10;9560:25:::1;::::0;;;:11:::1;:25;::::0;;;;;;;-1:-1:-1;;;;;9560:34:0;::::1;::::0;;;;;;;;9528:80:::1;::::0;1984:10;9551:7;;9560:47:::1;::::0;9597:10;;9560:47:::1;:::i;25624:154::-:0;2413:7;2440:6;-1:-1:-1;;;;;2440:6:0;1984:10;2502:23;2494:68;;;;-1:-1:-1;;;2494:68:0;;;;;;;:::i;:::-;25718:6:::1;:27:::0;;-1:-1:-1;;;;;25718:27:0;;::::1;-1:-1:-1::0;;;;;;25718:27:0;;::::1;;::::0;;;25756:4:::1;:14:::0;;;;;::::1;::::0;::::1;;::::0;;25624:154::o;12213:111::-;2413:7;2440:6;-1:-1:-1;;;;;2440:6:0;1984:10;2502:23;2494:68;;;;-1:-1:-1;;;2494:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12282:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;12282:34:0::1;12312:4;12282:34;::::0;;12213:111::o;25798:201::-;2413:7;2440:6;-1:-1:-1;;;;;2440:6:0;1984:10;2502:23;2494:68;;;;-1:-1:-1;;;2494:68:0;;;;;;;:::i;:::-;25903:9:::1;25878:21;:34;;25870:71;;;::::0;-1:-1:-1;;;25870:71:0;;14839:2:1;25870:71:0::1;::::0;::::1;14821:21:1::0;14878:2;14858:18;;;14851:30;14917:26;14897:18;;;14890:54;14961:18;;25870:71:0::1;14637:348:1::0;25870:71:0::1;25952:39;::::0;25960:10:::1;::::0;25952:39;::::1;;;::::0;25981:9;;25952:39:::1;::::0;;;25981:9;25960:10;25952:39;::::1;;;;;;;;;;;;;::::0;::::1;;;;10371:470:::0;10461:7;10500;;10489;:18;;10481:62;;;;-1:-1:-1;;;10481:62:0;;14479:2:1;10481:62:0;;;14461:21:1;14518:2;14498:18;;;14491:30;14557:33;14537:18;;;14530:61;14608:18;;10481:62:0;14277:355:1;10481:62:0;10559:17;10554:280;;10593:28;10624:32;10635:7;10644:4;10650:5;10624:10;:32::i;:::-;10678:9;;-1:-1:-1;10671:16:0;;-1:-1:-1;10671:16:0;10554:280;10720:28;10751:32;10762:7;10771:4;10777:5;10751:10;:32::i;:::-;10805:17;;;;-1:-1:-1;10798:24:0;;-1:-1:-1;10798:24:0;10554:280;10371:470;;;;:::o;11387:333::-;2413:7;2440:6;-1:-1:-1;;;;;2440:6:0;1984:10;2502:23;2494:68;;;;-1:-1:-1;;;2494:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11470:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;11469:21;11461:61;;;::::0;-1:-1:-1;;;11461:61:0;;11864:2:1;11461:61:0::1;::::0;::::1;11846:21:1::0;11903:2;11883:18;;;11876:30;11942:29;11922:18;;;11915:57;11989:18;;11461:61:0::1;11662:351:1::0;11461:61:0::1;-1:-1:-1::0;;;;;11536:16:0;::::1;11555:1;11536:16:::0;;;:7:::1;:16;::::0;;;;;:20;11533:108:::1;;-1:-1:-1::0;;;;;11612:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;11592:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;11573:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;11533:108:::1;-1:-1:-1::0;;;;;11651:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;11651:27:0::1;11674:4;11651:27:::0;;::::1;::::0;;;11689:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;11689:23:0::1;::::0;;::::1;::::0;;11387:333::o;25298:183::-;2413:7;2440:6;-1:-1:-1;;;;;2440:6:0;1984:10;2502:23;2494:68;;;;-1:-1:-1;;;2494:68:0;;;;;;;:::i;:::-;25409:14:::1;5212:1:::0;25409:2:::1;:14;:::i;:::-;25400:23;::::0;:6;:23:::1;:::i;:::-;25386:11;:37:::0;25459:14:::1;5212:1:::0;25459:2:::1;:14;:::i;:::-;25449:24;::::0;:7;:24:::1;:::i;:::-;25434:12;:39:::0;-1:-1:-1;;25298:183:0:o;12583:231::-;2413:7;2440:6;-1:-1:-1;;;;;2440:6:0;1984:10;2502:23;2494:68;;;;-1:-1:-1;;;2494:68:0;;;;;;;:::i;:::-;12726:51:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;12718:5:::1;:59:::0;;;;;;;;;;;;;;;;;;;12793:13;::::1;::::0;-1:-1:-1;;12793:13:0::1;12583:231:::0;;;;;:::o;8422:198::-;-1:-1:-1;;;;;8512:20:0;;8488:7;8512:20;;;:11;:20;;;;;;;;8508:49;;;-1:-1:-1;;;;;;8541:16:0;;;;;:7;:16;;;;;;;8422:198::o;8508:49::-;-1:-1:-1;;;;;8595:16:0;;;;;;:7;:16;;;;;;8575:37;;:19;:37::i;2590:94::-;2413:7;2440:6;-1:-1:-1;;;;;2440:6:0;1984:10;2502:23;2494:68;;;;-1:-1:-1;;;2494:68:0;;;;;;;:::i;:::-;2655:21:::1;2673:1;2655:9;:21::i;:::-;2590:94::o:0;24120:200::-;2413:7;2440:6;-1:-1:-1;;;;;2440:6:0;1984:10;2502:23;2494:68;;;;-1:-1:-1;;;2494:68:0;;;;;;;:::i;:::-;24207:9:::1;24203:110;24226:8;:15;24222:1;:19;24203:110;;;24296:5;24262:18;:31;24281:8;24290:1;24281:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;24262:31:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;24262:31:0;:39;;-1:-1:-1;;24262:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24243:3;::::1;::::0;::::1;:::i;:::-;;;;24203:110;;;;24120:200:::0;;:::o;24568:106::-;2413:7;2440:6;-1:-1:-1;;;;;2440:6:0;1984:10;2502:23;2494:68;;;;-1:-1:-1;;;2494:68:0;;;;;;;:::i;:::-;24643:11:::1;:23:::0;;-1:-1:-1;;;;;;24643:23:0::1;-1:-1:-1::0;;;;;24643:23:0;;;::::1;::::0;;;::::1;::::0;;24568:106::o;24011:101::-;2413:7;2440:6;-1:-1:-1;;;;;2440:6:0;1984:10;2502:23;2494:68;;;;-1:-1:-1;;;2494:68:0;;;;;;;:::i;:::-;24082:11:::1;:22:::0;;;::::1;;;;-1:-1:-1::0;;24082:22:0;;::::1;::::0;;;::::1;::::0;;24011:101::o;24824:116::-;2413:7;2440:6;-1:-1:-1;;;;;2440:6:0;1984:10;2502:23;2494:68;;;;-1:-1:-1;;;2494:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24906:18:0;;;::::1;;::::0;;;:9:::1;:18;::::0;;;;:26;;-1:-1:-1;;24906:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24824:116::o;9646:390::-;5023:14;;9752:4;;9731:10;;5023:14;;;:42;;-1:-1:-1;;;;;;5041:24:0;;;;;;:15;:24;;;;;;;;5023:42;5015:78;;;;-1:-1:-1;;;5015:78:0;;;;;;;:::i;:::-;1984:10;9769:24:::1;9796:25:::0;;;:11:::1;:25;::::0;;;;;;;-1:-1:-1;;;;;9796:34:0;::::1;::::0;;;;;;;;9849:35;;::::1;;9841:85;;;::::0;-1:-1:-1;;;9841:85:0;;18581:2:1;9841:85:0::1;::::0;::::1;18563:21:1::0;18620:2;18600:18;;;18593:30;18659:34;18639:18;;;18632:62;-1:-1:-1;;;18710:18:1;;;18703:35;18755:19;;9841:85:0::1;18379:401:1::0;9841:85:0::1;9937:67;1984:10:::0;9960:7;9969:34:::1;9988:15:::0;9969:16;:34:::1;:::i;9937:67::-;-1:-1:-1::0;10024:4:0::1;::::0;9646:390;-1:-1:-1;;;;9646:390:0:o;10048:187::-;5023:14;;10146:4;;10125:10;;5023:14;;;:42;;-1:-1:-1;;;;;;5041:24:0;;;;;;:15;:24;;;;;;;;5023:42;5015:78;;;;-1:-1:-1;;;5015:78:0;;;;;;;:::i;:::-;10167:40:::1;10177:10;10189:9;10200:6;10167:9;:40::i;24328:114::-:0;2413:7;2440:6;-1:-1:-1;;;;;2440:6:0;1984:10;2502:23;2494:68;;;;-1:-1:-1;;;2494:68:0;;;;;;;:::i;:::-;24407:15:::1;:27:::0;;-1:-1:-1;;;;;;24407:27:0::1;-1:-1:-1::0;;;;;24407:27:0;;;::::1;::::0;;;::::1;::::0;;24328:114::o;25157:129::-;2413:7;2440:6;-1:-1:-1;;;;;2440:6:0;1984:10;2502:23;2494:68;;;;-1:-1:-1;;;2494:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25246:24:0;;;::::1;;::::0;;;:15:::1;:24;::::0;;;;:32;;-1:-1:-1;;25246:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25157:129::o;12826:239::-;2413:7;2440:6;-1:-1:-1;;;;;2440:6:0;1984:10;2502:23;2494:68;;;;-1:-1:-1;;;2494:68:0;;;;;;;:::i;:::-;12977:51:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;12965:9:::1;:63:::0;;;;;;;;;;;;;;;;;;13044:13;::::1;::::0;-1:-1:-1;;13044:13:0::1;12826:239:::0;;;;;:::o;24682:130::-;2413:7;2440:6;-1:-1:-1;;;;;2440:6:0;1984:10;2502:23;2494:68;;;;-1:-1:-1;;;2494:68:0;;;;;;;:::i;:::-;24791:13:::1;5212:1;24791:2;:13;:::i;:::-;24782:22;::::0;:6;:22:::1;:::i;:::-;24761:18;:43:::0;-1:-1:-1;24682:130:0:o;25493:123::-;2413:7;2440:6;-1:-1:-1;;;;;2440:6:0;1984:10;2502:23;2494:68;;;;-1:-1:-1;;;2494:68:0;;;;;;;:::i;:::-;25594:14:::1;5212:1:::0;25594:2:::1;:14;:::i;:::-;25585:23;::::0;:6;:23:::1;:::i;:::-;25568:14;:40:::0;-1:-1:-1;25493:123:0:o;23851:152::-;2413:7;2440:6;-1:-1:-1;;;;;2440:6:0;1984:10;2502:23;2494:68;;;;-1:-1:-1;;;2494:68:0;;;;;;;:::i;:::-;23945:16:::1;:4:::0;23952:9:::1;23945:16;:::i;:::-;23930:12;:31:::0;-1:-1:-1;23972:15:0::1;:23:::0;;-1:-1:-1;;23972:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23851:152::o;12332:110::-;2413:7;2440:6;-1:-1:-1;;;;;2440:6:0;1984:10;2502:23;2494:68;;;;-1:-1:-1;;;2494:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12399:27:0::1;12429:5;12399:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;12399:35:0::1;::::0;;12332:110::o;2692:192::-;2413:7;2440:6;-1:-1:-1;;;;;2440:6:0;1984:10;2502:23;2494:68;;;;-1:-1:-1;;;2494:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2781:22:0;::::1;2773:73;;;::::0;-1:-1:-1;;;2773:73:0;;11054:2:1;2773:73:0::1;::::0;::::1;11036:21:1::0;11093:2;11073:18;;;11066:30;11132:34;11112:18;;;11105:62;-1:-1:-1;;;11183:18:1;;;11176:36;11229:19;;2773:73:0::1;10852:402:1::0;2773:73:0::1;2857:19;2867:8;2857:9;:19::i;24952:193::-:0;2413:7;2440:6;-1:-1:-1;;;;;2440:6:0;1984:10;2502:23;2494:68;;;;-1:-1:-1;;;2494:68:0;;;;;;;:::i;:::-;25040:9:::1;25036:102;25058:8;:15;25054:1;:19;25036:102;;;25119:5;25094:9;:22;25104:8;25113:1;25104:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;25094:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;25094:22:0;:30;;-1:-1:-1;;25094:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25075:3;::::1;::::0;::::1;:::i;:::-;;;;25036:102;;26025:360:::0;26122:12;26137:25;26146:9;26137:6;:25;:::i;:::-;26122:40;-1:-1:-1;26122:40:0;26183:23;1984:10;8422:198;:::i;26183:23::-;:31;;26175:71;;;;-1:-1:-1;;;26175:71:0;;14123:2:1;26175:71:0;;;14105:21:1;14162:2;14142:18;;;14135:30;14201:29;14181:18;;;14174:57;14248:18;;26175:71:0;13921:351:1;26175:71:0;26264:9;26259:119;26279:20;;;26259:119;;;26321:45;1984:10;26345:9;;26355:1;26345:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;26359:6;26321:9;:45::i;:::-;26301:3;;;;:::i;:::-;;;;26259:119;;;;26111:274;26025:360;;;:::o;17368:335::-;-1:-1:-1;;;;;17461:19:0;;17453:68;;;;-1:-1:-1;;;17453:68:0;;17123:2:1;17453:68:0;;;17105:21:1;17162:2;17142:18;;;17135:30;17201:34;17181:18;;;17174:62;-1:-1:-1;;;17252:18:1;;;17245:34;17296:19;;17453:68:0;16921:400:1;17453:68:0;-1:-1:-1;;;;;17540:21:0;;17532:68;;;;-1:-1:-1;;;17532:68:0;;11461:2:1;17532:68:0;;;11443:21:1;11500:2;11480:18;;;11473:30;11539:34;11519:18;;;11512:62;-1:-1:-1;;;11590:18:1;;;11583:32;11632:19;;17532:68:0;11259:398:1;17532:68:0;-1:-1:-1;;;;;17611:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;17663:32;;18931:25:1;;;17663:32:0;;18904:18:1;17663:32:0;;;;;;;17368:335;;;:::o;17711:2439::-;-1:-1:-1;;;;;17799:18:0;;17791:68;;;;-1:-1:-1;;;17791:68:0;;16717:2:1;17791:68:0;;;16699:21:1;16756:2;16736:18;;;16729:30;16795:34;16775:18;;;16768:62;-1:-1:-1;;;16846:18:1;;;16839:35;16891:19;;17791:68:0;16515:401:1;17791:68:0;-1:-1:-1;;;;;17878:16:0;;17870:64;;;;-1:-1:-1;;;17870:64:0;;9116:2:1;17870:64:0;;;9098:21:1;9155:2;9135:18;;;9128:30;9194:34;9174:18;;;9167:62;-1:-1:-1;;;9245:18:1;;;9238:33;9288:19;;17870:64:0;8914:399:1;17870:64:0;17962:1;17953:6;:10;17945:64;;;;-1:-1:-1;;;17945:64:0;;15962:2:1;17945:64:0;;;15944:21:1;16001:2;15981:18;;;15974:30;16040:34;16020:18;;;16013:62;-1:-1:-1;;;16091:18:1;;;16084:39;16140:19;;17945:64:0;15760:405:1;17945:64:0;18038:15;18048:4;18038:9;:15::i;:::-;18028:6;:25;;18020:86;;;;-1:-1:-1;;;18020:86:0;;10225:2:1;18020:86:0;;;10207:21:1;10264:2;10244:18;;;10237:30;10303:34;10283:18;;;10276:62;-1:-1:-1;;;10354:18:1;;;10347:47;10411:19;;18020:86:0;10023:413:1;18020:86:0;-1:-1:-1;;;;;18126:15:0;;;;;;:9;:15;;;;;;;;18125:16;:34;;;;-1:-1:-1;;;;;;18146:13:0;;;;;;:9;:13;;;;;;;;18145:14;18125:34;18117:60;;;;-1:-1:-1;;;18117:60:0;;17880:2:1;18117:60:0;;;17862:21:1;17919:2;17899:18;;;17892:30;-1:-1:-1;;;17938:18:1;;;17931:43;17991:18;;18117:60:0;17678:337:1;18117:60:0;-1:-1:-1;;;;;18202:24:0;;;;;;:18;:24;;;;;;;;18201:25;:52;;;;-1:-1:-1;;;;;;18231:22:0;;;;;;:18;:22;;;;;;;;18230:23;18201:52;18198:128;;;18277:14;;;;18269:45;;;;-1:-1:-1;;;18269:45:0;;9878:2:1;18269:45:0;;;9860:21:1;9917:2;9897:18;;;9890:30;-1:-1:-1;;;9936:18:1;;;9929:48;9994:18;;18269:45:0;9676:342:1;18269:45:0;-1:-1:-1;;;;;18350:24:0;;;;;;:18;:24;;;;;;;;18349:25;:52;;;;-1:-1:-1;;;;;;18379:22:0;;;;;;:18;:22;;;;;;;;18378:23;18349:52;:89;;;;-1:-1:-1;18421:13:0;;:17;;18437:1;18421:17;:::i;:::-;18405:12;:33;;18349:89;18346:180;;;18469:4;;-1:-1:-1;;;;;18463:10:0;;;18469:4;;18463:10;;18455:59;;;;-1:-1:-1;;;18455:59:0;;12581:2:1;18455:59:0;;;12563:21:1;12620:2;12600:18;;;12593:30;12659:34;12639:18;;;12632:62;-1:-1:-1;;;12710:18:1;;;12703:34;12754:19;;18455:59:0;12379:400:1;18455:59:0;18557:4;;-1:-1:-1;;;;;18549:12:0;;;18557:4;;18549:12;:39;;;;-1:-1:-1;;;;;;18566:22:0;;;;;;:18;:22;;;;;;;;18565:23;18549:39;:52;;;;-1:-1:-1;18593:8:0;;;;;;;18592:9;18549:52;18546:246;;;18635:11;;18625:6;:21;;18617:63;;;;-1:-1:-1;;;18617:63:0;;9520:2:1;18617:63:0;;;9502:21:1;9559:2;9539:18;;;9532:30;9598:31;9578:18;;;9571:59;9647:18;;18617:63:0;9318:353:1;18617:63:0;18729:14;;18719:6;18703:13;18713:2;18703:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;18695:85;;;;-1:-1:-1;;;18695:85:0;;12220:2:1;18695:85:0;;;12202:21:1;;;12239:18;;;12232:30;12298:34;12278:18;;;12271:62;12350:18;;18695:85:0;12018:356:1;18695:85:0;18823:4;;-1:-1:-1;;;;;18815:12:0;;;18823:4;;18815:12;;;;:39;;-1:-1:-1;;;;;;18832:22:0;;;;;;:18;:22;;;;;;;;18831:23;18815:39;:68;;;;-1:-1:-1;;;;;;18859:24:0;;;;;;:18;:24;;;;;;;;18858:25;18815:68;:81;;;;-1:-1:-1;18888:8:0;;;;;;;18887:9;18815:81;18812:573;;;18930:12;;18920:6;:22;;18912:65;;;;-1:-1:-1;;;18912:65:0;;18222:2:1;18912:65:0;;;18204:21:1;18261:2;18241:18;;;18234:30;18300:32;18280:18;;;18273:60;18350:18;;18912:65:0;18020:354:1;18912:65:0;19001:4;;-1:-1:-1;;;;;18995:10:0;;;19001:4;;18995:10;18992:134;;19059:14;;19049:6;19033:13;19043:2;19033:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;19025:85;;;;-1:-1:-1;;;19025:85:0;;12220:2:1;19025:85:0;;;12202:21:1;;;12239:18;;;12232:30;12298:34;12278:18;;;12271:62;12350:18;;19025:85:0;12018:356:1;19025:85:0;19143:15;;;;19140:234;;;-1:-1:-1;;;;;19217:15:0;;19178:18;19217:15;;;:9;:15;;;;;;19199:33;;:15;:33;:::i;:::-;19178:54;;19273:12;;19259:10;:26;;19251:55;;;;-1:-1:-1;;;19251:55:0;;16372:2:1;19251:55:0;;;16354:21:1;16411:2;16391:18;;;16384:30;-1:-1:-1;;;16430:18:1;;;16423:46;16486:18;;19251:55:0;16170:340:1;19251:55:0;-1:-1:-1;;;;;;19325:15:0;;;;;;:9;:15;;;;;19343;19325:33;;19140:234;19452:14;5212:1;19452:2;:14;:::i;:::-;19446:20;;:2;:20;:::i;:::-;19436:6;19418:15;19428:4;19418:9;:15::i;:::-;:24;;;;:::i;:::-;:48;19415:111;;19510:15;19520:4;19510:9;:15::i;:::-;19501:6;19484:14;5212:1;19484:2;:14;:::i;:::-;19479:19;;:2;:19;:::i;:::-;:28;;;;:::i;:::-;:46;;;;:::i;:::-;19468:58;;;;:::i;:::-;;;19415:111;19556:12;19599:18;;19571:24;19589:4;19571:9;:24::i;:::-;19632:8;;-1:-1:-1;;19571:46:0;;-1:-1:-1;19632:8:0;;;;;19631:9;:24;;;;-1:-1:-1;19644:11:0;;;;;;;19631:24;:35;;;;;19659:7;19631:35;:51;;;;-1:-1:-1;19678:4:0;;-1:-1:-1;;;;;19670:12:0;;;19678:4;;19670:12;;19631:51;:80;;;;-1:-1:-1;;;;;;19687:24:0;;;;;;:18;:24;;;;;;;;19686:25;19631:80;:107;;;;-1:-1:-1;;;;;;19716:22:0;;;;;;:18;:22;;;;;;;;19715:23;19631:107;19628:261;;;19763:4;;-1:-1:-1;;;;;19757:10:0;;;19763:4;;19757:10;19754:123;;;19785:18;;19770:45;;;;;;;;19805:9;19770:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19785:18;19770:14;:45::i;:::-;19754:123;;;19851:18;;19836:41;;;;;;;;19871:5;19836:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19851:18;19836:14;:41::i;:::-;19962:8;;19914:4;;19899:12;;19962:8;;;;;;:36;;-1:-1:-1;;;;;;19974:24:0;;;;;;:18;:24;;;;;;;;19962:36;:62;;;-1:-1:-1;;;;;;20002:22:0;;;;;;:18;:22;;;;;;;;19962:62;19959:82;;;20036:5;20026:15;;19959:82;20061:4;;-1:-1:-1;;;;;20055:10:0;;;20061:4;;20055:10;20052:28;;;-1:-1:-1;20076:4:0;20052:28;20093:49;20108:4;20114:2;20118:6;20126:7;20135:6;20093:14;:49::i;:::-;17780:2370;;;17711:2439;;;:::o;16654:158::-;16695:7;16716:15;16733;16752:19;:17;:19::i;:::-;16715:56;;-1:-1:-1;16715:56:0;-1:-1:-1;16789:15:0;16715:56;;16789:15;:::i;:::-;16782:22;;;;16654:158;:::o;14368:490::-;14454:36;;:::i;:::-;14515:37;14527:7;14536;14545:6;14515:11;:37::i;:::-;14503:49;;14672:53;14685:9;14696:7;14705;14714:10;:8;:10::i;:::-;14672:12;:53::i;:::-;14648:20;;;14563:162;14626:20;;;14563:162;14610:14;;;14563:162;14583:25;;;14563:162;;;14779:44;14564:9;14803:7;14812:10;:8;:10::i;:::-;14779:12;:44::i;:::-;14753:22;;;14736:87;14737:14;;;14736:87;14368:490;;;;;:::o;2892:173::-;2948:16;2967:6;;-1:-1:-1;;;;;2984:17:0;;;-1:-1:-1;;;;;;2984:17:0;;;;;;3017:40;;2967:6;;;;;;;3017:40;;2948:16;3017:40;2937:128;2892:173;:::o;21401:1358::-;7007:8;:15;;-1:-1:-1;;7007:15:0;;;;;21567:16:::1;::::0;::::1;::::0;21556:8:::1;::::0;::::1;::::0;21539:14:::1;::::0;::::1;::::0;21522::::1;::::0;::::1;::::0;7007:15;;21567:16;21556:8;21522:31:::1;::::0;::::1;:::i;:::-;:42;;;;:::i;:::-;:61;;;;:::i;:::-;21521:67;::::0;21587:1:::1;21521:67;:::i;:::-;21499:89;;21599:32;21669:11;21652:4;:14;;;21634:15;:32;;;;:::i;:::-;:46;;;;:::i;:::-;21599:81:::0;-1:-1:-1;21691:14:0::1;21708:42;21599:81:::0;21708:15;:42:::1;:::i;:::-;21691:59:::0;-1:-1:-1;21788:21:0::1;21822:24;21691:59:::0;21822:16:::1;:24::i;:::-;21859:20;21882:38;21906:14:::0;21882:21:::1;:38;:::i;:::-;21859:61;;21931:19;21982:4;:14;;;21968:11;:28;;;;:::i;:::-;21952:45;::::0;:12;:45:::1;:::i;:::-;21931:66;;22008:29;22054:4;:14;;;22040:11;:28;;;;:::i;:::-;22008:60:::0;-1:-1:-1;22084:25:0;;22081:158:::1;;22166:61;22179:24;22205:21;22166:12;:61::i;:::-;22292:14;::::0;::::1;::::0;22251:20:::1;::::0;22274:15:::1;:11:::0;22288:1:::1;22274:15;:::i;:::-;:32;;;;:::i;:::-;22251:55:::0;-1:-1:-1;22320:16:0;;22317:95:::1;;22360:15;::::0;22352:48:::1;::::0;-1:-1:-1;;;;;22360:15:0::1;22387:12:::0;22352:34:::1;:48::i;:::-;22457:8;::::0;::::1;::::0;22422:14:::1;::::0;22439:15:::1;:11:::0;22453:1:::1;22439:15;:::i;:::-;:26;;;;:::i;:::-;22422:43:::0;-1:-1:-1;22479:10:0;;22476:77:::1;;22513:9;::::0;22505:36:::1;::::0;-1:-1:-1;;;;;22513:9:0::1;22534:6:::0;22505:28:::1;:36::i;:::-;22616:16;::::0;::::1;::::0;22573:22:::1;::::0;22598:15:::1;:11:::0;22612:1:::1;22598:15;:::i;:::-;:34;;;;:::i;:::-;22573:59:::0;-1:-1:-1;22646:18:0;;22643:95:::1;;22688:11;::::0;22680:46:::1;::::0;-1:-1:-1;;;;;22688:11:0::1;22711:14:::0;22680:30:::1;:46::i;:::-;-1:-1:-1::0;;7045:8:0;:16;;-1:-1:-1;;7045:16:0;;;-1:-1:-1;;;;;;;;;;21401:1358:0:o;20168:1225::-;20292:28;20323:36;20334:7;20343;20352:6;20323:10;:36::i;:::-;-1:-1:-1;;;;;20376:19:0;;;;;;:11;:19;;;;;;20292:67;;-1:-1:-1;20376:19:0;;20372:115;;;-1:-1:-1;;;;;20452:15:0;;;;;;:7;:15;;;;;;:23;;20468:7;;20452:23;:::i;:::-;-1:-1:-1;;;;;20434:15:0;;;;;;:7;:15;;;;;:41;20372:115;-1:-1:-1;;;;;20501:22:0;;;;;;:11;:22;;;;;;;;20497:130;;;20598:17;;;;-1:-1:-1;;;;;20579:18:0;;;;;;:7;:18;;;;;;:36;;20598:17;20579:36;:::i;:::-;-1:-1:-1;;;;;20558:18:0;;;;;;:7;:18;;;;;:57;20497:130;20673:9;;-1:-1:-1;;;;;20657:15:0;;20673:9;20657:15;;;:7;:15;;;;;;:25;;20673:9;20657:25;:::i;:::-;-1:-1:-1;;;;;20639:15:0;;;;;;;:7;:15;;;;;;;;:43;;;;20733:17;;;20714:18;;;;;;;;;;:36;;20733:17;20714:36;:::i;:::-;-1:-1:-1;;;;;20693:18:0;;;;;;:7;:18;;;;;;;:57;;;;20774:6;;;:10;;;:24;;;20797:1;20788;:6;;;:10;20774:24;20771:56;;;20800:27;20812:1;:6;;;20820:1;:6;;;20800:11;:27::i;:::-;20856:1;20841;:12;;;:16;:36;;;;20876:1;20861;:12;;;:16;20841:36;20838:214;;;20894:41;20909:1;:12;;;20922:1;:12;;;20894:14;:41::i;:::-;20980:4;-1:-1:-1;;;;;20955:85:0;20964:6;-1:-1:-1;;;;;20955:85:0;;21025:1;:14;;;21017:1;:6;;;21002:1;:12;;;20987:1;:12;;;:27;;;;:::i;:::-;:36;;;;:::i;:::-;:52;;;;:::i;:::-;20955:85;;18931:25:1;;;18919:2;18904:18;20955:85:0;;;;;;;20838:214;21080:1;21065;:12;;;:16;:36;;;;21100:1;21085;:12;;;:16;21065:36;21062:83;;;21103:42;21118:1;:12;;;21132:1;:12;;;21103:14;:42::i;:::-;21176:1;21159;:14;;;:18;:40;;;;21198:1;21181;:14;;;:18;21159:40;21156:93;;;21201:48;21218:1;:14;;;21234:1;:14;;;21201:16;:48::i;:::-;21272:1;21263;:6;;;:10;:24;;;;21286:1;21277;:6;;;:10;21263:24;21260:53;;;21289:24;21298:1;:6;;;21306:1;:6;;;21289:8;:24::i;:::-;21346:9;-1:-1:-1;;;;;21329:46:0;21338:6;-1:-1:-1;;;;;21329:46:0;;21357:1;:17;;;21329:46;;;;18931:25:1;;18919:2;18904:18;;18785:177;21329:46:0;;;;;;;;20279:1114;20168:1225;;;;;:::o;16820:540::-;16917:7;;16953;;16870;;;;;16971:279;16995:9;:16;16991:20;;16971:279;;;17061:7;17037;:21;17045:9;17055:1;17045:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;17045:12:0;17037:21;;;;;;;;;;;;;:31;;:66;;;17096:7;17072;:21;17080:9;17090:1;17080:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;17080:12:0;17072:21;;;;;;;;;;;;;:31;17037:66;17033:97;;;17113:7;;17122;;17105:25;;;;;;;16820:540;;:::o;17033:97::-;17163:7;:21;17171:9;17181:1;17171:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;17171:12:0;17163:21;;;;;;;;;;;;;17155:29;;:7;:29;:::i;:::-;17145:39;;17217:7;:21;17225:9;17235:1;17225:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;17225:12:0;17217:21;;;;;;;;;;;;;17209:29;;:7;:29;:::i;:::-;17199:39;-1:-1:-1;17013:3:0;;;;:::i;:::-;;;;16971:279;;;;17282:7;;17274;;:15;;;;:::i;:::-;17264:7;:25;17260:56;;;17299:7;;17308;;17291:25;;;;;;16820:540;;:::o;17260:56::-;17335:7;;17344;;-1:-1:-1;16820:540:0;-1:-1:-1;16820:540:0:o;14866:679::-;14953:28;;:::i;:::-;15000:7;14996:86;;15022:17;;;:27;;;15062:8;;14996:86;15092:17;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15092:17:0;15123:6;15120:55;;;-1:-1:-1;15131:16:0;;;;;;;;15138:9;15131:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15120:55;;;-1:-1:-1;15163:12:0;;;;;;;;15170:5;15163:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15120:55;15213:8;;15222:3;;15205:16;;:7;:16;:::i;:::-;:20;;;;:::i;:::-;15196:6;;;:29;15259:14;;;;15274:3;;15251:22;;:7;:22;:::i;:::-;:26;;;;:::i;:::-;15236:12;;;:41;15311:14;;;;15326:3;;15303:22;;:7;:22;:::i;:::-;:26;;;;:::i;:::-;15288:12;;;:41;15357:8;;;;15366:3;;15349:16;;:7;:16;:::i;:::-;:20;;;;:::i;:::-;15340:6;;;:29;15405:16;;;;15422:3;;15397:24;;:7;:24;:::i;:::-;:28;;;;:::i;:::-;15380:14;;;:45;;;15497:6;;;;15484:12;;;;15471;;;;15464:6;;;;15456:14;;:7;:14;:::i;:::-;:27;;;;:::i;:::-;:40;;;;:::i;:::-;:47;;;;:::i;:::-;:62;;;;:::i;:::-;15436:17;;;:82;-1:-1:-1;14866:679:0;;;;;:::o;15553:741::-;15679:15;;;;;15794:19;15802:11;15794:7;:19;:::i;:::-;15784:29;;15830:7;15826:69;;-1:-1:-1;15859:7:0;;-1:-1:-1;15877:1:0;;-1:-1:-1;15877:1:0;;-1:-1:-1;15877:1:0;15852:31;;15826:69;15921:11;15914:1;:6;;;:18;;;;:::i;:::-;15907:25;;15969:11;15956:1;:12;;;:24;;;;:::i;:::-;15943:37;;16017:11;16004:1;:12;;;:24;;;;:::i;:::-;15991:37;;16039:12;16061:11;16054:1;:6;;;:18;;;;:::i;:::-;16039:33;;16083:20;16121:11;16106:1;:14;;;:26;;;;:::i;:::-;16083:49;-1:-1:-1;16083:49:0;16197:4;16186:10;16175;16162:12;16170:4;16162:7;:12;:::i;:::-;:23;;;;:::i;:::-;:34;;;;:::i;:::-;:39;;;;:::i;:::-;:52;;;;:::i;:::-;16143:71;;16225:61;;15553:741;;;;;;;;;;:::o;16306:340::-;16415:12;16428:20;16467:7;16463:49;;-1:-1:-1;16496:1:0;;-1:-1:-1;16496:1:0;16489:11;;16463:49;16538:11;16531:1;:6;;;:18;;;;:::i;:::-;16524:25;;16590:11;16575:1;:14;;;:26;;;;:::i;:::-;16560:41;;16306:340;;;;;;;:::o;23270:562::-;23420:16;;;23434:1;23420:16;;;;;;;;23396:21;;23420:16;;;;;;;;;;-1:-1:-1;23420:16:0;23396:40;;23465:4;23447;23452:1;23447:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23447:23:0;;;:7;;;;;;;;;;:23;;;;23491:6;;:13;;;-1:-1:-1;;;23491:13:0;;;;:6;;;;;:11;;:13;;;;;23447:7;;23491:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23481:4;23486:1;23481:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23481:23:0;;;:7;;;;;;;;;:23;23549:6;;23517:53;;23534:4;;23549:6;23558:11;23517:8;:53::i;:::-;23609:6;;:215;;-1:-1:-1;;;23609:215:0;;-1:-1:-1;;;;;23609:6:0;;;;:57;;:215;;23681:11;;23609:6;;23751:4;;23778;;23798:15;;23609:215;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22767:495;22947:6;;22915:53;;22932:4;;-1:-1:-1;;;;;22947:6:0;22956:11;22915:8;:53::i;:::-;23011:6;;-1:-1:-1;;;;;23011:6:0;:22;23041:9;23074:4;23094:11;23011:6;;23206:7;2413;2440:6;-1:-1:-1;;;;;2440:6:0;;2367:87;23206:7;23011:243;;;;;;-1:-1:-1;;;;;;23011:243:0;;;-1:-1:-1;;;;;7644:15:1;;;23011:243:0;;;7626:34:1;7676:18;;;7669:34;;;;7719:18;;;7712:34;;;;7762:18;;;7755:34;7826:15;;;7805:19;;;7798:44;23228:15:0;7858:19:1;;;7851:35;7560:19;;23011:243:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3835:317::-;3950:6;3925:21;:31;;3917:73;;;;-1:-1:-1;;;3917:73:0;;13765:2:1;3917:73:0;;;13747:21:1;13804:2;13784:18;;;13777:30;13843:31;13823:18;;;13816:59;13892:18;;3917:73:0;13563:353:1;3917:73:0;4004:12;4022:9;-1:-1:-1;;;;;4022:14:0;4044:6;4022:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4003:52;;;4074:7;4066:78;;;;-1:-1:-1;;;4066:78:0;;12986:2:1;4066:78:0;;;12968:21:1;13025:2;13005:18;;;12998:30;13064:34;13044:18;;;13037:62;13135:28;13115:18;;;13108:56;13181:19;;4066:78:0;12784:422:1;13073:123:0;13151:4;13141:7;;:14;;;;;;;:::i;:::-;;;;-1:-1:-1;;13166:11:0;:22;;13184:4;;13166:11;:15;;:22;;13184:4;;13166:22;:::i;:::-;;;;-1:-1:-1;;;;13073:123:0:o;13204:284::-;13311:10;13287:11;:21;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;;13357:4:0;13337:26;;;;:11;:26;;;;;;;;13334:101;;;13405:4;13389:22;;;;:7;:22;;;;;:34;;13413:10;;13389:22;:34;;13413:10;;13389:34;:::i;:::-;;;;-1:-1:-1;;13334:101:0;13461:4;13445:22;;;;:7;:22;;;;;:35;;13470:10;;13445:22;:35;;13470:10;;13445:35;:::i;13496:284::-;13603:10;13579:11;:21;;;:34;;;;;;;:::i;14052:298::-;14167:12;14141:11;:23;;;:38;;;;;;;:::i;13792:242::-;13875:4;13857:11;:15;;;:22;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:134:1:-;82:20;;111:31;82:20;111:31;:::i;:::-;14:134;;;:::o;153:128::-;218:20;;247:28;218:20;247:28;:::i;286:247::-;345:6;398:2;386:9;377:7;373:23;369:32;366:52;;;414:1;411;404:12;366:52;453:9;440:23;472:31;497:5;472:31;:::i;538:251::-;608:6;661:2;649:9;640:7;636:23;632:32;629:52;;;677:1;674;667:12;629:52;709:9;703:16;728:31;753:5;728:31;:::i;794:388::-;862:6;870;923:2;911:9;902:7;898:23;894:32;891:52;;;939:1;936;929:12;891:52;978:9;965:23;997:31;1022:5;997:31;:::i;:::-;1047:5;-1:-1:-1;1104:2:1;1089:18;;1076:32;1117:33;1076:32;1117:33;:::i;:::-;1169:7;1159:17;;;794:388;;;;;:::o;1187:456::-;1264:6;1272;1280;1333:2;1321:9;1312:7;1308:23;1304:32;1301:52;;;1349:1;1346;1339:12;1301:52;1388:9;1375:23;1407:31;1432:5;1407:31;:::i;:::-;1457:5;-1:-1:-1;1514:2:1;1499:18;;1486:32;1527:33;1486:32;1527:33;:::i;:::-;1187:456;;1579:7;;-1:-1:-1;;;1633:2:1;1618:18;;;;1605:32;;1187:456::o;1648:382::-;1713:6;1721;1774:2;1762:9;1753:7;1749:23;1745:32;1742:52;;;1790:1;1787;1780:12;1742:52;1829:9;1816:23;1848:31;1873:5;1848:31;:::i;:::-;1898:5;-1:-1:-1;1955:2:1;1940:18;;1927:32;1968:30;1927:32;1968:30;:::i;2035:315::-;2103:6;2111;2164:2;2152:9;2143:7;2139:23;2135:32;2132:52;;;2180:1;2177;2170:12;2132:52;2219:9;2206:23;2238:31;2263:5;2238:31;:::i;:::-;2288:5;2340:2;2325:18;;;;2312:32;;-1:-1:-1;;;2035:315:1:o;2355:689::-;2450:6;2458;2466;2519:2;2507:9;2498:7;2494:23;2490:32;2487:52;;;2535:1;2532;2525:12;2487:52;2575:9;2562:23;2604:18;2645:2;2637:6;2634:14;2631:34;;;2661:1;2658;2651:12;2631:34;2699:6;2688:9;2684:22;2674:32;;2744:7;2737:4;2733:2;2729:13;2725:27;2715:55;;2766:1;2763;2756:12;2715:55;2806:2;2793:16;2832:2;2824:6;2821:14;2818:34;;;2848:1;2845;2838:12;2818:34;2903:7;2896:4;2886:6;2883:1;2879:14;2875:2;2871:23;2867:34;2864:47;2861:67;;;2924:1;2921;2914:12;2861:67;2955:4;2947:13;;;;2979:6;;-1:-1:-1;3017:20:1;;;;3004:34;;2355:689;-1:-1:-1;;;;2355:689:1:o;3049:1202::-;3139:6;3147;3200:2;3188:9;3179:7;3175:23;3171:32;3168:52;;;3216:1;3213;3206:12;3168:52;3256:9;3243:23;3285:18;3326:2;3318:6;3315:14;3312:34;;;3342:1;3339;3332:12;3312:34;3380:6;3369:9;3365:22;3355:32;;3425:7;3418:4;3414:2;3410:13;3406:27;3396:55;;3447:1;3444;3437:12;3396:55;3483:2;3470:16;3505:4;3528:2;3524;3521:10;3518:36;;;3534:18;;:::i;:::-;3580:2;3577:1;3573:10;3612:2;3606:9;3675:2;3671:7;3666:2;3662;3658:11;3654:25;3646:6;3642:38;3730:6;3718:10;3715:22;3710:2;3698:10;3695:18;3692:46;3689:72;;;3741:18;;:::i;:::-;3777:2;3770:22;3827:18;;;3861:15;;;;-1:-1:-1;3896:11:1;;;3926;;;3922:20;;3919:33;-1:-1:-1;3916:53:1;;;3965:1;3962;3955:12;3916:53;3987:1;3978:10;;3997:169;4011:2;4008:1;4005:9;3997:169;;;4068:23;4087:3;4068:23;:::i;:::-;4056:36;;4029:1;4022:9;;;;;4112:12;;;;4144;;3997:169;;;-1:-1:-1;4185:6:1;-1:-1:-1;4210:35:1;;-1:-1:-1;4226:18:1;;;4210:35;:::i;:::-;4200:45;;;;;;3049:1202;;;;;:::o;4256:241::-;4312:6;4365:2;4353:9;4344:7;4340:23;4336:32;4333:52;;;4381:1;4378;4371:12;4333:52;4420:9;4407:23;4439:28;4461:5;4439:28;:::i;4502:245::-;4569:6;4622:2;4610:9;4601:7;4597:23;4593:32;4590:52;;;4638:1;4635;4628:12;4590:52;4670:9;4664:16;4689:28;4711:5;4689:28;:::i;4752:309::-;4817:6;4825;4878:2;4866:9;4857:7;4853:23;4849:32;4846:52;;;4894:1;4891;4884:12;4846:52;4933:9;4920:23;4952:28;4974:5;4952:28;:::i;5066:180::-;5125:6;5178:2;5166:9;5157:7;5153:23;5149:32;5146:52;;;5194:1;5191;5184:12;5146:52;-1:-1:-1;5217:23:1;;5066:180;-1:-1:-1;5066:180:1:o;5251:309::-;5316:6;5324;5377:2;5365:9;5356:7;5352:23;5348:32;5345:52;;;5393:1;5390;5383:12;5345:52;5429:9;5416:23;5406:33;;5489:2;5478:9;5474:18;5461:32;5502:28;5524:5;5502:28;:::i;5565:248::-;5633:6;5641;5694:2;5682:9;5673:7;5669:23;5665:32;5662:52;;;5710:1;5707;5700:12;5662:52;-1:-1:-1;;5733:23:1;;;5803:2;5788:18;;;5775:32;;-1:-1:-1;5565:248:1:o;5818:306::-;5906:6;5914;5922;5975:2;5963:9;5954:7;5950:23;5946:32;5943:52;;;5991:1;5988;5981:12;5943:52;6020:9;6014:16;6004:26;;6070:2;6059:9;6055:18;6049:25;6039:35;;6114:2;6103:9;6099:18;6093:25;6083:35;;5818:306;;;;;:::o;6129:454::-;6224:6;6232;6240;6248;6256;6309:3;6297:9;6288:7;6284:23;6280:33;6277:53;;;6326:1;6323;6316:12;6277:53;-1:-1:-1;;6349:23:1;;;6419:2;6404:18;;6391:32;;-1:-1:-1;6470:2:1;6455:18;;6442:32;;6521:2;6506:18;;6493:32;;-1:-1:-1;6572:3:1;6557:19;6544:33;;-1:-1:-1;6129:454:1;-1:-1:-1;6129:454:1:o;8312:597::-;8424:4;8453:2;8482;8471:9;8464:21;8514:6;8508:13;8557:6;8552:2;8541:9;8537:18;8530:34;8582:1;8592:140;8606:6;8603:1;8600:13;8592:140;;;8701:14;;;8697:23;;8691:30;8667:17;;;8686:2;8663:26;8656:66;8621:10;;8592:140;;;8750:6;8747:1;8744:13;8741:91;;;8820:1;8815:2;8806:6;8795:9;8791:22;8787:31;8780:42;8741:91;-1:-1:-1;8893:2:1;8872:15;-1:-1:-1;;8868:29:1;8853:45;;;;8900:2;8849:54;;8312:597;-1:-1:-1;;;8312:597:1:o;15399:356::-;15601:2;15583:21;;;15620:18;;;15613:30;15679:34;15674:2;15659:18;;15652:62;15746:2;15731:18;;15399:356::o;17326:347::-;17528:2;17510:21;;;17567:2;17547:18;;;17540:30;17606:25;17601:2;17586:18;;17579:53;17664:2;17649:18;;17326:347::o;18967:980::-;19229:4;19277:3;19266:9;19262:19;19308:6;19297:9;19290:25;19334:2;19372:6;19367:2;19356:9;19352:18;19345:34;19415:3;19410:2;19399:9;19395:18;19388:31;19439:6;19474;19468:13;19505:6;19497;19490:22;19543:3;19532:9;19528:19;19521:26;;19582:2;19574:6;19570:15;19556:29;;19603:1;19613:195;19627:6;19624:1;19621:13;19613:195;;;19692:13;;-1:-1:-1;;;;;19688:39:1;19676:52;;19783:15;;;;19748:12;;;;19724:1;19642:9;19613:195;;;-1:-1:-1;;;;;;;19864:32:1;;;;19859:2;19844:18;;19837:60;-1:-1:-1;;;19928:3:1;19913:19;19906:35;19825:3;18967:980;-1:-1:-1;;;18967:980:1:o;20609:128::-;20649:3;20680:1;20676:6;20673:1;20670:13;20667:39;;;20686:18;;:::i;:::-;-1:-1:-1;20722:9:1;;20609:128::o;20742:217::-;20782:1;20808;20798:132;;20852:10;20847:3;20843:20;20840:1;20833:31;20887:4;20884:1;20877:15;20915:4;20912:1;20905:15;20798:132;-1:-1:-1;20944:9:1;;20742:217::o;20964:422::-;21053:1;21096:5;21053:1;21110:270;21131:7;21121:8;21118:21;21110:270;;;21190:4;21186:1;21182:6;21178:17;21172:4;21169:27;21166:53;;;21199:18;;:::i;:::-;21249:7;21239:8;21235:22;21232:55;;;21269:16;;;;21232:55;21348:22;;;;21308:15;;;;21110:270;;;21114:3;20964:422;;;;;:::o;21391:140::-;21449:5;21478:47;21519:4;21509:8;21505:19;21499:4;21585:5;21615:8;21605:80;;-1:-1:-1;21656:1:1;21670:5;;21605:80;21704:4;21694:76;;-1:-1:-1;21741:1:1;21755:5;;21694:76;21786:4;21804:1;21799:59;;;;21872:1;21867:130;;;;21779:218;;21799:59;21829:1;21820:10;;21843:5;;;21867:130;21904:3;21894:8;21891:17;21888:43;;;21911:18;;:::i;:::-;-1:-1:-1;;21967:1:1;21953:16;;21982:5;;21779:218;;22081:2;22071:8;22068:16;22062:3;22056:4;22053:13;22049:36;22043:2;22033:8;22030:16;22025:2;22019:4;22016:12;22012:35;22009:77;22006:159;;;-1:-1:-1;22118:19:1;;;22150:5;;22006:159;22197:34;22222:8;22216:4;22197:34;:::i;:::-;22267:6;22263:1;22259:6;22255:19;22246:7;22243:32;22240:58;;;22278:18;;:::i;:::-;22316:20;;21536:806;-1:-1:-1;;;21536:806:1:o;22347:168::-;22387:7;22453:1;22449;22445:6;22441:14;22438:1;22435:21;22430:1;22423:9;22416:17;22412:45;22409:71;;;22460:18;;:::i;:::-;-1:-1:-1;22500:9:1;;22347:168::o;22520:125::-;22560:4;22588:1;22585;22582:8;22579:34;;;22593:18;;:::i;:::-;-1:-1:-1;22630:9:1;;22520:125::o;22650:135::-;22689:3;-1:-1:-1;;22710:17:1;;22707:43;;;22730:18;;:::i;:::-;-1:-1:-1;22777:1:1;22766:13;;22650:135::o;22790:127::-;22851:10;22846:3;22842:20;22839:1;22832:31;22882:4;22879:1;22872:15;22906:4;22903:1;22896:15;22922:127;22983:10;22978:3;22974:20;22971:1;22964:31;23014:4;23011:1;23004:15;23038:4;23035:1;23028:15;23054:127;23115:10;23110:3;23106:20;23103:1;23096:31;23146:4;23143:1;23136:15;23170:4;23167:1;23160:15;23186:127;23247:10;23242:3;23238:20;23235:1;23228:31;23278:4;23275:1;23268:15;23302:4;23299:1;23292:15;23318:131;-1:-1:-1;;;;;23393:31:1;;23383:42;;23373:70;;23439:1;23436;23429:12;23454:118;23540:5;23533:13;23526:21;23519:5;23516:32;23506:60;;23562:1;23559;23552:12

Swarm Source

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