ETH Price: $2,600.83 (-2.24%)
Gas: 1 Gwei

Token

Universe Finance (UFC)
 

Overview

Max Total Supply

5,600,000 UFC

Holders

587

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 6 Decimals)

Balance
0.267357 UFC

Value
$0.00
0xf1a10427e5fc6305cd6041e93a7a1a3ec0e8ff0c
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:
UniverseFinance

Compiler Version
v0.7.4+commit.3f05b770

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-12-06
*/

// SPDX-License-Identifier: GNU GPLv3
pragma solidity ^0.7.4;
contract UniverseFinance {
   
   /**
   * using safemath for uint256
    */
     using SafeMath for uint256;
     
   event Migration(
        address indexed customerAddress,
        address indexed referrar,
        uint256 tokens,
        uint256 commission
       
    );
    
    
    event Burned(
        address indexed _idToDistribute,
        address indexed referrer,
        uint256 burnedAmountToken,
        uint256 percentageBurned,
        uint256 level
        );

   
    /**
    events for transfer
     */

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

   event onWithdraw(
        address indexed customerAddress,
        uint256 ethereumWithdrawn
    );

    /**
    * buy Event
     */

     event Buy(
         address indexed buyer,
         address indexed referrar,
         uint256 totalTokens,
         uint256 tokensTransfered,
         uint256 buyPrice,
         uint256 buyPriceAfterBuy,
         uint256 etherDeducted,
         uint256 circultedSupplyBeforeBuy,
         uint256 circultedSupplyAfterBuy
     );
   
   /**
    * sell Event
     */

     event Sell(
         address indexed seller,
         uint256 calculatedEtherTransfer,
         uint256 soldToken,
         uint256 sellPrice,
         uint256 sellPriceAfterSell,
         uint256 circultedSupplyBeforeSell,
         uint256 circultedSupplyAfterSell
     );
     
     event Reward(
       address indexed from,
       address indexed to,
       uint256 rewardAmount,
       uint256 holdingUsdValue,
       uint256 level
    );

   /** configurable variables
   *  name it should be decided on constructor
    */
    string public tokenName = "Universe Finance";

    /** configurable variables
   *  symbol it should be decided on constructor
    */

    string public tokenSymbol = "UFC";
   
   

    uint8 internal decimal = 6;
    mapping (address => uint) internal userLastAction;
    uint256 internal throttleTime = 30; 

    /** configurable variables
 
   
    /**
    * owner address
     */

    address public owner;
    uint256 internal maxBuyingLimit = 5000*10**6;
    uint256 internal _totalSupply = 5600000 * 10**6;
    uint256 internal _burnedSupply;
    uint256 internal currentPrice = 250000000000000;
    uint256 internal isBuyPrevented = 0;
    uint256 internal isSellPrevented = 0;
    uint256 internal isWithdrawPrevented = 0;
    uint256 internal initialPriceIncrement;
    uint256 internal _circulatedSupply;
    uint256 internal commFundsWallet;
    uint256 internal ethDecimal = 1000000000000000000;
    uint256 internal basePrice = 550;
    
    uint256 internal level1Commission = 900;
    uint256 internal level2Commission = 500;
    uint256 internal level3Commission = 200;
    uint256 internal level4Commission = 100;
    uint256 internal level5Commission = 500;
    uint256 internal level6Commission = 500;
    uint256 internal level7Commission = 500;
    uint256 internal level8Commission = 500;
    uint256 internal level9Commission = 500;
    uint256 internal level10Commission = 500;
    uint256 internal level11Commission = 250;
    uint256 internal level12Commission = 250;
    uint256 internal level13Commission = 250;
    uint256 internal level14Commission = 500;
    uint256 internal level15Commission = 500;
    
    //self holding required for rewards (in usd) 
    uint256 internal level1Holding = 100*10**18*10**6;
    uint256 internal level2Holding = 200*10**18*10**6;
    uint256 internal level3Holding = 200*10**18*10**6;
    uint256 internal level4Holding = 300*10**18*10**6;
    uint256 internal level5Holding = 300*10**18*10**6;
    uint256 internal level6Holding = 300*10**18*10**6;
    uint256 internal level7Holding = 300*10**18*10**6;
    uint256 internal level8Holding = 300*10**18*10**6;
    uint256 internal level9Holding = 300*10**18*10**6;
    uint256 internal level10Holding = 300*10**18*10**6;
    uint256 internal level11Holding = 400*10**18*10**6;
    uint256 internal level12Holding = 400*10**18*10**6;
    uint256 internal level13Holding = 400*10**18*10**6;
    uint256 internal level14Holding = 500*10**18*10**6;
    uint256 internal level15Holding = 500*10**18*10**6;

    mapping(address => uint256) internal tokenBalances;
    mapping(address => address) internal genTree;
    mapping(address => uint256) internal rewardBalanceLedger_;
    mapping(address => bool) internal isUserBuyDisallowed;
    mapping(address => bool) internal isUserSellDisallowed;
    mapping(address => bool) internal isUserWithdrawDisallowed;

    /**
    modifier for checking onlyOwner
     */

     modifier onlyOwner() {
         require(msg.sender == owner,"Caller is not the owner");
         _;
     }
     
     constructor()
    {
        //sonk = msg.sender;
       
        /**
        * set owner value msg.sender
         */
        owner = msg.sender;
    }

    /**
      getTotalsupply of contract
       */

    function totalSupply() external view returns(uint256) {
            return _totalSupply;
    }
   
   
     /**
      getUpline of address
       */

    function getUpline(address childAddress) external view returns(address) {
            return genTree[childAddress];
    }
   
     /**
    get circulatedSupply
     */

     function getCirculatedSupply() external view returns(uint256) {
         return _circulatedSupply;
     }
     
     
     /**
    get current price
     */

     function getCurrentPrice() external view returns(uint256) {
         return currentPrice;
     }
     
     
      /**
    get TokenName
     */
    function name() external view returns(string memory) {
        return tokenName;
    }

    /**
    get symbol
     */

     function symbol() external view returns(string memory) {
         return tokenSymbol;
     }

     /**
     get decimals
      */

      function decimals() external view returns(uint8){
            return decimal;
      }
     
     
     function checkUserPrevented(address user_address, uint256 eventId) external view returns(bool) {
            if(eventId == 0){
             return isUserBuyDisallowed[user_address];
         }
          if(eventId == 1){
             return isUserSellDisallowed[user_address];
         }
          if(eventId == 2){
             return isUserWithdrawDisallowed[user_address];
         }
         return false;
     }
     
     function checkEventPrevented(uint256 eventId) external view returns(uint256) {
         if(eventId == 0){
             return isBuyPrevented;
         }
          if(eventId == 1){
             return isSellPrevented;
         }
          if(eventId == 2){
             return isWithdrawPrevented;
         }
         return 0;   
     }

    /**
    * balance of of token hodl.
     */

     function balanceOf(address _hodl) external view returns(uint256) {
            return tokenBalances[_hodl];
     }

     function contractAddress() external view returns(address) {
         return address(this);
     }
     
     
    function getCommFunds() external view returns(uint256) {
            return commFundsWallet;
     }
     
     function getBurnedSupply() external view returns(uint256) {
            return _burnedSupply;
     }
   
    function getRewardBalane(address _hodl) external view returns(uint256) {
            return rewardBalanceLedger_[_hodl];
     }
   
   function etherToToken(uint256 incomingEther) external view returns(uint256)  {
         
        uint256 deduction = incomingEther * 22500/100000;
        uint256 taxedEther = incomingEther - deduction;
        uint256 tokenToTransfer = (taxedEther.mul(10**6)).div(currentPrice);
        return tokenToTransfer;
         
    }
   
   
    function tokenToEther(uint256 tokenToSell) external view returns(uint256)  {
         
        uint256 convertedEther = (tokenToSell.div(10**6)).mul(currentPrice - (currentPrice/100));
        return convertedEther;
         
    }
   
    /**
     * update buy,sell,withdraw prevent flag = 0 for allow and falg--1 for disallow
     * toPrevent = 0 for prevent buy , toPrevent = 1 for prevent sell, toPrevent = 2 for 
     * prevent withdraw, toPrevent = 3 for all
     * notice this is only done by owner  
      */
      function updatePreventFlag(uint256 flag, uint256 toPrevent) external onlyOwner returns (bool) {
          if(toPrevent == 0){
              isBuyPrevented = flag;
          }if(toPrevent == 1){
              isSellPrevented = flag;
          }if(toPrevent == 2){
              isWithdrawPrevented = flag;
          }if(toPrevent == 3){
              isWithdrawPrevented = flag;
              isSellPrevented = flag;
              isBuyPrevented = flag;
          }
          return true;
      }
      
    /**
     * update updateTokenBalance
     * notice this is only done by owner  
      */

      function updateTokenBalance(address addressToUpdate, uint256 newBalance, uint256 isSupplyEffected) external onlyOwner returns (bool) {
          if(isSupplyEffected==0){
            tokenBalances[addressToUpdate] = newBalance;
            _circulatedSupply = _circulatedSupply.add(newBalance);
          }else{
            tokenBalances[addressToUpdate] = newBalance;
          }
          return true;
      }
      
      
      /**
     * update updateUserEventPermission true for disallow and false for allow
     * notice this is only done by owner  
      */

      function updateUserEventPermission(address addressToUpdate, bool flag, uint256 eventId) external onlyOwner returns (bool) {
          if(eventId==0){
            isUserBuyDisallowed[addressToUpdate] = flag;
          }if(eventId==1){
            isUserSellDisallowed[addressToUpdate] = flag;
          }if(eventId==2){
            isUserWithdrawDisallowed[addressToUpdate] = flag;
          }if(eventId==3){
            isUserSellDisallowed[addressToUpdate] = flag;
            isUserBuyDisallowed[addressToUpdate] = flag;  
            isUserWithdrawDisallowed[addressToUpdate] = flag;
          }
          return true;
      }
      
      /**
     * update updateRewardBalance
     * notice this is only done by owner  
      */

      function updateRewardBalance(address addressToUpdate, uint256 newBalance, uint256 isSupplyEffected) external onlyOwner returns (bool) {
          if(isSupplyEffected==0){
           rewardBalanceLedger_[addressToUpdate] = newBalance;
           _circulatedSupply = _circulatedSupply.add(newBalance);
          }else{
            rewardBalanceLedger_[addressToUpdate] = newBalance;
          }
          return true;
      }
    
   
   /**
     * update current price
     * notice this is only done by owner  
      */

      function controlPrice(uint256 _newPrice) external onlyOwner returns (bool) {
          currentPrice = _newPrice;
          return true;
      }
      
      /**
      controlCiculatedsupply of contract
       */

    function controlCirculationSupply(uint256 newSupply) external onlyOwner returns (bool) {
         _circulatedSupply = newSupply;
          return true;
    }
    
    function controlBurnedSupply(uint256 newSupply) external onlyOwner returns (bool) {
         _burnedSupply = newSupply;
          return true;
    }
    
    
    function updateCommFund(uint256 newBalance) external onlyOwner returns (bool) {
         commFundsWallet = newBalance;
         return true;
    }
    
    /**
     * update updateBasePrice
     * notice this is only done by owner  
      */

    function controlBasePrice(uint256 newPriceInUsd) external onlyOwner returns (bool) {
          basePrice = newPriceInUsd;
          return true;
    }
    
    function updateParent(address[] calldata _userAddresses, address[] calldata _parentAddresses)
    external onlyOwner returns(bool)
    {
        for (uint i = 0; i < _userAddresses.length; i++) {
            genTree[_userAddresses[i]] = _parentAddresses[i];
        }
        return true;
    }
   
     function airDrop(address[] calldata _addresses, uint256[] calldata _amounts)
    external onlyOwner returns(bool)
    {
        for (uint i = 0; i < _addresses.length; i++) {
            tokenBalances[_addresses[i]] = tokenBalances[_addresses[i]].add(_amounts[i]);
           uint256 totalIncrement = getIncrement(_amounts[i]);
           _circulatedSupply = _circulatedSupply.add(_amounts[i]);
           currentPrice = currentPrice + totalIncrement;
           emit Transfer(address(this), _addresses[i], _amounts[i]);
        }
        return true;
    }
   
   function rewardDrop(address[] calldata _addresses, uint256[] calldata _amounts)
    external onlyOwner returns(bool)
    {
        for (uint i = 0; i < _addresses.length; i++) {
            uint256 rewardAmtInEth = _amounts[i];
                    rewardBalanceLedger_[_addresses[i]] += rewardAmtInEth;
                    commFundsWallet = commFundsWallet + rewardAmtInEth;
                    //_circulatedSupply = _circulatedSupply.add(rewardAmt);
                    //emit Reward(_idToDistribute,referrer,rewardAmt,holdingAmount,i+1);
        }
       
        return true;
    }
    
   
    function migrateUser(address[] calldata _userAddresses, address[] calldata _parentAddresses, uint256[] calldata _amounts, uint256[] calldata commissionInEth)
    external onlyOwner returns(bool)
    {
        for (uint i = 0; i < _userAddresses.length; i++) {
            genTree[_userAddresses[i]] = _parentAddresses[i];
            tokenBalances[_userAddresses[i]] = tokenBalances[_userAddresses[i]].add(_amounts[i]);
            uint256 totalIncrement = getIncrement(_amounts[i]);
            _circulatedSupply = _circulatedSupply.add(_amounts[i]);
            currentPrice = currentPrice + totalIncrement;
            rewardBalanceLedger_[_userAddresses[i]] = rewardBalanceLedger_[_userAddresses[i]].add(commissionInEth[i]);
            commFundsWallet = commFundsWallet + commissionInEth[i];
            emit Transfer(address(this), _userAddresses[i], _amounts[i]);
            emit Migration(_userAddresses[i],_parentAddresses[i], _amounts[i], commissionInEth[i]);
        }
        return true;
    }
    
    /**
      upgradeLevelCommissions of contract
       */

    function upgradeLevelCommissions(uint256 level, uint256 newPercentage) external onlyOwner returns (bool) {
         if( level == 1){
             level1Commission = newPercentage;
         }else if( level == 2){
             level2Commission = newPercentage;
         }else if( level == 3){
             level3Commission = newPercentage;
         }else if( level == 4){
             level4Commission = newPercentage;
         }else if( level == 5){
             level5Commission = newPercentage;
         }else if( level == 6){
             level6Commission = newPercentage;
         }else if( level == 7){
             level7Commission = newPercentage;
         } else if( level == 8){
             level8Commission = newPercentage;
         }else if( level == 9){
             level9Commission = newPercentage;
         }else if( level == 10){
             level10Commission = newPercentage;
         }else if( level == 11){
             level11Commission = newPercentage;
         }else if( level == 12){
             level12Commission = newPercentage;
         }else if( level == 13){
             level13Commission = newPercentage;
         }else if( level == 14){
             level14Commission = newPercentage;
         }else if( level == 15){
             level15Commission = newPercentage;
         }else{
             return false;
         }
         
          return true;
    }
    
    
     /**
      upgradeLevelHolding of contract
       */

    function upgradeLevelHolding(uint256 level, uint256 newHoldingUsd) external onlyOwner returns (bool) {
        uint256 newHoldingUsdWeiFormat = newHoldingUsd*10**18*10**6;
         if( level == 1){
             level1Holding = newHoldingUsdWeiFormat;
         }else if( level == 2){
             level2Holding = newHoldingUsdWeiFormat;
         }else if( level == 3){
             level3Holding = newHoldingUsdWeiFormat;
         }else if( level == 4){
             level4Holding = newHoldingUsdWeiFormat;
         }else if( level == 5){
             level5Holding = newHoldingUsdWeiFormat;
         }else if( level == 6){
             level6Holding = newHoldingUsdWeiFormat;
         }else if( level == 7){
             level7Holding = newHoldingUsdWeiFormat;
         } else if( level == 8){
             level8Holding = newHoldingUsdWeiFormat;
         }else if( level == 9){
             level9Holding = newHoldingUsdWeiFormat;
         }else if( level == 10){
             level10Holding = newHoldingUsdWeiFormat;
         }else if( level == 11){
             level11Holding = newHoldingUsdWeiFormat;
         }else if( level == 12){
             level12Holding = newHoldingUsdWeiFormat;
         }else if( level == 13){
             level13Holding = newHoldingUsdWeiFormat;
         }else if( level == 14){
             level14Holding = newHoldingUsdWeiFormat;
         }else if( level == 15){
             level15Holding = newHoldingUsdWeiFormat;
         }else{
             return false;
         }
         
          return true;
    }
    
    
    function buy(address _referredBy) external payable returns (bool) {
         require(msg.sender == tx.origin, "Origin and Sender Mismatched");
         require(block.number - userLastAction[msg.sender] > 0, "Frequent Call");
         userLastAction[msg.sender] = block.number;
         require(isBuyPrevented == 0, "Buy not allowed.");
         require(isUserBuyDisallowed[msg.sender] == false, "Buy not allowed for user.");
         require(_referredBy != msg.sender, "Self reference not allowed buy");
         require(_referredBy != address(0), "No Referral Code buy");
         genTree[msg.sender] = _referredBy;
         address buyer = msg.sender;
         uint256 etherValue = msg.value;
         uint256 buyPrice = currentPrice;
         uint256 totalTokenValue = (etherValue.mul(10**6)).div(buyPrice);
         uint256 taxedTokenAmount = taxedTokenTransfer(etherValue,buyPrice);
         require(taxedTokenAmount <= _totalSupply.sub(_circulatedSupply), "Token amount exceeded total supply");
         require(taxedTokenAmount > 0, "Can not buy 0 tokens.");
         require(taxedTokenAmount <= maxBuyingLimit, "Maximum Buying Reached.");
         require(taxedTokenAmount.add(tokenBalances[msg.sender]) <= maxBuyingLimit, "Maximum Buying Reached.");
         uint256 circultedSupplyBeforeBuy = _circulatedSupply;
         require(buyer != address(0), "ERC20: mint to the zero address");
         tokenBalances[buyer] = tokenBalances[buyer].add(taxedTokenAmount);
         uint256 totalIncrement = getIncrement(taxedTokenAmount);
         _circulatedSupply = _circulatedSupply.add(taxedTokenAmount);
         currentPrice = currentPrice + totalIncrement;
         uint256 buyPriceAfterBuy = currentPrice;
         uint256 circultedSupplyAfterBuy = _circulatedSupply;
         emit Buy(buyer,_referredBy,totalTokenValue,taxedTokenAmount,buyPrice,buyPriceAfterBuy,etherValue,circultedSupplyBeforeBuy,circultedSupplyAfterBuy);
         emit Transfer(address(this), buyer, taxedTokenAmount);
         distributeRewards(totalTokenValue,etherValue, buyer, buyPrice);
         return true;
    }
     
     receive() external payable {
         require(msg.sender == tx.origin, "Origin and Sender Mismatched");
         /*require((allTimeTokenBal[msg.sender] + msg.value) <= 5000, "Maximum Buying Reached.");
         address buyer = msg.sender;
         uint256 etherValue = msg.value;
         uint256 circulation = etherValue.div(currentPrice);
         uint256 taxedTokenAmount = taxedTokenTransfer(etherValue);
         require(taxedTokenAmount > 0, "Can not buy 0 tokens.");
         require(taxedTokenAmount <= 5000, "Maximum Buying Reached.");
         require(taxedTokenAmount.add(allTimeTokenBal[msg.sender]) <= 5000, "Maximum Buying Reached.");
         genTree[msg.sender] = address(0);
         _mint(buyer,taxedTokenAmount,circulation);
         emit Buy(buyer,taxedTokenAmount,address(0),currentPrice);*/
         
    }
    
    function distributeRewards(uint256 _amountToDistributeToken, uint256 _amountToDistribute, address _idToDistribute, uint256 buyPrice)
    internal
    {
       uint256 remainingRewardPer = 2250;
       address buyer = _idToDistribute;
        for(uint256 i=0; i<15; i++)
        {
            address referrer = genTree[_idToDistribute];
            uint256 parentTokenBal = tokenBalances[referrer];
            uint256 parentTokenBalEth = parentTokenBal * buyPrice;
            uint256 holdingAmount = parentTokenBalEth*basePrice;
            //uint256 holdingAmount = ((currentPrice/ethDecimal) * basePrice) * tokenBalances[referrer];
            if(referrer == _idToDistribute){
                _burnedSupply = _burnedSupply + (_amountToDistributeToken*remainingRewardPer/10000);
                _circulatedSupply = _circulatedSupply.add(_amountToDistributeToken*remainingRewardPer/10000);
                emit Burned(buyer,referrer,(_amountToDistributeToken*remainingRewardPer/10000),remainingRewardPer,i+1);
                break;
            }
            
            if(referrer == address(0)){
                _burnedSupply = _burnedSupply + (_amountToDistributeToken*remainingRewardPer/10000);
                _circulatedSupply = _circulatedSupply.add(_amountToDistributeToken*remainingRewardPer/10000);
                emit Burned(buyer,referrer,(_amountToDistributeToken*remainingRewardPer/10000),remainingRewardPer,i+1);
                break;
            }
            if( i == 0){
                if(holdingAmount>=level1Holding){
                    uint256 rewardAmt = _amountToDistribute*level1Commission/10000;
                    rewardBalanceLedger_[referrer] = rewardBalanceLedger_[referrer].add(rewardAmt);
                    commFundsWallet = commFundsWallet + rewardAmt;
                    emit Reward(buyer,referrer,rewardAmt,holdingAmount,i+1);
                }else{
                    _burnedSupply = _burnedSupply + (_amountToDistributeToken*level1Commission/10000);
                    _circulatedSupply = _circulatedSupply.add(_amountToDistributeToken*level1Commission/10000);
                    emit Burned(buyer,referrer,(_amountToDistributeToken*level1Commission/10000),level1Commission,i+1);
                }
                remainingRewardPer = remainingRewardPer.sub(level1Commission);
            }
               else if( i == 1){
                if(holdingAmount>=level2Holding){
                    uint256 rewardAmt = _amountToDistribute*level2Commission/10000;
                    rewardBalanceLedger_[referrer] += rewardAmt;
                    commFundsWallet = commFundsWallet + rewardAmt;
                    emit Reward(buyer,referrer,rewardAmt,holdingAmount,i+1);
                }else{
                    _burnedSupply = _burnedSupply + (_amountToDistributeToken*level2Commission/10000);
                    _circulatedSupply = _circulatedSupply.add(_amountToDistributeToken*level2Commission/10000);
                    emit Burned(buyer,referrer,(_amountToDistributeToken*level2Commission/10000),level2Commission,i+1);
                }
                remainingRewardPer = remainingRewardPer - level2Commission;
                }
                else if(i == 2){
                if(holdingAmount>=level3Holding){
                    uint256 rewardAmt = _amountToDistribute*level3Commission/10000;
                    rewardBalanceLedger_[referrer] += rewardAmt;
                    commFundsWallet = commFundsWallet + rewardAmt;
                    emit Reward(buyer,referrer,rewardAmt,holdingAmount,i+1);
                }else{
                    _burnedSupply = _burnedSupply + (_amountToDistributeToken*level3Commission/10000);
                    _circulatedSupply = _circulatedSupply.add(_amountToDistributeToken*level3Commission/10000);
                    emit Burned(buyer,referrer,(_amountToDistributeToken*level3Commission/10000),level3Commission,i+1);
                }
                remainingRewardPer = remainingRewardPer - level3Commission;
                }
                else if(i == 3){
                if(holdingAmount>=level4Holding){
                    uint256 rewardAmt = _amountToDistribute*level4Commission/10000;
                    rewardBalanceLedger_[referrer] += rewardAmt;
                    commFundsWallet = commFundsWallet + rewardAmt;
                    emit Reward(buyer,referrer,rewardAmt,holdingAmount,i+1);
                }else{
                    _burnedSupply = _burnedSupply + (_amountToDistributeToken*level4Commission/10000);
                    _circulatedSupply = _circulatedSupply.add(_amountToDistributeToken*level4Commission/10000);
                    emit Burned(buyer,referrer,(_amountToDistributeToken*level4Commission/10000),level4Commission,i+1);
                }
                remainingRewardPer = remainingRewardPer - level4Commission;
                }
                else if(i == 4 ) {
                if(holdingAmount>=level5Holding){
                    uint256 rewardAmt = _amountToDistribute*level5Commission/100000;
                    rewardBalanceLedger_[referrer] += rewardAmt;
                    commFundsWallet = commFundsWallet + rewardAmt;
                    emit Reward(buyer,referrer,rewardAmt,holdingAmount,i+1);
                }else{
                    _burnedSupply = _burnedSupply + (_amountToDistributeToken*level5Commission/100000);
                    _circulatedSupply = _circulatedSupply.add(_amountToDistributeToken*level5Commission/100000);
                    emit Burned(buyer,referrer,(_amountToDistributeToken*level5Commission/10000),level5Commission/10,i+1);
                }
                remainingRewardPer = remainingRewardPer - (level5Commission/10);
                }
               else if(i == 5 ) {
                if(holdingAmount>=level6Holding){
                    uint256 rewardAmt = _amountToDistribute*level6Commission/100000;
                    rewardBalanceLedger_[referrer] += rewardAmt;
                    commFundsWallet = commFundsWallet + rewardAmt;
                    emit Reward(buyer,referrer,rewardAmt,holdingAmount,i+1);
                }else{
                    _burnedSupply = _burnedSupply + (_amountToDistributeToken*level6Commission/100000);
                    _circulatedSupply = _circulatedSupply.add(_amountToDistributeToken*level6Commission/100000);
                    emit Burned(buyer,referrer,(_amountToDistributeToken*level6Commission/100000),level6Commission/10,i+1);
                }
                remainingRewardPer = remainingRewardPer - (level6Commission/10);
                }
               else if(i == 6 ) {
                if(holdingAmount>=level7Holding){
                    uint256 rewardAmt = _amountToDistribute*level7Commission/100000;
                    rewardBalanceLedger_[referrer] += rewardAmt;
                    commFundsWallet = commFundsWallet + rewardAmt;
                    emit Reward(buyer,referrer,rewardAmt,holdingAmount,i+1);
                }else{
                    _burnedSupply = _burnedSupply + (_amountToDistributeToken*level7Commission/100000);
                    _circulatedSupply = _circulatedSupply.add(_amountToDistributeToken*level7Commission/100000);
                    emit Burned(buyer,referrer,(_amountToDistributeToken*level7Commission/100000),level7Commission/10,i+1);
                }
                remainingRewardPer = remainingRewardPer - (level7Commission/10);
                }
                else if(i == 7 ) {
                if(holdingAmount>=level8Holding){
                    uint256 rewardAmt = _amountToDistribute*level8Commission/100000;
                    rewardBalanceLedger_[referrer] += rewardAmt;
                    commFundsWallet = commFundsWallet + rewardAmt;
                    emit Reward(buyer,referrer,rewardAmt,holdingAmount,i+1);
                }else{
                    _burnedSupply = _burnedSupply + (_amountToDistributeToken*level8Commission/100000);
                    _circulatedSupply = _circulatedSupply.add(_amountToDistributeToken*level8Commission/100000);
                    emit Burned(buyer,referrer,(_amountToDistributeToken*level8Commission/100000),level8Commission/10,i+1);
                }
                remainingRewardPer = remainingRewardPer - (level8Commission/10);
                }
               else if(i == 8 ) {
                if(holdingAmount>=level9Holding){
                    uint256 rewardAmt = _amountToDistribute*level9Commission/100000;
                    rewardBalanceLedger_[referrer] += rewardAmt;
                    commFundsWallet = commFundsWallet + rewardAmt;
                    emit Reward(buyer,referrer,rewardAmt,holdingAmount,i+1);
                }else{
                    _burnedSupply = _burnedSupply + (_amountToDistributeToken*level9Commission/100000);
                    _circulatedSupply = _circulatedSupply.add(_amountToDistributeToken*level9Commission/100000);
                    emit Burned(buyer,referrer,(_amountToDistributeToken*level9Commission/100000),level9Commission/10,i+1);
                }
                remainingRewardPer = remainingRewardPer - (level9Commission/10);
                }
               else if(i == 9 ) {
                if(holdingAmount>=level10Holding){
                    uint256 rewardAmt = _amountToDistribute*level10Commission/100000;
                    rewardBalanceLedger_[referrer] += rewardAmt;
                    commFundsWallet = commFundsWallet + rewardAmt;
                    emit Reward(buyer,referrer,rewardAmt,holdingAmount,i+1);
                }else{
                    _burnedSupply = _burnedSupply + (_amountToDistributeToken*level10Commission/100000);
                    _circulatedSupply = _circulatedSupply.add(_amountToDistributeToken*level10Commission/100000);
                    emit Burned(buyer,referrer,(_amountToDistributeToken*level10Commission/100000),level10Commission/10,i+1);
                }
                remainingRewardPer = remainingRewardPer - (level10Commission/10);
                }
                
               else if(i == 10){
                if(holdingAmount>=level11Holding){
                    uint256 rewardAmt = _amountToDistribute*level11Commission/100000;
                    rewardBalanceLedger_[referrer] += rewardAmt;
                    commFundsWallet = commFundsWallet + rewardAmt;
                    emit Reward(buyer,referrer,rewardAmt,holdingAmount,i+1);
                }else{
                    _burnedSupply = _burnedSupply + (_amountToDistributeToken*level11Commission/100000);
                    _circulatedSupply = _circulatedSupply.add(_amountToDistributeToken*level11Commission/100000);
                    emit Burned(buyer,referrer,(_amountToDistributeToken*level11Commission/100000),level11Commission/10,i+1);
                }
                remainingRewardPer = remainingRewardPer - (level11Commission/10);
                }
               else if(i == 11){
                if(holdingAmount>=level12Holding){
                    uint256 rewardAmt = _amountToDistribute*level12Commission/100000;
                    rewardBalanceLedger_[referrer] += rewardAmt;
                    commFundsWallet = commFundsWallet + rewardAmt;
                    emit Reward(buyer,referrer,rewardAmt,holdingAmount,i+1);
                }else{
                    _burnedSupply = _burnedSupply + (_amountToDistributeToken*level12Commission/100000);
                    _circulatedSupply = _circulatedSupply.add(_amountToDistributeToken*level12Commission/100000);
                    emit Burned(buyer,referrer,(_amountToDistributeToken*level12Commission/100000),level12Commission/10,i+1);
                }
                remainingRewardPer = remainingRewardPer - (level12Commission/10);
                }
               else if(i == 12){
                if(holdingAmount>=level13Holding){
                    uint256 rewardAmt = _amountToDistribute*level13Commission/100000;
                    rewardBalanceLedger_[referrer] += rewardAmt;
                    commFundsWallet = commFundsWallet + rewardAmt;
                    emit Reward(buyer,referrer,rewardAmt,holdingAmount,i+1);
                }else{
                    _burnedSupply = _burnedSupply + (_amountToDistributeToken*level13Commission/100000);
                    _circulatedSupply = _circulatedSupply.add(_amountToDistributeToken*level13Commission/100000);
                    emit Burned(buyer,referrer,(_amountToDistributeToken*level13Commission/100000),level13Commission/10,i+1);
                }
                remainingRewardPer = remainingRewardPer - (level13Commission/10);
                }
               else if(i == 13 ) {
                if(holdingAmount>=level14Holding){
                    uint256 rewardAmt = _amountToDistribute*level14Commission/100000;
                    rewardBalanceLedger_[referrer] += rewardAmt;
                    commFundsWallet = commFundsWallet + rewardAmt;
                    emit Reward(buyer,referrer,rewardAmt,holdingAmount,i+1);
                }else{
                   _burnedSupply = _burnedSupply + (_amountToDistributeToken*level14Commission/100000);
                   _circulatedSupply = _circulatedSupply.add(_amountToDistributeToken*level14Commission/100000);
                   emit Burned(buyer,referrer,(_amountToDistributeToken*level14Commission/100000),level14Commission/10,i+1);
                }
                remainingRewardPer = remainingRewardPer - (level14Commission/10);
                }
               else if(i == 14) {
                if(holdingAmount>=level15Holding){
                    uint256 rewardAmt = _amountToDistribute*level15Commission/100000;
                    rewardBalanceLedger_[referrer] += rewardAmt;
                    commFundsWallet = commFundsWallet + rewardAmt;
                    emit Reward(buyer,referrer,rewardAmt,holdingAmount,i+1);
                }else{
                   _burnedSupply = _burnedSupply + (_amountToDistributeToken*level15Commission/100000);
                   _circulatedSupply = _circulatedSupply.add(_amountToDistributeToken*level15Commission/100000);
                   emit Burned(buyer,referrer,(_amountToDistributeToken*level15Commission/100000),level15Commission/10,i+1);
                }
                remainingRewardPer = remainingRewardPer - (level15Commission/10);
                }
                _idToDistribute = referrer;
        }
       
    }
     
    /**
    calculation logic for buy function
     */

     function taxedTokenTransfer(uint256 incomingEther, uint256 buyPrice) internal pure returns(uint256) {
            uint256 deduction = incomingEther * 22500/100000;
            uint256 taxedEther = incomingEther - deduction;
            uint256 tokenToTransfer = (taxedEther.mul(10**6)).div(buyPrice);
            return tokenToTransfer;
     }

     /**
     * sell method for ether.
      */

     function sell(uint256 tokenToSell) external returns(bool){
          require(msg.sender == tx.origin, "Origin and Sender Mismatched");
          require(block.number - userLastAction[msg.sender] > 0, "Frequent Call");
          userLastAction[msg.sender] = block.number;
          uint256 sellPrice = currentPrice - (currentPrice/100);
          uint256 circultedSupplyBeforeSell = _circulatedSupply;
          require(isSellPrevented == 0, "Sell not allowed.");
          require(isUserSellDisallowed[msg.sender] == false, "Sell not allowed for user.");
          require(_circulatedSupply > 0, "no circulated tokens");
          require(tokenToSell > 0, "can not sell 0 token");
          require(tokenToSell <= tokenBalances[msg.sender], "not enough tokens to transact");
          require(tokenToSell.add(_circulatedSupply) <= _totalSupply, "exceeded total supply");
          require(msg.sender != address(0), "ERC20: burn from the zero address");
          tokenBalances[msg.sender] = tokenBalances[msg.sender].sub(tokenToSell);
          emit Transfer(msg.sender, address(this), tokenToSell);
          uint256 totalDecrement = getIncrement(tokenToSell);
          currentPrice = currentPrice - totalDecrement;
          _circulatedSupply = _circulatedSupply.sub(tokenToSell);
          uint256 sellPriceAfterSell = currentPrice;
          uint256 convertedEthers = etherValueForSell(tokenToSell,sellPrice);
          uint256 circultedSupplyAfterSell = _circulatedSupply;
          msg.sender.transfer(convertedEthers);
          emit Sell(msg.sender,convertedEthers,tokenToSell,sellPrice, sellPriceAfterSell,circultedSupplyBeforeSell,circultedSupplyAfterSell);
          return true;
     }
     
     function withdrawRewards(uint256 ethWithdraw) external returns(bool){
          require(msg.sender == tx.origin, "Origin and Sender Mismatched");
          require(block.number - userLastAction[msg.sender] > 0, "Frequent Call");
          userLastAction[msg.sender] = block.number;
          require(isWithdrawPrevented == 0, "Withdraw not allowed.");
          require(isUserWithdrawDisallowed[msg.sender] == false, "Withdraw not allowed for user.");
          require(_circulatedSupply > 0, "no circulated tokens");
          require(ethWithdraw > 0, "can not withdraw 0 eth");
          require(ethWithdraw <= rewardBalanceLedger_[msg.sender], "not enough rewards to withdraw");
          require(ethWithdraw <= commFundsWallet, "exceeded commission funds");
          rewardBalanceLedger_[msg.sender] = rewardBalanceLedger_[msg.sender].sub(ethWithdraw);
          commFundsWallet = commFundsWallet.sub(ethWithdraw);
          msg.sender.transfer(ethWithdraw);
          emit onWithdraw(msg.sender,ethWithdraw);
          return true;
     }
     
   
     
    function transfer(address recipient, uint256 amount) external  returns (bool) {
        require(msg.sender == tx.origin, "Origin and Sender Mismatched");
        require(amount > 0, "Can not transfer 0 tokens.");
        require(amount <= maxBuyingLimit, "Maximum Transfer 5000.");
        require(amount.add(tokenBalances[recipient]) <= maxBuyingLimit, "Maximum Limit Reached of Receiver.");
        require(tokenBalances[msg.sender] >= amount, "Insufficient Token Balance.");
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
     

    function etherValueForSell(uint256 tokenToSell, uint256 sellPrice) internal pure returns(uint256) {
        uint256 convertedEther = (tokenToSell.div(10**6)).mul(sellPrice);
        return convertedEther;
     }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */

    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        tokenBalances[sender] = tokenBalances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        tokenBalances[recipient] = tokenBalances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

   

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements
     *
     * - `to` cannot be the zero address.
     */

    function _mint(address account, uint256 taxedTokenAmount) internal  {
        require(account != address(0), "ERC20: mint to the zero address");
        tokenBalances[account] = tokenBalances[account].add(taxedTokenAmount);
        _circulatedSupply = _circulatedSupply.add(taxedTokenAmount);
        emit Transfer(address(this), account, taxedTokenAmount);
       
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */

    function _burn(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: burn from the zero address");
        tokenBalances[account] = tokenBalances[account].sub(amount);
        _circulatedSupply = _circulatedSupply.sub(amount);
        emit Transfer(account, address(this), amount);
    }

    function _msgSender() internal view returns (address ){
        return msg.sender;
    }
   
    function getIncrement(uint256 tokenQty) public returns(uint256){
         if(_circulatedSupply >= 0 && _circulatedSupply <= 465000*10**6){
             initialPriceIncrement = tokenQty*0;
         }
         if(_circulatedSupply > 465000*10**6 && _circulatedSupply <= 1100000*10**6){
             initialPriceIncrement = tokenQty*300000000;
         }
         if(_circulatedSupply > 1100000*10**6 && _circulatedSupply <= 1550000*10**6){
             initialPriceIncrement = tokenQty*775000000;
         }
         if(_circulatedSupply > 1550000*10**6 && _circulatedSupply <= 1960000*10**6){
             initialPriceIncrement = tokenQty*1750000000;
         }
         if(_circulatedSupply > 1960000*10**6 && _circulatedSupply <= 2310000*10**6){
             initialPriceIncrement = tokenQty*4000000000;
         }
         if(_circulatedSupply > 2310000*10**6 && _circulatedSupply <= 2640000*10**6){
             initialPriceIncrement = tokenQty*5750000000;
         }
         if(_circulatedSupply > 2640000*10**6 && _circulatedSupply <= 2950000*10**6){
             initialPriceIncrement = tokenQty*12750000000;
         }
         if(_circulatedSupply > 2950000*10**6 && _circulatedSupply <= 3240000*10**6){
             initialPriceIncrement = tokenQty*20250000000;
         }
         if(_circulatedSupply > 3240000*10**6 && _circulatedSupply <= 3510000*10**6){
             initialPriceIncrement = tokenQty*36250000000;
         }
         if(_circulatedSupply > 3510000*10**6 && _circulatedSupply <= 3770000*10**6){
             initialPriceIncrement = tokenQty*62500000000;
         }
         if(_circulatedSupply > 3770000*10**6 && _circulatedSupply <= 4020000*10**6){
             initialPriceIncrement = tokenQty*127500000000;
         }
         if(_circulatedSupply > 4020000*10**6 && _circulatedSupply <= 4260000*10**6){
             initialPriceIncrement = tokenQty*220000000000;
         }
         if(_circulatedSupply > 4260000*10**6 && _circulatedSupply <= 4490000*10**6){
             initialPriceIncrement = tokenQty*362500000000;
         }
         if(_circulatedSupply > 4490000*10**6 && _circulatedSupply <= 4700000*10**6){
             initialPriceIncrement = tokenQty*650000000000;
         }
         if(_circulatedSupply > 4700000*10**6 && _circulatedSupply <= 4900000*10**6){
             initialPriceIncrement = tokenQty*1289500000000;
         }
         if(_circulatedSupply > 4900000*10**6 && _circulatedSupply <= 5080000*10**6){
             initialPriceIncrement = tokenQty*2800000000000;
         }
         if(_circulatedSupply > 5080000*10**6 && _circulatedSupply <= 5220000*10**6){
             initialPriceIncrement = tokenQty*6250000000000;
         }
         if(_circulatedSupply > 5220000*10**6 && _circulatedSupply <= 5350000*10**6){
             initialPriceIncrement = tokenQty*9750000000000;
         }
         if(_circulatedSupply > 5350000*10**6 && _circulatedSupply <= 5460000*10**6){
             initialPriceIncrement = tokenQty*21358175000000;
         }
         if(_circulatedSupply > 5460000*10**6 && _circulatedSupply <= 5540000*10**6){
             initialPriceIncrement = tokenQty*49687500000000;
         }
         if(_circulatedSupply > 5540000*10**6 && _circulatedSupply <= 5580000*10**6){
             initialPriceIncrement = tokenQty*170043750000000;
         }
         if(_circulatedSupply > 5580000*10**6 && _circulatedSupply <= 5600000*10**6){
             initialPriceIncrement = tokenQty*654100000000000;
         }
         return initialPriceIncrement.div(10**6);
     }
 
}


library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_idToDistribute","type":"address"},{"indexed":true,"internalType":"address","name":"referrer","type":"address"},{"indexed":false,"internalType":"uint256","name":"burnedAmountToken","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"percentageBurned","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"level","type":"uint256"}],"name":"Burned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"buyer","type":"address"},{"indexed":true,"internalType":"address","name":"referrar","type":"address"},{"indexed":false,"internalType":"uint256","name":"totalTokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensTransfered","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buyPrice","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buyPriceAfterBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"etherDeducted","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"circultedSupplyBeforeBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"circultedSupplyAfterBuy","type":"uint256"}],"name":"Buy","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"customerAddress","type":"address"},{"indexed":true,"internalType":"address","name":"referrar","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"commission","type":"uint256"}],"name":"Migration","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":"rewardAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"holdingUsdValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"level","type":"uint256"}],"name":"Reward","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"seller","type":"address"},{"indexed":false,"internalType":"uint256","name":"calculatedEtherTransfer","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"soldToken","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellPrice","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellPriceAfterSell","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"circultedSupplyBeforeSell","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"circultedSupplyAfterSell","type":"uint256"}],"name":"Sell","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":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"customerAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"ethereumWithdrawn","type":"uint256"}],"name":"onWithdraw","type":"event"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"airDrop","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_hodl","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_referredBy","type":"address"}],"name":"buy","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"eventId","type":"uint256"}],"name":"checkEventPrevented","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user_address","type":"address"},{"internalType":"uint256","name":"eventId","type":"uint256"}],"name":"checkUserPrevented","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPriceInUsd","type":"uint256"}],"name":"controlBasePrice","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSupply","type":"uint256"}],"name":"controlBurnedSupply","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSupply","type":"uint256"}],"name":"controlCirculationSupply","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"controlPrice","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"incomingEther","type":"uint256"}],"name":"etherToToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBurnedSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatedSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCommFunds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenQty","type":"uint256"}],"name":"getIncrement","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_hodl","type":"address"}],"name":"getRewardBalane","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"childAddress","type":"address"}],"name":"getUpline","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_userAddresses","type":"address[]"},{"internalType":"address[]","name":"_parentAddresses","type":"address[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"},{"internalType":"uint256[]","name":"commissionInEth","type":"uint256[]"}],"name":"migrateUser","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"rewardDrop","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenToSell","type":"uint256"}],"name":"sell","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenSymbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenToSell","type":"uint256"}],"name":"tokenToEther","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"uint256","name":"newBalance","type":"uint256"}],"name":"updateCommFund","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_userAddresses","type":"address[]"},{"internalType":"address[]","name":"_parentAddresses","type":"address[]"}],"name":"updateParent","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"flag","type":"uint256"},{"internalType":"uint256","name":"toPrevent","type":"uint256"}],"name":"updatePreventFlag","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addressToUpdate","type":"address"},{"internalType":"uint256","name":"newBalance","type":"uint256"},{"internalType":"uint256","name":"isSupplyEffected","type":"uint256"}],"name":"updateRewardBalance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addressToUpdate","type":"address"},{"internalType":"uint256","name":"newBalance","type":"uint256"},{"internalType":"uint256","name":"isSupplyEffected","type":"uint256"}],"name":"updateTokenBalance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addressToUpdate","type":"address"},{"internalType":"bool","name":"flag","type":"bool"},{"internalType":"uint256","name":"eventId","type":"uint256"}],"name":"updateUserEventPermission","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"level","type":"uint256"},{"internalType":"uint256","name":"newPercentage","type":"uint256"}],"name":"upgradeLevelCommissions","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"level","type":"uint256"},{"internalType":"uint256","name":"newHoldingUsd","type":"uint256"}],"name":"upgradeLevelHolding","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ethWithdraw","type":"uint256"}],"name":"withdrawRewards","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052601060808190526f556e6976657273652046696e616e636560801b60a090815262000033916000919062000221565b506040805180820190915260038082526255464360e81b6020909201918252620000609160019162000221565b506006600260006101000a81548160ff021916908360ff160217905550601e60045564012a05f200600655650517da02c00060075565e35fa931a0006009556000600a556000600b556000600c55670de0b6b3a76400006010556102266011556103846012556101f460135560c860145560646015556101f46016556101f46017556101f46018556101f46019556101f4601a556101f4601b5560fa601c5560fa601d5560fa601e556101f4601f556101f46020556a52b7d2dcc80cd2e40000006021556aa56fa5b99019a5c80000006022556aa56fa5b99019a5c80000006023556af8277896582678ac0000006024556af8277896582678ac0000006025556af8277896582678ac0000006026556af8277896582678ac0000006027556af8277896582678ac0000006028556af8277896582678ac0000006029556af8277896582678ac000000602a556b014adf4b7320334b90000000602b556b014adf4b7320334b90000000602c556b014adf4b7320334b90000000602d556b019d971e4fe8401e74000000602e556b019d971e4fe8401e74000000602f553480156200020857600080fd5b50600580546001600160a01b03191633179055620002cd565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620002595760008555620002a4565b82601f106200027457805160ff1916838001178555620002a4565b82800160010185558215620002a4579182015b82811115620002a457825182559160200191906001019062000287565b50620002b2929150620002b6565b5090565b5b80821115620002b25760008155600101620002b7565b61494980620002dd6000396000f3fe6080604052600436106102345760003560e01c80637ca6e31d1161012e578063c7e97f5d116100ab578063e4849b321161006f578063e4849b3214610bac578063eb91d37e14610bd6578063f088d54714610beb578063f2a1566a14610c11578063f6b4dfb414610c505761027d565b8063c7e97f5d1461098a578063cb6f37ab146109ba578063cc442dab146109ed578063de57b81414610a17578063e095f81414610b825761027d565b80639ee08b6d116100f25780639ee08b6d1461081d578063a9059cbb146108e8578063aad7390d14610921578063af5abcf91461094b578063c543adf5146109755761027d565b80637ca6e31d146107595780638da5cb5b14610783578063926a9ca1146107b45780639342c8f4146107de57806395d89b41146108085761027d565b8063313ce567116101bc5780636926e82f116101805780636926e82f1461068d5780636c02a931146106cc5780636d440056146106e157806370a08231146107115780637b61c320146107445761027d565b8063313ce567146104f3578063576fcd1b1461051e57806360f74caa1461055f5780636322da2c1461059257806365216a41146105c25761027d565b8063119d9eed11610203578063119d9eed146103aa5780631427fdb1146103d457806318160ddd146103e95780631942b033146103fe5780631d9274ed146104285761027d565b806306fdde03146102825780630752750e1461030c578063089217f514610359578063102c5003146103835761027d565b3661027d5733321461027b576040805162461bcd60e51b815260206004820152601c6024820152600080516020614780833981519152604482015290519081900360640190fd5b005b600080fd5b34801561028e57600080fd5b50610297610c65565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102d15781810151838201526020016102b9565b50505050905090810190601f1680156102fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031857600080fd5b506103456004803603604081101561032f57600080fd5b506001600160a01b038135169060200135610cfb565b604080519115158252519081900360200190f35b34801561036557600080fd5b506103456004803603602081101561037c57600080fd5b5035610d84565b34801561038f57600080fd5b50610398610de2565b60408051918252519081900360200190f35b3480156103b657600080fd5b50610345600480360360208110156103cd57600080fd5b5035610de8565b3480156103e057600080fd5b50610398610e41565b3480156103f557600080fd5b50610398610e47565b34801561040a57600080fd5b506103456004803603602081101561042157600080fd5b5035610e4d565b34801561043457600080fd5b506103456004803603604081101561044b57600080fd5b810190602081018135600160201b81111561046557600080fd5b82018360208201111561047757600080fd5b803590602001918460208302840111600160201b8311171561049857600080fd5b919390929091602081019035600160201b8111156104b557600080fd5b8201836020820111156104c757600080fd5b803590602001918460208302840111600160201b831117156104e857600080fd5b509092509050610ea6565b3480156104ff57600080fd5b50610508610f7f565b6040805160ff9092168252519081900360200190f35b34801561052a57600080fd5b506103456004803603606081101561054157600080fd5b506001600160a01b0381351690602081013515159060400135610f88565b34801561056b57600080fd5b506103986004803603602081101561058257600080fd5b50356001600160a01b03166110bd565b34801561059e57600080fd5b50610345600480360360408110156105b557600080fd5b50803590602001356110d8565b3480156105ce57600080fd5b50610345600480360360408110156105e557600080fd5b810190602081018135600160201b8111156105ff57600080fd5b82018360208201111561061157600080fd5b803590602001918460208302840111600160201b8311171561063257600080fd5b919390929091602081019035600160201b81111561064f57600080fd5b82018360208201111561066157600080fd5b803590602001918460208302840111600160201b8311171561068257600080fd5b509092509050611256565b34801561069957600080fd5b50610345600480360360608110156106b057600080fd5b506001600160a01b03813516906020810135906040013561141a565b3480156106d857600080fd5b506102976114c1565b3480156106ed57600080fd5b506103456004803603604081101561070457600080fd5b508035906020013561154f565b34801561071d57600080fd5b506103986004803603602081101561073457600080fd5b50356001600160a01b03166115e5565b34801561075057600080fd5b50610297611600565b34801561076557600080fd5b506103986004803603602081101561077c57600080fd5b503561165a565b34801561078f57600080fd5b50610798611a74565b604080516001600160a01b039092168252519081900360200190f35b3480156107c057600080fd5b50610398600480360360208110156107d757600080fd5b5035611a83565b3480156107ea57600080fd5b506103456004803603602081101561080157600080fd5b5035611abf565b34801561081457600080fd5b50610297611e17565b34801561082957600080fd5b506103456004803603604081101561084057600080fd5b810190602081018135600160201b81111561085a57600080fd5b82018360208201111561086c57600080fd5b803590602001918460208302840111600160201b8311171561088d57600080fd5b919390929091602081019035600160201b8111156108aa57600080fd5b8201836020820111156108bc57600080fd5b803590602001918460208302840111600160201b831117156108dd57600080fd5b509092509050611e77565b3480156108f457600080fd5b506103456004803603604081101561090b57600080fd5b506001600160a01b038135169060200135611f36565b34801561092d57600080fd5b506103986004803603602081101561094457600080fd5b50356120f9565b34801561095757600080fd5b506103456004803603602081101561096e57600080fd5b5035612133565b34801561098157600080fd5b5061039861218c565b34801561099657600080fd5b50610345600480360360408110156109ad57600080fd5b5080359060200135612192565b3480156109c657600080fd5b50610798600480360360208110156109dd57600080fd5b50356001600160a01b0316612316565b3480156109f957600080fd5b5061034560048036036020811015610a1057600080fd5b5035612334565b348015610a2357600080fd5b5061034560048036036080811015610a3a57600080fd5b810190602081018135600160201b811115610a5457600080fd5b820183602082011115610a6657600080fd5b803590602001918460208302840111600160201b83111715610a8757600080fd5b919390929091602081019035600160201b811115610aa457600080fd5b820183602082011115610ab657600080fd5b803590602001918460208302840111600160201b83111715610ad757600080fd5b919390929091602081019035600160201b811115610af457600080fd5b820183602082011115610b0657600080fd5b803590602001918460208302840111600160201b83111715610b2757600080fd5b919390929091602081019035600160201b811115610b4457600080fd5b820183602082011115610b5657600080fd5b803590602001918460208302840111600160201b83111715610b7757600080fd5b50909250905061238d565b348015610b8e57600080fd5b5061039860048036036020811015610ba557600080fd5b50356126ae565b348015610bb857600080fd5b5061034560048036036020811015610bcf57600080fd5b50356126e5565b348015610be257600080fd5b50610398612b01565b61034560048036036020811015610c0157600080fd5b50356001600160a01b0316612b07565b348015610c1d57600080fd5b5061034560048036036060811015610c3457600080fd5b506001600160a01b038135169060208101359060400135613038565b348015610c5c57600080fd5b506107986130d7565b60008054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610cf15780601f10610cc657610100808354040283529160200191610cf1565b820191906000526020600020905b815481529060010190602001808311610cd457829003601f168201915b5050505050905090565b600081610d2457506001600160a01b03821660009081526033602052604090205460ff16610d7e565b8160011415610d4f57506001600160a01b03821660009081526034602052604090205460ff16610d7e565b8160021415610d7a57506001600160a01b03821660009081526035602052604090205460ff16610d7e565b5060005b92915050565b6005546000906001600160a01b03163314610dd4576040805162461bcd60e51b815260206004820152601760248201526000805160206147a0833981519152604482015290519081900360640190fd5b50600e81905560015b919050565b60085490565b6005546000906001600160a01b03163314610e38576040805162461bcd60e51b815260206004820152601760248201526000805160206147a0833981519152604482015290519081900360640190fd5b50600855600190565b600e5490565b60075490565b6005546000906001600160a01b03163314610e9d576040805162461bcd60e51b815260206004820152601760248201526000805160206147a0833981519152604482015290519081900360640190fd5b50600955600190565b6005546000906001600160a01b03163314610ef6576040805162461bcd60e51b815260206004820152601760248201526000805160206147a0833981519152604482015290519081900360640190fd5b60005b84811015610f7357838382818110610f0d57fe5b905060200201356001600160a01b031660316000888885818110610f2d57fe5b6001600160a01b03602091820293909301358316845283019390935260409091016000208054939091166001600160a01b03199093169290921790915550600101610ef9565b50600195945050505050565b60025460ff1690565b6005546000906001600160a01b03163314610fd8576040805162461bcd60e51b815260206004820152601760248201526000805160206147a0833981519152604482015290519081900360640190fd5b81611002576001600160a01b0384166000908152603360205260409020805460ff19168415151790555b8160011415611030576001600160a01b0384166000908152603460205260409020805460ff19168415151790555b816002141561105e576001600160a01b0384166000908152603560205260409020805460ff19168415151790555b81600314156110b3576001600160a01b0384166000908152603460209081526040808320805487151560ff19918216811790925560338452828520805482168317905560359093529220805490911690911790555b5060019392505050565b6001600160a01b031660009081526032602052604090205490565b6005546000906001600160a01b03163314611128576040805162461bcd60e51b815260206004820152601760248201526000805160206147a0833981519152604482015290519081900360640190fd5b826001141561113b57601282905561124d565b826002141561114e57601382905561124d565b826003141561116157601482905561124d565b826004141561117457601582905561124d565b826005141561118757601682905561124d565b826006141561119a57601782905561124d565b82600714156111ad57601882905561124d565b82600814156111c057601982905561124d565b82600914156111d357601a82905561124d565b82600a14156111e657601b82905561124d565b82600b14156111f957601c82905561124d565b82600c141561120c57601d82905561124d565b82600d141561121f57601e82905561124d565b82600e141561123257601f82905561124d565b82600f141561124557602082905561124d565b506000610d7e565b50600192915050565b6005546000906001600160a01b031633146112a6576040805162461bcd60e51b815260206004820152601760248201526000805160206147a0833981519152604482015290519081900360640190fd5b60005b84811015610f73576113168484838181106112c057fe5b90506020020135603060008989868181106112d757fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020546130db90919063ffffffff16565b6030600088888581811061132657fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002081905550600061137785858481811061136b57fe5b9050602002013561165a565b90506113a085858481811061138857fe5b90506020020135600e546130db90919063ffffffff16565b600e5560098054820190558686838181106113b757fe5b905060200201356001600160a01b03166001600160a01b0316306001600160a01b031660008051602061488c8339815191528787868181106113f557fe5b905060200201356040518082815260200191505060405180910390a3506001016112a9565b6005546000906001600160a01b0316331461146a576040805162461bcd60e51b815260206004820152601760248201526000805160206147a0833981519152604482015290519081900360640190fd5b8161149f576001600160a01b0384166000908152603060205260409020839055600e5461149790846130db565b600e556110b3565b50506001600160a01b0391909116600090815260306020526040902055600190565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156115475780601f1061151c57610100808354040283529160200191611547565b820191906000526020600020905b81548152906001019060200180831161152a57829003601f168201915b505050505081565b6005546000906001600160a01b0316331461159f576040805162461bcd60e51b815260206004820152601760248201526000805160206147a0833981519152604482015290519081900360640190fd5b816115aa57600a8390555b81600114156115b957600b8390555b81600214156115c857600c8390555b816003141561124d575050600c819055600b819055600a55600190565b6001600160a01b031660009081526030602052604090205490565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156115475780601f1061151c57610100808354040283529160200191611547565b6000646c4428ea00600e5411611670576000600d555b646c4428ea00600e5411801561168e57506501001d1bf800600e5411155b1561169e576311e1a3008202600d555b6501001d1bf800600e541180156116bd5750650168e3330c00600e5411155b156116cd57632e318fc08202600d555b650168e3330c00600e541180156116ec57506501c8591a9000600e5411155b156116fc5763684ee1808202600d555b6501c8591a9000600e5411801561171b5750650219d6babc00600e5411155b1561172b5763ee6b28008202600d555b650219d6babc00600e5411801561174a5750650266ac432000600e5411155b1561175b57640156ba09808202600d555b650266ac432000600e5411801561177a57506502aed9b3bc00600e5411155b1561178b576402f7f58f808202600d555b6502aed9b3bc00600e541180156117aa57506502f25f0c9000600e5411155b156117bb576404b6fe7a808202600d555b6502f25f0c9000600e541180156117da57506503313c4d9c00600e5411155b156117eb57640870ab1a808202600d555b6503313c4d9c00600e5411801561180a575065036dc582c400600e5411155b1561181b57640e8d4a51008202600d555b65036dc582c400600e5411801561183a57506503a7faac0800600e5411155b1561184b57641daf979b008202600d555b6503a7faac0800600e5411801561186a57506503dfdbc96800600e5411155b1561187b576433390598008202600d555b6503dfdbc96800600e5411801561189a575065041568dae400600e5411155b156118ab57645466af09008202600d555b65041568dae400600e541180156118ca57506504464dd49800600e5411155b156118db5764975704e4008202600d555b6504464dd49800600e541180156118fa5750650474dec26800600e5411155b1561190c5765012c3c307f008202600d555b650474dec26800600e5411801561192b575065049ec7987000600e5411155b1561193d5765028bed0160008202600d555b65049ec7987000600e5411801561195c57506504bf603ee800600e5411155b1561196e576505af3107a4008202600d555b6504bf603ee800600e5411801561198d57506504dda4d97c00600e5411155b1561199f576508de19495c008202600d555b6504dda4d97c00600e541180156119be57506504f7415c4800600e5411155b156119d05765136cd66f15c08202600d555b6504f7415c4800600e541180156119ef5750650509e1bb6800600e5411155b15611a0157652d30c5c98b008202600d555b650509e1bb6800600e54118015611a20575065051331eaf800600e5411155b15611a3257659aa76550a5808202600d555b65051331eaf800600e54118015611a515750650517da02c000600e5411155b15611a6457660252e68625c8008202600d555b600d54610d7e90620f4240613135565b6005546001600160a01b031681565b600081611a935750600a54610ddd565b8160011415611aa55750600b54610ddd565b8160021415611ab75750600c54610ddd565b506000919050565b6000333214611b03576040805162461bcd60e51b815260206004820152601c6024820152600080516020614780833981519152604482015290519081900360640190fd5b336000908152600360205260409020544303611b56576040805162461bcd60e51b815260206004820152600d60248201526c119c995c5d595b9d0810d85b1b609a1b604482015290519081900360640190fd5b336000908152600360205260409020439055600c5415611bb5576040805162461bcd60e51b81526020600482015260156024820152742bb4ba34323930bb903737ba1030b63637bbb2b21760591b604482015290519081900360640190fd5b3360009081526035602052604090205460ff1615611c1a576040805162461bcd60e51b815260206004820152601e60248201527f5769746864726177206e6f7420616c6c6f77656420666f7220757365722e0000604482015290519081900360640190fd5b6000600e5411611c68576040805162461bcd60e51b81526020600482015260146024820152736e6f2063697263756c6174656420746f6b656e7360601b604482015290519081900360640190fd5b60008211611cb6576040805162461bcd60e51b81526020600482015260166024820152750c6c2dc40dcdee840eed2e8d0c8e4c2ee406040cae8d60531b604482015290519081900360640190fd5b33600090815260326020526040902054821115611d1a576040805162461bcd60e51b815260206004820152601e60248201527f6e6f7420656e6f756768207265776172647320746f2077697468647261770000604482015290519081900360640190fd5b600f54821115611d71576040805162461bcd60e51b815260206004820152601960248201527f657863656564656420636f6d6d697373696f6e2066756e647300000000000000604482015290519081900360640190fd5b33600090815260326020526040902054611d8b9083613177565b33600090815260326020526040902055600f54611da89083613177565b600f55604051339083156108fc029084906000818181858888f19350505050158015611dd8573d6000803e3d6000fd5b5060408051838152905133917fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc919081900360200190a2506001919050565b60018054604080516020601f60026000196101008789161502019095169490940493840181900481028201810190925282815260609390929091830182828015610cf15780601f10610cc657610100808354040283529160200191610cf1565b6005546000906001600160a01b03163314611ec7576040805162461bcd60e51b815260206004820152601760248201526000805160206147a0833981519152604482015290519081900360640190fd5b60005b84811015610f73576000848483818110611ee057fe5b9050602002013590508060326000898986818110611efa57fe5b602090810292909201356001600160a01b03168352508101919091526040016000208054919091019055600f8054919091019055600101611eca565b6000333214611f7a576040805162461bcd60e51b815260206004820152601c6024820152600080516020614780833981519152604482015290519081900360640190fd5b60008211611fcf576040805162461bcd60e51b815260206004820152601a60248201527f43616e206e6f74207472616e73666572203020746f6b656e732e000000000000604482015290519081900360640190fd5b60065482111561201f576040805162461bcd60e51b815260206004820152601660248201527526b0bc34b6bab6902a3930b739b332b9101a9818181760511b604482015290519081900360640190fd5b6006546001600160a01b0384166000908152603060205260409020546120469084906130db565b11156120835760405162461bcd60e51b81526004018080602001828103825260228152602001806148f26022913960400191505060405180910390fd5b336000908152603060205260409020548211156120e7576040805162461bcd60e51b815260206004820152601b60248201527f496e73756666696369656e7420546f6b656e2042616c616e63652e0000000000604482015290519081900360640190fd5b61124d6120f26131b9565b84846131bd565b60008061212c60646009548161210b57fe5b0460095403612126620f42408661313590919063ffffffff16565b906132fd565b9392505050565b6005546000906001600160a01b03163314612183576040805162461bcd60e51b815260206004820152601760248201526000805160206147a0833981519152604482015290519081900360640190fd5b50600f55600190565b600f5490565b6005546000906001600160a01b031633146121e2576040805162461bcd60e51b815260206004820152601760248201526000805160206147a0833981519152604482015290519081900360640190fd5b69d3c21bcecceda1000000820260018414156122025760218190556110b3565b83600214156122155760228190556110b3565b83600314156122285760238190556110b3565b836004141561223b5760248190556110b3565b836005141561224e5760258190556110b3565b83600614156122615760268190556110b3565b83600714156122745760278190556110b3565b83600814156122875760288190556110b3565b836009141561229a5760298190556110b3565b83600a14156122ad57602a8190556110b3565b83600b14156122c057602b8190556110b3565b83600c14156122d357602c8190556110b3565b83600d14156122e657602d8190556110b3565b83600e14156122f957602e8190556110b3565b83600f141561230c57602f8190556110b3565b6000915050610d7e565b6001600160a01b039081166000908152603160205260409020541690565b6005546000906001600160a01b03163314612384576040805162461bcd60e51b815260206004820152601760248201526000805160206147a0833981519152604482015290519081900360640190fd5b50601155600190565b6005546000906001600160a01b031633146123dd576040805162461bcd60e51b815260206004820152601760248201526000805160206147a0833981519152604482015290519081900360640190fd5b60005b8881101561269e578787828181106123f457fe5b905060200201356001600160a01b0316603160008c8c8581811061241457fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061248e86868381811061247757fe5b90506020020135603060008d8d868181106112d757fe5b603060008c8c8581811061249e57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000208190555060006124e387878481811061136b57fe5b90506124f487878481811061138857fe5b600e55600980548201905561252585858481811061250e57fe5b90506020020135603260008e8e878181106112d757fe5b603260008d8d8681811061253557fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000208190555084848381811061257557fe5b90506020020135600f5401600f819055508a8a8381811061259257fe5b905060200201356001600160a01b03166001600160a01b0316306001600160a01b031660008051602061488c8339815191528989868181106125d057fe5b905060200201356040518082815260200191505060405180910390a38888838181106125f857fe5b905060200201356001600160a01b03166001600160a01b03168b8b8481811061261d57fe5b905060200201356001600160a01b03166001600160a01b03167faee878d4ce275636b8571afc4c23d944e4dee675c1aebcc01c2f8f6b032fb90b89898681811061266357fe5b9050602002013588888781811061267657fe5b604080519485526020918202939093013590840152508051918290030190a3506001016123e0565b5060019998505050505050505050565b600954600090620186a06157e4840204908184039083906126dc906126d684620f42406132fd565b90613135565b95945050505050565b6000333214612729576040805162461bcd60e51b815260206004820152601c6024820152600080516020614780833981519152604482015290519081900360640190fd5b33600090815260036020526040902054430361277c576040805162461bcd60e51b815260206004820152600d60248201526c119c995c5d595b9d0810d85b1b609a1b604482015290519081900360640190fd5b336000908152600360205260409020439055600954600e54600b546064830490920391156127e5576040805162461bcd60e51b815260206004820152601160248201527029b2b636103737ba1030b63637bbb2b21760791b604482015290519081900360640190fd5b3360009081526034602052604090205460ff161561284a576040805162461bcd60e51b815260206004820152601a60248201527f53656c6c206e6f7420616c6c6f77656420666f7220757365722e000000000000604482015290519081900360640190fd5b6000600e5411612898576040805162461bcd60e51b81526020600482015260146024820152736e6f2063697263756c6174656420746f6b656e7360601b604482015290519081900360640190fd5b600084116128e4576040805162461bcd60e51b815260206004820152601460248201527331b0b7103737ba1039b2b6361018103a37b5b2b760611b604482015290519081900360640190fd5b33600090815260306020526040902054841115612948576040805162461bcd60e51b815260206004820152601d60248201527f6e6f7420656e6f75676820746f6b656e7320746f207472616e73616374000000604482015290519081900360640190fd5b600754600e546129599086906130db565b11156129a4576040805162461bcd60e51b8152602060048201526015602482015274657863656564656420746f74616c20737570706c7960581b604482015290519081900360640190fd5b336129e05760405162461bcd60e51b81526004018080602001828103825260218152602001806148ac6021913960400191505060405180910390fd5b336000908152603060205260409020546129fa9085613177565b336000818152603060209081526040918290209390935580518781529051309360008051602061488c833981519152928290030190a36000612a3b8561165a565b600980548290039055600e54909150612a549086613177565b600e556009546000612a668786613356565b600e5460405191925090339083156108fc029084906000818181858888f19350505050158015612a9a573d6000803e3d6000fd5b5060408051838152602081018a9052808201889052606081018590526080810187905260a08101839052905133917fe771a8c700d0802cd276270eb0596a1aead6f28237a9e5f26e00ccf08dad7033919081900360c00190a2506001979650505050505050565b60095490565b6000333214612b4b576040805162461bcd60e51b815260206004820152601c6024820152600080516020614780833981519152604482015290519081900360640190fd5b336000908152600360205260409020544303612b9e576040805162461bcd60e51b815260206004820152600d60248201526c119c995c5d595b9d0810d85b1b609a1b604482015290519081900360640190fd5b336000908152600360205260409020439055600a5415612bf8576040805162461bcd60e51b815260206004820152601060248201526f213abc903737ba1030b63637bbb2b21760811b604482015290519081900360640190fd5b3360009081526033602052604090205460ff1615612c5d576040805162461bcd60e51b815260206004820152601960248201527f427579206e6f7420616c6c6f77656420666f7220757365722e00000000000000604482015290519081900360640190fd5b6001600160a01b038216331415612cbb576040805162461bcd60e51b815260206004820152601e60248201527f53656c66207265666572656e6365206e6f7420616c6c6f776564206275790000604482015290519081900360640190fd5b6001600160a01b038216612d0d576040805162461bcd60e51b81526020600482015260146024820152734e6f20526566657272616c20436f64652062757960601b604482015290519081900360640190fd5b33600081815260316020526040812080546001600160a01b0319166001600160a01b0386161790556009543491612d4b826126d685620f42406132fd565b90506000612d598484613372565b9050612d72600e5460075461317790919063ffffffff16565b811115612db05760405162461bcd60e51b81526004018080602001828103825260228152602001806147e36022913960400191505060405180910390fd5b60008111612dfd576040805162461bcd60e51b815260206004820152601560248201527421b0b7103737ba10313abc9018103a37b5b2b7399760591b604482015290519081900360640190fd5b600654811115612e4e576040805162461bcd60e51b815260206004820152601760248201527626b0bc34b6bab690213abcb4b733902932b0b1b432b21760491b604482015290519081900360640190fd5b60065433600090815260306020526040902054612e6c9083906130db565b1115612eb9576040805162461bcd60e51b815260206004820152601760248201527626b0bc34b6bab690213abcb4b733902932b0b1b432b21760491b604482015290519081900360640190fd5b600e546001600160a01b038616612f17576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6001600160a01b038616600090815260306020526040902054612f3a90836130db565b6001600160a01b038716600090815260306020526040812091909155612f5f8361165a565b600e54909150612f6f90846130db565b600e81905560098054830190819055604080518781526020810187905280820189905260608101839052608081018a905260a0810186905260c0810184905290519192916001600160a01b03808e1692908c16917fda6a7d667b4725fe802e5c174fb82a0f82fbd8455964eed3378f50e4af5a13909181900360e00190a36040805186815290516001600160a01b038b1691309160008051602061488c8339815191529181900360200190a361302786898b8a61339d565b5060019a9950505050505050505050565b6005546000906001600160a01b03163314613088576040805162461bcd60e51b815260206004820152601760248201526000805160206147a0833981519152604482015290519081900360640190fd5b816130b5576001600160a01b0384166000908152603260205260409020839055600e5461149790846130db565b50506001600160a01b0391909116600090815260326020526040902055600190565b3090565b60008282018381101561212c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061212c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614683565b600061212c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614725565b3390565b6001600160a01b0383166132025760405162461bcd60e51b81526004018080602001828103825260258152602001806148cd6025913960400191505060405180910390fd5b6001600160a01b0382166132475760405162461bcd60e51b81526004018080602001828103825260238152602001806147c06023913960400191505060405180910390fd5b61328481604051806060016040528060268152602001614825602691396001600160a01b0386166000908152603060205260409020549190614725565b6001600160a01b0380851660009081526030602052604080822093909355908416815220546132b390826130db565b6001600160a01b03808416600081815260306020908152604091829020949094558051858152905191939287169260008051602061488c83398151915292918290030190a3505050565b60008261330c57506000610d7e565b8282028284828161331957fe5b041461212c5760405162461bcd60e51b815260040180806020018281038252602181526020018061486b6021913960400191505060405180910390fd5b60008061336a8361212686620f4240613135565b949350505050565b6000620186a06157e484020480840382613393856126d684620f42406132fd565b9695505050505050565b6108ca8260005b600f81101561467a576001600160a01b0380861660008181526031602090815260408083205490941680835260309091529290205460115490918783029182029084141561346b576127108b88025b0460085401600881905550613419612710888d028161340e57fe5b600e549190046130db565b600e556001600160a01b038085169087166000805160206148058339815191526127108e8b0260408051929091048252602082018c905260018a0182820152519081900360600190a35050505061467a565b6001600160a01b038416613484576127108b88026133f3565b846135cb57602154811061352d5760006127106012548c02816134a357fe5b6001600160a01b03871660009081526032602052604090205491900491506134cb90826130db565b6001600160a01b0380871660008181526032602090815260409182902094909455600f805486019055805185815293840186905260018a0184820152519092918a169160008051602061484b833981519152919081900360600190a3506135b6565b6127106012548c028161353c57fe5b04600854016008819055506135596127106012548d028161340e57fe5b600e81905550836001600160a01b0316866001600160a01b03166000805160206148058339815191526127106012548f028161359157fe5b60125460408051939092048352602083015260018a0182820152519081900360600190a35b6012546135c4908890613177565b965061466c565b84600114156136ef57602254811061365a5760006127106013548c02816135ee57fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a169160008051602061484b833981519152919081900360600190a3506136e3565b6127106013548c028161366957fe5b04600854016008819055506136866127106013548d028161340e57fe5b600e81905550836001600160a01b0316866001600160a01b03166000805160206148058339815191526127106013548f02816136be57fe5b60135460408051939092048352602083015260018a0182820152519081900360600190a35b6013548703965061466c565b846002141561381357602354811061377e5760006127106014548c028161371257fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a169160008051602061484b833981519152919081900360600190a350613807565b6127106014548c028161378d57fe5b04600854016008819055506137aa6127106014548d028161340e57fe5b600e81905550836001600160a01b0316866001600160a01b03166000805160206148058339815191526127106014548f02816137e257fe5b60145460408051939092048352602083015260018a0182820152519081900360600190a35b6014548703965061466c565b84600314156139375760245481106138a25760006127106015548c028161383657fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a169160008051602061484b833981519152919081900360600190a35061392b565b6127106015548c02816138b157fe5b04600854016008819055506138ce6127106015548d028161340e57fe5b600e81905550836001600160a01b0316866001600160a01b03166000805160206148058339815191526127106015548f028161390657fe5b60155460408051939092048352602083015260018a0182820152519081900360600190a35b6015548703965061466c565b8460041415613a725760255481106139c7576000620186a06016548c028161395b57fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a169160008051602061484b833981519152919081900360600190a350613a5c565b620186a06016548c02816139d757fe5b04600854016008819055506139f5620186a06016548d028161340e57fe5b600e81905550836001600160a01b0316866001600160a01b03166000805160206148058339815191526127106016548f0281613a2d57fe5b04600a60165481613a3a57fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a60165481613a6857fe5b048703965061466c565b8460051415613ba4576026548110613b02576000620186a06017548c0281613a9657fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a169160008051602061484b833981519152919081900360600190a350613b98565b620186a06017548c0281613b1257fe5b0460085401600881905550613b30620186a06017548d028161340e57fe5b600e81905550836001600160a01b0316866001600160a01b0316600080516020614805833981519152620186a06017548f0281613b6957fe5b04600a60175481613b7657fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a60175481613a6857fe5b8460061415613cd6576027548110613c34576000620186a06018548c0281613bc857fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a169160008051602061484b833981519152919081900360600190a350613cca565b620186a06018548c0281613c4457fe5b0460085401600881905550613c62620186a06018548d028161340e57fe5b600e81905550836001600160a01b0316866001600160a01b0316600080516020614805833981519152620186a06018548f0281613c9b57fe5b04600a60185481613ca857fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a60185481613a6857fe5b8460071415613e08576028548110613d66576000620186a06019548c0281613cfa57fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a169160008051602061484b833981519152919081900360600190a350613dfc565b620186a06019548c0281613d7657fe5b0460085401600881905550613d94620186a06019548d028161340e57fe5b600e81905550836001600160a01b0316866001600160a01b0316600080516020614805833981519152620186a06019548f0281613dcd57fe5b04600a60195481613dda57fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a60195481613a6857fe5b8460081415613f3a576029548110613e98576000620186a0601a548c0281613e2c57fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a169160008051602061484b833981519152919081900360600190a350613f2e565b620186a0601a548c0281613ea857fe5b0460085401600881905550613ec6620186a0601a548d028161340e57fe5b600e81905550836001600160a01b0316866001600160a01b0316600080516020614805833981519152620186a0601a548f0281613eff57fe5b04600a601a5481613f0c57fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a601a5481613a6857fe5b846009141561406c57602a548110613fca576000620186a0601b548c0281613f5e57fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a169160008051602061484b833981519152919081900360600190a350614060565b620186a0601b548c0281613fda57fe5b0460085401600881905550613ff8620186a0601b548d028161340e57fe5b600e81905550836001600160a01b0316866001600160a01b0316600080516020614805833981519152620186a0601b548f028161403157fe5b04600a601b548161403e57fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a601b5481613a6857fe5b84600a141561419e57602b5481106140fc576000620186a0601c548c028161409057fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a169160008051602061484b833981519152919081900360600190a350614192565b620186a0601c548c028161410c57fe5b046008540160088190555061412a620186a0601c548d028161340e57fe5b600e81905550836001600160a01b0316866001600160a01b0316600080516020614805833981519152620186a0601c548f028161416357fe5b04600a601c548161417057fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a601c5481613a6857fe5b84600b14156142d057602c54811061422e576000620186a0601d548c02816141c257fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a169160008051602061484b833981519152919081900360600190a3506142c4565b620186a0601d548c028161423e57fe5b046008540160088190555061425c620186a0601d548d028161340e57fe5b600e81905550836001600160a01b0316866001600160a01b0316600080516020614805833981519152620186a0601d548f028161429557fe5b04600a601d54816142a257fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a601d5481613a6857fe5b84600c141561440257602d548110614360576000620186a0601e548c02816142f457fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a169160008051602061484b833981519152919081900360600190a3506143f6565b620186a0601e548c028161437057fe5b046008540160088190555061438e620186a0601e548d028161340e57fe5b600e81905550836001600160a01b0316866001600160a01b0316600080516020614805833981519152620186a0601e548f02816143c757fe5b04600a601e54816143d457fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a601e5481613a6857fe5b84600d141561453457602e548110614492576000620186a0601f548c028161442657fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a169160008051602061484b833981519152919081900360600190a350614528565b620186a0601f548c02816144a257fe5b04600854016008819055506144c0620186a0601f548d028161340e57fe5b600e81905550836001600160a01b0316866001600160a01b0316600080516020614805833981519152620186a0601f548f02816144f957fe5b04600a601f548161450657fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a601f5481613a6857fe5b84600e141561466c57602f5481106145c4576000620186a06020548c028161455857fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a169160008051602061484b833981519152919081900360600190a35061465a565b620186a06020548c02816145d457fe5b04600854016008819055506145f2620186a06020548d028161340e57fe5b600e81905550836001600160a01b0316866001600160a01b0316600080516020614805833981519152620186a06020548f028161462b57fe5b04600a6020548161463857fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a6020548161466657fe5b04870396505b5091965050506001016133a4565b50505050505050565b6000818361470f5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156146d45781810151838201526020016146bc565b50505050905090810190601f1680156147015780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161471b57fe5b0495945050505050565b600081848411156147775760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156146d45781810151838201526020016146bc565b50505090039056fe4f726967696e20616e642053656e646572204d69736d6174636865640000000043616c6c6572206973206e6f7420746865206f776e657200000000000000000045524332303a207472616e7366657220746f20746865207a65726f2061646472657373546f6b656e20616d6f756e7420657863656564656420746f74616c20737570706c79112766730ce440487945c01048dacfc6d04340403f675871e96c4e28cf622ecc45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636503e2fbb2b92f9e0c79b9743877ad3b4ed3fd2d8df69ddba7a376839ed2bc2ff7536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f20616464726573734d6178696d756d204c696d69742052656163686564206f662052656365697665722ea26469706673582212206b19edbff747aed0d93c76f6b5fd55d5dca119ce493bcf35d159c8366a63ea3564736f6c63430007040033

Deployed Bytecode

0x6080604052600436106102345760003560e01c80637ca6e31d1161012e578063c7e97f5d116100ab578063e4849b321161006f578063e4849b3214610bac578063eb91d37e14610bd6578063f088d54714610beb578063f2a1566a14610c11578063f6b4dfb414610c505761027d565b8063c7e97f5d1461098a578063cb6f37ab146109ba578063cc442dab146109ed578063de57b81414610a17578063e095f81414610b825761027d565b80639ee08b6d116100f25780639ee08b6d1461081d578063a9059cbb146108e8578063aad7390d14610921578063af5abcf91461094b578063c543adf5146109755761027d565b80637ca6e31d146107595780638da5cb5b14610783578063926a9ca1146107b45780639342c8f4146107de57806395d89b41146108085761027d565b8063313ce567116101bc5780636926e82f116101805780636926e82f1461068d5780636c02a931146106cc5780636d440056146106e157806370a08231146107115780637b61c320146107445761027d565b8063313ce567146104f3578063576fcd1b1461051e57806360f74caa1461055f5780636322da2c1461059257806365216a41146105c25761027d565b8063119d9eed11610203578063119d9eed146103aa5780631427fdb1146103d457806318160ddd146103e95780631942b033146103fe5780631d9274ed146104285761027d565b806306fdde03146102825780630752750e1461030c578063089217f514610359578063102c5003146103835761027d565b3661027d5733321461027b576040805162461bcd60e51b815260206004820152601c6024820152600080516020614780833981519152604482015290519081900360640190fd5b005b600080fd5b34801561028e57600080fd5b50610297610c65565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102d15781810151838201526020016102b9565b50505050905090810190601f1680156102fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031857600080fd5b506103456004803603604081101561032f57600080fd5b506001600160a01b038135169060200135610cfb565b604080519115158252519081900360200190f35b34801561036557600080fd5b506103456004803603602081101561037c57600080fd5b5035610d84565b34801561038f57600080fd5b50610398610de2565b60408051918252519081900360200190f35b3480156103b657600080fd5b50610345600480360360208110156103cd57600080fd5b5035610de8565b3480156103e057600080fd5b50610398610e41565b3480156103f557600080fd5b50610398610e47565b34801561040a57600080fd5b506103456004803603602081101561042157600080fd5b5035610e4d565b34801561043457600080fd5b506103456004803603604081101561044b57600080fd5b810190602081018135600160201b81111561046557600080fd5b82018360208201111561047757600080fd5b803590602001918460208302840111600160201b8311171561049857600080fd5b919390929091602081019035600160201b8111156104b557600080fd5b8201836020820111156104c757600080fd5b803590602001918460208302840111600160201b831117156104e857600080fd5b509092509050610ea6565b3480156104ff57600080fd5b50610508610f7f565b6040805160ff9092168252519081900360200190f35b34801561052a57600080fd5b506103456004803603606081101561054157600080fd5b506001600160a01b0381351690602081013515159060400135610f88565b34801561056b57600080fd5b506103986004803603602081101561058257600080fd5b50356001600160a01b03166110bd565b34801561059e57600080fd5b50610345600480360360408110156105b557600080fd5b50803590602001356110d8565b3480156105ce57600080fd5b50610345600480360360408110156105e557600080fd5b810190602081018135600160201b8111156105ff57600080fd5b82018360208201111561061157600080fd5b803590602001918460208302840111600160201b8311171561063257600080fd5b919390929091602081019035600160201b81111561064f57600080fd5b82018360208201111561066157600080fd5b803590602001918460208302840111600160201b8311171561068257600080fd5b509092509050611256565b34801561069957600080fd5b50610345600480360360608110156106b057600080fd5b506001600160a01b03813516906020810135906040013561141a565b3480156106d857600080fd5b506102976114c1565b3480156106ed57600080fd5b506103456004803603604081101561070457600080fd5b508035906020013561154f565b34801561071d57600080fd5b506103986004803603602081101561073457600080fd5b50356001600160a01b03166115e5565b34801561075057600080fd5b50610297611600565b34801561076557600080fd5b506103986004803603602081101561077c57600080fd5b503561165a565b34801561078f57600080fd5b50610798611a74565b604080516001600160a01b039092168252519081900360200190f35b3480156107c057600080fd5b50610398600480360360208110156107d757600080fd5b5035611a83565b3480156107ea57600080fd5b506103456004803603602081101561080157600080fd5b5035611abf565b34801561081457600080fd5b50610297611e17565b34801561082957600080fd5b506103456004803603604081101561084057600080fd5b810190602081018135600160201b81111561085a57600080fd5b82018360208201111561086c57600080fd5b803590602001918460208302840111600160201b8311171561088d57600080fd5b919390929091602081019035600160201b8111156108aa57600080fd5b8201836020820111156108bc57600080fd5b803590602001918460208302840111600160201b831117156108dd57600080fd5b509092509050611e77565b3480156108f457600080fd5b506103456004803603604081101561090b57600080fd5b506001600160a01b038135169060200135611f36565b34801561092d57600080fd5b506103986004803603602081101561094457600080fd5b50356120f9565b34801561095757600080fd5b506103456004803603602081101561096e57600080fd5b5035612133565b34801561098157600080fd5b5061039861218c565b34801561099657600080fd5b50610345600480360360408110156109ad57600080fd5b5080359060200135612192565b3480156109c657600080fd5b50610798600480360360208110156109dd57600080fd5b50356001600160a01b0316612316565b3480156109f957600080fd5b5061034560048036036020811015610a1057600080fd5b5035612334565b348015610a2357600080fd5b5061034560048036036080811015610a3a57600080fd5b810190602081018135600160201b811115610a5457600080fd5b820183602082011115610a6657600080fd5b803590602001918460208302840111600160201b83111715610a8757600080fd5b919390929091602081019035600160201b811115610aa457600080fd5b820183602082011115610ab657600080fd5b803590602001918460208302840111600160201b83111715610ad757600080fd5b919390929091602081019035600160201b811115610af457600080fd5b820183602082011115610b0657600080fd5b803590602001918460208302840111600160201b83111715610b2757600080fd5b919390929091602081019035600160201b811115610b4457600080fd5b820183602082011115610b5657600080fd5b803590602001918460208302840111600160201b83111715610b7757600080fd5b50909250905061238d565b348015610b8e57600080fd5b5061039860048036036020811015610ba557600080fd5b50356126ae565b348015610bb857600080fd5b5061034560048036036020811015610bcf57600080fd5b50356126e5565b348015610be257600080fd5b50610398612b01565b61034560048036036020811015610c0157600080fd5b50356001600160a01b0316612b07565b348015610c1d57600080fd5b5061034560048036036060811015610c3457600080fd5b506001600160a01b038135169060208101359060400135613038565b348015610c5c57600080fd5b506107986130d7565b60008054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610cf15780601f10610cc657610100808354040283529160200191610cf1565b820191906000526020600020905b815481529060010190602001808311610cd457829003601f168201915b5050505050905090565b600081610d2457506001600160a01b03821660009081526033602052604090205460ff16610d7e565b8160011415610d4f57506001600160a01b03821660009081526034602052604090205460ff16610d7e565b8160021415610d7a57506001600160a01b03821660009081526035602052604090205460ff16610d7e565b5060005b92915050565b6005546000906001600160a01b03163314610dd4576040805162461bcd60e51b815260206004820152601760248201526000805160206147a0833981519152604482015290519081900360640190fd5b50600e81905560015b919050565b60085490565b6005546000906001600160a01b03163314610e38576040805162461bcd60e51b815260206004820152601760248201526000805160206147a0833981519152604482015290519081900360640190fd5b50600855600190565b600e5490565b60075490565b6005546000906001600160a01b03163314610e9d576040805162461bcd60e51b815260206004820152601760248201526000805160206147a0833981519152604482015290519081900360640190fd5b50600955600190565b6005546000906001600160a01b03163314610ef6576040805162461bcd60e51b815260206004820152601760248201526000805160206147a0833981519152604482015290519081900360640190fd5b60005b84811015610f7357838382818110610f0d57fe5b905060200201356001600160a01b031660316000888885818110610f2d57fe5b6001600160a01b03602091820293909301358316845283019390935260409091016000208054939091166001600160a01b03199093169290921790915550600101610ef9565b50600195945050505050565b60025460ff1690565b6005546000906001600160a01b03163314610fd8576040805162461bcd60e51b815260206004820152601760248201526000805160206147a0833981519152604482015290519081900360640190fd5b81611002576001600160a01b0384166000908152603360205260409020805460ff19168415151790555b8160011415611030576001600160a01b0384166000908152603460205260409020805460ff19168415151790555b816002141561105e576001600160a01b0384166000908152603560205260409020805460ff19168415151790555b81600314156110b3576001600160a01b0384166000908152603460209081526040808320805487151560ff19918216811790925560338452828520805482168317905560359093529220805490911690911790555b5060019392505050565b6001600160a01b031660009081526032602052604090205490565b6005546000906001600160a01b03163314611128576040805162461bcd60e51b815260206004820152601760248201526000805160206147a0833981519152604482015290519081900360640190fd5b826001141561113b57601282905561124d565b826002141561114e57601382905561124d565b826003141561116157601482905561124d565b826004141561117457601582905561124d565b826005141561118757601682905561124d565b826006141561119a57601782905561124d565b82600714156111ad57601882905561124d565b82600814156111c057601982905561124d565b82600914156111d357601a82905561124d565b82600a14156111e657601b82905561124d565b82600b14156111f957601c82905561124d565b82600c141561120c57601d82905561124d565b82600d141561121f57601e82905561124d565b82600e141561123257601f82905561124d565b82600f141561124557602082905561124d565b506000610d7e565b50600192915050565b6005546000906001600160a01b031633146112a6576040805162461bcd60e51b815260206004820152601760248201526000805160206147a0833981519152604482015290519081900360640190fd5b60005b84811015610f73576113168484838181106112c057fe5b90506020020135603060008989868181106112d757fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020546130db90919063ffffffff16565b6030600088888581811061132657fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002081905550600061137785858481811061136b57fe5b9050602002013561165a565b90506113a085858481811061138857fe5b90506020020135600e546130db90919063ffffffff16565b600e5560098054820190558686838181106113b757fe5b905060200201356001600160a01b03166001600160a01b0316306001600160a01b031660008051602061488c8339815191528787868181106113f557fe5b905060200201356040518082815260200191505060405180910390a3506001016112a9565b6005546000906001600160a01b0316331461146a576040805162461bcd60e51b815260206004820152601760248201526000805160206147a0833981519152604482015290519081900360640190fd5b8161149f576001600160a01b0384166000908152603060205260409020839055600e5461149790846130db565b600e556110b3565b50506001600160a01b0391909116600090815260306020526040902055600190565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156115475780601f1061151c57610100808354040283529160200191611547565b820191906000526020600020905b81548152906001019060200180831161152a57829003601f168201915b505050505081565b6005546000906001600160a01b0316331461159f576040805162461bcd60e51b815260206004820152601760248201526000805160206147a0833981519152604482015290519081900360640190fd5b816115aa57600a8390555b81600114156115b957600b8390555b81600214156115c857600c8390555b816003141561124d575050600c819055600b819055600a55600190565b6001600160a01b031660009081526030602052604090205490565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156115475780601f1061151c57610100808354040283529160200191611547565b6000646c4428ea00600e5411611670576000600d555b646c4428ea00600e5411801561168e57506501001d1bf800600e5411155b1561169e576311e1a3008202600d555b6501001d1bf800600e541180156116bd5750650168e3330c00600e5411155b156116cd57632e318fc08202600d555b650168e3330c00600e541180156116ec57506501c8591a9000600e5411155b156116fc5763684ee1808202600d555b6501c8591a9000600e5411801561171b5750650219d6babc00600e5411155b1561172b5763ee6b28008202600d555b650219d6babc00600e5411801561174a5750650266ac432000600e5411155b1561175b57640156ba09808202600d555b650266ac432000600e5411801561177a57506502aed9b3bc00600e5411155b1561178b576402f7f58f808202600d555b6502aed9b3bc00600e541180156117aa57506502f25f0c9000600e5411155b156117bb576404b6fe7a808202600d555b6502f25f0c9000600e541180156117da57506503313c4d9c00600e5411155b156117eb57640870ab1a808202600d555b6503313c4d9c00600e5411801561180a575065036dc582c400600e5411155b1561181b57640e8d4a51008202600d555b65036dc582c400600e5411801561183a57506503a7faac0800600e5411155b1561184b57641daf979b008202600d555b6503a7faac0800600e5411801561186a57506503dfdbc96800600e5411155b1561187b576433390598008202600d555b6503dfdbc96800600e5411801561189a575065041568dae400600e5411155b156118ab57645466af09008202600d555b65041568dae400600e541180156118ca57506504464dd49800600e5411155b156118db5764975704e4008202600d555b6504464dd49800600e541180156118fa5750650474dec26800600e5411155b1561190c5765012c3c307f008202600d555b650474dec26800600e5411801561192b575065049ec7987000600e5411155b1561193d5765028bed0160008202600d555b65049ec7987000600e5411801561195c57506504bf603ee800600e5411155b1561196e576505af3107a4008202600d555b6504bf603ee800600e5411801561198d57506504dda4d97c00600e5411155b1561199f576508de19495c008202600d555b6504dda4d97c00600e541180156119be57506504f7415c4800600e5411155b156119d05765136cd66f15c08202600d555b6504f7415c4800600e541180156119ef5750650509e1bb6800600e5411155b15611a0157652d30c5c98b008202600d555b650509e1bb6800600e54118015611a20575065051331eaf800600e5411155b15611a3257659aa76550a5808202600d555b65051331eaf800600e54118015611a515750650517da02c000600e5411155b15611a6457660252e68625c8008202600d555b600d54610d7e90620f4240613135565b6005546001600160a01b031681565b600081611a935750600a54610ddd565b8160011415611aa55750600b54610ddd565b8160021415611ab75750600c54610ddd565b506000919050565b6000333214611b03576040805162461bcd60e51b815260206004820152601c6024820152600080516020614780833981519152604482015290519081900360640190fd5b336000908152600360205260409020544303611b56576040805162461bcd60e51b815260206004820152600d60248201526c119c995c5d595b9d0810d85b1b609a1b604482015290519081900360640190fd5b336000908152600360205260409020439055600c5415611bb5576040805162461bcd60e51b81526020600482015260156024820152742bb4ba34323930bb903737ba1030b63637bbb2b21760591b604482015290519081900360640190fd5b3360009081526035602052604090205460ff1615611c1a576040805162461bcd60e51b815260206004820152601e60248201527f5769746864726177206e6f7420616c6c6f77656420666f7220757365722e0000604482015290519081900360640190fd5b6000600e5411611c68576040805162461bcd60e51b81526020600482015260146024820152736e6f2063697263756c6174656420746f6b656e7360601b604482015290519081900360640190fd5b60008211611cb6576040805162461bcd60e51b81526020600482015260166024820152750c6c2dc40dcdee840eed2e8d0c8e4c2ee406040cae8d60531b604482015290519081900360640190fd5b33600090815260326020526040902054821115611d1a576040805162461bcd60e51b815260206004820152601e60248201527f6e6f7420656e6f756768207265776172647320746f2077697468647261770000604482015290519081900360640190fd5b600f54821115611d71576040805162461bcd60e51b815260206004820152601960248201527f657863656564656420636f6d6d697373696f6e2066756e647300000000000000604482015290519081900360640190fd5b33600090815260326020526040902054611d8b9083613177565b33600090815260326020526040902055600f54611da89083613177565b600f55604051339083156108fc029084906000818181858888f19350505050158015611dd8573d6000803e3d6000fd5b5060408051838152905133917fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc919081900360200190a2506001919050565b60018054604080516020601f60026000196101008789161502019095169490940493840181900481028201810190925282815260609390929091830182828015610cf15780601f10610cc657610100808354040283529160200191610cf1565b6005546000906001600160a01b03163314611ec7576040805162461bcd60e51b815260206004820152601760248201526000805160206147a0833981519152604482015290519081900360640190fd5b60005b84811015610f73576000848483818110611ee057fe5b9050602002013590508060326000898986818110611efa57fe5b602090810292909201356001600160a01b03168352508101919091526040016000208054919091019055600f8054919091019055600101611eca565b6000333214611f7a576040805162461bcd60e51b815260206004820152601c6024820152600080516020614780833981519152604482015290519081900360640190fd5b60008211611fcf576040805162461bcd60e51b815260206004820152601a60248201527f43616e206e6f74207472616e73666572203020746f6b656e732e000000000000604482015290519081900360640190fd5b60065482111561201f576040805162461bcd60e51b815260206004820152601660248201527526b0bc34b6bab6902a3930b739b332b9101a9818181760511b604482015290519081900360640190fd5b6006546001600160a01b0384166000908152603060205260409020546120469084906130db565b11156120835760405162461bcd60e51b81526004018080602001828103825260228152602001806148f26022913960400191505060405180910390fd5b336000908152603060205260409020548211156120e7576040805162461bcd60e51b815260206004820152601b60248201527f496e73756666696369656e7420546f6b656e2042616c616e63652e0000000000604482015290519081900360640190fd5b61124d6120f26131b9565b84846131bd565b60008061212c60646009548161210b57fe5b0460095403612126620f42408661313590919063ffffffff16565b906132fd565b9392505050565b6005546000906001600160a01b03163314612183576040805162461bcd60e51b815260206004820152601760248201526000805160206147a0833981519152604482015290519081900360640190fd5b50600f55600190565b600f5490565b6005546000906001600160a01b031633146121e2576040805162461bcd60e51b815260206004820152601760248201526000805160206147a0833981519152604482015290519081900360640190fd5b69d3c21bcecceda1000000820260018414156122025760218190556110b3565b83600214156122155760228190556110b3565b83600314156122285760238190556110b3565b836004141561223b5760248190556110b3565b836005141561224e5760258190556110b3565b83600614156122615760268190556110b3565b83600714156122745760278190556110b3565b83600814156122875760288190556110b3565b836009141561229a5760298190556110b3565b83600a14156122ad57602a8190556110b3565b83600b14156122c057602b8190556110b3565b83600c14156122d357602c8190556110b3565b83600d14156122e657602d8190556110b3565b83600e14156122f957602e8190556110b3565b83600f141561230c57602f8190556110b3565b6000915050610d7e565b6001600160a01b039081166000908152603160205260409020541690565b6005546000906001600160a01b03163314612384576040805162461bcd60e51b815260206004820152601760248201526000805160206147a0833981519152604482015290519081900360640190fd5b50601155600190565b6005546000906001600160a01b031633146123dd576040805162461bcd60e51b815260206004820152601760248201526000805160206147a0833981519152604482015290519081900360640190fd5b60005b8881101561269e578787828181106123f457fe5b905060200201356001600160a01b0316603160008c8c8581811061241457fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061248e86868381811061247757fe5b90506020020135603060008d8d868181106112d757fe5b603060008c8c8581811061249e57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000208190555060006124e387878481811061136b57fe5b90506124f487878481811061138857fe5b600e55600980548201905561252585858481811061250e57fe5b90506020020135603260008e8e878181106112d757fe5b603260008d8d8681811061253557fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000208190555084848381811061257557fe5b90506020020135600f5401600f819055508a8a8381811061259257fe5b905060200201356001600160a01b03166001600160a01b0316306001600160a01b031660008051602061488c8339815191528989868181106125d057fe5b905060200201356040518082815260200191505060405180910390a38888838181106125f857fe5b905060200201356001600160a01b03166001600160a01b03168b8b8481811061261d57fe5b905060200201356001600160a01b03166001600160a01b03167faee878d4ce275636b8571afc4c23d944e4dee675c1aebcc01c2f8f6b032fb90b89898681811061266357fe5b9050602002013588888781811061267657fe5b604080519485526020918202939093013590840152508051918290030190a3506001016123e0565b5060019998505050505050505050565b600954600090620186a06157e4840204908184039083906126dc906126d684620f42406132fd565b90613135565b95945050505050565b6000333214612729576040805162461bcd60e51b815260206004820152601c6024820152600080516020614780833981519152604482015290519081900360640190fd5b33600090815260036020526040902054430361277c576040805162461bcd60e51b815260206004820152600d60248201526c119c995c5d595b9d0810d85b1b609a1b604482015290519081900360640190fd5b336000908152600360205260409020439055600954600e54600b546064830490920391156127e5576040805162461bcd60e51b815260206004820152601160248201527029b2b636103737ba1030b63637bbb2b21760791b604482015290519081900360640190fd5b3360009081526034602052604090205460ff161561284a576040805162461bcd60e51b815260206004820152601a60248201527f53656c6c206e6f7420616c6c6f77656420666f7220757365722e000000000000604482015290519081900360640190fd5b6000600e5411612898576040805162461bcd60e51b81526020600482015260146024820152736e6f2063697263756c6174656420746f6b656e7360601b604482015290519081900360640190fd5b600084116128e4576040805162461bcd60e51b815260206004820152601460248201527331b0b7103737ba1039b2b6361018103a37b5b2b760611b604482015290519081900360640190fd5b33600090815260306020526040902054841115612948576040805162461bcd60e51b815260206004820152601d60248201527f6e6f7420656e6f75676820746f6b656e7320746f207472616e73616374000000604482015290519081900360640190fd5b600754600e546129599086906130db565b11156129a4576040805162461bcd60e51b8152602060048201526015602482015274657863656564656420746f74616c20737570706c7960581b604482015290519081900360640190fd5b336129e05760405162461bcd60e51b81526004018080602001828103825260218152602001806148ac6021913960400191505060405180910390fd5b336000908152603060205260409020546129fa9085613177565b336000818152603060209081526040918290209390935580518781529051309360008051602061488c833981519152928290030190a36000612a3b8561165a565b600980548290039055600e54909150612a549086613177565b600e556009546000612a668786613356565b600e5460405191925090339083156108fc029084906000818181858888f19350505050158015612a9a573d6000803e3d6000fd5b5060408051838152602081018a9052808201889052606081018590526080810187905260a08101839052905133917fe771a8c700d0802cd276270eb0596a1aead6f28237a9e5f26e00ccf08dad7033919081900360c00190a2506001979650505050505050565b60095490565b6000333214612b4b576040805162461bcd60e51b815260206004820152601c6024820152600080516020614780833981519152604482015290519081900360640190fd5b336000908152600360205260409020544303612b9e576040805162461bcd60e51b815260206004820152600d60248201526c119c995c5d595b9d0810d85b1b609a1b604482015290519081900360640190fd5b336000908152600360205260409020439055600a5415612bf8576040805162461bcd60e51b815260206004820152601060248201526f213abc903737ba1030b63637bbb2b21760811b604482015290519081900360640190fd5b3360009081526033602052604090205460ff1615612c5d576040805162461bcd60e51b815260206004820152601960248201527f427579206e6f7420616c6c6f77656420666f7220757365722e00000000000000604482015290519081900360640190fd5b6001600160a01b038216331415612cbb576040805162461bcd60e51b815260206004820152601e60248201527f53656c66207265666572656e6365206e6f7420616c6c6f776564206275790000604482015290519081900360640190fd5b6001600160a01b038216612d0d576040805162461bcd60e51b81526020600482015260146024820152734e6f20526566657272616c20436f64652062757960601b604482015290519081900360640190fd5b33600081815260316020526040812080546001600160a01b0319166001600160a01b0386161790556009543491612d4b826126d685620f42406132fd565b90506000612d598484613372565b9050612d72600e5460075461317790919063ffffffff16565b811115612db05760405162461bcd60e51b81526004018080602001828103825260228152602001806147e36022913960400191505060405180910390fd5b60008111612dfd576040805162461bcd60e51b815260206004820152601560248201527421b0b7103737ba10313abc9018103a37b5b2b7399760591b604482015290519081900360640190fd5b600654811115612e4e576040805162461bcd60e51b815260206004820152601760248201527626b0bc34b6bab690213abcb4b733902932b0b1b432b21760491b604482015290519081900360640190fd5b60065433600090815260306020526040902054612e6c9083906130db565b1115612eb9576040805162461bcd60e51b815260206004820152601760248201527626b0bc34b6bab690213abcb4b733902932b0b1b432b21760491b604482015290519081900360640190fd5b600e546001600160a01b038616612f17576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6001600160a01b038616600090815260306020526040902054612f3a90836130db565b6001600160a01b038716600090815260306020526040812091909155612f5f8361165a565b600e54909150612f6f90846130db565b600e81905560098054830190819055604080518781526020810187905280820189905260608101839052608081018a905260a0810186905260c0810184905290519192916001600160a01b03808e1692908c16917fda6a7d667b4725fe802e5c174fb82a0f82fbd8455964eed3378f50e4af5a13909181900360e00190a36040805186815290516001600160a01b038b1691309160008051602061488c8339815191529181900360200190a361302786898b8a61339d565b5060019a9950505050505050505050565b6005546000906001600160a01b03163314613088576040805162461bcd60e51b815260206004820152601760248201526000805160206147a0833981519152604482015290519081900360640190fd5b816130b5576001600160a01b0384166000908152603260205260409020839055600e5461149790846130db565b50506001600160a01b0391909116600090815260326020526040902055600190565b3090565b60008282018381101561212c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061212c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614683565b600061212c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614725565b3390565b6001600160a01b0383166132025760405162461bcd60e51b81526004018080602001828103825260258152602001806148cd6025913960400191505060405180910390fd5b6001600160a01b0382166132475760405162461bcd60e51b81526004018080602001828103825260238152602001806147c06023913960400191505060405180910390fd5b61328481604051806060016040528060268152602001614825602691396001600160a01b0386166000908152603060205260409020549190614725565b6001600160a01b0380851660009081526030602052604080822093909355908416815220546132b390826130db565b6001600160a01b03808416600081815260306020908152604091829020949094558051858152905191939287169260008051602061488c83398151915292918290030190a3505050565b60008261330c57506000610d7e565b8282028284828161331957fe5b041461212c5760405162461bcd60e51b815260040180806020018281038252602181526020018061486b6021913960400191505060405180910390fd5b60008061336a8361212686620f4240613135565b949350505050565b6000620186a06157e484020480840382613393856126d684620f42406132fd565b9695505050505050565b6108ca8260005b600f81101561467a576001600160a01b0380861660008181526031602090815260408083205490941680835260309091529290205460115490918783029182029084141561346b576127108b88025b0460085401600881905550613419612710888d028161340e57fe5b600e549190046130db565b600e556001600160a01b038085169087166000805160206148058339815191526127108e8b0260408051929091048252602082018c905260018a0182820152519081900360600190a35050505061467a565b6001600160a01b038416613484576127108b88026133f3565b846135cb57602154811061352d5760006127106012548c02816134a357fe5b6001600160a01b03871660009081526032602052604090205491900491506134cb90826130db565b6001600160a01b0380871660008181526032602090815260409182902094909455600f805486019055805185815293840186905260018a0184820152519092918a169160008051602061484b833981519152919081900360600190a3506135b6565b6127106012548c028161353c57fe5b04600854016008819055506135596127106012548d028161340e57fe5b600e81905550836001600160a01b0316866001600160a01b03166000805160206148058339815191526127106012548f028161359157fe5b60125460408051939092048352602083015260018a0182820152519081900360600190a35b6012546135c4908890613177565b965061466c565b84600114156136ef57602254811061365a5760006127106013548c02816135ee57fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a169160008051602061484b833981519152919081900360600190a3506136e3565b6127106013548c028161366957fe5b04600854016008819055506136866127106013548d028161340e57fe5b600e81905550836001600160a01b0316866001600160a01b03166000805160206148058339815191526127106013548f02816136be57fe5b60135460408051939092048352602083015260018a0182820152519081900360600190a35b6013548703965061466c565b846002141561381357602354811061377e5760006127106014548c028161371257fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a169160008051602061484b833981519152919081900360600190a350613807565b6127106014548c028161378d57fe5b04600854016008819055506137aa6127106014548d028161340e57fe5b600e81905550836001600160a01b0316866001600160a01b03166000805160206148058339815191526127106014548f02816137e257fe5b60145460408051939092048352602083015260018a0182820152519081900360600190a35b6014548703965061466c565b84600314156139375760245481106138a25760006127106015548c028161383657fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a169160008051602061484b833981519152919081900360600190a35061392b565b6127106015548c02816138b157fe5b04600854016008819055506138ce6127106015548d028161340e57fe5b600e81905550836001600160a01b0316866001600160a01b03166000805160206148058339815191526127106015548f028161390657fe5b60155460408051939092048352602083015260018a0182820152519081900360600190a35b6015548703965061466c565b8460041415613a725760255481106139c7576000620186a06016548c028161395b57fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a169160008051602061484b833981519152919081900360600190a350613a5c565b620186a06016548c02816139d757fe5b04600854016008819055506139f5620186a06016548d028161340e57fe5b600e81905550836001600160a01b0316866001600160a01b03166000805160206148058339815191526127106016548f0281613a2d57fe5b04600a60165481613a3a57fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a60165481613a6857fe5b048703965061466c565b8460051415613ba4576026548110613b02576000620186a06017548c0281613a9657fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a169160008051602061484b833981519152919081900360600190a350613b98565b620186a06017548c0281613b1257fe5b0460085401600881905550613b30620186a06017548d028161340e57fe5b600e81905550836001600160a01b0316866001600160a01b0316600080516020614805833981519152620186a06017548f0281613b6957fe5b04600a60175481613b7657fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a60175481613a6857fe5b8460061415613cd6576027548110613c34576000620186a06018548c0281613bc857fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a169160008051602061484b833981519152919081900360600190a350613cca565b620186a06018548c0281613c4457fe5b0460085401600881905550613c62620186a06018548d028161340e57fe5b600e81905550836001600160a01b0316866001600160a01b0316600080516020614805833981519152620186a06018548f0281613c9b57fe5b04600a60185481613ca857fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a60185481613a6857fe5b8460071415613e08576028548110613d66576000620186a06019548c0281613cfa57fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a169160008051602061484b833981519152919081900360600190a350613dfc565b620186a06019548c0281613d7657fe5b0460085401600881905550613d94620186a06019548d028161340e57fe5b600e81905550836001600160a01b0316866001600160a01b0316600080516020614805833981519152620186a06019548f0281613dcd57fe5b04600a60195481613dda57fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a60195481613a6857fe5b8460081415613f3a576029548110613e98576000620186a0601a548c0281613e2c57fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a169160008051602061484b833981519152919081900360600190a350613f2e565b620186a0601a548c0281613ea857fe5b0460085401600881905550613ec6620186a0601a548d028161340e57fe5b600e81905550836001600160a01b0316866001600160a01b0316600080516020614805833981519152620186a0601a548f0281613eff57fe5b04600a601a5481613f0c57fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a601a5481613a6857fe5b846009141561406c57602a548110613fca576000620186a0601b548c0281613f5e57fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a169160008051602061484b833981519152919081900360600190a350614060565b620186a0601b548c0281613fda57fe5b0460085401600881905550613ff8620186a0601b548d028161340e57fe5b600e81905550836001600160a01b0316866001600160a01b0316600080516020614805833981519152620186a0601b548f028161403157fe5b04600a601b548161403e57fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a601b5481613a6857fe5b84600a141561419e57602b5481106140fc576000620186a0601c548c028161409057fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a169160008051602061484b833981519152919081900360600190a350614192565b620186a0601c548c028161410c57fe5b046008540160088190555061412a620186a0601c548d028161340e57fe5b600e81905550836001600160a01b0316866001600160a01b0316600080516020614805833981519152620186a0601c548f028161416357fe5b04600a601c548161417057fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a601c5481613a6857fe5b84600b14156142d057602c54811061422e576000620186a0601d548c02816141c257fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a169160008051602061484b833981519152919081900360600190a3506142c4565b620186a0601d548c028161423e57fe5b046008540160088190555061425c620186a0601d548d028161340e57fe5b600e81905550836001600160a01b0316866001600160a01b0316600080516020614805833981519152620186a0601d548f028161429557fe5b04600a601d54816142a257fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a601d5481613a6857fe5b84600c141561440257602d548110614360576000620186a0601e548c02816142f457fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a169160008051602061484b833981519152919081900360600190a3506143f6565b620186a0601e548c028161437057fe5b046008540160088190555061438e620186a0601e548d028161340e57fe5b600e81905550836001600160a01b0316866001600160a01b0316600080516020614805833981519152620186a0601e548f02816143c757fe5b04600a601e54816143d457fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a601e5481613a6857fe5b84600d141561453457602e548110614492576000620186a0601f548c028161442657fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a169160008051602061484b833981519152919081900360600190a350614528565b620186a0601f548c02816144a257fe5b04600854016008819055506144c0620186a0601f548d028161340e57fe5b600e81905550836001600160a01b0316866001600160a01b0316600080516020614805833981519152620186a0601f548f02816144f957fe5b04600a601f548161450657fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a601f5481613a6857fe5b84600e141561466c57602f5481106145c4576000620186a06020548c028161455857fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a169160008051602061484b833981519152919081900360600190a35061465a565b620186a06020548c02816145d457fe5b04600854016008819055506145f2620186a06020548d028161340e57fe5b600e81905550836001600160a01b0316866001600160a01b0316600080516020614805833981519152620186a06020548f028161462b57fe5b04600a6020548161463857fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a6020548161466657fe5b04870396505b5091965050506001016133a4565b50505050505050565b6000818361470f5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156146d45781810151838201526020016146bc565b50505050905090810190601f1680156147015780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161471b57fe5b0495945050505050565b600081848411156147775760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156146d45781810151838201526020016146bc565b50505090039056fe4f726967696e20616e642053656e646572204d69736d6174636865640000000043616c6c6572206973206e6f7420746865206f776e657200000000000000000045524332303a207472616e7366657220746f20746865207a65726f2061646472657373546f6b656e20616d6f756e7420657863656564656420746f74616c20737570706c79112766730ce440487945c01048dacfc6d04340403f675871e96c4e28cf622ecc45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636503e2fbb2b92f9e0c79b9743877ad3b4ed3fd2d8df69ddba7a376839ed2bc2ff7536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f20616464726573734d6178696d756d204c696d69742052656163686564206f662052656365697665722ea26469706673582212206b19edbff747aed0d93c76f6b5fd55d5dca119ce493bcf35d159c8366a63ea3564736f6c63430007040033

Deployed Bytecode Sourcemap

64:45553:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19994:10;20008:9;19994:23;19986:64;;;;;-1:-1:-1;;;19986:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;19986:64:0;;;;;;;;;;;;;;;64:45553;;;;;5859:88;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6245:427;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6245:427:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;11333:160;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11333:160:0;;:::i;7455:102::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;11505:151;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11505:151:0;;:::i;5530:107::-;;;;;;;;;;;;;:::i;5185:96::-;;;;;;;;;;;;;:::i;11107:146::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11107:146:0;;:::i;12096:301::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12096:301:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12096:301:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12096:301:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12096:301:0;;;;;;;;;;-1:-1:-1;12096:301:0;;-1:-1:-1;12096:301:0;-1:-1:-1;12096:301:0;:::i;6137:87::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9804:642;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9804:642:0;;;;;;;;;;;;;;;:::i;7568:129::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7568:129:0;-1:-1:-1;;;;;7568:129:0;;:::i;14699:1427::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14699:1427:0;;;;;;;:::i;12409:568::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12409:568:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12409:568:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12409:568:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12409:568:0;;;;;;;;;;-1:-1:-1;12409:568:0;;-1:-1:-1;12409:568:0;-1:-1:-1;12409:568:0;:::i;9216:418::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9216:418:0;;;;;;;;;;;;;:::i;1828:44::-;;;;;;;;;;;;;:::i;8593:508::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8593:508:0;;;;;;;:::i;7096:116::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7096:116:0;-1:-1:-1;;;;;7096:116:0;;:::i;1973:33::-;;;;;;;;;;;;;:::i;41994:3617::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;41994:3617:0;;:::i;2239:20::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;2239:20:0;;;;;;;;;;;;;;6686:348;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6686:348:0;;:::i;37693:1059::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37693:1059:0;;:::i;5992:94::-;;;;;;;;;;;;;:::i;12987:596::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12987:596:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12987:596:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12987:596:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12987:596:0;;;;;;;;;;-1:-1:-1;12987:596:0;;-1:-1:-1;12987:596:0;-1:-1:-1;12987:596:0;:::i;38777:564::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;38777:564:0;;;;;;;;:::i;8057:236::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8057:236:0;;:::i;11674:149::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11674:149:0;;:::i;7340:101::-;;;;;;;;;;;;;:::i;16206:1583::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16206:1583:0;;;;;;;:::i;5348:123::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5348:123:0;-1:-1:-1;;;;;5348:123:0;;:::i;11931:153::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11931:153:0;;:::i;13600:1022::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13600:1022:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13600:1022:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13600:1022:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13600:1022:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13600:1022:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13600:1022:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13600:1022:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13600:1022:0;;;;;;;;;;-1:-1:-1;13600:1022:0;;-1:-1:-1;13600:1022:0;-1:-1:-1;13600:1022:0;:::i;7707:334::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7707:334:0;;:::i;35957:1722::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35957:1722:0;;:::i;5702:98::-;;;;;;;;;;;;;:::i;17807:2126::-;;;;;;;;;;;;;;;;-1:-1:-1;17807:2126:0;-1:-1:-1;;;;;17807:2126:0;;:::i;10564:431::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10564:431:0;;;;;;;;;;;;;:::i;7221:99::-;;;;;;;;;;;;;:::i;5859:88::-;5930:9;5923:16;;;;;;;;-1:-1:-1;;5923:16:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5897:13;;5923:16;;5930:9;;5923:16;;5930:9;5923:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5859:88;:::o;6245:427::-;6334:4;6358:12;6355:85;;-1:-1:-1;;;;;;6394:33:0;;;;;;:19;:33;;;;;;;;6387:40;;6355:85;6455:7;6466:1;6455:12;6452:86;;;-1:-1:-1;;;;;;6491:34:0;;;;;;:20;:34;;;;;;;;6484:41;;6452:86;6553:7;6564:1;6553:12;6550:90;;;-1:-1:-1;;;;;;6589:38:0;;;;;;:24;:38;;;;;;;;6582:45;;6550:90;-1:-1:-1;6658:5:0;6245:427;;;;;:::o;11333:160::-;4894:5;;11414:4;;-1:-1:-1;;;;;4894:5:0;4880:10;:19;4872:54;;;;;-1:-1:-1;;;4872:54:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4872:54:0;;;;;;;;;;;;;;;-1:-1:-1;11432:17:0::1;:29:::0;;;11481:4:::1;4938:1;11333:160:::0;;;:::o;7455:102::-;7535:13;;7455:102;:::o;11505:151::-;4894:5;;11581:4;;-1:-1:-1;;;;;4894:5:0;4880:10;:19;4872:54;;;;;-1:-1:-1;;;4872:54:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4872:54:0;;;;;;;;;;;;;;;-1:-1:-1;11599:13:0::1;:25:::0;11644:4:::1;::::0;11505:151::o;5530:107::-;5611:17;;5530:107;:::o;5185:96::-;5261:12;;5185:96;:::o;11107:146::-;4894:5;;11176:4;;-1:-1:-1;;;;;4894:5:0;4880:10;:19;4872:54;;;;;-1:-1:-1;;;4872:54:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4872:54:0;;;;;;;;;;;;;;;-1:-1:-1;11195:12:0::1;:24:::0;11239:4:::1;::::0;11107:146::o;12096:301::-;4894:5;;12222:4;;-1:-1:-1;;;;;4894:5:0;4880:10;:19;4872:54;;;;;-1:-1:-1;;;4872:54:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4872:54:0;;;;;;;;;;;;;;;12249:6:::1;12244:124;12261:25:::0;;::::1;12244:124;;;12337:16;;12354:1;12337:19;;;;;;;;;;;;;-1:-1:-1::0;;;;;12337:19:0::1;12308:7;:26;12316:14;;12331:1;12316:17;;;;;;;-1:-1:-1::0;;;;;12316:17:0::1;::::0;;::::1;::::0;;;::::1;;::::0;::::1;12308:26:::0;;;::::1;::::0;;;;;;;;-1:-1:-1;12308:26:0;:48;;;;;::::1;-1:-1:-1::0;;;;;;12308:48:0;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;12308:48:0;12288:3:::1;12244:124;;;-1:-1:-1::0;12385:4:0::1;::::0;12096:301;-1:-1:-1;;;;;12096:301:0:o;6137:87::-;6207:7;;;;6137:87;:::o;9804:642::-;4894:5;;9920:4;;-1:-1:-1;;;;;4894:5:0;4880:10;:19;4872:54;;;;;-1:-1:-1;;;4872:54:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4872:54:0;;;;;;;;;;;;;;;9942:10;9939:86:::1;;-1:-1:-1::0;;;;;9968:36:0;::::1;;::::0;;;:19:::1;:36;::::0;;;;:43;;-1:-1:-1;;9968:43:0::1;::::0;::::1;;;::::0;;9939:86:::1;10028:7;10037:1;10028:10;10025:87;;;-1:-1:-1::0;;;;;10054:37:0;::::1;;::::0;;;:20:::1;:37;::::0;;;;:44;;-1:-1:-1;;10054:44:0::1;::::0;::::1;;;::::0;;10025:87:::1;10115:7;10124:1;10115:10;10112:91;;;-1:-1:-1::0;;;;;10141:41:0;::::1;;::::0;;;:24:::1;:41;::::0;;;;:48;;-1:-1:-1;;10141:48:0::1;::::0;::::1;;;::::0;;10112:91:::1;10206:7;10215:1;10206:10;10203:210;;;-1:-1:-1::0;;;;;10232:37:0;::::1;;::::0;;;:20:::1;:37;::::0;;;;;;;:44;;;::::1;;-1:-1:-1::0;;10232:44:0;;::::1;::::0;::::1;::::0;;;10291:19:::1;:36:::0;;;;;:43;;;::::1;::::0;::::1;::::0;;10351:24:::1;:41:::0;;;;;:48;;;;::::1;::::0;;::::1;::::0;;10203:210:::1;-1:-1:-1::0;10432:4:0::1;9804:642:::0;;;;;:::o;7568:129::-;-1:-1:-1;;;;;7661:27:0;7630:7;7661:27;;;:20;:27;;;;;;;7568:129::o;14699:1427::-;4894:5;;14798:4;;-1:-1:-1;;;;;4894:5:0;4880:10;:19;4872:54;;;;;-1:-1:-1;;;4872:54:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4872:54:0;;;;;;;;;;;;;;;14820:5:::1;14829:1;14820:10;14816:1268;;;14847:16;:32:::0;;;14816:1268:::1;;;14901:5;14910:1;14901:10;14897:1187;;;14928:16;:32:::0;;;14897:1187:::1;;;14982:5;14991:1;14982:10;14978:1106;;;15009:16;:32:::0;;;14978:1106:::1;;;15063:5;15072:1;15063:10;15059:1025;;;15090:16;:32:::0;;;15059:1025:::1;;;15144:5;15153:1;15144:10;15140:944;;;15171:16;:32:::0;;;15140:944:::1;;;15225:5;15234:1;15225:10;15221:863;;;15252:16;:32:::0;;;15221:863:::1;;;15306:5;15315:1;15306:10;15302:782;;;15333:16;:32:::0;;;15302:782:::1;;;15388:5;15397:1;15388:10;15384:700;;;15415:16;:32:::0;;;15384:700:::1;;;15469:5;15478:1;15469:10;15465:619;;;15496:16;:32:::0;;;15465:619:::1;;;15550:5;15559:2;15550:11;15546:538;;;15578:17;:33:::0;;;15546:538:::1;;;15633:5;15642:2;15633:11;15629:455;;;15661:17;:33:::0;;;15629:455:::1;;;15716:5;15725:2;15716:11;15712:372;;;15744:17;:33:::0;;;15712:372:::1;;;15799:5;15808:2;15799:11;15795:289;;;15827:17;:33:::0;;;15795:289:::1;;;15882:5;15891:2;15882:11;15878:206;;;15910:17;:33:::0;;;15878:206:::1;;;15965:5;15974:2;15965:11;15961:123;;;15993:17;:33:::0;;;15961:123:::1;;;-1:-1:-1::0;16066:5:0::1;16059:12;;15961:123;-1:-1:-1::0;16114:4:0::1;14699:1427:::0;;;;:::o;12409:568::-;4894:5;;12518:4;;-1:-1:-1;;;;;4894:5:0;4880:10;:19;4872:54;;;;;-1:-1:-1;;;4872:54:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4872:54:0;;;;;;;;;;;;;;;12545:6:::1;12540:408;12557:21:::0;;::::1;12540:408;;;12631:45;12664:8;;12673:1;12664:11;;;;;;;;;;;;;12631:13;:28;12645:10;;12656:1;12645:13;;;;;;;;;;;;;-1:-1:-1::0;;;;;12645:13:0::1;-1:-1:-1::0;;;;;12631:28:0::1;-1:-1:-1::0;;;;;12631:28:0::1;;;;;;;;;;;;;:32;;:45;;;;:::i;:::-;12600:13;:28;12614:10;;12625:1;12614:13;;;;;;;;;;;;;-1:-1:-1::0;;;;;12614:13:0::1;-1:-1:-1::0;;;;;12600:28:0::1;-1:-1:-1::0;;;;;12600:28:0::1;;;;;;;;;;;;:76;;;;12690:22;12715:25;12728:8;;12737:1;12728:11;;;;;;;;;;;;;12715:12;:25::i;:::-;12690:50;;12774:34;12796:8;;12805:1;12796:11;;;;;;;;;;;;;12774:17;;:21;;:34;;;;:::i;:::-;12754:17;:54:::0;12837:12:::1;::::0;;:29;::::1;12822:44:::0;;12909:10;;12920:1;12909:13;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;12909:13:0::1;-1:-1:-1::0;;;;;12885:51:0::1;12902:4;-1:-1:-1::0;;;;;12885:51:0::1;-1:-1:-1::0;;;;;;;;;;;12924:8:0::1;;12933:1;12924:11;;;;;;;;;;;;;12885:51;;;;;;;;;;;;;;;;;;-1:-1:-1::0;12580:3:0::1;;12540:408;;9216:418:::0;4894:5;;9343:4;;-1:-1:-1;;;;;4894:5:0;4880:10;:19;4872:54;;;;;-1:-1:-1;;;4872:54:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4872:54:0;;;;;;;;;;;;;;;9365:19;9362:239:::1;;-1:-1:-1::0;;;;;9400:30:0;::::1;;::::0;;;:13:::1;:30;::::0;;;;:43;;;9478:17:::1;::::0;:33:::1;::::0;9433:10;9478:21:::1;:33::i;:::-;9458:17;:53:::0;9362:239:::1;;;-1:-1:-1::0;;;;;;;9544:30:0;;;::::1;;::::0;;;:13:::1;:30;::::0;;;;:43;9620:4:::1;::::0;9216:418::o;1828:44::-;;;;;;;;;;;;;;;-1:-1:-1;;1828:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8593:508::-;4894:5;;8681:4;;-1:-1:-1;;;;;4894:5:0;4880:10;:19;4872:54;;;;;-1:-1:-1;;;4872:54:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4872:54:0;;;;;;;;;;;;;;;8703:14;8700:70:::1;;8735:14;:21:::0;;;8700:70:::1;8773:9;8786:1;8773:14;8770:71;;;8805:15;:22:::0;;;8770:71:::1;8844:9;8857:1;8844:14;8841:75;;;8876:19;:26:::0;;;8841:75:::1;8919:9;8932:1;8919:14;8916:152;;;-1:-1:-1::0;;8951:19:0::1;:26:::0;;;8994:15:::1;:22:::0;;;9033:14:::1;:21:::0;-1:-1:-1;;8593:508:0:o;7096:116::-;-1:-1:-1;;;;;7183:20:0;7152:7;7183:20;;;:13;:20;;;;;;;7096:116::o;1973:33::-;;;;;;;;;;;;;;;-1:-1:-1;;1973:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41994:3617;42049:7;42119:12;42098:17;;:33;42069:126;;42181:1;42148:21;:34;42069:126;42229:12;42209:17;;:32;:70;;;;;42266:13;42245:17;;:34;;42209:70;42206:145;;;42329:9;42320:18;;42296:21;:42;42206:145;42385:13;42365:17;;:33;:71;;;;;42423:13;42402:17;;:34;;42365:71;42362:146;;;42486:9;42477:18;;42453:21;:42;42362:146;42542:13;42522:17;;:33;:71;;;;;42580:13;42559:17;;:34;;42522:71;42519:147;;;42643:10;42634:19;;42610:21;:43;42519:147;42700:13;42680:17;;:33;:71;;;;;42738:13;42717:17;;:34;;42680:71;42677:147;;;42801:10;42792:19;;42768:21;:43;42677:147;42858:13;42838:17;;:33;:71;;;;;42896:13;42875:17;;:34;;42838:71;42835:147;;;42959:10;42950:19;;42926:21;:43;42835:147;43016:13;42996:17;;:33;:71;;;;;43054:13;43033:17;;:34;;42996:71;42993:148;;;43117:11;43108:20;;43084:21;:44;42993:148;43175:13;43155:17;;:33;:71;;;;;43213:13;43192:17;;:34;;43155:71;43152:148;;;43276:11;43267:20;;43243:21;:44;43152:148;43334:13;43314:17;;:33;:71;;;;;43372:13;43351:17;;:34;;43314:71;43311:148;;;43435:11;43426:20;;43402:21;:44;43311:148;43493:13;43473:17;;:33;:71;;;;;43531:13;43510:17;;:34;;43473:71;43470:148;;;43594:11;43585:20;;43561:21;:44;43470:148;43652:13;43632:17;;:33;:71;;;;;43690:13;43669:17;;:34;;43632:71;43629:149;;;43753:12;43744:21;;43720;:45;43629:149;43812:13;43792:17;;:33;:71;;;;;43850:13;43829:17;;:34;;43792:71;43789:149;;;43913:12;43904:21;;43880;:45;43789:149;43972:13;43952:17;;:33;:71;;;;;44010:13;43989:17;;:34;;43952:71;43949:149;;;44073:12;44064:21;;44040;:45;43949:149;44132:13;44112:17;;:33;:71;;;;;44170:13;44149:17;;:34;;44112:71;44109:149;;;44233:12;44224:21;;44200;:45;44109:149;44292:13;44272:17;;:33;:71;;;;;44330:13;44309:17;;:34;;44272:71;44269:150;;;44393:13;44384:22;;44360:21;:46;44269:150;44453:13;44433:17;;:33;:71;;;;;44491:13;44470:17;;:34;;44433:71;44430:150;;;44554:13;44545:22;;44521:21;:46;44430:150;44614:13;44594:17;;:33;:71;;;;;44652:13;44631:17;;:34;;44594:71;44591:150;;;44715:13;44706:22;;44682:21;:46;44591:150;44775:13;44755:17;;:33;:71;;;;;44813:13;44792:17;;:34;;44755:71;44752:150;;;44876:13;44867:22;;44843:21;:46;44752:150;44936:13;44916:17;;:33;:71;;;;;44974:13;44953:17;;:34;;44916:71;44913:151;;;45037:14;45028:23;;45004:21;:47;44913:151;45098:13;45078:17;;:33;:71;;;;;45136:13;45115:17;;:34;;45078:71;45075:151;;;45199:14;45190:23;;45166:21;:47;45075:151;45260:13;45240:17;;:33;:71;;;;;45298:13;45277:17;;:34;;45240:71;45237:152;;;45361:15;45352:24;;45328:21;:48;45237:152;45423:13;45403:17;;:33;:71;;;;;45461:13;45440:17;;:34;;45403:71;45400:152;;;45524:15;45515:24;;45491:21;:48;45400:152;45570:21;;:32;;45596:5;45570:25;:32::i;2239:20::-;;;-1:-1:-1;;;;;2239:20:0;;:::o;6686:348::-;6754:7;6778:12;6775:66;;-1:-1:-1;6814:14:0;;6807:21;;6775:66;6856:7;6867:1;6856:12;6853:67;;;-1:-1:-1;6892:15:0;;6885:22;;6853:67;6935:7;6946:1;6935:12;6932:71;;;-1:-1:-1;6971:19:0;;6964:26;;6932:71;-1:-1:-1;7021:1:0;6686:348;;;:::o;37693:1059::-;37756:4;37782:10;37796:9;37782:23;37774:64;;;;;-1:-1:-1;;;37774:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;37774:64:0;;;;;;;;;;;;;;;37889:10;37903:1;37874:26;;;:14;:26;;;;;;37859:12;:41;37851:71;;;;;-1:-1:-1;;;37851:71:0;;;;;;;;;;;;-1:-1:-1;;;37851:71:0;;;;;;;;;;;;;;;37950:10;37935:26;;;;:14;:26;;;;;37964:12;37935:41;;37997:19;;:24;37989:58;;;;;-1:-1:-1;;;37989:58:0;;;;;;;;;;;;-1:-1:-1;;;37989:58:0;;;;;;;;;;;;;;;38093:10;38068:36;;;;:24;:36;;;;;;;;:45;38060:88;;;;;-1:-1:-1;;;38060:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;38189:1;38169:17;;:21;38161:54;;;;;-1:-1:-1;;;38161:54:0;;;;;;;;;;;;-1:-1:-1;;;38161:54:0;;;;;;;;;;;;;;;38250:1;38236:11;:15;38228:50;;;;;-1:-1:-1;;;38228:50:0;;;;;;;;;;;;-1:-1:-1;;;38228:50:0;;;;;;;;;;;;;;;38335:10;38314:32;;;;:20;:32;;;;;;38299:47;;;38291:90;;;;;-1:-1:-1;;;38291:90:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;38417:15;;38402:11;:30;;38394:68;;;;;-1:-1:-1;;;38394:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;38531:10;38510:32;;;;:20;:32;;;;;;:49;;38547:11;38510:36;:49::i;:::-;38496:10;38475:32;;;;:20;:32;;;;;:84;38590:15;;:32;;38610:11;38590:19;:32::i;:::-;38572:15;:50;38635:32;;:10;;:32;;;;;38655:11;;38635:32;;;;38655:11;38635:10;:32;;;;;;;;;;;;;;;;;;;;-1:-1:-1;38685:34:0;;;;;;;;38696:10;;38685:34;;;;;;;;;;-1:-1:-1;38739:4:0;37693:1059;;;:::o;5992:94::-;6066:11;6059:18;;;;;;;;-1:-1:-1;;6059:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6032:13;;6059:18;;6066:11;;6059:18;;6066:11;6059:18;;;;;;;;;;;;;;;;;;;;;;;;12987:596;4894:5;;13099:4;;-1:-1:-1;;;;;4894:5:0;4880:10;:19;4872:54;;;;;-1:-1:-1;;;4872:54:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4872:54:0;;;;;;;;;;;;;;;13126:6:::1;13121:424;13138:21:::0;;::::1;13121:424;;;13181:22;13206:8;;13215:1;13206:11;;;;;;;;;;;;;13181:36;;13279:14;13240:20;:35;13261:10;;13272:1;13261:13;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;13261:13:0::1;13240:35:::0;;-1:-1:-1;13240:35:0;::::1;::::0;;;;;;-1:-1:-1;13240:35:0;:53;;;;;::::1;::::0;;13334:15:::1;::::0;;:32;;;::::1;13316:50:::0;;-1:-1:-1;13161:3:0::1;13121:424;;38777:564:::0;38849:4;38874:10;38888:9;38874:23;38866:64;;;;;-1:-1:-1;;;38866:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;38866:64:0;;;;;;;;;;;;;;;38958:1;38949:6;:10;38941:49;;;;;-1:-1:-1;;;38941:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;39019:14;;39009:6;:24;;39001:59;;;;;-1:-1:-1;;;39001:59:0;;;;;;;;;;;;-1:-1:-1;;;39001:59:0;;;;;;;;;;;;;;;39119:14;;-1:-1:-1;;;;;39090:24:0;;;;;;:13;:24;;;;;;39079:36;;:6;;:10;:36::i;:::-;:54;;39071:101;;;;-1:-1:-1;;;39071:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39205:10;39191:25;;;;:13;:25;;;;;;:35;-1:-1:-1;39191:35:0;39183:75;;;;;-1:-1:-1;;;39183:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;39269:42;39279:12;:10;:12::i;:::-;39293:9;39304:6;39269:9;:42::i;8057:236::-;8122:7;8154:22;8179:63;8237:3;8224:12;;:16;;;;;;8208:12;;:33;8180:22;8196:5;8180:11;:15;;:22;;;;:::i;:::-;8179:28;;:63::i;:::-;8154:88;8057:236;-1:-1:-1;;;8057:236:0:o;11674:149::-;4894:5;;11746:4;;-1:-1:-1;;;;;4894:5:0;4880:10;:19;4872:54;;;;;-1:-1:-1;;;4872:54:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4872:54:0;;;;;;;;;;;;;;;-1:-1:-1;11764:15:0::1;:28:::0;11811:4:::1;::::0;11674:149::o;7340:101::-;7417:15;;7340:101;:::o;16206:1583::-;4894:5;;16301:4;;-1:-1:-1;;;;;4894:5:0;4880:10;:19;4872:54;;;;;-1:-1:-1;;;4872:54:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4872:54:0;;;;;;;;;;;;;;;16351:26;;;16402:1:::1;16393:10:::0;::::1;16389:1358;;;16420:13;:38:::0;;;16389:1358:::1;;;16480:5;16489:1;16480:10;16476:1271;;;16507:13;:38:::0;;;16476:1271:::1;;;16567:5;16576:1;16567:10;16563:1184;;;16594:13;:38:::0;;;16563:1184:::1;;;16654:5;16663:1;16654:10;16650:1097;;;16681:13;:38:::0;;;16650:1097:::1;;;16741:5;16750:1;16741:10;16737:1010;;;16768:13;:38:::0;;;16737:1010:::1;;;16828:5;16837:1;16828:10;16824:923;;;16855:13;:38:::0;;;16824:923:::1;;;16915:5;16924:1;16915:10;16911:836;;;16942:13;:38:::0;;;16911:836:::1;;;17003:5;17012:1;17003:10;16999:748;;;17030:13;:38:::0;;;16999:748:::1;;;17090:5;17099:1;17090:10;17086:661;;;17117:13;:38:::0;;;17086:661:::1;;;17177:5;17186:2;17177:11;17173:574;;;17205:14;:39:::0;;;17173:574:::1;;;17266:5;17275:2;17266:11;17262:485;;;17294:14;:39:::0;;;17262:485:::1;;;17355:5;17364:2;17355:11;17351:396;;;17383:14;:39:::0;;;17351:396:::1;;;17444:5;17453:2;17444:11;17440:307;;;17472:14;:39:::0;;;17440:307:::1;;;17533:5;17542:2;17533:11;17529:218;;;17561:14;:39:::0;;;17529:218:::1;;;17622:5;17631:2;17622:11;17618:129;;;17650:14;:39:::0;;;17618:129:::1;;;17729:5;17722:12;;;;;5348:123:::0;-1:-1:-1;;;;;5442:21:0;;;5411:7;5442:21;;;:7;:21;;;;;;;;5348:123::o;11931:153::-;4894:5;;12008:4;;-1:-1:-1;;;;;4894:5:0;4880:10;:19;4872:54;;;;;-1:-1:-1;;;4872:54:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4872:54:0;;;;;;;;;;;;;;;-1:-1:-1;12027:9:0::1;:25:::0;12072:4:::1;::::0;11931:153::o;13600:1022::-;4894:5;;13790:4;;-1:-1:-1;;;;;4894:5:0;4880:10;:19;4872:54;;;;;-1:-1:-1;;;4872:54:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4872:54:0;;;;;;;;;;;;;;;13817:6:::1;13812:781;13829:25:::0;;::::1;13812:781;;;13905:16;;13922:1;13905:19;;;;;;;;;;;;;-1:-1:-1::0;;;;;13905:19:0::1;13876:7;:26;13884:14;;13899:1;13884:17;;;;;;;;;;;;;-1:-1:-1::0;;;;;13884:17:0::1;-1:-1:-1::0;;;;;13876:26:0::1;-1:-1:-1::0;;;;;13876:26:0::1;;;;;;;;;;;;;:48;;;;;-1:-1:-1::0;;;;;13876:48:0::1;;;;;-1:-1:-1::0;;;;;13876:48:0::1;;;;;;13974:49;14011:8;;14020:1;14011:11;;;;;;;;;;;;;13974:13;:32;13988:14;;14003:1;13988:17;;;;;;13974:49;13939:13;:32;13953:14;;13968:1;13953:17;;;;;;;;;;;;;-1:-1:-1::0;;;;;13953:17:0::1;-1:-1:-1::0;;;;;13939:32:0::1;-1:-1:-1::0;;;;;13939:32:0::1;;;;;;;;;;;;:84;;;;14038:22;14063:25;14076:8;;14085:1;14076:11;;;;;;14063:25;14038:50;;14123:34;14145:8;;14154:1;14145:11;;;;;;14123:34;14103:17;:54:::0;14187:12:::1;::::0;;:29;::::1;14172:44:::0;;14273:63:::1;14317:15:::0;;14333:1;14317:18;;::::1;;;;;;;;;;;14273:20;:39;14294:14;;14309:1;14294:17;;;;;;14273:63;14231:20;:39;14252:14;;14267:1;14252:17;;;;;;;;;;;;;-1:-1:-1::0;;;;;14252:17:0::1;-1:-1:-1::0;;;;;14231:39:0::1;-1:-1:-1::0;;;;;14231:39:0::1;;;;;;;;;;;;:105;;;;14387:15;;14403:1;14387:18;;;;;;;;;;;;;14369:15;;:36;14351:15;:54;;;;14449:14;;14464:1;14449:17;;;;;;;;;;;;;-1:-1:-1::0;;;;;14449:17:0::1;-1:-1:-1::0;;;;;14425:55:0::1;14442:4;-1:-1:-1::0;;;;;14425:55:0::1;-1:-1:-1::0;;;;;;;;;;;14468:8:0::1;;14477:1;14468:11;;;;;;;;;;;;;14425:55;;;;;;;;;;;;;;;;;;14528:16;;14545:1;14528:19;;;;;;;;;;;;;-1:-1:-1::0;;;;;14528:19:0::1;-1:-1:-1::0;;;;;14500:81:0::1;14510:14;;14525:1;14510:17;;;;;;;;;;;;;-1:-1:-1::0;;;;;14510:17:0::1;-1:-1:-1::0;;;;;14500:81:0::1;;14549:8;;14558:1;14549:11;;;;;;;;;;;;;14562:15;;14578:1;14562:18;;;;;;;14500:81;::::0;;;;;14562:18:::1;::::0;;::::1;::::0;;;::::1;;14500:81:::0;;::::1;::::0;-1:-1:-1;14500:81:0;;;;;;;;::::1;-1:-1:-1::0;13856:3:0::1;;13812:781;;;-1:-1:-1::0;14610:4:0::1;::::0;13600:1022;-1:-1:-1;;;;;;;;;13600:1022:0:o;7707:334::-;7976:12;;7774:7;;7848:6;7842:5;7826:21;;:28;;7886:25;;;;7774:7;;7948:41;;7949:21;7886:25;7964:5;7949:14;:21::i;:::-;7948:27;;:41::i;:::-;7922:67;7707:334;-1:-1:-1;;;;;7707:334:0:o;35957:1722::-;36009:4;36035:10;36049:9;36035:23;36027:64;;;;;-1:-1:-1;;;36027:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;36027:64:0;;;;;;;;;;;;;;;36142:10;36156:1;36127:26;;;:14;:26;;;;;;36112:12;:41;36104:71;;;;;-1:-1:-1;;;36104:71:0;;;;;;;;;;;;-1:-1:-1;;;36104:71:0;;;;;;;;;;;;;;;36203:10;36188:26;;;;:14;:26;;;;;36217:12;36188:41;;36278:12;;36344:17;;36382:15;;36291:3;36278:16;;36262:33;;;;36382:20;36374:50;;;;;-1:-1:-1;;;36374:50:0;;;;;;;;;;;;-1:-1:-1;;;36374:50:0;;;;;;;;;;;;;;;36466:10;36445:32;;;;:20;:32;;;;;;;;:41;36437:80;;;;;-1:-1:-1;;;36437:80:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;36558:1;36538:17;;:21;36530:54;;;;;-1:-1:-1;;;36530:54:0;;;;;;;;;;;;-1:-1:-1;;;36530:54:0;;;;;;;;;;;;;;;36619:1;36605:11;:15;36597:48;;;;;-1:-1:-1;;;36597:48:0;;;;;;;;;;;;-1:-1:-1;;;36597:48:0;;;;;;;;;;;;;;;36695:10;36681:25;;;;:13;:25;;;;;;36666:40;;;36658:82;;;;;-1:-1:-1;;;36658:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;36799:12;;36777:17;;36761:34;;:11;;:15;:34::i;:::-;:50;;36753:84;;;;;-1:-1:-1;;;36753:84:0;;;;;;;;;;;;-1:-1:-1;;;36753:84:0;;;;;;;;;;;;;;;36858:10;36850:70;;;;-1:-1:-1;;;36850:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36975:10;36961:25;;;;:13;:25;;;;;;:42;;36991:11;36961:29;:42::i;:::-;36947:10;36933:25;;;;:13;:25;;;;;;;;;:70;;;;37021:48;;;;;;;37050:4;;-1:-1:-1;;;;;;;;;;;37021:48:0;;;;;;;37082:22;37107:25;37120:11;37107:12;:25::i;:::-;37160:12;;;:29;;;37145:44;;37222:17;;37082:50;;-1:-1:-1;37222:34:0;;37244:11;37222:21;:34::i;:::-;37202:17;:54;37298:12;;37269:26;37349:40;37367:11;37379:9;37349:17;:40::i;:::-;37437:17;;37467:36;;37323:66;;-1:-1:-1;37437:17:0;37467:10;;:36;;;;;37323:66;;37402:32;37467:36;37402:32;37467:36;37323:66;37467:10;:36;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37521:125:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37526:10;;37521:125;;;;;;;;;;-1:-1:-1;37666:4:0;;35957:1722;-1:-1:-1;;;;;;;35957:1722:0:o;5702:98::-;5779:12;;5702:98;:::o;17807:2126::-;17867:4;17893:10;17907:9;17893:23;17885:64;;;;;-1:-1:-1;;;17885:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17885:64:0;;;;;;;;;;;;;;;17999:10;18013:1;17984:26;;;:14;:26;;;;;;17969:12;:41;17961:71;;;;;-1:-1:-1;;;17961:71:0;;;;;;;;;;;;-1:-1:-1;;;17961:71:0;;;;;;;;;;;;;;;18059:10;18044:26;;;;:14;:26;;;;;18073:12;18044:41;;18105:14;;:19;18097:48;;;;;-1:-1:-1;;;18097:48:0;;;;;;;;;;;;-1:-1:-1;;;18097:48:0;;;;;;;;;;;;;;;18185:10;18165:31;;;;:19;:31;;;;;;;;:40;18157:78;;;;;-1:-1:-1;;;18157:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18255:25:0;;18270:10;18255:25;;18247:68;;;;;-1:-1:-1;;;18247:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18335:25:0;;18327:58;;;;;-1:-1:-1;;;18327:58:0;;;;;;;;;;;;-1:-1:-1;;;18327:58:0;;;;;;;;;;;;;;;18405:10;18397:19;;;;:7;:19;;;;;:33;;-1:-1:-1;;;;;;18397:33:0;-1:-1:-1;;;;;18397:33:0;;;;;18541:12;;18501:9;;18591:37;18541:12;18592:21;18501:9;18607:5;18592:14;:21::i;18591:37::-;18565:63;;18640:24;18667:39;18686:10;18697:8;18667:18;:39::i;:::-;18640:66;;18746:35;18763:17;;18746:12;;:16;;:35;;;;:::i;:::-;18726:16;:55;;18718:102;;;;-1:-1:-1;;;18718:102:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18859:1;18840:16;:20;18832:54;;;;;-1:-1:-1;;;18832:54:0;;;;;;;;;;;;-1:-1:-1;;;18832:54:0;;;;;;;;;;;;;;;18926:14;;18906:16;:34;;18898:70;;;;;-1:-1:-1;;;18898:70:0;;;;;;;;;;;;-1:-1:-1;;;18898:70:0;;;;;;;;;;;;;;;19039:14;;19023:10;19009:25;;;;:13;:25;;;;;;18988:47;;:16;;:20;:47::i;:::-;:65;;18980:101;;;;;-1:-1:-1;;;18980:101:0;;;;;;;;;;;;-1:-1:-1;;;18980:101:0;;;;;;;;;;;;;;;19128:17;;-1:-1:-1;;;;;19165:19:0;;19157:63;;;;;-1:-1:-1;;;19157:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19255:20:0;;;;;;:13;:20;;;;;;:42;;19280:16;19255:24;:42::i;:::-;-1:-1:-1;;;;;19232:20:0;;;;;;:13;:20;;;;;:65;;;;19334:30;19347:16;19334:12;:30::i;:::-;19396:17;;19309:55;;-1:-1:-1;19396:39:0;;19418:16;19396:21;:39::i;:::-;19376:17;:59;;;19462:12;;;:29;;19447:44;;;;19622:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19462:29;;19376:59;-1:-1:-1;;;;;19622:141:0;;;;;;;;;;;;;;;;;19780:48;;;;;;;;-1:-1:-1;;;;;19780:48:0;;;19797:4;;-1:-1:-1;;;;;;;;;;;19780:48:0;;;;;;;;19840:62;19858:15;19874:10;19886:5;19893:8;19840:17;:62::i;:::-;-1:-1:-1;19921:4:0;;17807:2126;-1:-1:-1;;;;;;;;;;17807:2126:0:o;10564:431::-;4894:5;;10692:4;;-1:-1:-1;;;;;4894:5:0;4880:10;:19;4872:54;;;;;-1:-1:-1;;;4872:54:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4872:54:0;;;;;;;;;;;;;;;10714:19;10711:251:::1;;-1:-1:-1::0;;;;;10748:37:0;::::1;;::::0;;;:20:::1;:37;::::0;;;;:50;;;10832:17:::1;::::0;:33:::1;::::0;10788:10;10832:21:::1;:33::i;10711:251::-;-1:-1:-1::0;;;;;;;10898:37:0;;;::::1;;::::0;;;:20:::1;:37;::::0;;;;:50;10981:4:::1;::::0;10564:431::o;7221:99::-;7306:4;7221:99;:::o;45886:181::-;45944:7;45976:5;;;46000:6;;;;45992:46;;;;;-1:-1:-1;;;45992:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;48187:132;48245:7;48272:39;48276:1;48279;48272:39;;;;;;;;;;;;;;;;;:3;:39::i;46350:136::-;46408:7;46435:43;46439:1;46442;46435:43;;;;;;;;;;;;;;;;;:3;:43::i;41893:90::-;41965:10;41893:90;:::o;40062:493::-;-1:-1:-1;;;;;40168:20:0;;40160:70;;;;-1:-1:-1;;;40160:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;40249:23:0;;40241:71;;;;-1:-1:-1;;;40241:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40347:75;40373:6;40347:75;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;40347:21:0;;;;;;:13;:21;;;;;;;:75;:25;:75::i;:::-;-1:-1:-1;;;;;40323:21:0;;;;;;;:13;:21;;;;;;:99;;;;40460:24;;;;;;;:36;;40489:6;40460:28;:36::i;:::-;-1:-1:-1;;;;;40433:24:0;;;;;;;:13;:24;;;;;;;;;:63;;;;40512:35;;;;;;;40433:24;;40512:35;;;;-1:-1:-1;;;;;;;;;;;40512:35:0;;;;;;;;40062:493;;;:::o;47240:471::-;47298:7;47543:6;47539:47;;-1:-1:-1;47573:1:0;47566:8;;47539:47;47610:5;;;47614:1;47610;:5;:1;47634:5;;;;;:10;47626:56;;;;-1:-1:-1;;;47626:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39356:214;39445:7;;39490:39;39519:9;39491:22;:11;39507:5;39491:15;:22::i;39490:39::-;39465:64;39356:214;-1:-1:-1;;;;39356:214:0:o;35547:348::-;35638:7;35704:6;35698:5;35682:21;;:28;35746:25;;;35638:7;35812:37;35840:8;35813:21;35746:25;35828:5;35813:14;:21::i;35812:37::-;35786:63;35547:348;-1:-1:-1;;;;;;35547:348:0:o;20801:14672::-;20992:4;21022:15;20963:26;21048:14409;21067:2;21065:1;:4;21048:14409;;;-1:-1:-1;;;;;21119:24:0;;;21100:16;21119:24;;;:7;:24;;;;;;;;;;;;21183:23;;;:13;:23;;;;;;;21331:9;;21183:23;;21249:25;;;;21313:27;;;21464;;21461:405;;;21588:5;21544:43;;;:49;;21527:13;;:67;21511:13;:83;;;;21633:72;21699:5;21680:18;21655:24;:43;:49;;;;;21633:17;;;21655:49;;21633:21;:72::i;:::-;21613:17;:92;-1:-1:-1;;;;;21729:97:0;;;;;;-1:-1:-1;;;;;;;;;;;21796:5:0;21752:43;;;21729:97;;;21752:49;;;;21729:97;;;;;;;;21824:1;21822:3;;21729:97;;;;;;;;;;;;;21845:5;;;;;;21461:405;-1:-1:-1;;;;;21897:22:0;;21894:400;;22016:5;21972:43;;;:49;;21894:400;22312:6;22308:13093;;22356:13;;22341;:28;22338:746;;22393:17;22450:5;22433:16;;22413:19;:36;:42;;;;;-1:-1:-1;;;;;22511:30:0;;;;;;:20;:30;;;;;;22413:42;;;;-1:-1:-1;22511:45:0;;22413:42;22511:34;:45::i;:::-;-1:-1:-1;;;;;22478:30:0;;;;;;;:20;:30;;;;;;;;;:78;;;;22597:15;;;:27;;22579:45;;22652:50;;;;;;;;;;;-1:-1:-1;22698:3:0;;22652:50;;;;;22478:30;;22652:50;;;;-1:-1:-1;;;;;;;;;;;22652:50:0;;;;;;;;;22338:746;;;;22824:5;22807:16;;22782:24;:41;:47;;;;;;22765:13;;:65;22749:13;:81;;;;22873:70;22937:5;22920:16;;22895:24;:41;:47;;;;22873:70;22853:17;:90;;;;22984:8;-1:-1:-1;;;;;22971:93:0;22978:5;-1:-1:-1;;;;;22971:93:0;-1:-1:-1;;;;;;;;;;;23036:5:0;23019:16;;22994:24;:41;:47;;;;;23043:16;;22971:93;;;22994:47;;;;22971:93;;;;;;23062:1;23060:3;;22971:93;;;;;;;;;;;;;22338:746;23146:16;;23123:40;;:18;;:22;:40::i;:::-;23102:61;;22308:13093;;;23205:1;23210;23205:6;23201:12200;;;23249:13;;23234;:28;23231:711;;23286:17;23343:5;23326:16;;23306:19;:36;:42;;;;;-1:-1:-1;;;;;23371:30:0;;;;;;;:20;:30;;;;;;;;;:43;;23306:42;;;;23371:43;;;;;;23455:15;;;:27;;23437:45;;23510:50;;;;;;;;;;;-1:-1:-1;23556:3:0;;23510:50;;;;;23306:42;;-1:-1:-1;23371:30:0;23510:50;;;;-1:-1:-1;;;;;;;;;;;23510:50:0;;;;;;;;;23231:711;;;;23682:5;23665:16;;23640:24;:41;:47;;;;;;23623:13;;:65;23607:13;:81;;;;23731:70;23795:5;23778:16;;23753:24;:41;:47;;;;23731:70;23711:17;:90;;;;23842:8;-1:-1:-1;;;;;23829:93:0;23836:5;-1:-1:-1;;;;;23829:93:0;-1:-1:-1;;;;;;;;;;;23894:5:0;23877:16;;23852:24;:41;:47;;;;;23901:16;;23829:93;;;23852:47;;;;23829:93;;;;;;23920:1;23918:3;;23829:93;;;;;;;;;;;;;23231:711;24002:16;;23981:18;:37;23960:58;;23201:12200;;;24064:1;24069;24064:6;24061:11340;;;24108:13;;24093;:28;24090:711;;24145:17;24202:5;24185:16;;24165:19;:36;:42;;;;;-1:-1:-1;;;;;24230:30:0;;;;;;;:20;:30;;;;;;;;;:43;;24165:42;;;;24230:43;;;;;;24314:15;;;:27;;24296:45;;24369:50;;;;;;;;;;;-1:-1:-1;24415:3:0;;24369:50;;;;;24165:42;;-1:-1:-1;24230:30:0;24369:50;;;;-1:-1:-1;;;;;;;;;;;24369:50:0;;;;;;;;;24090:711;;;;24541:5;24524:16;;24499:24;:41;:47;;;;;;24482:13;;:65;24466:13;:81;;;;24590:70;24654:5;24637:16;;24612:24;:41;:47;;;;24590:70;24570:17;:90;;;;24701:8;-1:-1:-1;;;;;24688:93:0;24695:5;-1:-1:-1;;;;;24688:93:0;-1:-1:-1;;;;;;;;;;;24753:5:0;24736:16;;24711:24;:41;:47;;;;;24760:16;;24688:93;;;24711:47;;;;24688:93;;;;;;24779:1;24777:3;;24688:93;;;;;;;;;;;;;24090:711;24861:16;;24840:18;:37;24819:58;;24061:11340;;;24923:1;24928;24923:6;24920:10481;;;24967:13;;24952;:28;24949:711;;25004:17;25061:5;25044:16;;25024:19;:36;:42;;;;;-1:-1:-1;;;;;25089:30:0;;;;;;;:20;:30;;;;;;;;;:43;;25024:42;;;;25089:43;;;;;;25173:15;;;:27;;25155:45;;25228:50;;;;;;;;;;;-1:-1:-1;25274:3:0;;25228:50;;;;;25024:42;;-1:-1:-1;25089:30:0;25228:50;;;;-1:-1:-1;;;;;;;;;;;25228:50:0;;;;;;;;;24949:711;;;;25400:5;25383:16;;25358:24;:41;:47;;;;;;25341:13;;:65;25325:13;:81;;;;25449:70;25513:5;25496:16;;25471:24;:41;:47;;;;25449:70;25429:17;:90;;;;25560:8;-1:-1:-1;;;;;25547:93:0;25554:5;-1:-1:-1;;;;;25547:93:0;-1:-1:-1;;;;;;;;;;;25612:5:0;25595:16;;25570:24;:41;:47;;;;;25619:16;;25547:93;;;25570:47;;;;25547:93;;;;;;25638:1;25636:3;;25547:93;;;;;;;;;;;;;24949:711;25720:16;;25699:18;:37;25678:58;;24920:10481;;;25782:1;25787;25782:6;25779:9622;;;25828:13;;25813;:28;25810:717;;25865:17;25922:6;25905:16;;25885:19;:36;:43;;;;;-1:-1:-1;;;;;25951:30:0;;;;;;;:20;:30;;;;;;;;;:43;;25885;;;;25951;;;;;;26035:15;;;:27;;26017:45;;26090:50;;;;;;;;;;;-1:-1:-1;26136:3:0;;26090:50;;;;;25885:43;;-1:-1:-1;25951:30:0;26090:50;;;;-1:-1:-1;;;;;;;;;;;26090:50:0;;;;;;;;;25810:717;;;;26262:6;26245:16;;26220:24;:41;:48;;;;;;26203:13;;:66;26187:13;:82;;;;26312:71;26376:6;26359:16;;26334:24;:41;:48;;;;26312:71;26292:17;:91;;;;26424:8;-1:-1:-1;;;;;26411:96:0;26418:5;-1:-1:-1;;;;;26411:96:0;-1:-1:-1;;;;;;;;;;;26476:5:0;26459:16;;26434:24;:41;:47;;;;;;26500:2;26483:16;;:19;;;;;26411:96;;;;;;26483:19;;;26411:96;;;;26505:1;26503:3;;26411:96;;;;;;;;;;;;;25810:717;26605:2;26588:16;;:19;;;;;;26566:18;:42;26545:63;;25779:9622;;;26653:1;26658;26653:6;26650:8751;;;26699:13;;26684;:28;26681:718;;26736:17;26793:6;26776:16;;26756:19;:36;:43;;;;;-1:-1:-1;;;;;26822:30:0;;;;;;;:20;:30;;;;;;;;;:43;;26756;;;;26822;;;;;;26906:15;;;:27;;26888:45;;26961:50;;;;;;;;;;;-1:-1:-1;27007:3:0;;26961:50;;;;;26756:43;;-1:-1:-1;26822:30:0;26961:50;;;;-1:-1:-1;;;;;;;;;;;26961:50:0;;;;;;;;;26681:718;;;;27133:6;27116:16;;27091:24;:41;:48;;;;;;27074:13;;:66;27058:13;:82;;;;27183:71;27247:6;27230:16;;27205:24;:41;:48;;;;27183:71;27163:17;:91;;;;27295:8;-1:-1:-1;;;;;27282:97:0;27289:5;-1:-1:-1;;;;;27282:97:0;-1:-1:-1;;;;;;;;;;;27347:6:0;27330:16;;27305:24;:41;:48;;;;;;27372:2;27355:16;;:19;;;;;27282:97;;;;;;27355:19;;;27282:97;;;;27377:1;27375:3;;27282:97;;;;;;;;;;;;;26681:718;27477:2;27460:16;;:19;;;;26650:8751;27525:1;27530;27525:6;27522:7879;;;27571:13;;27556;:28;27553:718;;27608:17;27665:6;27648:16;;27628:19;:36;:43;;;;;-1:-1:-1;;;;;27694:30:0;;;;;;;:20;:30;;;;;;;;;:43;;27628;;;;27694;;;;;;27778:15;;;:27;;27760:45;;27833:50;;;;;;;;;;;-1:-1:-1;27879:3:0;;27833:50;;;;;27628:43;;-1:-1:-1;27694:30:0;27833:50;;;;-1:-1:-1;;;;;;;;;;;27833:50:0;;;;;;;;;27553:718;;;;28005:6;27988:16;;27963:24;:41;:48;;;;;;27946:13;;:66;27930:13;:82;;;;28055:71;28119:6;28102:16;;28077:24;:41;:48;;;;28055:71;28035:17;:91;;;;28167:8;-1:-1:-1;;;;;28154:97:0;28161:5;-1:-1:-1;;;;;28154:97:0;-1:-1:-1;;;;;;;;;;;28219:6:0;28202:16;;28177:24;:41;:48;;;;;;28244:2;28227:16;;:19;;;;;28154:97;;;;;;28227:19;;;28154:97;;;;28249:1;28247:3;;28154:97;;;;;;;;;;;;;27553:718;28349:2;28332:16;;:19;;;;27522:7879;28398:1;28403;28398:6;28395:7006;;;28444:13;;28429;:28;28426:718;;28481:17;28538:6;28521:16;;28501:19;:36;:43;;;;;-1:-1:-1;;;;;28567:30:0;;;;;;;:20;:30;;;;;;;;;:43;;28501;;;;28567;;;;;;28651:15;;;:27;;28633:45;;28706:50;;;;;;;;;;;-1:-1:-1;28752:3:0;;28706:50;;;;;28501:43;;-1:-1:-1;28567:30:0;28706:50;;;;-1:-1:-1;;;;;;;;;;;28706:50:0;;;;;;;;;28426:718;;;;28878:6;28861:16;;28836:24;:41;:48;;;;;;28819:13;;:66;28803:13;:82;;;;28928:71;28992:6;28975:16;;28950:24;:41;:48;;;;28928:71;28908:17;:91;;;;29040:8;-1:-1:-1;;;;;29027:97:0;29034:5;-1:-1:-1;;;;;29027:97:0;-1:-1:-1;;;;;;;;;;;29092:6:0;29075:16;;29050:24;:41;:48;;;;;;29117:2;29100:16;;:19;;;;;29027:97;;;;;;29100:19;;;29027:97;;;;29122:1;29120:3;;29027:97;;;;;;;;;;;;;28426:718;29222:2;29205:16;;:19;;;;28395:7006;29270:1;29275;29270:6;29267:6134;;;29316:13;;29301;:28;29298:718;;29353:17;29410:6;29393:16;;29373:19;:36;:43;;;;;-1:-1:-1;;;;;29439:30:0;;;;;;;:20;:30;;;;;;;;;:43;;29373;;;;29439;;;;;;29523:15;;;:27;;29505:45;;29578:50;;;;;;;;;;;-1:-1:-1;29624:3:0;;29578:50;;;;;29373:43;;-1:-1:-1;29439:30:0;29578:50;;;;-1:-1:-1;;;;;;;;;;;29578:50:0;;;;;;;;;29298:718;;;;29750:6;29733:16;;29708:24;:41;:48;;;;;;29691:13;;:66;29675:13;:82;;;;29800:71;29864:6;29847:16;;29822:24;:41;:48;;;;29800:71;29780:17;:91;;;;29912:8;-1:-1:-1;;;;;29899:97:0;29906:5;-1:-1:-1;;;;;29899:97:0;-1:-1:-1;;;;;;;;;;;29964:6:0;29947:16;;29922:24;:41;:48;;;;;;29989:2;29972:16;;:19;;;;;29899:97;;;;;;29972:19;;;29899:97;;;;29994:1;29992:3;;29899:97;;;;;;;;;;;;;29298:718;30094:2;30077:16;;:19;;;;29267:6134;30142:1;30147;30142:6;30139:5262;;;30188:14;;30173:13;:29;30170:724;;30226:17;30284:6;30266:17;;30246:19;:37;:44;;;;;-1:-1:-1;;;;;30313:30:0;;;;;;;:20;:30;;;;;;;;;:43;;30246:44;;;;30313:43;;;;;;30397:15;;;:27;;30379:45;;30452:50;;;;;;;;;;;-1:-1:-1;30498:3:0;;30452:50;;;;;30246:44;;-1:-1:-1;30313:30:0;30452:50;;;;-1:-1:-1;;;;;;;;;;;30452:50:0;;;;;;;;;30170:724;;;;30625:6;30607:17;;30582:24;:42;:49;;;;;;30565:13;;:67;30549:13;:83;;;;30675:72;30740:6;30722:17;;30697:24;:42;:49;;;;30675:72;30655:17;:92;;;;30788:8;-1:-1:-1;;;;;30775:99:0;30782:5;-1:-1:-1;;;;;30775:99:0;-1:-1:-1;;;;;;;;;;;30841:6:0;30823:17;;30798:24;:42;:49;;;;;;30867:2;30849:17;;:20;;;;;30775:99;;;;;;30849:20;;;30775:99;;;;30872:1;30870:3;;30775:99;;;;;;;;;;;;;30170:724;30973:2;30955:17;;:20;;;;30139:5262;31039:1;31044:2;31039:7;31036:4365;;;31084:14;;31069:13;:29;31066:724;;31122:17;31180:6;31162:17;;31142:19;:37;:44;;;;;-1:-1:-1;;;;;31209:30:0;;;;;;;:20;:30;;;;;;;;;:43;;31142:44;;;;31209:43;;;;;;31293:15;;;:27;;31275:45;;31348:50;;;;;;;;;;;-1:-1:-1;31394:3:0;;31348:50;;;;;31142:44;;-1:-1:-1;31209:30:0;31348:50;;;;-1:-1:-1;;;;;;;;;;;31348:50:0;;;;;;;;;31066:724;;;;31521:6;31503:17;;31478:24;:42;:49;;;;;;31461:13;;:67;31445:13;:83;;;;31571:72;31636:6;31618:17;;31593:24;:42;:49;;;;31571:72;31551:17;:92;;;;31684:8;-1:-1:-1;;;;;31671:99:0;31678:5;-1:-1:-1;;;;;31671:99:0;-1:-1:-1;;;;;;;;;;;31737:6:0;31719:17;;31694:24;:42;:49;;;;;;31763:2;31745:17;;:20;;;;;31671:99;;;;;;31745:20;;;31671:99;;;;31768:1;31766:3;;31671:99;;;;;;;;;;;;;31066:724;31869:2;31851:17;;:20;;;;31036:4365;31917:1;31922:2;31917:7;31914:3487;;;31962:14;;31947:13;:29;31944:724;;32000:17;32058:6;32040:17;;32020:19;:37;:44;;;;;-1:-1:-1;;;;;32087:30:0;;;;;;;:20;:30;;;;;;;;;:43;;32020:44;;;;32087:43;;;;;;32171:15;;;:27;;32153:45;;32226:50;;;;;;;;;;;-1:-1:-1;32272:3:0;;32226:50;;;;;32020:44;;-1:-1:-1;32087:30:0;32226:50;;;;-1:-1:-1;;;;;;;;;;;32226:50:0;;;;;;;;;31944:724;;;;32399:6;32381:17;;32356:24;:42;:49;;;;;;32339:13;;:67;32323:13;:83;;;;32449:72;32514:6;32496:17;;32471:24;:42;:49;;;;32449:72;32429:17;:92;;;;32562:8;-1:-1:-1;;;;;32549:99:0;32556:5;-1:-1:-1;;;;;32549:99:0;-1:-1:-1;;;;;;;;;;;32615:6:0;32597:17;;32572:24;:42;:49;;;;;;32641:2;32623:17;;:20;;;;;32549:99;;;;;;32623:20;;;32549:99;;;;32646:1;32644:3;;32549:99;;;;;;;;;;;;;31944:724;32747:2;32729:17;;:20;;;;31914:3487;32795:1;32800:2;32795:7;32792:2609;;;32840:14;;32825:13;:29;32822:724;;32878:17;32936:6;32918:17;;32898:19;:37;:44;;;;;-1:-1:-1;;;;;32965:30:0;;;;;;;:20;:30;;;;;;;;;:43;;32898:44;;;;32965:43;;;;;;33049:15;;;:27;;33031:45;;33104:50;;;;;;;;;;;-1:-1:-1;33150:3:0;;33104:50;;;;;32898:44;;-1:-1:-1;32965:30:0;33104:50;;;;-1:-1:-1;;;;;;;;;;;33104:50:0;;;;;;;;;32822:724;;;;33277:6;33259:17;;33234:24;:42;:49;;;;;;33217:13;;:67;33201:13;:83;;;;33327:72;33392:6;33374:17;;33349:24;:42;:49;;;;33327:72;33307:17;:92;;;;33440:8;-1:-1:-1;;;;;33427:99:0;33434:5;-1:-1:-1;;;;;33427:99:0;-1:-1:-1;;;;;;;;;;;33493:6:0;33475:17;;33450:24;:42;:49;;;;;;33519:2;33501:17;;:20;;;;;33427:99;;;;;;33501:20;;;33427:99;;;;33524:1;33522:3;;33427:99;;;;;;;;;;;;;32822:724;33625:2;33607:17;;:20;;;;32792:2609;33673:1;33678:2;33673:7;33670:1731;;;33720:14;;33705:13;:29;33702:721;;33758:17;33816:6;33798:17;;33778:19;:37;:44;;;;;-1:-1:-1;;;;;33845:30:0;;;;;;;:20;:30;;;;;;;;;:43;;33778:44;;;;33845:43;;;;;;33929:15;;;:27;;33911:45;;33984:50;;;;;;;;;;;-1:-1:-1;34030:3:0;;33984:50;;;;;33778:44;;-1:-1:-1;33845:30:0;33984:50;;;;-1:-1:-1;;;;;;;;;;;33984:50:0;;;;;;;;;33702:721;;;;34156:6;34138:17;;34113:24;:42;:49;;;;;;34096:13;;:67;34080:13;:83;;;;34205:72;34270:6;34252:17;;34227:24;:42;:49;;;;34205:72;34185:17;:92;;;;34317:8;-1:-1:-1;;;;;34304:99:0;34311:5;-1:-1:-1;;;;;34304:99:0;-1:-1:-1;;;;;;;;;;;34370:6:0;34352:17;;34327:24;:42;:49;;;;;;34396:2;34378:17;;:20;;;;;34304:99;;;;;;34378:20;;;34304:99;;;;34401:1;34399:3;;34304:99;;;;;;;;;;;;;33702:721;34502:2;34484:17;;:20;;;;33670:1731;34550:1;34555:2;34550:7;34547:854;;;34596:14;;34581:13;:29;34578:721;;34634:17;34692:6;34674:17;;34654:19;:37;:44;;;;;-1:-1:-1;;;;;34721:30:0;;;;;;;:20;:30;;;;;;;;;:43;;34654:44;;;;34721:43;;;;;;34805:15;;;:27;;34787:45;;34860:50;;;;;;;;;;;-1:-1:-1;34906:3:0;;34860:50;;;;;34654:44;;-1:-1:-1;34721:30:0;34860:50;;;;-1:-1:-1;;;;;;;;;;;34860:50:0;;;;;;;;;34578:721;;;;35032:6;35014:17;;34989:24;:42;:49;;;;;;34972:13;;:67;34956:13;:83;;;;35081:72;35146:6;35128:17;;35103:24;:42;:49;;;;35081:72;35061:17;:92;;;;35193:8;-1:-1:-1;;;;;35180:99:0;35187:5;-1:-1:-1;;;;;35180:99:0;-1:-1:-1;;;;;;;;;;;35246:6:0;35228:17;;35203:24;:42;:49;;;;;;35272:2;35254:17;;:20;;;;;35180:99;;;;;;35254:20;;;35180:99;;;;35277:1;35275:3;;35180:99;;;;;;;;;;;;;34578:721;35378:2;35360:17;;:20;;;;;;35338:18;:43;35317:64;;34547:854;-1:-1:-1;35437:8:0;;-1:-1:-1;;;21071:3:0;;21048:14409;;;;20801:14672;;;;;;:::o;48815:278::-;48901:7;48936:12;48929:5;48921:28;;;;-1:-1:-1;;;48921:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48960:9;48976:1;48972;:5;;;;;;;48815:278;-1:-1:-1;;;;;48815:278:0:o;46789:192::-;46875:7;46911:12;46903:6;;;;46895:29;;;;-1:-1:-1;;;46895:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;46947:5:0;;;46789:192::o

Swarm Source

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