MATIC Price: $0.64 (-5.33%)
Gas: 654 GWei
 

Sponsored

Transaction Hash
Method
Block
From
To
Value
Withdraw Earning...559553662024-04-18 5:26:5021 hrs ago1713418010IN
0xC073b502...ADe9f940D
0 MATIC0.0484869110
Compound559553442024-04-18 5:26:0421 hrs ago1713417964IN
0xC073b502...ADe9f940D
0 MATIC0.0583110
Compound558256202024-04-14 20:47:394 days ago1713127659IN
0xC073b502...ADe9f940D
0 MATIC0.1054936799.45759442
Compound556873922024-04-11 3:19:157 days ago1712805555IN
0xC073b502...ADe9f940D
0 MATIC0.0799106110
Compound555195432024-04-06 18:17:4312 days ago1712427463IN
0xC073b502...ADe9f940D
0 MATIC0.0899045385.80028089
Compound553617762024-04-02 13:30:4316 days ago1712064643IN
0xC073b502...ADe9f940D
0 MATIC0.17437924168.48561672
Compound552231862024-03-29 18:24:1020 days ago1711736650IN
0xC073b502...ADe9f940D
0 MATIC0.0956201593.55035703
Withdraw Earning...551446732024-03-27 16:45:2522 days ago1711557925IN
0xC073b502...ADe9f940D
0 MATIC0.0484869110
Compound550366522024-03-24 19:30:2425 days ago1711308624IN
0xC073b502...ADe9f940D
0 MATIC0.050463550
Compound548866742024-03-20 18:24:0929 days ago1710959049IN
0xC073b502...ADe9f940D
0 MATIC0.0701181870.37046343
Compound548284122024-03-19 4:46:4330 days ago1710823603IN
0xC073b502...ADe9f940D
0 MATIC0.0505244570.80171433
Withdraw Earning...547712632024-03-17 16:03:0832 days ago1710691388IN
0xC073b502...ADe9f940D
0 MATIC0.1250084140.34613195
Compound547462442024-03-17 0:07:1833 days ago1710634038IN
0xC073b502...ADe9f940D
0 MATIC0.0302110343.60155295
Compound547462182024-03-17 0:06:1433 days ago1710633974IN
0xC073b502...ADe9f940D
0 MATIC0.0583110
Compound547315762024-03-16 15:11:3133 days ago1710601891IN
0xC073b502...ADe9f940D
0 MATIC0.059920460.92195716
Compound546146702024-03-13 16:11:0336 days ago1710346263IN
0xC073b502...ADe9f940D
0 MATIC0.18001068185.44324811
Compound545689292024-03-12 12:13:1637 days ago1710245596IN
0xC073b502...ADe9f940D
0 MATIC0.07566845110
Withdraw Earning...544976752024-03-10 16:46:3139 days ago1710089191IN
0xC073b502...ADe9f940D
0 MATIC0.04762186110
Compound544976602024-03-10 16:45:5939 days ago1710089159IN
0xC073b502...ADe9f940D
0 MATIC0.0583110
Withdraw Earning...544963342024-03-10 15:58:5539 days ago1710086335IN
0xC073b502...ADe9f940D
0 MATIC0.08835025102.13843389
Compound544572122024-03-09 15:55:1940 days ago1709999719IN
0xC073b502...ADe9f940D
0 MATIC0.10821233112.9742
Compound543786182024-03-07 16:04:5642 days ago1709827496IN
0xC073b502...ADe9f940D
0 MATIC0.31338242331.62336924
Exchange543317052024-03-06 11:35:5943 days ago1709724959IN
0xC073b502...ADe9f940D
0 MATIC0.00475277110
Withdraw Earning...543316852024-03-06 11:35:1743 days ago1709724917IN
0xC073b502...ADe9f940D
0 MATIC0.02358301110
Compound543001772024-03-05 16:12:4844 days ago1709655168IN
0xC073b502...ADe9f940D
0 MATIC1.398813481,513.4104392
View all transactions

Parent Txn Hash Block From To Value
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SwissBonds

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, GNU LGPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2023-08-20
*/

/**
 *Submitted for verification at bscscan.com on 2022-12-03
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.16;
pragma experimental ABIEncoderV2;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library Address {
    function isContract(address account) internal view returns (bool) {
        uint256 size; assembly {
            size := extcodesize(account)
        } return size > 0;
    }
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");
        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }
    function functionCall(address target,bytes memory data,string memory errorMessage) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }
    function functionCallWithValue(address target,bytes memory data,uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }
    function functionCallWithValue(address target,bytes memory data,uint256 value,string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");
        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }
    function functionStaticCall(address target,bytes memory data,string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");
        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }
    function functionDelegateCall(address target,bytes memory data,string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }
    function verifyCallResult(bool success,bytes memory returndata,string memory errorMessage) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}
library SafeERC20 {
    using Address for address;
    function safeTransfer(
        IERC20 token,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }
    function safeTransferFrom(
        IERC20 token,
        address from,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }
    function safeApprove(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        require((value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance");
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }
    function safeIncreaseAllowance(IERC20 token,address spender,uint256 value) internal {
        uint256 newAllowance = token.allowance(address(this), spender) + value;
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }
    function safeDecreaseAllowance(IERC20 token,address spender,uint256 value) internal {
        unchecked {
            uint256 oldAllowance = token.allowance(address(this), spender);
            require(oldAllowance >= value, "SafeERC20: decreased allowance below zero");
            uint256 newAllowance = oldAllowance - value;
            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
        }
    }
    function _callOptionalReturn(IERC20 token, bytes memory data) private {   
        bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
        if (returndata.length > 0) {
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: division by zero");
        uint256 c = a / b;

        return c;
    }
}

abstract contract ERC20Basic {
  function totalSupply() public virtual view returns (uint256);
  function balanceOf(address who) public virtual view returns (uint256);
  function transfer(address to, uint256 value) public virtual returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
}


//..............................................................................................

abstract contract ERC20 is ERC20Basic {
  function allowance(address owner, address spender) public virtual view returns (uint256);
  function transferFrom(address from, address to, uint256 value) public virtual returns (bool);
  function approve(address spender, uint256 value) public virtual returns (bool);
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

//..................................................................................................
contract BasicToken is ERC20Basic {
  using SafeMath for uint256;

  mapping(address => uint256) balances;

  uint256 totalSupply_;

  /**
  * @dev total number of tokens in existence
  */
  function totalSupply() public override view returns (uint256) {
    return totalSupply_;
  }
   
  /**
  * @dev transfer token for a specified address
  * @param _to The address to transfer to.
  * @param _value The amount to be transferred.
  */
  function transfer(address _to, uint256 _value) public override returns (bool) {
    require(_to != address(0));
    require(_value <= balances[msg.sender]);

    balances[msg.sender] = balances[msg.sender].sub(_value);
    balances[_to] = balances[_to].add(_value);
    emit Transfer(msg.sender, _to, _value);
    return true;
  }

  /**
  * @dev Gets the balance of the specified address.
  * @param _owner The address to query the the balance of.
  * @return An uint256 representing the amount owned by the passed address.
  */
  function balanceOf(address _owner) public  override view returns (uint256) {
    return balances[_owner];
  }

}

//........................................................................................

contract StandardToken is ERC20, BasicToken {
 using SafeMath for uint256;
  mapping (address => mapping (address => uint256)) internal allowed;

  /**
   * @dev Transfer tokens from one address to another
   * @param _from address The address which you want to send tokens from
   * @param _to address The address which you want to transfer to
   * @param _value uint256 the amount of tokens to be transferred
   */
  function transferFrom(address _from, address _to, uint256 _value) public override returns (bool) {
    require(_to != address(0));
    require(_value <= balances[_from]);
    require(_value <= allowed[_from][msg.sender]);

    balances[_from] = balances[_from].sub(_value);
    balances[_to] = balances[_to].add(_value);
    allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
    emit Transfer(_from, _to, _value);
    return true;
  }

  /**
   * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
   *
   * Beware that changing an allowance with this method brings the risk that someone may use both the old
   * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
   * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
   * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   * @param _spender The address which will spend the funds.
   * @param _value The amount of tokens to be spent.
   */
  function approve(address _spender, uint256 _value) public override returns (bool) {
    allowed[msg.sender][_spender] = _value;
    emit Approval(msg.sender, _spender, _value);
    return true;
  }

  /**
   * @dev Function to check the amount of tokens that an owner allowed to a spender.
   * @param _owner address The address which owns the funds.
   * @param _spender address The address which will spend the funds.
   * @return A uint256 specifying the amount of tokens still available for the spender.
   */
  function allowance(address _owner, address _spender) public override view returns (uint256) {
    return allowed[_owner][_spender];
  }

  /**
   * @dev Increase the amount of tokens that an owner allowed to a spender.
   *
   * approve should be called when allowed[_spender] == 0. To increment
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   * @param _spender The address which will spend the funds.
   * @param _addedValue The amount of tokens to increase the allowance by.
   */
  function increaseApproval(address _spender, uint _addedValue) public returns (bool) {
    allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
    emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

  /**
   * @dev Decrease the amount of tokens that an owner allowed to a spender.
   *
   * approve should be called when allowed[_spender] == 0. To decrement
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   * @param _spender The address which will spend the funds.
   * @param _subtractedValue The amount of tokens to decrease the allowance by.
   */
  function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) {
    uint oldValue = allowed[msg.sender][_spender];
    if (_subtractedValue > oldValue) {
      allowed[msg.sender][_spender] = 0;
    } else {
      allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
    }
    emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

  address public administrator;

  modifier onlyAdminstrator(){
     require(administrator == msg.sender, "requires admin priviledge");
     _;
   }

}
//....................................................................................


contract SwissBonds is StandardToken {
	using SafeMath for uint256;
    
    uint256 public START_DATE;
    address public DEV;
	uint256 public INVEST_MIN_AMOUNT = 10 * (10**6);
	uint256 public REFERRAL_PERCENTS = 100;
	uint256 public VAULT_TAX = 100;
    uint256 public WITHDRAW_TAX = 200;
    uint256 public LOTTO_FEE = 200;
    uint256  public ROI = 50;
	uint256 constant public PERCENTS_DIVIDER = 1000;
    mapping (address => User) public users;
    mapping (address => mapping(uint256 => Stake)) public stakes;
    uint256 public lottoBalance = 0;
    uint256 public constant ticketPrice = 20 * (10**6);
    address[] public players;
	uint256 public totalStaked = 0;
    using SafeERC20 for IERC20;
    IERC20 public USDT;


    constructor(address _dev, uint256 _startDate) {
            administrator = msg.sender;
            DEV = _dev;
            START_DATE = _startDate;
            USDT = IERC20(0xc2132D05D31c914a87C6611C10748AEb04B58e8F); 
    }


struct User {
    uint256 startDate;
    uint256 refBonus;
    uint256 amountStaked;
    uint256 bonds;
    Stake [] stakeList;
}

struct Stake {
    uint256 key;
    uint256 timeStamp;
    uint256 timeToExpire;
    uint256 amount;
    address wallet;
}

struct lottoTime {
    uint256 index;
    uint256 timestamp;
}

struct Winner {
    uint256 reward;
    address wallet;
    uint256 lottoPlan;
    uint256 timestamp;
}

    mapping(uint256 => lottoTime) public timeId;
    Winner[] public winners;
    Winner[] public pastWinners;


event NewStake(address indexed wallet, uint256 amount);
event NewWinner(address indexed wallet, uint256 amount, uint256 timeStamp);


 function invest(uint256 _amount, address ref) external {
        require(block.timestamp >= START_DATE, "App has not launch yet.");
        require(ref != msg.sender, "You cannot refer yourself!");
        require(_amount >= INVEST_MIN_AMOUNT , "You should stake at least 10 Bonds.");
        User storage user = users[msg.sender];
        User storage refUser = users[ref];

        uint256 fees = _amount.mul(VAULT_TAX).div(PERCENTS_DIVIDER);
        uint256 lottoFees = _amount.mul(LOTTO_FEE).div(PERCENTS_DIVIDER);
        uint256 totalFees = fees.add(lottoFees);
        uint256 _amountToStaked = _amount.sub(totalFees);
        totalStaked = totalStaked.add(_amountToStaked);
        contractTx(false, _amount, msg.sender);
        contractTx(true, fees, DEV);
        
        if(user.startDate == 0) user.startDate = block.timestamp;
        user.amountStaked = user.amountStaked.add(_amountToStaked);
        refUser.refBonus = refUser.refBonus.add(fees);

        user.stakeList.push(Stake({
            key: user.stakeList.length,
            timeStamp: block.timestamp,
            amount: _amountToStaked,
            timeToExpire: block.timestamp + 365 days,
            wallet: msg.sender
        }));
        
        uint256 tickets = lottoFees.div(ticketPrice);
        if(tickets >= 1) lottoEntry(tickets, lottoFees);

        emit NewStake(msg.sender, _amount);

    }




function lottoEntry(uint256 tickets, uint256 _lottoFees) internal {
        lottoBalance = lottoBalance + _lottoFees;
        tickets = tickets > 20 ? 20 : tickets;
        for (uint256 i = 0 ; i < tickets; i++) {
              players.push(msg.sender);
        }

    }



function compound() external {
        User storage user = users[msg.sender];
        uint256 earnings = calcEarnings(msg.sender);
        require(earnings > 0, "earnings should be greater than 0");
        for (uint i = 0; i < user.stakeList.length; i++){
            user.stakeList[i].timeStamp = block.timestamp;
        }
        user.amountStaked = user.amountStaked.add(earnings);
        totalStaked = totalStaked.add(earnings);
        user.stakeList.push(Stake({
            key: user.stakeList.length,
            timeStamp: block.timestamp,
            timeToExpire: block.timestamp + 365 days,
            amount: earnings,
            wallet: msg.sender
        }));
        
       if(timeId[1].timestamp <= block.timestamp) pickWinner_lotto();
}


function stakeRefBonus() external {
        User storage user = users[msg.sender];
        uint256 bonus = user.refBonus;
        require(bonus > 0, "bonus should be greater than 0");
        user.amountStaked = user.amountStaked.add(bonus);
        totalStaked = totalStaked.add(bonus);
        user.stakeList.push(Stake({
            key: user.stakeList.length,
            timeStamp: block.timestamp,
            timeToExpire: block.timestamp + 365 days,
            amount: bonus,
            wallet: msg.sender
        }));

        user.refBonus = 0;

}




function withdrawRefBonus() external {
        User storage user = users[msg.sender];
        uint256 bonus = user.refBonus;
        require(bonus > 0, "bonus should be greater than 0");
        uint256 fees = bonus.mul(VAULT_TAX).div(PERCENTS_DIVIDER);
        uint256 _amountToReceive = bonus.sub(fees);
        contractTx(true, _amountToReceive, msg.sender);
        user.refBonus = 0;
}





function exchange(bool isBuy, uint256 _amount) external {
    if(isBuy) {
        USDT.safeTransferFrom(msg.sender, address(this), _amount);
        uint256 bondsAmount = _amount.mul(2);
        contractTx(true, bondsAmount, msg.sender);
    }else {
        uint256 usdtTokenAmount = _amount.div(2);
        contractTx(false, _amount, msg.sender);
        USDT.safeTransfer(msg.sender, usdtTokenAmount);
    }

}




function withdrawEarnings() external {
    User storage user = users[msg.sender];
    uint256 earnings = calcEarnings(msg.sender);
      
      	for (uint i = 0; i < user.stakeList.length; i++){
            user.stakeList[i].timeStamp = block.timestamp;
        }

        uint256 fees = earnings.mul(WITHDRAW_TAX).div(PERCENTS_DIVIDER);
        uint256 devfees = earnings.mul(VAULT_TAX).div(PERCENTS_DIVIDER);
        uint256 _amountToReceive = earnings.sub(fees);

        contractTx(true, _amountToReceive, msg.sender);
        contractTx(true, devfees, DEV);

        if(timeId[1].timestamp <= block.timestamp) pickWinner_lotto();
}




function calcEarnings(address _wallet) public view returns(uint256) {
    User storage user = users[_wallet];	
        uint256 earnings;
        
        for (uint256 i = 0; i < user.stakeList.length; i++){	
             if(block.timestamp < user.stakeList[i].timeToExpire) {
                uint256 elapsedTime = block.timestamp.sub(user.stakeList[i].timeStamp);
                uint256 amount = user.stakeList[i].amount;
                uint256 dailyReturn = amount.mul(ROI).div(PERCENTS_DIVIDER);
                uint256 currentReturn = dailyReturn.mul(elapsedTime).div(1 days);
                earnings += currentReturn;
             }
        }
        return earnings;
}




function random() private view returns(uint){
       return uint256(keccak256(abi.encodePacked(block.difficulty,block.timestamp,players)));
    }

function pickWinner_lotto() public {
        // timer set to the contract
        require(timeId[1].timestamp <= block.timestamp , "not time yet for lotto");
        if(players.length <= 0) {
            uint256 lottoTimeStamp = block.timestamp + 1 days;
            timeId[1] = lottoTime(1,lottoTimeStamp);
        }
        else {
            uint256 index = random() % players.length;
            uint256 lottoTimeStamp = block.timestamp + 1 days;
            timeId[1] = lottoTime(1,lottoTimeStamp);
            uint256 contractFees = lottoBalance.mul(LOTTO_FEE).div(PERCENTS_DIVIDER);
            uint256 marketingFees = lottoBalance.mul(VAULT_TAX).div(PERCENTS_DIVIDER);

            uint256 totalFee = contractFees.add(marketingFees);
            uint256 userReward = lottoBalance.sub(totalFee);
            Winner memory m; m.reward = userReward; m.wallet = players[index]; m.lottoPlan = 1; m.timestamp = block.timestamp;
            pastWinners.push(m);
            winners.push(m);
            lottoBalance = 0;
            address playerWallet = players[index];
            delete players;
            contractTx(true, marketingFees, DEV);
            emit NewWinner(playerWallet, userReward, block.timestamp);
        }
     }

function checkWin(uint256 _lottoPlan, address _wallet) public view returns(bool isWinner, uint256 reward, uint256 index){
         for (uint256 i = 0 ; i < winners.length; i++) {
              if(winners[i].wallet == _wallet && winners[i].lottoPlan == _lottoPlan) {
                  return (true, winners[i].reward, i);
              }
          }
    }


function claimReward(uint256 _lottoPlan) public {
            (bool isWinner, uint256 reward, uint256 index) = checkWin(_lottoPlan, msg.sender);
            if(isWinner) {
                contractTx(true, reward, msg.sender);
                delete winners[index];
            }else revert();
}



function RunLottery() external onlyAdminstrator {
         uint256 time1 = block.timestamp + 1 days;
         timeId[1] = lottoTime(1,time1);
}

    
    
function pastWinnersLength() public view returns(uint256 length) {
        return pastWinners.length;  
}



function TicketCounter(address ad) public view returns(uint256){
    uint256 lHm=0;
    uint arrayLength = players.length;
    if(arrayLength!=0){
        for (uint i=0; i<arrayLength; i++) {
        // do something
            if (players[i]==ad){
                lHm++;
            }
        }
    }
    
    return lHm;
}




function contractTx(bool credit, uint _amount, address _wallet) internal {
       User storage user = users[_wallet];
       if(credit) {
           user.bonds = user.bonds.add(_amount);
       }else {
           require(_amount <= user.bonds);
           user.bonds = user.bonds.sub(_amount);
       }
  }

 
 function getUserBonds(address _wallet) public view returns(uint256) {
       User storage user = users[_wallet];
       return user.bonds;
  }



function userStakesLength(address _wallet) public view returns(uint256) {
     User storage user = users[_wallet];	
     return user.stakeList.length;
}


function userStakesList(address _wallet) public view returns(Stake[] memory) {
   User storage user = users[_wallet];	
    return user.stakeList;
}


function changeOwner(address _account) external onlyAdminstrator {
         administrator = _account;
    }

function changeDev(address _account) external onlyAdminstrator {
         DEV = _account;
}



}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_dev","type":"address"},{"internalType":"uint256","name":"_startDate","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"wallet","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"NewStake","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"wallet","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timeStamp","type":"uint256"}],"name":"NewWinner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEV","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INVEST_MIN_AMOUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LOTTO_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERCENTS_DIVIDER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REFERRAL_PERCENTS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ROI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RunLottery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"START_DATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"ad","type":"address"}],"name":"TicketCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDT","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VAULT_TAX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WITHDRAW_TAX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"administrator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"calcEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"changeDev","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"changeOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lottoPlan","type":"uint256"},{"internalType":"address","name":"_wallet","type":"address"}],"name":"checkWin","outputs":[{"internalType":"bool","name":"isWinner","type":"bool"},{"internalType":"uint256","name":"reward","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lottoPlan","type":"uint256"}],"name":"claimReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"compound","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isBuy","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"exchange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"getUserBonds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"ref","type":"address"}],"name":"invest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lottoBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"pastWinners","outputs":[{"internalType":"uint256","name":"reward","type":"uint256"},{"internalType":"address","name":"wallet","type":"address"},{"internalType":"uint256","name":"lottoPlan","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pastWinnersLength","outputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pickWinner_lotto","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"players","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakeRefBonus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakes","outputs":[{"internalType":"uint256","name":"key","type":"uint256"},{"internalType":"uint256","name":"timeStamp","type":"uint256"},{"internalType":"uint256","name":"timeToExpire","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"wallet","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ticketPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"timeId","outputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalStaked","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":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"userStakesLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"userStakesList","outputs":[{"components":[{"internalType":"uint256","name":"key","type":"uint256"},{"internalType":"uint256","name":"timeStamp","type":"uint256"},{"internalType":"uint256","name":"timeToExpire","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"wallet","type":"address"}],"internalType":"struct SwissBonds.Stake[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"users","outputs":[{"internalType":"uint256","name":"startDate","type":"uint256"},{"internalType":"uint256","name":"refBonus","type":"uint256"},{"internalType":"uint256","name":"amountStaked","type":"uint256"},{"internalType":"uint256","name":"bonds","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"winners","outputs":[{"internalType":"uint256","name":"reward","type":"uint256"},{"internalType":"address","name":"wallet","type":"address"},{"internalType":"uint256","name":"lottoPlan","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawEarnings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawRefBonus","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052629896806006556064600755606460085560c860095560c8600a556032600b556000600e5560006010553480156200003b57600080fd5b5060405162004b0a38038062004b0a8339818101604052810190620000619190620001ec565b33600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060048190555073c2132d05d31c914a87c6611c10748aeb04b58e8f601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505062000233565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000179826200014c565b9050919050565b6200018b816200016c565b81146200019757600080fd5b50565b600081519050620001ab8162000180565b92915050565b6000819050919050565b620001c681620001b1565b8114620001d257600080fd5b50565b600081519050620001e681620001bb565b92915050565b6000806040838503121562000206576200020562000147565b5b600062000216858286016200019a565b92505060206200022985828601620001d5565b9150509250929050565b6148c780620002436000396000f3fe608060405234801561001057600080fd5b506004361061028a5760003560e01c806397c7b5511161015c578063c88aebfa116100ce578063e262113e11610087578063e262113e14610824578063e499e79c14610842578063e83007b214610875578063f53d0a8e1461087f578063f69e20461461089d578063f71d96cb146108a75761028a565b8063c88aebfa14610762578063cce0051d14610792578063d5c431591461079c578063d73dd623146107ba578063dd62ed3e146107ea578063e20df9761461081a5761028a565b8063ae169a5011610120578063ae169a501461069f578063b73c6ce9146106bb578063b7f1ea13146106c5578063c1eb5ddd146106f5578063c54e44eb14610713578063c65190e3146107315761028a565b806397c7b551146105bd578063a2fb1175146105ed578063a6f9dae114610620578063a87430ba1461063c578063a9059cbb1461066f5761028a565b806344038f9011610200578063805c733b116101b9578063805c733b1461050d578063817b1cd21461052b578063825e8f6814610549578063874fc5f8146105675780638805d88a1461058357806388a8c95c146105a15761028a565b806344038f90146104335780634878da351461045157806348cfb8911461046f578063584b62a11461047957806366188463146104ad57806370a08231146104dd5761028a565b806323b872dd1161025257806323b872dd146103375780632c8ee2ec1461036757806336c5c9e314610399578063372c6533146103c95780633d103b97146103e7578063414153a8146104035761028a565b806301c234a81461028f578063050eb751146102ad578063095ea7b3146102cb5780631209b1f6146102fb57806318160ddd14610319575b600080fd5b6102976108d7565b6040516102a491906136d7565b60405180910390f35b6102b56108dd565b6040516102c291906136d7565b60405180910390f35b6102e560048036038101906102e09190613781565b6108e3565b6040516102f291906137dc565b60405180910390f35b6103036109d5565b60405161031091906136d7565b60405180910390f35b6103216109dd565b60405161032e91906136d7565b60405180910390f35b610351600480360381019061034c91906137f7565b6109e7565b60405161035e91906137dc565b60405180910390f35b610381600480360381019061037c919061384a565b610d9a565b6040516103909392919061388a565b60405180910390f35b6103b360048036038101906103ae91906138c1565b610eac565b6040516103c091906136d7565b60405180910390f35b6103d1610f6f565b6040516103de91906136d7565b60405180910390f35b61040160048036038101906103fc919061384a565b610f75565b005b61041d600480360381019061041891906138c1565b61139c565b60405161042a91906136d7565b60405180910390f35b61043b61151a565b60405161044891906136d7565b60405180910390f35b610459611520565b60405161046691906136d7565b60405180910390f35b61047761152d565b005b610493600480360381019061048e9190613781565b6116f5565b6040516104a49594939291906138fd565b60405180910390f35b6104c760048036038101906104c29190613781565b611758565b6040516104d491906137dc565b60405180910390f35b6104f760048036038101906104f291906138c1565b6119e9565b60405161050491906136d7565b60405180910390f35b610515611a31565b60405161052291906136d7565b60405180910390f35b610533611a37565b60405161054091906136d7565b60405180910390f35b610551611a3d565b60405161055e91906136d7565b60405180910390f35b610581600480360381019061057c919061397c565b611a43565b005b61058b611b39565b60405161059891906136d7565b60405180910390f35b6105bb60048036038101906105b691906138c1565b611b3f565b005b6105d760048036038101906105d291906138c1565b611c13565b6040516105e491906136d7565b60405180910390f35b610607600480360381019061060291906139bc565b611c64565b60405161061794939291906139e9565b60405180910390f35b61063a600480360381019061063591906138c1565b611cc4565b005b610656600480360381019061065191906138c1565b611d98565b6040516106669493929190613a2e565b60405180910390f35b61068960048036038101906106849190613781565b611dc8565b60405161069691906137dc565b60405180910390f35b6106b960048036038101906106b491906139bc565b611fe2565b005b6106c361207d565b005b6106df60048036038101906106da91906138c1565b6121f8565b6040516106ec9190613ba8565b60405180910390f35b6106fd61231d565b60405161070a9190613bca565b60405180910390f35b61071b612343565b6040516107289190613c44565b60405180910390f35b61074b600480360381019061074691906139bc565b612369565b604051610759929190613c5f565b60405180910390f35b61077c600480360381019061077791906138c1565b61238d565b60405161078991906136d7565b60405180910390f35b61079a6123e1565b005b6107a46124d0565b6040516107b191906136d7565b60405180910390f35b6107d460048036038101906107cf9190613781565b6124d6565b6040516107e191906137dc565b60405180910390f35b61080460048036038101906107ff9190613c88565b6126d2565b60405161081191906136d7565b60405180910390f35b610822612759565b005b61082c612bbd565b60405161083991906136d7565b60405180910390f35b61085c600480360381019061085791906139bc565b612bc3565b60405161086c94939291906139e9565b60405180910390f35b61087d612c23565b005b610887612d0a565b6040516108949190613bca565b60405180910390f35b6108a5612d30565b005b6108c160048036038101906108bc91906139bc565b612f6b565b6040516108ce9190613bca565b60405180910390f35b6103e881565b60085481565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109c391906136d7565b60405180910390a36001905092915050565b6301312d0081565b6000600154905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a2157600080fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115610a6c57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115610af557600080fd5b610b46826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612faa90919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610bd9826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461300990919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610caa82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612faa90919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d8791906136d7565b60405180910390a3600190509392505050565b600080600080600090505b601380549050811015610ea3578473ffffffffffffffffffffffffffffffffffffffff1660138281548110610ddd57610ddc613cc8565b5b906000526020600020906004020160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015610e5657508560138281548110610e4257610e41613cc8565b5b906000526020600020906004020160020154145b15610e9057600160138281548110610e7157610e70613cc8565b5b9060005260206000209060040201600001548293509350935050610ea5565b8080610e9b90613d26565b915050610da5565b505b9250925092565b600080600090506000600f80549050905060008114610f655760005b81811015610f63578473ffffffffffffffffffffffffffffffffffffffff16600f8281548110610efb57610efa613cc8565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610f50578280610f4c90613d26565b9350505b8080610f5b90613d26565b915050610ec8565b505b8192505050919050565b60045481565b600454421015610fba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb190613dcb565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611028576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101f90613e37565b60405180910390fd5b60065482101561106d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106490613ec9565b60405180910390fd5b6000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600061111e6103e86111106008548861306790919063ffffffff16565b6130e190919063ffffffff16565b9050600061114b6103e861113d600a548961306790919063ffffffff16565b6130e190919063ffffffff16565b90506000611162828461300990919063ffffffff16565b905060006111798289612faa90919063ffffffff16565b90506111908160105461300990919063ffffffff16565b6010819055506111a26000893361313f565b6111d0600185600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661313f565b60008660000154036111e6574286600001819055505b6111fd81876002015461300990919063ffffffff16565b866002018190555061121c84866001015461300990919063ffffffff16565b8560010181905550856004016040518060a00160405280886004018054905081526020014281526020016301e13380426112569190613ee9565b81526020018381526020013373ffffffffffffffffffffffffffffffffffffffff1681525090806001815401808255809150506001900390600052602060002090600502016000909190919091506000820151816000015560208201518160010155604082015181600201556060820151816003015560808201518160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050600061132e6301312d00856130e190919063ffffffff16565b9050600181106113435761134281856131e3565b5b3373ffffffffffffffffffffffffffffffffffffffff167f42e99fbad9601d25ee3bb515eeee966f97c3c383adadbe5720f651df8c18989d8a60405161138991906136d7565b60405180910390a2505050505050505050565b600080600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600080600090505b826004018054905081101561150f5782600401818154811061140d5761140c613cc8565b5b9060005260206000209060050201600201544210156114fc57600061146284600401838154811061144157611440613cc8565b5b90600052602060002090600502016001015442612faa90919063ffffffff16565b9050600084600401838154811061147c5761147b613cc8565b5b906000526020600020906005020160030154905060006114bb6103e86114ad600b548561306790919063ffffffff16565b6130e190919063ffffffff16565b905060006114e7620151806114d9868561306790919063ffffffff16565b6130e190919063ffffffff16565b905080866114f59190613ee9565b9550505050505b808061150790613d26565b9150506113e8565b508092505050919050565b60075481565b6000601480549050905090565b6000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600081600101549050600081116115bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b390613f69565b60405180910390fd5b6115d381836002015461300990919063ffffffff16565b82600201819055506115f08160105461300990919063ffffffff16565b601081905550816004016040518060a00160405280846004018054905081526020014281526020016301e13380426116289190613ee9565b81526020018381526020013373ffffffffffffffffffffffffffffffffffffffff1681525090806001815401808255809150506001900390600052602060002090600502016000909190919091506000820151816000015560208201518160010155604082015181600201556060820151816003015560808201518160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050600082600101819055505050565b600d602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060020154908060030154908060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905085565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080831115611869576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506118fd565b61187c8382612faa90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040516119d691906136d7565b60405180910390a3600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600e5481565b60105481565b600a5481565b8115611ac257611a98333083601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613290909392919063ffffffff16565b6000611aae60028361306790919063ffffffff16565b9050611abc6001823361313f565b50611b35565b6000611ad86002836130e190919063ffffffff16565b9050611ae66000833361313f565b611b333382601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166133199092919063ffffffff16565b505b5050565b60095481565b3373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc690613fd5565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060030154915050919050565b60138181548110611c7457600080fd5b90600052602060002090600402016000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154908060030154905084565b3373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4b90613fd5565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c6020528060005260406000206000915090508060000154908060010154908060020154908060030154905084565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e0257600080fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115611e4d57600080fd5b611e9e826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612faa90919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f31826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461300990919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611fd091906136d7565b60405180910390a36001905092915050565b6000806000611ff18433610d9a565b9250925092508215612072576120096001833361313f565b6013818154811061201d5761201c613cc8565b5b90600052602060002090600402016000808201600090556001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600282016000905560038201600090555050612077565b600080fd5b50505050565b6000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060006120cb3361139c565b905060005b826004018054905081101561211e57428360040182815481106120f6576120f5613cc8565b5b906000526020600020906005020160010181905550808061211690613d26565b9150506120d0565b50600061214a6103e861213c6009548561306790919063ffffffff16565b6130e190919063ffffffff16565b905060006121776103e86121696008548661306790919063ffffffff16565b6130e190919063ffffffff16565b9050600061218e8385612faa90919063ffffffff16565b905061219c6001823361313f565b6121ca600183600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661313f565b42601260006001815260200190815260200160002060010154116121f1576121f0612759565b5b5050505050565b60606000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600401805480602002602001604051908101604052809291908181526020016000905b8282101561231157838290600052602060002090600502016040518060a0016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190612261565b50505050915050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60126020528060005260406000206000915090508060000154908060010154905082565b600080600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060040180549050915050919050565b6000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160010154905060008111612470576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246790613f69565b60405180910390fd5b600061249b6103e861248d6008548561306790919063ffffffff16565b6130e190919063ffffffff16565b905060006124b28284612faa90919063ffffffff16565b90506124c06001823361313f565b6000846001018190555050505050565b600b5481565b600061256782600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461300990919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040516126c091906136d7565b60405180910390a36001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b4260126000600181526020019081526020016000206001015411156127b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127aa90614041565b60405180910390fd5b6000600f805490501161281a57600062015180426127d19190613ee9565b9050604051806040016040528060018152602001828152506012600060018152602001908152602001600020600082015181600001556020820151816001015590505050612bbb565b6000600f8054905061282a61339f565b6128349190614090565b9050600062015180426128479190613ee9565b9050604051806040016040528060018152602001828152506012600060018152602001908152602001600020600082015181600001556020820151816001015590505060006128b76103e86128a9600a54600e5461306790919063ffffffff16565b6130e190919063ffffffff16565b905060006128e66103e86128d8600854600e5461306790919063ffffffff16565b6130e190919063ffffffff16565b905060006128fd828461300990919063ffffffff16565b9050600061291682600e54612faa90919063ffffffff16565b9050612920613642565b81816000018181525050600f878154811061293e5761293d613cc8565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060018160400181815250504281606001818152505060148190806001815401808255809150506001900390600052602060002090600402016000909190919091506000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816002015560608201518160030155505060138190806001815401808255809150506001900390600052602060002090600402016000909190919091506000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003015550506000600e819055506000600f8881548110612af957612af8613cc8565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600f6000612b349190613680565b612b62600186600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661313f565b8073ffffffffffffffffffffffffffffffffffffffff167fc92288394ef32dd1ce054c884b9a003055b8d8d63daf2e1c2d3385bdc59b65c28442604051612baa929190613c5f565b60405180910390a250505050505050505b565b60065481565b60148181548110612bd357600080fd5b90600052602060002090600402016000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154908060030154905084565b3373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612cb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612caa90613fd5565b60405180910390fd5b60006201518042612cc49190613ee9565b9050604051806040016040528060018152602001828152506012600060018152602001908152602001600020600082015181600001556020820151816001015590505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000612d7e3361139c565b905060008111612dc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dba90614133565b60405180910390fd5b60005b8260040180549050811015612e145742836004018281548110612dec57612deb613cc8565b5b9060005260206000209060050201600101819055508080612e0c90613d26565b915050612dc6565b50612e2c81836002015461300990919063ffffffff16565b8260020181905550612e498160105461300990919063ffffffff16565b601081905550816004016040518060a00160405280846004018054905081526020014281526020016301e1338042612e819190613ee9565b81526020018381526020013373ffffffffffffffffffffffffffffffffffffffff1681525090806001815401808255809150506001900390600052602060002090600502016000909190919091506000820151816000015560208201518160010155604082015181600201556060820151816003015560808201518160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050504260126000600181526020019081526020016000206001015411612f6757612f66612759565b5b5050565b600f8181548110612f7b57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600082821115612fef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fe69061419f565b60405180910390fd5b60008284612ffd91906141bf565b90508091505092915050565b60008082846130189190613ee9565b90508381101561305d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130549061423f565b60405180910390fd5b8091505092915050565b600080830361307957600090506130db565b60008284613087919061425f565b905082848261309691906142b9565b146130d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130cd9061435c565b60405180910390fd5b809150505b92915050565b6000808211613125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161311c906143c8565b60405180910390fd5b6000828461313391906142b9565b90508091505092915050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905083156131ac5761319f83826003015461300990919063ffffffff16565b81600301819055506131dd565b80600301548311156131bd57600080fd5b6131d4838260030154612faa90919063ffffffff16565b81600301819055505b50505050565b80600e546131f19190613ee9565b600e81905550601482116132055781613208565b60145b915060005b8281101561328b57600f339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808061328390613d26565b91505061320d565b505050565b613313846323b872dd60e01b8585856040516024016132b1939291906143e8565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506133d5565b50505050565b61339a8363a9059cbb60e01b848460405160240161333892919061441f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506133d5565b505050565b60004442600f6040516020016133b793929190614587565b6040516020818303038152906040528051906020012060001c905090565b6000613437826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661349c9092919063ffffffff16565b9050600081511115613497578080602001905181019061345791906145d5565b613496576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161348d90614674565b60405180910390fd5b5b505050565b60606134ab84846000856134b4565b90509392505050565b6060824710156134f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134f090614706565b60405180910390fd5b613502856135c8565b613541576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161353890614772565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161356a9190614803565b60006040518083038185875af1925050503d80600081146135a7576040519150601f19603f3d011682016040523d82523d6000602084013e6135ac565b606091505b50915091506135bc8282866135db565b92505050949350505050565b600080823b905060008111915050919050565b606083156135eb5782905061363b565b6000835111156135fe5782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613632919061486f565b60405180910390fd5b9392505050565b604051806080016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b508054600082559060005260206000209081019061369e91906136a1565b50565b5b808211156136ba5760008160009055506001016136a2565b5090565b6000819050919050565b6136d1816136be565b82525050565b60006020820190506136ec60008301846136c8565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613722826136f7565b9050919050565b61373281613717565b811461373d57600080fd5b50565b60008135905061374f81613729565b92915050565b61375e816136be565b811461376957600080fd5b50565b60008135905061377b81613755565b92915050565b60008060408385031215613798576137976136f2565b5b60006137a685828601613740565b92505060206137b78582860161376c565b9150509250929050565b60008115159050919050565b6137d6816137c1565b82525050565b60006020820190506137f160008301846137cd565b92915050565b6000806000606084860312156138105761380f6136f2565b5b600061381e86828701613740565b935050602061382f86828701613740565b92505060406138408682870161376c565b9150509250925092565b60008060408385031215613861576138606136f2565b5b600061386f8582860161376c565b925050602061388085828601613740565b9150509250929050565b600060608201905061389f60008301866137cd565b6138ac60208301856136c8565b6138b960408301846136c8565b949350505050565b6000602082840312156138d7576138d66136f2565b5b60006138e584828501613740565b91505092915050565b6138f781613717565b82525050565b600060a08201905061391260008301886136c8565b61391f60208301876136c8565b61392c60408301866136c8565b61393960608301856136c8565b61394660808301846138ee565b9695505050505050565b613959816137c1565b811461396457600080fd5b50565b60008135905061397681613950565b92915050565b60008060408385031215613993576139926136f2565b5b60006139a185828601613967565b92505060206139b28582860161376c565b9150509250929050565b6000602082840312156139d2576139d16136f2565b5b60006139e08482850161376c565b91505092915050565b60006080820190506139fe60008301876136c8565b613a0b60208301866138ee565b613a1860408301856136c8565b613a2560608301846136c8565b95945050505050565b6000608082019050613a4360008301876136c8565b613a5060208301866136c8565b613a5d60408301856136c8565b613a6a60608301846136c8565b95945050505050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613aa8816136be565b82525050565b613ab781613717565b82525050565b60a082016000820151613ad36000850182613a9f565b506020820151613ae66020850182613a9f565b506040820151613af96040850182613a9f565b506060820151613b0c6060850182613a9f565b506080820151613b1f6080850182613aae565b50505050565b6000613b318383613abd565b60a08301905092915050565b6000602082019050919050565b6000613b5582613a73565b613b5f8185613a7e565b9350613b6a83613a8f565b8060005b83811015613b9b578151613b828882613b25565b9750613b8d83613b3d565b925050600181019050613b6e565b5085935050505092915050565b60006020820190508181036000830152613bc28184613b4a565b905092915050565b6000602082019050613bdf60008301846138ee565b92915050565b6000819050919050565b6000613c0a613c05613c00846136f7565b613be5565b6136f7565b9050919050565b6000613c1c82613bef565b9050919050565b6000613c2e82613c11565b9050919050565b613c3e81613c23565b82525050565b6000602082019050613c596000830184613c35565b92915050565b6000604082019050613c7460008301856136c8565b613c8160208301846136c8565b9392505050565b60008060408385031215613c9f57613c9e6136f2565b5b6000613cad85828601613740565b9250506020613cbe85828601613740565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613d31826136be565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613d6357613d62613cf7565b5b600182019050919050565b600082825260208201905092915050565b7f41707020686173206e6f74206c61756e6368207965742e000000000000000000600082015250565b6000613db5601783613d6e565b9150613dc082613d7f565b602082019050919050565b60006020820190508181036000830152613de481613da8565b9050919050565b7f596f752063616e6e6f7420726566657220796f757273656c6621000000000000600082015250565b6000613e21601a83613d6e565b9150613e2c82613deb565b602082019050919050565b60006020820190508181036000830152613e5081613e14565b9050919050565b7f596f752073686f756c64207374616b65206174206c6561737420313020426f6e60008201527f64732e0000000000000000000000000000000000000000000000000000000000602082015250565b6000613eb3602383613d6e565b9150613ebe82613e57565b604082019050919050565b60006020820190508181036000830152613ee281613ea6565b9050919050565b6000613ef4826136be565b9150613eff836136be565b9250828201905080821115613f1757613f16613cf7565b5b92915050565b7f626f6e75732073686f756c642062652067726561746572207468616e20300000600082015250565b6000613f53601e83613d6e565b9150613f5e82613f1d565b602082019050919050565b60006020820190508181036000830152613f8281613f46565b9050919050565b7f72657175697265732061646d696e2070726976696c6564676500000000000000600082015250565b6000613fbf601983613d6e565b9150613fca82613f89565b602082019050919050565b60006020820190508181036000830152613fee81613fb2565b9050919050565b7f6e6f742074696d652079657420666f72206c6f74746f00000000000000000000600082015250565b600061402b601683613d6e565b915061403682613ff5565b602082019050919050565b6000602082019050818103600083015261405a8161401e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061409b826136be565b91506140a6836136be565b9250826140b6576140b5614061565b5b828206905092915050565b7f6561726e696e67732073686f756c642062652067726561746572207468616e2060008201527f3000000000000000000000000000000000000000000000000000000000000000602082015250565b600061411d602183613d6e565b9150614128826140c1565b604082019050919050565b6000602082019050818103600083015261414c81614110565b9050919050565b7f536166654d6174683a207375627472616374696f6e206f766572666c6f770000600082015250565b6000614189601e83613d6e565b915061419482614153565b602082019050919050565b600060208201905081810360008301526141b88161417c565b9050919050565b60006141ca826136be565b91506141d5836136be565b92508282039050818111156141ed576141ec613cf7565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614229601b83613d6e565b9150614234826141f3565b602082019050919050565b600060208201905081810360008301526142588161421c565b9050919050565b600061426a826136be565b9150614275836136be565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156142ae576142ad613cf7565b5b828202905092915050565b60006142c4826136be565b91506142cf836136be565b9250826142df576142de614061565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614346602183613d6e565b9150614351826142ea565b604082019050919050565b6000602082019050818103600083015261437581614339565b9050919050565b7f536166654d6174683a206469766973696f6e206279207a65726f000000000000600082015250565b60006143b2601a83613d6e565b91506143bd8261437c565b602082019050919050565b600060208201905081810360008301526143e1816143a5565b9050919050565b60006060820190506143fd60008301866138ee565b61440a60208301856138ee565b61441760408301846136c8565b949350505050565b600060408201905061443460008301856138ee565b61444160208301846136c8565b9392505050565b6000819050919050565b61446361445e826136be565b614448565b82525050565b600081549050919050565b600081905092915050565b60008190508160005260206000209050919050565b61449d81613717565b82525050565b60006144af8383614494565b60208301905092915050565b60008160001c9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006144fb6144f6836144bb565b6144c8565b9050919050565b600061450e82546144e8565b9050919050565b6000600182019050919050565b600061452d82614469565b6145378185614474565b93506145428361447f565b8060005b8381101561457a5761455782614502565b61456188826144a3565b975061456c83614515565b925050600181019050614546565b5085935050505092915050565b60006145938286614452565b6020820191506145a38285614452565b6020820191506145b38284614522565b9150819050949350505050565b6000815190506145cf81613950565b92915050565b6000602082840312156145eb576145ea6136f2565b5b60006145f9848285016145c0565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b600061465e602a83613d6e565b915061466982614602565b604082019050919050565b6000602082019050818103600083015261468d81614651565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b60006146f0602683613d6e565b91506146fb82614694565b604082019050919050565b6000602082019050818103600083015261471f816146e3565b9050919050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b600061475c601d83613d6e565b915061476782614726565b602082019050919050565b6000602082019050818103600083015261478b8161474f565b9050919050565b600081519050919050565b600081905092915050565b60005b838110156147c65780820151818401526020810190506147ab565b60008484015250505050565b60006147dd82614792565b6147e7818561479d565b93506147f78185602086016147a8565b80840191505092915050565b600061480f82846147d2565b915081905092915050565b600081519050919050565b6000601f19601f8301169050919050565b60006148418261481a565b61484b8185613d6e565b935061485b8185602086016147a8565b61486481614825565b840191505092915050565b600060208201905081810360008301526148898184614836565b90509291505056fea26469706673582212203bd262d1c2a805290684402c4d3ec398a5a237db501e7eccc3c968719cafecb864736f6c634300081000330000000000000000000000001b9ece3ff4aa86883c4c10fd09221b8f2da5da070000000000000000000000000000000000000000000000000000000064e9e940

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061028a5760003560e01c806397c7b5511161015c578063c88aebfa116100ce578063e262113e11610087578063e262113e14610824578063e499e79c14610842578063e83007b214610875578063f53d0a8e1461087f578063f69e20461461089d578063f71d96cb146108a75761028a565b8063c88aebfa14610762578063cce0051d14610792578063d5c431591461079c578063d73dd623146107ba578063dd62ed3e146107ea578063e20df9761461081a5761028a565b8063ae169a5011610120578063ae169a501461069f578063b73c6ce9146106bb578063b7f1ea13146106c5578063c1eb5ddd146106f5578063c54e44eb14610713578063c65190e3146107315761028a565b806397c7b551146105bd578063a2fb1175146105ed578063a6f9dae114610620578063a87430ba1461063c578063a9059cbb1461066f5761028a565b806344038f9011610200578063805c733b116101b9578063805c733b1461050d578063817b1cd21461052b578063825e8f6814610549578063874fc5f8146105675780638805d88a1461058357806388a8c95c146105a15761028a565b806344038f90146104335780634878da351461045157806348cfb8911461046f578063584b62a11461047957806366188463146104ad57806370a08231146104dd5761028a565b806323b872dd1161025257806323b872dd146103375780632c8ee2ec1461036757806336c5c9e314610399578063372c6533146103c95780633d103b97146103e7578063414153a8146104035761028a565b806301c234a81461028f578063050eb751146102ad578063095ea7b3146102cb5780631209b1f6146102fb57806318160ddd14610319575b600080fd5b6102976108d7565b6040516102a491906136d7565b60405180910390f35b6102b56108dd565b6040516102c291906136d7565b60405180910390f35b6102e560048036038101906102e09190613781565b6108e3565b6040516102f291906137dc565b60405180910390f35b6103036109d5565b60405161031091906136d7565b60405180910390f35b6103216109dd565b60405161032e91906136d7565b60405180910390f35b610351600480360381019061034c91906137f7565b6109e7565b60405161035e91906137dc565b60405180910390f35b610381600480360381019061037c919061384a565b610d9a565b6040516103909392919061388a565b60405180910390f35b6103b360048036038101906103ae91906138c1565b610eac565b6040516103c091906136d7565b60405180910390f35b6103d1610f6f565b6040516103de91906136d7565b60405180910390f35b61040160048036038101906103fc919061384a565b610f75565b005b61041d600480360381019061041891906138c1565b61139c565b60405161042a91906136d7565b60405180910390f35b61043b61151a565b60405161044891906136d7565b60405180910390f35b610459611520565b60405161046691906136d7565b60405180910390f35b61047761152d565b005b610493600480360381019061048e9190613781565b6116f5565b6040516104a49594939291906138fd565b60405180910390f35b6104c760048036038101906104c29190613781565b611758565b6040516104d491906137dc565b60405180910390f35b6104f760048036038101906104f291906138c1565b6119e9565b60405161050491906136d7565b60405180910390f35b610515611a31565b60405161052291906136d7565b60405180910390f35b610533611a37565b60405161054091906136d7565b60405180910390f35b610551611a3d565b60405161055e91906136d7565b60405180910390f35b610581600480360381019061057c919061397c565b611a43565b005b61058b611b39565b60405161059891906136d7565b60405180910390f35b6105bb60048036038101906105b691906138c1565b611b3f565b005b6105d760048036038101906105d291906138c1565b611c13565b6040516105e491906136d7565b60405180910390f35b610607600480360381019061060291906139bc565b611c64565b60405161061794939291906139e9565b60405180910390f35b61063a600480360381019061063591906138c1565b611cc4565b005b610656600480360381019061065191906138c1565b611d98565b6040516106669493929190613a2e565b60405180910390f35b61068960048036038101906106849190613781565b611dc8565b60405161069691906137dc565b60405180910390f35b6106b960048036038101906106b491906139bc565b611fe2565b005b6106c361207d565b005b6106df60048036038101906106da91906138c1565b6121f8565b6040516106ec9190613ba8565b60405180910390f35b6106fd61231d565b60405161070a9190613bca565b60405180910390f35b61071b612343565b6040516107289190613c44565b60405180910390f35b61074b600480360381019061074691906139bc565b612369565b604051610759929190613c5f565b60405180910390f35b61077c600480360381019061077791906138c1565b61238d565b60405161078991906136d7565b60405180910390f35b61079a6123e1565b005b6107a46124d0565b6040516107b191906136d7565b60405180910390f35b6107d460048036038101906107cf9190613781565b6124d6565b6040516107e191906137dc565b60405180910390f35b61080460048036038101906107ff9190613c88565b6126d2565b60405161081191906136d7565b60405180910390f35b610822612759565b005b61082c612bbd565b60405161083991906136d7565b60405180910390f35b61085c600480360381019061085791906139bc565b612bc3565b60405161086c94939291906139e9565b60405180910390f35b61087d612c23565b005b610887612d0a565b6040516108949190613bca565b60405180910390f35b6108a5612d30565b005b6108c160048036038101906108bc91906139bc565b612f6b565b6040516108ce9190613bca565b60405180910390f35b6103e881565b60085481565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109c391906136d7565b60405180910390a36001905092915050565b6301312d0081565b6000600154905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a2157600080fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115610a6c57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115610af557600080fd5b610b46826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612faa90919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610bd9826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461300990919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610caa82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612faa90919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d8791906136d7565b60405180910390a3600190509392505050565b600080600080600090505b601380549050811015610ea3578473ffffffffffffffffffffffffffffffffffffffff1660138281548110610ddd57610ddc613cc8565b5b906000526020600020906004020160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015610e5657508560138281548110610e4257610e41613cc8565b5b906000526020600020906004020160020154145b15610e9057600160138281548110610e7157610e70613cc8565b5b9060005260206000209060040201600001548293509350935050610ea5565b8080610e9b90613d26565b915050610da5565b505b9250925092565b600080600090506000600f80549050905060008114610f655760005b81811015610f63578473ffffffffffffffffffffffffffffffffffffffff16600f8281548110610efb57610efa613cc8565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610f50578280610f4c90613d26565b9350505b8080610f5b90613d26565b915050610ec8565b505b8192505050919050565b60045481565b600454421015610fba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb190613dcb565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611028576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101f90613e37565b60405180910390fd5b60065482101561106d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106490613ec9565b60405180910390fd5b6000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600061111e6103e86111106008548861306790919063ffffffff16565b6130e190919063ffffffff16565b9050600061114b6103e861113d600a548961306790919063ffffffff16565b6130e190919063ffffffff16565b90506000611162828461300990919063ffffffff16565b905060006111798289612faa90919063ffffffff16565b90506111908160105461300990919063ffffffff16565b6010819055506111a26000893361313f565b6111d0600185600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661313f565b60008660000154036111e6574286600001819055505b6111fd81876002015461300990919063ffffffff16565b866002018190555061121c84866001015461300990919063ffffffff16565b8560010181905550856004016040518060a00160405280886004018054905081526020014281526020016301e13380426112569190613ee9565b81526020018381526020013373ffffffffffffffffffffffffffffffffffffffff1681525090806001815401808255809150506001900390600052602060002090600502016000909190919091506000820151816000015560208201518160010155604082015181600201556060820151816003015560808201518160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050600061132e6301312d00856130e190919063ffffffff16565b9050600181106113435761134281856131e3565b5b3373ffffffffffffffffffffffffffffffffffffffff167f42e99fbad9601d25ee3bb515eeee966f97c3c383adadbe5720f651df8c18989d8a60405161138991906136d7565b60405180910390a2505050505050505050565b600080600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600080600090505b826004018054905081101561150f5782600401818154811061140d5761140c613cc8565b5b9060005260206000209060050201600201544210156114fc57600061146284600401838154811061144157611440613cc8565b5b90600052602060002090600502016001015442612faa90919063ffffffff16565b9050600084600401838154811061147c5761147b613cc8565b5b906000526020600020906005020160030154905060006114bb6103e86114ad600b548561306790919063ffffffff16565b6130e190919063ffffffff16565b905060006114e7620151806114d9868561306790919063ffffffff16565b6130e190919063ffffffff16565b905080866114f59190613ee9565b9550505050505b808061150790613d26565b9150506113e8565b508092505050919050565b60075481565b6000601480549050905090565b6000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600081600101549050600081116115bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b390613f69565b60405180910390fd5b6115d381836002015461300990919063ffffffff16565b82600201819055506115f08160105461300990919063ffffffff16565b601081905550816004016040518060a00160405280846004018054905081526020014281526020016301e13380426116289190613ee9565b81526020018381526020013373ffffffffffffffffffffffffffffffffffffffff1681525090806001815401808255809150506001900390600052602060002090600502016000909190919091506000820151816000015560208201518160010155604082015181600201556060820151816003015560808201518160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050600082600101819055505050565b600d602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060020154908060030154908060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905085565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080831115611869576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506118fd565b61187c8382612faa90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040516119d691906136d7565b60405180910390a3600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600e5481565b60105481565b600a5481565b8115611ac257611a98333083601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613290909392919063ffffffff16565b6000611aae60028361306790919063ffffffff16565b9050611abc6001823361313f565b50611b35565b6000611ad86002836130e190919063ffffffff16565b9050611ae66000833361313f565b611b333382601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166133199092919063ffffffff16565b505b5050565b60095481565b3373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc690613fd5565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060030154915050919050565b60138181548110611c7457600080fd5b90600052602060002090600402016000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154908060030154905084565b3373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4b90613fd5565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c6020528060005260406000206000915090508060000154908060010154908060020154908060030154905084565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e0257600080fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115611e4d57600080fd5b611e9e826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612faa90919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f31826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461300990919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611fd091906136d7565b60405180910390a36001905092915050565b6000806000611ff18433610d9a565b9250925092508215612072576120096001833361313f565b6013818154811061201d5761201c613cc8565b5b90600052602060002090600402016000808201600090556001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600282016000905560038201600090555050612077565b600080fd5b50505050565b6000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060006120cb3361139c565b905060005b826004018054905081101561211e57428360040182815481106120f6576120f5613cc8565b5b906000526020600020906005020160010181905550808061211690613d26565b9150506120d0565b50600061214a6103e861213c6009548561306790919063ffffffff16565b6130e190919063ffffffff16565b905060006121776103e86121696008548661306790919063ffffffff16565b6130e190919063ffffffff16565b9050600061218e8385612faa90919063ffffffff16565b905061219c6001823361313f565b6121ca600183600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661313f565b42601260006001815260200190815260200160002060010154116121f1576121f0612759565b5b5050505050565b60606000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600401805480602002602001604051908101604052809291908181526020016000905b8282101561231157838290600052602060002090600502016040518060a0016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190612261565b50505050915050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60126020528060005260406000206000915090508060000154908060010154905082565b600080600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060040180549050915050919050565b6000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160010154905060008111612470576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246790613f69565b60405180910390fd5b600061249b6103e861248d6008548561306790919063ffffffff16565b6130e190919063ffffffff16565b905060006124b28284612faa90919063ffffffff16565b90506124c06001823361313f565b6000846001018190555050505050565b600b5481565b600061256782600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461300990919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040516126c091906136d7565b60405180910390a36001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b4260126000600181526020019081526020016000206001015411156127b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127aa90614041565b60405180910390fd5b6000600f805490501161281a57600062015180426127d19190613ee9565b9050604051806040016040528060018152602001828152506012600060018152602001908152602001600020600082015181600001556020820151816001015590505050612bbb565b6000600f8054905061282a61339f565b6128349190614090565b9050600062015180426128479190613ee9565b9050604051806040016040528060018152602001828152506012600060018152602001908152602001600020600082015181600001556020820151816001015590505060006128b76103e86128a9600a54600e5461306790919063ffffffff16565b6130e190919063ffffffff16565b905060006128e66103e86128d8600854600e5461306790919063ffffffff16565b6130e190919063ffffffff16565b905060006128fd828461300990919063ffffffff16565b9050600061291682600e54612faa90919063ffffffff16565b9050612920613642565b81816000018181525050600f878154811061293e5761293d613cc8565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060018160400181815250504281606001818152505060148190806001815401808255809150506001900390600052602060002090600402016000909190919091506000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816002015560608201518160030155505060138190806001815401808255809150506001900390600052602060002090600402016000909190919091506000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003015550506000600e819055506000600f8881548110612af957612af8613cc8565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600f6000612b349190613680565b612b62600186600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661313f565b8073ffffffffffffffffffffffffffffffffffffffff167fc92288394ef32dd1ce054c884b9a003055b8d8d63daf2e1c2d3385bdc59b65c28442604051612baa929190613c5f565b60405180910390a250505050505050505b565b60065481565b60148181548110612bd357600080fd5b90600052602060002090600402016000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154908060030154905084565b3373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612cb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612caa90613fd5565b60405180910390fd5b60006201518042612cc49190613ee9565b9050604051806040016040528060018152602001828152506012600060018152602001908152602001600020600082015181600001556020820151816001015590505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000612d7e3361139c565b905060008111612dc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dba90614133565b60405180910390fd5b60005b8260040180549050811015612e145742836004018281548110612dec57612deb613cc8565b5b9060005260206000209060050201600101819055508080612e0c90613d26565b915050612dc6565b50612e2c81836002015461300990919063ffffffff16565b8260020181905550612e498160105461300990919063ffffffff16565b601081905550816004016040518060a00160405280846004018054905081526020014281526020016301e1338042612e819190613ee9565b81526020018381526020013373ffffffffffffffffffffffffffffffffffffffff1681525090806001815401808255809150506001900390600052602060002090600502016000909190919091506000820151816000015560208201518160010155604082015181600201556060820151816003015560808201518160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050504260126000600181526020019081526020016000206001015411612f6757612f66612759565b5b5050565b600f8181548110612f7b57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600082821115612fef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fe69061419f565b60405180910390fd5b60008284612ffd91906141bf565b90508091505092915050565b60008082846130189190613ee9565b90508381101561305d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130549061423f565b60405180910390fd5b8091505092915050565b600080830361307957600090506130db565b60008284613087919061425f565b905082848261309691906142b9565b146130d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130cd9061435c565b60405180910390fd5b809150505b92915050565b6000808211613125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161311c906143c8565b60405180910390fd5b6000828461313391906142b9565b90508091505092915050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905083156131ac5761319f83826003015461300990919063ffffffff16565b81600301819055506131dd565b80600301548311156131bd57600080fd5b6131d4838260030154612faa90919063ffffffff16565b81600301819055505b50505050565b80600e546131f19190613ee9565b600e81905550601482116132055781613208565b60145b915060005b8281101561328b57600f339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808061328390613d26565b91505061320d565b505050565b613313846323b872dd60e01b8585856040516024016132b1939291906143e8565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506133d5565b50505050565b61339a8363a9059cbb60e01b848460405160240161333892919061441f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506133d5565b505050565b60004442600f6040516020016133b793929190614587565b6040516020818303038152906040528051906020012060001c905090565b6000613437826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661349c9092919063ffffffff16565b9050600081511115613497578080602001905181019061345791906145d5565b613496576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161348d90614674565b60405180910390fd5b5b505050565b60606134ab84846000856134b4565b90509392505050565b6060824710156134f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134f090614706565b60405180910390fd5b613502856135c8565b613541576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161353890614772565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161356a9190614803565b60006040518083038185875af1925050503d80600081146135a7576040519150601f19603f3d011682016040523d82523d6000602084013e6135ac565b606091505b50915091506135bc8282866135db565b92505050949350505050565b600080823b905060008111915050919050565b606083156135eb5782905061363b565b6000835111156135fe5782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613632919061486f565b60405180910390fd5b9392505050565b604051806080016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b508054600082559060005260206000209081019061369e91906136a1565b50565b5b808211156136ba5760008160009055506001016136a2565b5090565b6000819050919050565b6136d1816136be565b82525050565b60006020820190506136ec60008301846136c8565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613722826136f7565b9050919050565b61373281613717565b811461373d57600080fd5b50565b60008135905061374f81613729565b92915050565b61375e816136be565b811461376957600080fd5b50565b60008135905061377b81613755565b92915050565b60008060408385031215613798576137976136f2565b5b60006137a685828601613740565b92505060206137b78582860161376c565b9150509250929050565b60008115159050919050565b6137d6816137c1565b82525050565b60006020820190506137f160008301846137cd565b92915050565b6000806000606084860312156138105761380f6136f2565b5b600061381e86828701613740565b935050602061382f86828701613740565b92505060406138408682870161376c565b9150509250925092565b60008060408385031215613861576138606136f2565b5b600061386f8582860161376c565b925050602061388085828601613740565b9150509250929050565b600060608201905061389f60008301866137cd565b6138ac60208301856136c8565b6138b960408301846136c8565b949350505050565b6000602082840312156138d7576138d66136f2565b5b60006138e584828501613740565b91505092915050565b6138f781613717565b82525050565b600060a08201905061391260008301886136c8565b61391f60208301876136c8565b61392c60408301866136c8565b61393960608301856136c8565b61394660808301846138ee565b9695505050505050565b613959816137c1565b811461396457600080fd5b50565b60008135905061397681613950565b92915050565b60008060408385031215613993576139926136f2565b5b60006139a185828601613967565b92505060206139b28582860161376c565b9150509250929050565b6000602082840312156139d2576139d16136f2565b5b60006139e08482850161376c565b91505092915050565b60006080820190506139fe60008301876136c8565b613a0b60208301866138ee565b613a1860408301856136c8565b613a2560608301846136c8565b95945050505050565b6000608082019050613a4360008301876136c8565b613a5060208301866136c8565b613a5d60408301856136c8565b613a6a60608301846136c8565b95945050505050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613aa8816136be565b82525050565b613ab781613717565b82525050565b60a082016000820151613ad36000850182613a9f565b506020820151613ae66020850182613a9f565b506040820151613af96040850182613a9f565b506060820151613b0c6060850182613a9f565b506080820151613b1f6080850182613aae565b50505050565b6000613b318383613abd565b60a08301905092915050565b6000602082019050919050565b6000613b5582613a73565b613b5f8185613a7e565b9350613b6a83613a8f565b8060005b83811015613b9b578151613b828882613b25565b9750613b8d83613b3d565b925050600181019050613b6e565b5085935050505092915050565b60006020820190508181036000830152613bc28184613b4a565b905092915050565b6000602082019050613bdf60008301846138ee565b92915050565b6000819050919050565b6000613c0a613c05613c00846136f7565b613be5565b6136f7565b9050919050565b6000613c1c82613bef565b9050919050565b6000613c2e82613c11565b9050919050565b613c3e81613c23565b82525050565b6000602082019050613c596000830184613c35565b92915050565b6000604082019050613c7460008301856136c8565b613c8160208301846136c8565b9392505050565b60008060408385031215613c9f57613c9e6136f2565b5b6000613cad85828601613740565b9250506020613cbe85828601613740565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613d31826136be565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613d6357613d62613cf7565b5b600182019050919050565b600082825260208201905092915050565b7f41707020686173206e6f74206c61756e6368207965742e000000000000000000600082015250565b6000613db5601783613d6e565b9150613dc082613d7f565b602082019050919050565b60006020820190508181036000830152613de481613da8565b9050919050565b7f596f752063616e6e6f7420726566657220796f757273656c6621000000000000600082015250565b6000613e21601a83613d6e565b9150613e2c82613deb565b602082019050919050565b60006020820190508181036000830152613e5081613e14565b9050919050565b7f596f752073686f756c64207374616b65206174206c6561737420313020426f6e60008201527f64732e0000000000000000000000000000000000000000000000000000000000602082015250565b6000613eb3602383613d6e565b9150613ebe82613e57565b604082019050919050565b60006020820190508181036000830152613ee281613ea6565b9050919050565b6000613ef4826136be565b9150613eff836136be565b9250828201905080821115613f1757613f16613cf7565b5b92915050565b7f626f6e75732073686f756c642062652067726561746572207468616e20300000600082015250565b6000613f53601e83613d6e565b9150613f5e82613f1d565b602082019050919050565b60006020820190508181036000830152613f8281613f46565b9050919050565b7f72657175697265732061646d696e2070726976696c6564676500000000000000600082015250565b6000613fbf601983613d6e565b9150613fca82613f89565b602082019050919050565b60006020820190508181036000830152613fee81613fb2565b9050919050565b7f6e6f742074696d652079657420666f72206c6f74746f00000000000000000000600082015250565b600061402b601683613d6e565b915061403682613ff5565b602082019050919050565b6000602082019050818103600083015261405a8161401e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061409b826136be565b91506140a6836136be565b9250826140b6576140b5614061565b5b828206905092915050565b7f6561726e696e67732073686f756c642062652067726561746572207468616e2060008201527f3000000000000000000000000000000000000000000000000000000000000000602082015250565b600061411d602183613d6e565b9150614128826140c1565b604082019050919050565b6000602082019050818103600083015261414c81614110565b9050919050565b7f536166654d6174683a207375627472616374696f6e206f766572666c6f770000600082015250565b6000614189601e83613d6e565b915061419482614153565b602082019050919050565b600060208201905081810360008301526141b88161417c565b9050919050565b60006141ca826136be565b91506141d5836136be565b92508282039050818111156141ed576141ec613cf7565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614229601b83613d6e565b9150614234826141f3565b602082019050919050565b600060208201905081810360008301526142588161421c565b9050919050565b600061426a826136be565b9150614275836136be565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156142ae576142ad613cf7565b5b828202905092915050565b60006142c4826136be565b91506142cf836136be565b9250826142df576142de614061565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614346602183613d6e565b9150614351826142ea565b604082019050919050565b6000602082019050818103600083015261437581614339565b9050919050565b7f536166654d6174683a206469766973696f6e206279207a65726f000000000000600082015250565b60006143b2601a83613d6e565b91506143bd8261437c565b602082019050919050565b600060208201905081810360008301526143e1816143a5565b9050919050565b60006060820190506143fd60008301866138ee565b61440a60208301856138ee565b61441760408301846136c8565b949350505050565b600060408201905061443460008301856138ee565b61444160208301846136c8565b9392505050565b6000819050919050565b61446361445e826136be565b614448565b82525050565b600081549050919050565b600081905092915050565b60008190508160005260206000209050919050565b61449d81613717565b82525050565b60006144af8383614494565b60208301905092915050565b60008160001c9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006144fb6144f6836144bb565b6144c8565b9050919050565b600061450e82546144e8565b9050919050565b6000600182019050919050565b600061452d82614469565b6145378185614474565b93506145428361447f565b8060005b8381101561457a5761455782614502565b61456188826144a3565b975061456c83614515565b925050600181019050614546565b5085935050505092915050565b60006145938286614452565b6020820191506145a38285614452565b6020820191506145b38284614522565b9150819050949350505050565b6000815190506145cf81613950565b92915050565b6000602082840312156145eb576145ea6136f2565b5b60006145f9848285016145c0565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b600061465e602a83613d6e565b915061466982614602565b604082019050919050565b6000602082019050818103600083015261468d81614651565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b60006146f0602683613d6e565b91506146fb82614694565b604082019050919050565b6000602082019050818103600083015261471f816146e3565b9050919050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b600061475c601d83613d6e565b915061476782614726565b602082019050919050565b6000602082019050818103600083015261478b8161474f565b9050919050565b600081519050919050565b600081905092915050565b60005b838110156147c65780820151818401526020810190506147ab565b60008484015250505050565b60006147dd82614792565b6147e7818561479d565b93506147f78185602086016147a8565b80840191505092915050565b600061480f82846147d2565b915081905092915050565b600081519050919050565b6000601f19601f8301169050919050565b60006148418261481a565b61484b8185613d6e565b935061485b8185602086016147a8565b61486481614825565b840191505092915050565b600060208201905081810360008301526148898184614836565b90509291505056fea26469706673582212203bd262d1c2a805290684402c4d3ec398a5a237db501e7eccc3c968719cafecb864736f6c63430008100033

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

0000000000000000000000001b9ece3ff4aa86883c4c10fd09221b8f2da5da070000000000000000000000000000000000000000000000000000000064e9e940

-----Decoded View---------------
Arg [0] : _dev (address): 0x1B9ece3Ff4Aa86883C4C10FD09221B8F2DA5dA07
Arg [1] : _startDate (uint256): 1693051200

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000001b9ece3ff4aa86883c4c10fd09221b8f2da5da07
Arg [1] : 0000000000000000000000000000000000000000000000000000000064e9e940


Deployed Bytecode Sourcemap

13218:10715:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13587:47;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13445:30;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10676:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13791:50;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8130:94;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9578:463;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21628:360;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;22579:337;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13298:25;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14921:1420;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19510:690;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13403:38;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22464:107;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17420:575;;;:::i;:::-;;13686:60;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;12550:412;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8935:111;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13753:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13876:30;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13522;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18415:423;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13482:33;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23831:93;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23248:145;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14718:23;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;23718:109;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13641:38;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;8388:338;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21994:300;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18848:652;;;:::i;:::-;;23562:150;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13330:18;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13946;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14668:43;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;23401:155;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18005:398;;;:::i;:::-;;13559:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11810:266;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11204:137;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20361:1263;;;:::i;:::-;;13352:47;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14748:27;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;22302:146;;;:::i;:::-;;12968:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16636:778;;;:::i;:::-;;13848:24;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13587:47;13630:4;13587:47;:::o;13445:30::-;;;;:::o;10676:201::-;10752:4;10797:6;10765:7;:19;10773:10;10765:19;;;;;;;;;;;;;;;:29;10785:8;10765:29;;;;;;;;;;;;;;;:38;;;;10836:8;10815:38;;10824:10;10815:38;;;10846:6;10815:38;;;;;;:::i;:::-;;;;;;;;10867:4;10860:11;;10676:201;;;;:::o;13791:50::-;13829:12;13791:50;:::o;8130:94::-;8183:7;8206:12;;8199:19;;8130:94;:::o;9578:463::-;9669:4;9705:1;9690:17;;:3;:17;;;9682:26;;;;;;9733:8;:15;9742:5;9733:15;;;;;;;;;;;;;;;;9723:6;:25;;9715:34;;;;;;9774:7;:14;9782:5;9774:14;;;;;;;;;;;;;;;:26;9789:10;9774:26;;;;;;;;;;;;;;;;9764:6;:36;;9756:45;;;;;;9828:27;9848:6;9828:8;:15;9837:5;9828:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;9810:8;:15;9819:5;9810:15;;;;;;;;;;;;;;;:45;;;;9878:25;9896:6;9878:8;:13;9887:3;9878:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;9862:8;:13;9871:3;9862:13;;;;;;;;;;;;;;;:41;;;;9939:38;9970:6;9939:7;:14;9947:5;9939:14;;;;;;;;;;;;;;;:26;9954:10;9939:26;;;;;;;;;;;;;;;;:30;;:38;;;;:::i;:::-;9910:7;:14;9918:5;9910:14;;;;;;;;;;;;;;;:26;9925:10;9910:26;;;;;;;;;;;;;;;:67;;;;10005:3;9989:28;;9998:5;9989:28;;;10010:6;9989:28;;;;;;:::i;:::-;;;;;;;;10031:4;10024:11;;9578:463;;;;;:::o;21628:360::-;21703:13;21718:14;21734:13;21765:9;21777:1;21765:13;;21760:221;21785:7;:14;;;;21781:1;:18;21760:221;;;21847:7;21826:28;;:7;21834:1;21826:10;;;;;;;;:::i;:::-;;;;;;;;;;;;:17;;;;;;;;;;;;:28;;;:66;;;;;21882:10;21858:7;21866:1;21858:10;;;;;;;;:::i;:::-;;;;;;;;;;;;:20;;;:34;21826:66;21823:145;;;21923:4;21929:7;21937:1;21929:10;;;;;;;;:::i;:::-;;;;;;;;;;;;:17;;;21948:1;21915:35;;;;;;;;;21823:145;21801:3;;;;;:::i;:::-;;;;21760:221;;;;21628:360;;;;;;:::o;22579:337::-;22634:7;22649:11;22661:1;22649:13;;22669:16;22688:7;:14;;;;22669:33;;22725:1;22712:11;:14;22709:181;;22743:6;22738:145;22755:11;22753:1;:13;22738:145;;;22829:2;22817:14;;:7;22825:1;22817:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:14;;;22813:59;;22851:5;;;;;:::i;:::-;;;;22813:59;22768:3;;;;;:::i;:::-;;;;22738:145;;;;22709:181;22909:3;22902:10;;;;22579:337;;;:::o;13298:25::-;;;;:::o;14921:1420::-;15014:10;;14995:15;:29;;14987:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;15078:10;15071:17;;:3;:17;;;15063:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;15149:17;;15138:7;:28;;15130:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;15218:17;15238:5;:17;15244:10;15238:17;;;;;;;;;;;;;;;15218:37;;15266:20;15289:5;:10;15295:3;15289:10;;;;;;;;;;;;;;;15266:33;;15312:12;15327:44;13630:4;15327:22;15339:9;;15327:7;:11;;:22;;;;:::i;:::-;:26;;:44;;;;:::i;:::-;15312:59;;15382:17;15402:44;13630:4;15402:22;15414:9;;15402:7;:11;;:22;;;;:::i;:::-;:26;;:44;;;;:::i;:::-;15382:64;;15457:17;15477:19;15486:9;15477:4;:8;;:19;;;;:::i;:::-;15457:39;;15507:23;15533:22;15545:9;15533:7;:11;;:22;;;;:::i;:::-;15507:48;;15580:32;15596:15;15580:11;;:15;;:32;;;;:::i;:::-;15566:11;:46;;;;15623:38;15634:5;15641:7;15650:10;15623;:38::i;:::-;15672:27;15683:4;15689;15695:3;;;;;;;;;;;15672:10;:27::i;:::-;15741:1;15723:4;:14;;;:19;15720:56;;15761:15;15744:4;:14;;:32;;;;15720:56;15807:38;15829:15;15807:4;:17;;;:21;;:38;;;;:::i;:::-;15787:4;:17;;:58;;;;15875:26;15896:4;15875:7;:16;;;:20;;:26;;;;:::i;:::-;15856:7;:16;;:45;;;;15914:4;:14;;15934:226;;;;;;;;15960:4;:14;;:21;;;;15934:226;;;;16007:15;15934:226;;;;16107:8;16089:15;:26;;;;:::i;:::-;15934:226;;;;16045:15;15934:226;;;;16138:10;15934:226;;;;;15914:247;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16182:15;16200:26;13829:12;16200:9;:13;;:26;;;;:::i;:::-;16182:44;;16251:1;16240:7;:12;16237:47;;16254:30;16265:7;16274:9;16254:10;:30::i;:::-;16237:47;16311:10;16302:29;;;16323:7;16302:29;;;;;;:::i;:::-;;;;;;;;14976:1365;;;;;;;14921:1420;;:::o;19510:690::-;19569:7;19585:17;19605:5;:14;19611:7;19605:14;;;;;;;;;;;;;;;19585:34;;19631:16;19673:9;19685:1;19673:13;;19668:503;19692:4;:14;;:21;;;;19688:1;:25;19668:503;;;19757:4;:14;;19772:1;19757:17;;;;;;;;:::i;:::-;;;;;;;;;;;;:30;;;19739:15;:48;19736:424;;;19808:19;19830:48;19850:4;:14;;19865:1;19850:17;;;;;;;;:::i;:::-;;;;;;;;;;;;:27;;;19830:15;:19;;:48;;;;:::i;:::-;19808:70;;19897:14;19914:4;:14;;19929:1;19914:17;;;;;;;;:::i;:::-;;;;;;;;;;;;:24;;;19897:41;;19957:19;19979:37;13630:4;19979:15;19990:3;;19979:6;:10;;:15;;;;:::i;:::-;:19;;:37;;;;:::i;:::-;19957:59;;20035:21;20059:40;20092:6;20059:28;20075:11;20059;:15;;:28;;;;:::i;:::-;:32;;:40;;;;:::i;:::-;20035:64;;20130:13;20118:25;;;;;:::i;:::-;;;19789:371;;;;19736:424;19715:3;;;;;:::i;:::-;;;;19668:503;;;;20188:8;20181:15;;;;19510:690;;;:::o;13403:38::-;;;;:::o;22464:107::-;22513:14;22547:11;:18;;;;22540:25;;22464:107;:::o;17420:575::-;17465:17;17485:5;:17;17491:10;17485:17;;;;;;;;;;;;;;;17465:37;;17513:13;17529:4;:13;;;17513:29;;17569:1;17561:5;:9;17553:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;17636:28;17658:5;17636:4;:17;;;:21;;:28;;;;:::i;:::-;17616:4;:17;;:48;;;;17689:22;17705:5;17689:11;;:15;;:22;;;;:::i;:::-;17675:11;:36;;;;17722:4;:14;;17742:216;;;;;;;;17768:4;:14;;:21;;;;17742:216;;;;17815:15;17742:216;;;;17877:8;17859:15;:26;;;;:::i;:::-;17742:216;;;;17908:5;17742:216;;;;17936:10;17742:216;;;;;17722:237;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17988:1;17972:4;:13;;:17;;;;17454:541;;17420:575::o;13686:60::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12550:412::-;12633:4;12646:13;12662:7;:19;12670:10;12662:19;;;;;;;;;;;;;;;:29;12682:8;12662:29;;;;;;;;;;;;;;;;12646:45;;12721:8;12702:16;:27;12698:168;;;12772:1;12740:7;:19;12748:10;12740:19;;;;;;;;;;;;;;;:29;12760:8;12740:29;;;;;;;;;;;;;;;:33;;;;12698:168;;;12828:30;12841:16;12828:8;:12;;:30;;;;:::i;:::-;12796:7;:19;12804:10;12796:19;;;;;;;;;;;;;;;:29;12816:8;12796:29;;;;;;;;;;;;;;;:62;;;;12698:168;12898:8;12877:61;;12886:10;12877:61;;;12908:7;:19;12916:10;12908:19;;;;;;;;;;;;;;;:29;12928:8;12908:29;;;;;;;;;;;;;;;;12877:61;;;;;;:::i;:::-;;;;;;;;12952:4;12945:11;;;12550:412;;;;:::o;8935:111::-;9001:7;9024:8;:16;9033:6;9024:16;;;;;;;;;;;;;;;;9017:23;;8935:111;;;:::o;13753:31::-;;;;:::o;13876:30::-;;;;:::o;13522:::-;;;;:::o;18415:423::-;18481:5;18478:355;;;18499:57;18521:10;18541:4;18548:7;18499:4;;;;;;;;;;;:21;;;;:57;;;;;;:::i;:::-;18567:19;18589:14;18601:1;18589:7;:11;;:14;;;;:::i;:::-;18567:36;;18614:41;18625:4;18631:11;18644:10;18614;:41::i;:::-;18488:175;18478:355;;;18679:23;18705:14;18717:1;18705:7;:11;;:14;;;;:::i;:::-;18679:40;;18730:38;18741:5;18748:7;18757:10;18730;:38::i;:::-;18779:46;18797:10;18809:15;18779:4;;;;;;;;;;;:17;;;;:46;;;;;:::i;:::-;18668:165;18478:355;18415:423;;:::o;13482:33::-;;;;:::o;23831:93::-;13063:10;13046:27;;:13;;;;;;;;;;;:27;;;13038:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;23912:8:::1;23906:3;;:14;;;;;;;;;;;;;;;;;;23831:93:::0;:::o;23248:145::-;23307:7;23326:17;23346:5;:14;23352:7;23346:14;;;;;;;;;;;;;;;23326:34;;23377:4;:10;;;23370:17;;;23248:145;;;:::o;14718:23::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;23718:109::-;13063:10;13046:27;;:13;;;;;;;;;;;:27;;;13038:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;23811:8:::1;23795:13;;:24;;;;;;;;;;;;;;;;;;23718:109:::0;:::o;13641:38::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8388:338::-;8460:4;8496:1;8481:17;;:3;:17;;;8473:26;;;;;;8524:8;:20;8533:10;8524:20;;;;;;;;;;;;;;;;8514:6;:30;;8506:39;;;;;;8577:32;8602:6;8577:8;:20;8586:10;8577:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;8554:8;:20;8563:10;8554:20;;;;;;;;;;;;;;;:55;;;;8632:25;8650:6;8632:8;:13;8641:3;8632:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;8616:8;:13;8625:3;8616:13;;;;;;;;;;;;;;;:41;;;;8690:3;8669:33;;8678:10;8669:33;;;8695:6;8669:33;;;;;;:::i;:::-;;;;;;;;8716:4;8709:11;;8388:338;;;;:::o;21994:300::-;22058:13;22073:14;22089:13;22106:32;22115:10;22127;22106:8;:32::i;:::-;22057:81;;;;;;22156:8;22153:137;;;22185:36;22196:4;22202:6;22210:10;22185;:36::i;:::-;22247:7;22255:5;22247:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;22240:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22153:137;;;22282:8;;;22153:137;22042:252;;;21994:300;:::o;18848:652::-;18892:17;18912:5;:17;18918:10;18912:17;;;;;;;;;;;;;;;18892:37;;18936:16;18955:24;18968:10;18955:12;:24::i;:::-;18936:43;;19002:6;18997:120;19018:4;:14;;:21;;;;19014:1;:25;18997:120;;;19090:15;19060:4;:14;;19075:1;19060:17;;;;;;;;:::i;:::-;;;;;;;;;;;;:27;;:45;;;;19041:3;;;;;:::i;:::-;;;;18997:120;;;;19129:12;19144:48;13630:4;19144:26;19157:12;;19144:8;:12;;:26;;;;:::i;:::-;:30;;:48;;;;:::i;:::-;19129:63;;19203:15;19221:45;13630:4;19221:23;19234:9;;19221:8;:12;;:23;;;;:::i;:::-;:27;;:45;;;;:::i;:::-;19203:63;;19277:24;19304:18;19317:4;19304:8;:12;;:18;;;;:::i;:::-;19277:45;;19335:46;19346:4;19352:16;19370:10;19335;:46::i;:::-;19392:30;19403:4;19409:7;19418:3;;;;;;;;;;;19392:10;:30::i;:::-;19461:15;19438:6;:9;19445:1;19438:9;;;;;;;;;;;:19;;;:38;19435:61;;19478:18;:16;:18::i;:::-;19435:61;18885:615;;;;;18848:652::o;23562:150::-;23623:14;23645:17;23665:5;:14;23671:7;23665:14;;;;;;;;;;;;;;;23645:34;;23694:4;:14;;23687:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23562:150;;;:::o;13330:18::-;;;;;;;;;;;;;:::o;13946:::-;;;;;;;;;;;;;:::o;14668:43::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;23401:155::-;23464:7;23481:17;23501:5;:14;23507:7;23501:14;;;;;;;;;;;;;;;23481:34;;23531:4;:14;;:21;;;;23524:28;;;23401:155;;;:::o;18005:398::-;18053:17;18073:5;:17;18079:10;18073:17;;;;;;;;;;;;;;;18053:37;;18101:13;18117:4;:13;;;18101:29;;18157:1;18149:5;:9;18141:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;18204:12;18219:42;13630:4;18219:20;18229:9;;18219:5;:9;;:20;;;;:::i;:::-;:24;;:42;;;;:::i;:::-;18204:57;;18272:24;18299:15;18309:4;18299:5;:9;;:15;;;;:::i;:::-;18272:42;;18325:46;18336:4;18342:16;18360:10;18325;:46::i;:::-;18398:1;18382:4;:13;;:17;;;;18042:361;;;;18005:398::o;13559:24::-;;;;:::o;11810:266::-;11888:4;11933:46;11967:11;11933:7;:19;11941:10;11933:19;;;;;;;;;;;;;;;:29;11953:8;11933:29;;;;;;;;;;;;;;;;:33;;:46;;;;:::i;:::-;11901:7;:19;11909:10;11901:19;;;;;;;;;;;;;;;:29;11921:8;11901:29;;;;;;;;;;;;;;;:78;;;;12012:8;11991:61;;12000:10;11991:61;;;12022:7;:19;12030:10;12022:19;;;;;;;;;;;;;;;:29;12042:8;12022:29;;;;;;;;;;;;;;;;11991:61;;;;;;:::i;:::-;;;;;;;;12066:4;12059:11;;11810:266;;;;:::o;11204:137::-;11287:7;11310;:15;11318:6;11310:15;;;;;;;;;;;;;;;:25;11326:8;11310:25;;;;;;;;;;;;;;;;11303:32;;11204:137;;;;:::o;20361:1263::-;20476:15;20453:6;:9;20460:1;20453:9;;;;;;;;;;;:19;;;:38;;20445:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;20551:1;20533:7;:14;;;;:19;20530:1086;;20569:22;20612:6;20594:15;:24;;;;:::i;:::-;20569:49;;20645:27;;;;;;;;20655:1;20645:27;;;;20657:14;20645:27;;;20633:6;:9;20640:1;20633:9;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;;20554:130;20530:1086;;;20714:13;20741:7;:14;;;;20730:8;:6;:8::i;:::-;:25;;;;:::i;:::-;20714:41;;20770:22;20813:6;20795:15;:24;;;;:::i;:::-;20770:49;;20846:27;;;;;;;;20856:1;20846:27;;;;20858:14;20846:27;;;20834:6;:9;20841:1;20834:9;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;;20888:20;20911:49;13630:4;20911:27;20928:9;;20911:12;;:16;;:27;;;;:::i;:::-;:31;;:49;;;;:::i;:::-;20888:72;;20975:21;20999:49;13630:4;20999:27;21016:9;;20999:12;;:16;;:27;;;;:::i;:::-;:31;;:49;;;;:::i;:::-;20975:73;;21065:16;21084:31;21101:13;21084:12;:16;;:31;;;;:::i;:::-;21065:50;;21130:18;21151:26;21168:8;21151:12;;:16;;:26;;;;:::i;:::-;21130:47;;21192:15;;:::i;:::-;21220:10;21209:1;:8;;:21;;;;;21243:7;21251:5;21243:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21232:1;:8;;:25;;;;;;;;;;;21273:1;21259;:11;;:15;;;;;21290;21276:1;:11;;:29;;;;;21320:11;21337:1;21320:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21354:7;21367:1;21354:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21399:1;21384:12;:16;;;;21415:20;21438:7;21446:5;21438:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21415:37;;21474:7;;21467:14;;;;:::i;:::-;21496:36;21507:4;21513:13;21528:3;;;;;;;;;;;21496:10;:36::i;:::-;21562:12;21552:52;;;21576:10;21588:15;21552:52;;;;;;;:::i;:::-;;;;;;;;20699:917;;;;;;;;20530:1086;20361:1263::o;13352:47::-;;;;:::o;14748:27::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;22302:146::-;13063:10;13046:27;;:13;;;;;;;;;;;:27;;;13038:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;22362:13:::1;22396:6;22378:15;:24;;;;:::i;:::-;22362:40;;22426:18;;;;;;;;22436:1;22426:18;;;;22438:5;22426:18;;::::0;22414:6:::1;:9;22421:1;22414:9;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;;22350:98;22302:146::o:0;12968:28::-;;;;;;;;;;;;;:::o;16636:778::-;16676:17;16696:5;:17;16702:10;16696:17;;;;;;;;;;;;;;;16676:37;;16724:16;16743:24;16756:10;16743:12;:24::i;:::-;16724:43;;16797:1;16786:8;:12;16778:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;16852:6;16847:120;16868:4;:14;;:21;;;;16864:1;:25;16847:120;;;16940:15;16910:4;:14;;16925:1;16910:17;;;;;;;;:::i;:::-;;;;;;;;;;;;:27;;:45;;;;16891:3;;;;;:::i;:::-;;;;16847:120;;;;16997:31;17019:8;16997:4;:17;;;:21;;:31;;;;:::i;:::-;16977:4;:17;;:51;;;;17053:25;17069:8;17053:11;;:15;;:25;;;;:::i;:::-;17039:11;:39;;;;17089:4;:14;;17109:219;;;;;;;;17135:4;:14;;:21;;;;17109:219;;;;17182:15;17109:219;;;;17244:8;17226:15;:26;;;;:::i;:::-;17109:219;;;;17275:8;17109:219;;;;17306:10;17109:219;;;;;17089:240;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17375:15;17352:6;:9;17359:1;17352:9;;;;;;;;;;;:19;;;:38;17349:61;;17392:18;:16;:18::i;:::-;17349:61;16665:749;;16636:778::o;13848:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6357:184::-;6415:7;6448:1;6443;:6;;6435:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;6495:9;6511:1;6507;:5;;;;:::i;:::-;6495:17;;6532:1;6525:8;;;6357:184;;;;:::o;6168:181::-;6226:7;6246:9;6262:1;6258;:5;;;;:::i;:::-;6246:17;;6287:1;6282;:6;;6274:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;6340:1;6333:8;;;6168:181;;;;:::o;6549:250::-;6607:7;6636:1;6631;:6;6627:47;;6661:1;6654:8;;;;6627:47;6686:9;6702:1;6698;:5;;;;:::i;:::-;6686:17;;6731:1;6726;6722;:5;;;;:::i;:::-;:10;6714:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;6790:1;6783:8;;;6549:250;;;;;:::o;6807:179::-;6865:7;6897:1;6893;:5;6885:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;6940:9;6956:1;6952;:5;;;;:::i;:::-;6940:17;;6977:1;6970:8;;;6807:179;;;;:::o;22926:314::-;23009:17;23029:5;:14;23035:7;23029:14;;;;;;;;;;;;;;;23009:34;;23056:6;23053:182;;;23091:23;23106:7;23091:4;:10;;;:14;;:23;;;;:::i;:::-;23078:4;:10;;:36;;;;23053:182;;;23163:4;:10;;;23152:7;:21;;23144:30;;;;;;23201:23;23216:7;23201:4;:10;;;:14;;:23;;;;:::i;:::-;23188:4;:10;;:36;;;;23053:182;22999:241;22926:314;;;:::o;16351:277::-;16458:10;16443:12;;:25;;;;:::i;:::-;16428:12;:40;;;;16499:2;16489:7;:12;:27;;16509:7;16489:27;;;16504:2;16489:27;16479:37;;16532:9;16527:92;16552:7;16548:1;:11;16527:92;;;16583:7;16596:10;16583:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16561:3;;;;;:::i;:::-;;;;16527:92;;;;16351:277;;:::o;4413:248::-;4557:96;4577:5;4607:27;;;4636:4;4642:2;4646:5;4584:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4557:19;:96::i;:::-;4413:248;;;;:::o;4196:211::-;4313:86;4333:5;4363:23;;;4388:2;4392:5;4340:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4313:19;:86::i;:::-;4196:211;;;:::o;20210:147::-;20249:4;20306:16;20323:15;20339:7;20289:58;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;20279:69;;;;;;20271:78;;20264:85;;20210:147;:::o;5799:336::-;5883:23;5909:69;5937:4;5909:69;;;;;;;;;;;;;;;;;5917:5;5909:27;;;;:69;;;;;:::i;:::-;5883:95;;6013:1;5993:10;:17;:21;5989:139;;;6050:10;6039:30;;;;;;;;;;;;:::i;:::-;6031:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;5989:139;5869:266;5799:336;;:::o;1585:193::-;1686:12;1718:52;1740:6;1748:4;1754:1;1757:12;1718:21;:52::i;:::-;1711:59;;1585:193;;;;;:::o;2014:462::-;2138:12;2196:5;2171:21;:30;;2163:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;2263:18;2274:6;2263:10;:18::i;:::-;2255:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;2327:12;2341:23;2368:6;:11;;2387:5;2394:4;2368:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2326:73;;;;2417:51;2434:7;2443:10;2455:12;2417:16;:51::i;:::-;2410:58;;;;2014:462;;;;;;:::o;899:178::-;959:4;976:12;1034:7;1022:20;1014:28;;1068:1;1061:4;:8;1054:15;;;899:178;;;:::o;3620:514::-;3734:12;3763:7;3759:368;;;3794:10;3787:17;;;;3759:368;3861:1;3841:10;:17;:21;3837:279;;;3944:10;3938:17;4005:15;3992:10;3988:2;3984:19;3977:44;3837:279;4087:12;4080:20;;;;;;;;;;;:::i;:::-;;;;;;;;3620:514;;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;523:117::-;632:1;629;622:12;769:126;806:7;846:42;839:5;835:54;824:65;;769:126;;;:::o;901:96::-;938:7;967:24;985:5;967:24;:::i;:::-;956:35;;901:96;;;:::o;1003:122::-;1076:24;1094:5;1076:24;:::i;:::-;1069:5;1066:35;1056:63;;1115:1;1112;1105:12;1056:63;1003:122;:::o;1131:139::-;1177:5;1215:6;1202:20;1193:29;;1231:33;1258:5;1231:33;:::i;:::-;1131:139;;;;:::o;1276:122::-;1349:24;1367:5;1349:24;:::i;:::-;1342:5;1339:35;1329:63;;1388:1;1385;1378:12;1329:63;1276:122;:::o;1404:139::-;1450:5;1488:6;1475:20;1466:29;;1504:33;1531:5;1504:33;:::i;:::-;1404:139;;;;:::o;1549:474::-;1617:6;1625;1674:2;1662:9;1653:7;1649:23;1645:32;1642:119;;;1680:79;;:::i;:::-;1642:119;1800:1;1825:53;1870:7;1861:6;1850:9;1846:22;1825:53;:::i;:::-;1815:63;;1771:117;1927:2;1953:53;1998:7;1989:6;1978:9;1974:22;1953:53;:::i;:::-;1943:63;;1898:118;1549:474;;;;;:::o;2029:90::-;2063:7;2106:5;2099:13;2092:21;2081:32;;2029:90;;;:::o;2125:109::-;2206:21;2221:5;2206:21;:::i;:::-;2201:3;2194:34;2125:109;;:::o;2240:210::-;2327:4;2365:2;2354:9;2350:18;2342:26;;2378:65;2440:1;2429:9;2425:17;2416:6;2378:65;:::i;:::-;2240:210;;;;:::o;2456:619::-;2533:6;2541;2549;2598:2;2586:9;2577:7;2573:23;2569:32;2566:119;;;2604:79;;:::i;:::-;2566:119;2724:1;2749:53;2794:7;2785:6;2774:9;2770:22;2749:53;:::i;:::-;2739:63;;2695:117;2851:2;2877:53;2922:7;2913:6;2902:9;2898:22;2877:53;:::i;:::-;2867:63;;2822:118;2979:2;3005:53;3050:7;3041:6;3030:9;3026:22;3005:53;:::i;:::-;2995:63;;2950:118;2456:619;;;;;:::o;3081:474::-;3149:6;3157;3206:2;3194:9;3185:7;3181:23;3177:32;3174:119;;;3212:79;;:::i;:::-;3174:119;3332:1;3357:53;3402:7;3393:6;3382:9;3378:22;3357:53;:::i;:::-;3347:63;;3303:117;3459:2;3485:53;3530:7;3521:6;3510:9;3506:22;3485:53;:::i;:::-;3475:63;;3430:118;3081:474;;;;;:::o;3561:430::-;3704:4;3742:2;3731:9;3727:18;3719:26;;3755:65;3817:1;3806:9;3802:17;3793:6;3755:65;:::i;:::-;3830:72;3898:2;3887:9;3883:18;3874:6;3830:72;:::i;:::-;3912;3980:2;3969:9;3965:18;3956:6;3912:72;:::i;:::-;3561:430;;;;;;:::o;3997:329::-;4056:6;4105:2;4093:9;4084:7;4080:23;4076:32;4073:119;;;4111:79;;:::i;:::-;4073:119;4231:1;4256:53;4301:7;4292:6;4281:9;4277:22;4256:53;:::i;:::-;4246:63;;4202:117;3997:329;;;;:::o;4332:118::-;4419:24;4437:5;4419:24;:::i;:::-;4414:3;4407:37;4332:118;;:::o;4456:664::-;4661:4;4699:3;4688:9;4684:19;4676:27;;4713:71;4781:1;4770:9;4766:17;4757:6;4713:71;:::i;:::-;4794:72;4862:2;4851:9;4847:18;4838:6;4794:72;:::i;:::-;4876;4944:2;4933:9;4929:18;4920:6;4876:72;:::i;:::-;4958;5026:2;5015:9;5011:18;5002:6;4958:72;:::i;:::-;5040:73;5108:3;5097:9;5093:19;5084:6;5040:73;:::i;:::-;4456:664;;;;;;;;:::o;5126:116::-;5196:21;5211:5;5196:21;:::i;:::-;5189:5;5186:32;5176:60;;5232:1;5229;5222:12;5176:60;5126:116;:::o;5248:133::-;5291:5;5329:6;5316:20;5307:29;;5345:30;5369:5;5345:30;:::i;:::-;5248:133;;;;:::o;5387:468::-;5452:6;5460;5509:2;5497:9;5488:7;5484:23;5480:32;5477:119;;;5515:79;;:::i;:::-;5477:119;5635:1;5660:50;5702:7;5693:6;5682:9;5678:22;5660:50;:::i;:::-;5650:60;;5606:114;5759:2;5785:53;5830:7;5821:6;5810:9;5806:22;5785:53;:::i;:::-;5775:63;;5730:118;5387:468;;;;;:::o;5861:329::-;5920:6;5969:2;5957:9;5948:7;5944:23;5940:32;5937:119;;;5975:79;;:::i;:::-;5937:119;6095:1;6120:53;6165:7;6156:6;6145:9;6141:22;6120:53;:::i;:::-;6110:63;;6066:117;5861:329;;;;:::o;6196:553::-;6373:4;6411:3;6400:9;6396:19;6388:27;;6425:71;6493:1;6482:9;6478:17;6469:6;6425:71;:::i;:::-;6506:72;6574:2;6563:9;6559:18;6550:6;6506:72;:::i;:::-;6588;6656:2;6645:9;6641:18;6632:6;6588:72;:::i;:::-;6670;6738:2;6727:9;6723:18;6714:6;6670:72;:::i;:::-;6196:553;;;;;;;:::o;6755:::-;6932:4;6970:3;6959:9;6955:19;6947:27;;6984:71;7052:1;7041:9;7037:17;7028:6;6984:71;:::i;:::-;7065:72;7133:2;7122:9;7118:18;7109:6;7065:72;:::i;:::-;7147;7215:2;7204:9;7200:18;7191:6;7147:72;:::i;:::-;7229;7297:2;7286:9;7282:18;7273:6;7229:72;:::i;:::-;6755:553;;;;;;;:::o;7314:137::-;7404:6;7438:5;7432:12;7422:22;;7314:137;;;:::o;7457:207::-;7579:11;7613:6;7608:3;7601:19;7653:4;7648:3;7644:14;7629:29;;7457:207;;;;:::o;7670:155::-;7760:4;7783:3;7775:11;;7813:4;7808:3;7804:14;7796:22;;7670:155;;;:::o;7831:108::-;7908:24;7926:5;7908:24;:::i;:::-;7903:3;7896:37;7831:108;;:::o;7945:::-;8022:24;8040:5;8022:24;:::i;:::-;8017:3;8010:37;7945:108;;:::o;8117:1031::-;8250:4;8245:3;8241:14;8336:4;8329:5;8325:16;8319:23;8355:63;8412:4;8407:3;8403:14;8389:12;8355:63;:::i;:::-;8265:163;8515:4;8508:5;8504:16;8498:23;8534:63;8591:4;8586:3;8582:14;8568:12;8534:63;:::i;:::-;8438:169;8697:4;8690:5;8686:16;8680:23;8716:63;8773:4;8768:3;8764:14;8750:12;8716:63;:::i;:::-;8617:172;8873:4;8866:5;8862:16;8856:23;8892:63;8949:4;8944:3;8940:14;8926:12;8892:63;:::i;:::-;8799:166;9049:4;9042:5;9038:16;9032:23;9068:63;9125:4;9120:3;9116:14;9102:12;9068:63;:::i;:::-;8975:166;8219:929;8117:1031;;:::o;9154:271::-;9269:10;9290:92;9378:3;9370:6;9290:92;:::i;:::-;9414:4;9409:3;9405:14;9391:28;;9154:271;;;;:::o;9431:136::-;9524:4;9556;9551:3;9547:14;9539:22;;9431:136;;;:::o;9635:916::-;9800:3;9829:77;9900:5;9829:77;:::i;:::-;9922:109;10024:6;10019:3;9922:109;:::i;:::-;9915:116;;10055:79;10128:5;10055:79;:::i;:::-;10157:7;10188:1;10173:353;10198:6;10195:1;10192:13;10173:353;;;10274:6;10268:13;10301:109;10406:3;10391:13;10301:109;:::i;:::-;10294:116;;10433:83;10509:6;10433:83;:::i;:::-;10423:93;;10233:293;10220:1;10217;10213:9;10208:14;;10173:353;;;10177:14;10542:3;10535:10;;9805:746;;;9635:916;;;;:::o;10557:465::-;10746:4;10784:2;10773:9;10769:18;10761:26;;10833:9;10827:4;10823:20;10819:1;10808:9;10804:17;10797:47;10861:154;11010:4;11001:6;10861:154;:::i;:::-;10853:162;;10557:465;;;;:::o;11028:222::-;11121:4;11159:2;11148:9;11144:18;11136:26;;11172:71;11240:1;11229:9;11225:17;11216:6;11172:71;:::i;:::-;11028:222;;;;:::o;11256:60::-;11284:3;11305:5;11298:12;;11256:60;;;:::o;11322:142::-;11372:9;11405:53;11423:34;11432:24;11450:5;11432:24;:::i;:::-;11423:34;:::i;:::-;11405:53;:::i;:::-;11392:66;;11322:142;;;:::o;11470:126::-;11520:9;11553:37;11584:5;11553:37;:::i;:::-;11540:50;;11470:126;;;:::o;11602:139::-;11665:9;11698:37;11729:5;11698:37;:::i;:::-;11685:50;;11602:139;;;:::o;11747:157::-;11847:50;11891:5;11847:50;:::i;:::-;11842:3;11835:63;11747:157;;:::o;11910:248::-;12016:4;12054:2;12043:9;12039:18;12031:26;;12067:84;12148:1;12137:9;12133:17;12124:6;12067:84;:::i;:::-;11910:248;;;;:::o;12164:332::-;12285:4;12323:2;12312:9;12308:18;12300:26;;12336:71;12404:1;12393:9;12389:17;12380:6;12336:71;:::i;:::-;12417:72;12485:2;12474:9;12470:18;12461:6;12417:72;:::i;:::-;12164:332;;;;;:::o;12502:474::-;12570:6;12578;12627:2;12615:9;12606:7;12602:23;12598:32;12595:119;;;12633:79;;:::i;:::-;12595:119;12753:1;12778:53;12823:7;12814:6;12803:9;12799:22;12778:53;:::i;:::-;12768:63;;12724:117;12880:2;12906:53;12951:7;12942:6;12931:9;12927:22;12906:53;:::i;:::-;12896:63;;12851:118;12502:474;;;;;:::o;12982:180::-;13030:77;13027:1;13020:88;13127:4;13124:1;13117:15;13151:4;13148:1;13141:15;13168:180;13216:77;13213:1;13206:88;13313:4;13310:1;13303:15;13337:4;13334:1;13327:15;13354:233;13393:3;13416:24;13434:5;13416:24;:::i;:::-;13407:33;;13462:66;13455:5;13452:77;13449:103;;13532:18;;:::i;:::-;13449:103;13579:1;13572:5;13568:13;13561:20;;13354:233;;;:::o;13593:169::-;13677:11;13711:6;13706:3;13699:19;13751:4;13746:3;13742:14;13727:29;;13593:169;;;;:::o;13768:173::-;13908:25;13904:1;13896:6;13892:14;13885:49;13768:173;:::o;13947:366::-;14089:3;14110:67;14174:2;14169:3;14110:67;:::i;:::-;14103:74;;14186:93;14275:3;14186:93;:::i;:::-;14304:2;14299:3;14295:12;14288:19;;13947:366;;;:::o;14319:419::-;14485:4;14523:2;14512:9;14508:18;14500:26;;14572:9;14566:4;14562:20;14558:1;14547:9;14543:17;14536:47;14600:131;14726:4;14600:131;:::i;:::-;14592:139;;14319:419;;;:::o;14744:176::-;14884:28;14880:1;14872:6;14868:14;14861:52;14744:176;:::o;14926:366::-;15068:3;15089:67;15153:2;15148:3;15089:67;:::i;:::-;15082:74;;15165:93;15254:3;15165:93;:::i;:::-;15283:2;15278:3;15274:12;15267:19;;14926:366;;;:::o;15298:419::-;15464:4;15502:2;15491:9;15487:18;15479:26;;15551:9;15545:4;15541:20;15537:1;15526:9;15522:17;15515:47;15579:131;15705:4;15579:131;:::i;:::-;15571:139;;15298:419;;;:::o;15723:222::-;15863:34;15859:1;15851:6;15847:14;15840:58;15932:5;15927:2;15919:6;15915:15;15908:30;15723:222;:::o;15951:366::-;16093:3;16114:67;16178:2;16173:3;16114:67;:::i;:::-;16107:74;;16190:93;16279:3;16190:93;:::i;:::-;16308:2;16303:3;16299:12;16292:19;;15951:366;;;:::o;16323:419::-;16489:4;16527:2;16516:9;16512:18;16504:26;;16576:9;16570:4;16566:20;16562:1;16551:9;16547:17;16540:47;16604:131;16730:4;16604:131;:::i;:::-;16596:139;;16323:419;;;:::o;16748:191::-;16788:3;16807:20;16825:1;16807:20;:::i;:::-;16802:25;;16841:20;16859:1;16841:20;:::i;:::-;16836:25;;16884:1;16881;16877:9;16870:16;;16905:3;16902:1;16899:10;16896:36;;;16912:18;;:::i;:::-;16896:36;16748:191;;;;:::o;16945:180::-;17085:32;17081:1;17073:6;17069:14;17062:56;16945:180;:::o;17131:366::-;17273:3;17294:67;17358:2;17353:3;17294:67;:::i;:::-;17287:74;;17370:93;17459:3;17370:93;:::i;:::-;17488:2;17483:3;17479:12;17472:19;;17131:366;;;:::o;17503:419::-;17669:4;17707:2;17696:9;17692:18;17684:26;;17756:9;17750:4;17746:20;17742:1;17731:9;17727:17;17720:47;17784:131;17910:4;17784:131;:::i;:::-;17776:139;;17503:419;;;:::o;17928:175::-;18068:27;18064:1;18056:6;18052:14;18045:51;17928:175;:::o;18109:366::-;18251:3;18272:67;18336:2;18331:3;18272:67;:::i;:::-;18265:74;;18348:93;18437:3;18348:93;:::i;:::-;18466:2;18461:3;18457:12;18450:19;;18109:366;;;:::o;18481:419::-;18647:4;18685:2;18674:9;18670:18;18662:26;;18734:9;18728:4;18724:20;18720:1;18709:9;18705:17;18698:47;18762:131;18888:4;18762:131;:::i;:::-;18754:139;;18481:419;;;:::o;18906:172::-;19046:24;19042:1;19034:6;19030:14;19023:48;18906:172;:::o;19084:366::-;19226:3;19247:67;19311:2;19306:3;19247:67;:::i;:::-;19240:74;;19323:93;19412:3;19323:93;:::i;:::-;19441:2;19436:3;19432:12;19425:19;;19084:366;;;:::o;19456:419::-;19622:4;19660:2;19649:9;19645:18;19637:26;;19709:9;19703:4;19699:20;19695:1;19684:9;19680:17;19673:47;19737:131;19863:4;19737:131;:::i;:::-;19729:139;;19456:419;;;:::o;19881:180::-;19929:77;19926:1;19919:88;20026:4;20023:1;20016:15;20050:4;20047:1;20040:15;20067:176;20099:1;20116:20;20134:1;20116:20;:::i;:::-;20111:25;;20150:20;20168:1;20150:20;:::i;:::-;20145:25;;20189:1;20179:35;;20194:18;;:::i;:::-;20179:35;20235:1;20232;20228:9;20223:14;;20067:176;;;;:::o;20249:220::-;20389:34;20385:1;20377:6;20373:14;20366:58;20458:3;20453:2;20445:6;20441:15;20434:28;20249:220;:::o;20475:366::-;20617:3;20638:67;20702:2;20697:3;20638:67;:::i;:::-;20631:74;;20714:93;20803:3;20714:93;:::i;:::-;20832:2;20827:3;20823:12;20816:19;;20475:366;;;:::o;20847:419::-;21013:4;21051:2;21040:9;21036:18;21028:26;;21100:9;21094:4;21090:20;21086:1;21075:9;21071:17;21064:47;21128:131;21254:4;21128:131;:::i;:::-;21120:139;;20847:419;;;:::o;21272:180::-;21412:32;21408:1;21400:6;21396:14;21389:56;21272:180;:::o;21458:366::-;21600:3;21621:67;21685:2;21680:3;21621:67;:::i;:::-;21614:74;;21697:93;21786:3;21697:93;:::i;:::-;21815:2;21810:3;21806:12;21799:19;;21458:366;;;:::o;21830:419::-;21996:4;22034:2;22023:9;22019:18;22011:26;;22083:9;22077:4;22073:20;22069:1;22058:9;22054:17;22047:47;22111:131;22237:4;22111:131;:::i;:::-;22103:139;;21830:419;;;:::o;22255:194::-;22295:4;22315:20;22333:1;22315:20;:::i;:::-;22310:25;;22349:20;22367:1;22349:20;:::i;:::-;22344:25;;22393:1;22390;22386:9;22378:17;;22417:1;22411:4;22408:11;22405:37;;;22422:18;;:::i;:::-;22405:37;22255:194;;;;:::o;22455:177::-;22595:29;22591:1;22583:6;22579:14;22572:53;22455:177;:::o;22638:366::-;22780:3;22801:67;22865:2;22860:3;22801:67;:::i;:::-;22794:74;;22877:93;22966:3;22877:93;:::i;:::-;22995:2;22990:3;22986:12;22979:19;;22638:366;;;:::o;23010:419::-;23176:4;23214:2;23203:9;23199:18;23191:26;;23263:9;23257:4;23253:20;23249:1;23238:9;23234:17;23227:47;23291:131;23417:4;23291:131;:::i;:::-;23283:139;;23010:419;;;:::o;23435:348::-;23475:7;23498:20;23516:1;23498:20;:::i;:::-;23493:25;;23532:20;23550:1;23532:20;:::i;:::-;23527:25;;23720:1;23652:66;23648:74;23645:1;23642:81;23637:1;23630:9;23623:17;23619:105;23616:131;;;23727:18;;:::i;:::-;23616:131;23775:1;23772;23768:9;23757:20;;23435:348;;;;:::o;23789:185::-;23829:1;23846:20;23864:1;23846:20;:::i;:::-;23841:25;;23880:20;23898:1;23880:20;:::i;:::-;23875:25;;23919:1;23909:35;;23924:18;;:::i;:::-;23909:35;23966:1;23963;23959:9;23954:14;;23789:185;;;;:::o;23980:220::-;24120:34;24116:1;24108:6;24104:14;24097:58;24189:3;24184:2;24176:6;24172:15;24165:28;23980:220;:::o;24206:366::-;24348:3;24369:67;24433:2;24428:3;24369:67;:::i;:::-;24362:74;;24445:93;24534:3;24445:93;:::i;:::-;24563:2;24558:3;24554:12;24547:19;;24206:366;;;:::o;24578:419::-;24744:4;24782:2;24771:9;24767:18;24759:26;;24831:9;24825:4;24821:20;24817:1;24806:9;24802:17;24795:47;24859:131;24985:4;24859:131;:::i;:::-;24851:139;;24578:419;;;:::o;25003:176::-;25143:28;25139:1;25131:6;25127:14;25120:52;25003:176;:::o;25185:366::-;25327:3;25348:67;25412:2;25407:3;25348:67;:::i;:::-;25341:74;;25424:93;25513:3;25424:93;:::i;:::-;25542:2;25537:3;25533:12;25526:19;;25185:366;;;:::o;25557:419::-;25723:4;25761:2;25750:9;25746:18;25738:26;;25810:9;25804:4;25800:20;25796:1;25785:9;25781:17;25774:47;25838:131;25964:4;25838:131;:::i;:::-;25830:139;;25557:419;;;:::o;25982:442::-;26131:4;26169:2;26158:9;26154:18;26146:26;;26182:71;26250:1;26239:9;26235:17;26226:6;26182:71;:::i;:::-;26263:72;26331:2;26320:9;26316:18;26307:6;26263:72;:::i;:::-;26345;26413:2;26402:9;26398:18;26389:6;26345:72;:::i;:::-;25982:442;;;;;;:::o;26430:332::-;26551:4;26589:2;26578:9;26574:18;26566:26;;26602:71;26670:1;26659:9;26655:17;26646:6;26602:71;:::i;:::-;26683:72;26751:2;26740:9;26736:18;26727:6;26683:72;:::i;:::-;26430:332;;;;;:::o;26768:79::-;26807:7;26836:5;26825:16;;26768:79;;;:::o;26853:157::-;26958:45;26978:24;26996:5;26978:24;:::i;:::-;26958:45;:::i;:::-;26953:3;26946:58;26853:157;;:::o;27016:111::-;27080:6;27114:5;27108:12;27098:22;;27016:111;;;:::o;27133:163::-;27250:11;27287:3;27272:18;;27133:163;;;;:::o;27302:156::-;27366:4;27389:3;27381:11;;27412:3;27409:1;27402:14;27446:4;27443:1;27433:18;27425:26;;27302:156;;;:::o;27464:116::-;27549:24;27567:5;27549:24;:::i;:::-;27544:3;27537:37;27464:116;;:::o;27586:195::-;27663:10;27684:54;27734:3;27726:6;27684:54;:::i;:::-;27770:4;27765:3;27761:14;27747:28;;27586:195;;;;:::o;27787:102::-;27829:8;27876:5;27873:1;27869:13;27848:34;;27787:102;;;:::o;27895:139::-;27945:7;27985:42;27978:5;27974:54;27963:65;;27895:139;;;:::o;28040:166::-;28109:5;28134:66;28165:34;28188:10;28165:34;:::i;:::-;28134:66;:::i;:::-;28125:75;;28040:166;;;:::o;28212:144::-;28267:5;28292:57;28343:4;28337:11;28292:57;:::i;:::-;28283:66;;28212:144;;;:::o;28362:110::-;28429:4;28461;28456:3;28452:14;28444:22;;28362:110;;;:::o;28508:795::-;28642:3;28671:51;28716:5;28671:51;:::i;:::-;28738:104;28835:6;28830:3;28738:104;:::i;:::-;28731:111;;28866:53;28913:5;28866:53;:::i;:::-;28942:7;28973:1;28958:320;28983:6;28980:1;28977:13;28958:320;;;29053:44;29090:6;29053:44;:::i;:::-;29117:71;29184:3;29169:13;29117:71;:::i;:::-;29110:78;;29211:57;29261:6;29211:57;:::i;:::-;29201:67;;29018:260;29005:1;29002;28998:9;28993:14;;28958:320;;;28962:14;29294:3;29287:10;;28647:656;;;28508:795;;;;:::o;29309:611::-;29524:3;29539:75;29610:3;29601:6;29539:75;:::i;:::-;29639:2;29634:3;29630:12;29623:19;;29652:75;29723:3;29714:6;29652:75;:::i;:::-;29752:2;29747:3;29743:12;29736:19;;29772:122;29890:3;29881:6;29772:122;:::i;:::-;29765:129;;29911:3;29904:10;;29309:611;;;;;;:::o;29926:137::-;29980:5;30011:6;30005:13;29996:22;;30027:30;30051:5;30027:30;:::i;:::-;29926:137;;;;:::o;30069:345::-;30136:6;30185:2;30173:9;30164:7;30160:23;30156:32;30153:119;;;30191:79;;:::i;:::-;30153:119;30311:1;30336:61;30389:7;30380:6;30369:9;30365:22;30336:61;:::i;:::-;30326:71;;30282:125;30069:345;;;;:::o;30420:229::-;30560:34;30556:1;30548:6;30544:14;30537:58;30629:12;30624:2;30616:6;30612:15;30605:37;30420:229;:::o;30655:366::-;30797:3;30818:67;30882:2;30877:3;30818:67;:::i;:::-;30811:74;;30894:93;30983:3;30894:93;:::i;:::-;31012:2;31007:3;31003:12;30996:19;;30655:366;;;:::o;31027:419::-;31193:4;31231:2;31220:9;31216:18;31208:26;;31280:9;31274:4;31270:20;31266:1;31255:9;31251:17;31244:47;31308:131;31434:4;31308:131;:::i;:::-;31300:139;;31027:419;;;:::o;31452:225::-;31592:34;31588:1;31580:6;31576:14;31569:58;31661:8;31656:2;31648:6;31644:15;31637:33;31452:225;:::o;31683:366::-;31825:3;31846:67;31910:2;31905:3;31846:67;:::i;:::-;31839:74;;31922:93;32011:3;31922:93;:::i;:::-;32040:2;32035:3;32031:12;32024:19;;31683:366;;;:::o;32055:419::-;32221:4;32259:2;32248:9;32244:18;32236:26;;32308:9;32302:4;32298:20;32294:1;32283:9;32279:17;32272:47;32336:131;32462:4;32336:131;:::i;:::-;32328:139;;32055:419;;;:::o;32480:179::-;32620:31;32616:1;32608:6;32604:14;32597:55;32480:179;:::o;32665:366::-;32807:3;32828:67;32892:2;32887:3;32828:67;:::i;:::-;32821:74;;32904:93;32993:3;32904:93;:::i;:::-;33022:2;33017:3;33013:12;33006:19;;32665:366;;;:::o;33037:419::-;33203:4;33241:2;33230:9;33226:18;33218:26;;33290:9;33284:4;33280:20;33276:1;33265:9;33261:17;33254:47;33318:131;33444:4;33318:131;:::i;:::-;33310:139;;33037:419;;;:::o;33462:98::-;33513:6;33547:5;33541:12;33531:22;;33462:98;;;:::o;33566:147::-;33667:11;33704:3;33689:18;;33566:147;;;;:::o;33719:246::-;33800:1;33810:113;33824:6;33821:1;33818:13;33810:113;;;33909:1;33904:3;33900:11;33894:18;33890:1;33885:3;33881:11;33874:39;33846:2;33843:1;33839:10;33834:15;;33810:113;;;33957:1;33948:6;33943:3;33939:16;33932:27;33781:184;33719:246;;;:::o;33971:386::-;34075:3;34103:38;34135:5;34103:38;:::i;:::-;34157:88;34238:6;34233:3;34157:88;:::i;:::-;34150:95;;34254:65;34312:6;34307:3;34300:4;34293:5;34289:16;34254:65;:::i;:::-;34344:6;34339:3;34335:16;34328:23;;34079:278;33971:386;;;;:::o;34363:271::-;34493:3;34515:93;34604:3;34595:6;34515:93;:::i;:::-;34508:100;;34625:3;34618:10;;34363:271;;;;:::o;34640:99::-;34692:6;34726:5;34720:12;34710:22;;34640:99;;;:::o;34745:102::-;34786:6;34837:2;34833:7;34828:2;34821:5;34817:14;34813:28;34803:38;;34745:102;;;:::o;34853:377::-;34941:3;34969:39;35002:5;34969:39;:::i;:::-;35024:71;35088:6;35083:3;35024:71;:::i;:::-;35017:78;;35104:65;35162:6;35157:3;35150:4;35143:5;35139:16;35104:65;:::i;:::-;35194:29;35216:6;35194:29;:::i;:::-;35189:3;35185:39;35178:46;;34945:285;34853:377;;;;:::o;35236:313::-;35349:4;35387:2;35376:9;35372:18;35364:26;;35436:9;35430:4;35426:20;35422:1;35411:9;35407:17;35400:47;35464:78;35537:4;35528:6;35464:78;:::i;:::-;35456:86;;35236:313;;;;:::o

Swarm Source

ipfs://3bd262d1c2a805290684402c4d3ec398a5a237db501e7eccc3c968719cafecb8

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Txn Hash Block Value Eth2 PubKey Valid
View All Deposits
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.