Mumbai Testnet

Contract

0x9C1F07736DC65140AF1635b2Ed855629E49E5a54
Transaction Hash
Method
Block
From
To
Value
Trigger444928762024-01-07 7:12:48170 days ago1704611568IN
0x9C1F0773...9E49E5a54
0 MATIC0.0016554620.00000001
Trigger444928722024-01-07 7:12:32170 days ago1704611552IN
0x9C1F0773...9E49E5a54
0 MATIC0.0012168620.00000001
Trigger444928652024-01-07 7:12:04170 days ago1704611524IN
0x9C1F0773...9E49E5a54
0 MATIC0.0016554620.00000001
Trigger444928592024-01-07 7:11:46170 days ago1704611506IN
0x9C1F0773...9E49E5a54
0 MATIC0.0012168620.00000001
Trigger444928452024-01-07 7:11:16170 days ago1704611476IN
0x9C1F0773...9E49E5a54
0 MATIC0.0016554620.00000001
Trigger444928372024-01-07 7:11:00170 days ago1704611460IN
0x9C1F0773...9E49E5a54
0 MATIC0.0012168620.00000001
Trigger444928232024-01-07 7:10:30170 days ago1704611430IN
0x9C1F0773...9E49E5a54
0 MATIC0.0016552220.00000001
Trigger444928162024-01-07 7:10:16170 days ago1704611416IN
0x9C1F0773...9E49E5a54
0 MATIC0.0012168620.00000001
Trigger444928162024-01-07 7:10:16170 days ago1704611416IN
0x9C1F0773...9E49E5a54
0 MATIC0.0016554620.00000001
Trigger444927982024-01-07 7:09:27170 days ago1704611367IN
0x9C1F0773...9E49E5a54
0 MATIC0.0012168620.00000001
Trigger444927842024-01-07 7:08:59170 days ago1704611339IN
0x9C1F0773...9E49E5a54
0 MATIC0.0016554620.00000001
Trigger444927762024-01-07 7:08:41170 days ago1704611321IN
0x9C1F0773...9E49E5a54
0 MATIC0.0012168620.00000001
Trigger444927622024-01-07 7:08:11170 days ago1704611291IN
0x9C1F0773...9E49E5a54
0 MATIC0.0016554620.00000001
Trigger444927542024-01-07 7:07:55170 days ago1704611275IN
0x9C1F0773...9E49E5a54
0 MATIC0.0012168620.00000001
Trigger444927522024-01-07 7:07:51170 days ago1704611271IN
0x9C1F0773...9E49E5a54
0 MATIC0.0016554620.00000001
Trigger444927302024-01-07 7:07:03170 days ago1704611223IN
0x9C1F0773...9E49E5a54
0 MATIC0.0012166220.00000001
Trigger444927152024-01-07 7:06:31170 days ago1704611191IN
0x9C1F0773...9E49E5a54
0 MATIC0.0016554620.00000001
Trigger444927072024-01-07 7:06:15170 days ago1704611175IN
0x9C1F0773...9E49E5a54
0 MATIC0.0012168620.00000001
Trigger444926982024-01-07 7:05:45170 days ago1704611145IN
0x9C1F0773...9E49E5a54
0 MATIC0.0016554620.00000001
Trigger444926942024-01-07 7:05:29170 days ago1704611129IN
0x9C1F0773...9E49E5a54
0 MATIC0.0012168620.00000001
Trigger444926882024-01-07 7:05:05170 days ago1704611105IN
0x9C1F0773...9E49E5a54
0 MATIC0.0016554620.00000001
Trigger444926802024-01-07 7:04:45170 days ago1704611085IN
0x9C1F0773...9E49E5a54
0 MATIC0.0012168620.00000001
Trigger444926662024-01-07 7:04:15170 days ago1704611055IN
0x9C1F0773...9E49E5a54
0 MATIC0.0016554620.00000001
Trigger444926572024-01-07 7:03:57170 days ago1704611037IN
0x9C1F0773...9E49E5a54
0 MATIC0.0012168620.00000001
Trigger444926432024-01-07 7:03:27170 days ago1704611007IN
0x9C1F0773...9E49E5a54
0 MATIC0.0016554620.00000001
View all transactions

Latest 25 internal transactions (View All)

Parent Transaction Hash Block From To Value
443110832024-01-02 15:46:13174 days ago1704210373
0x9C1F0773...9E49E5a54
0.0000001 MATIC
443110832024-01-02 15:46:13174 days ago1704210373
0x9C1F0773...9E49E5a54
0.0000009 MATIC
443110832024-01-02 15:46:13174 days ago1704210373
0x9C1F0773...9E49E5a54
0.000019 MATIC
443110402024-01-02 15:44:43174 days ago1704210283
0x9C1F0773...9E49E5a54
0.0000001 MATIC
443110402024-01-02 15:44:43174 days ago1704210283
0x9C1F0773...9E49E5a54
0.0000009 MATIC
443110402024-01-02 15:44:43174 days ago1704210283
0x9C1F0773...9E49E5a54
0.000019 MATIC
443108232024-01-02 15:37:01174 days ago1704209821
0x9C1F0773...9E49E5a54
0.0001 MATIC
443108232024-01-02 15:37:01174 days ago1704209821
0x9C1F0773...9E49E5a54
0.0009 MATIC
443108232024-01-02 15:37:01174 days ago1704209821
0x9C1F0773...9E49E5a54
0.019 MATIC
443107802024-01-02 15:35:29174 days ago1704209729
0x9C1F0773...9E49E5a54
0.0001 MATIC
443107802024-01-02 15:35:29174 days ago1704209729
0x9C1F0773...9E49E5a54
0.0009 MATIC
443107802024-01-02 15:35:29174 days ago1704209729
0x9C1F0773...9E49E5a54
0.019 MATIC
443103682024-01-02 15:20:55174 days ago1704208855
0x9C1F0773...9E49E5a54
0.0001 MATIC
443103682024-01-02 15:20:55174 days ago1704208855
0x9C1F0773...9E49E5a54
0.0009 MATIC
443103682024-01-02 15:20:55174 days ago1704208855
0x9C1F0773...9E49E5a54
0.019 MATIC
443102602024-01-02 15:17:05174 days ago1704208625
0x9C1F0773...9E49E5a54
0.0000001 MATIC
443102602024-01-02 15:17:05174 days ago1704208625
0x9C1F0773...9E49E5a54
0.0000009 MATIC
443102602024-01-02 15:17:05174 days ago1704208625
0x9C1F0773...9E49E5a54
0.000019 MATIC
443102172024-01-02 15:15:33174 days ago1704208533
0x9C1F0773...9E49E5a54
0.0000001 MATIC
443102172024-01-02 15:15:33174 days ago1704208533
0x9C1F0773...9E49E5a54
0.0000009 MATIC
443102172024-01-02 15:15:33174 days ago1704208533
0x9C1F0773...9E49E5a54
0.000019 MATIC
443090702024-01-02 14:34:55174 days ago1704206095
0x9C1F0773...9E49E5a54
0.0000001 MATIC
443090702024-01-02 14:34:55174 days ago1704206095
0x9C1F0773...9E49E5a54
0.0000009 MATIC
443090702024-01-02 14:34:55174 days ago1704206095
0x9C1F0773...9E49E5a54
0.000019 MATIC
443089612024-01-02 14:31:05174 days ago1704205865
0x9C1F0773...9E49E5a54
0.00001 MATIC
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
UpVsDownGameV4

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at mumbai.polygonscan.com on 2023-10-19
*/

// File: @openzeppelin/contracts/utils/Context.sol

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

// File: @openzeppelin/contracts/access/Ownable.sol

pragma solidity ^0.8.0;

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

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

// File: contracts/UpVsDownGameV4.sol

pragma solidity >=0.4.22 <0.9.0;

contract UpVsDownGameV4 is Ownable {

  struct BetGroup {
    uint256[] bets;
    address[] addresses;
    string[] avatars;
    string[] countries;
    string[] whiteLabelIds;
    uint256 total;
    uint256 distributedCount;
    uint256 totalDistributed;
  }

  struct Round {
    bool created;
    int32 startPrice;
    int32 endPrice;
    uint256 minBetAmount;
    uint256 maxBetAmount;
    uint256 poolBetsLimit;
    BetGroup upBetGroup;
    BetGroup downBetGroup;
    int64 roundStartTime;
    uint256 tradesStartTimeMS;
    uint256 tradesEndTimeMS;
  }

  struct Distribution {
    uint256 fee;
    uint256 feeJackpot;
    uint256 totalMinusFee;
    uint256 totalMinusJackpotFee;
    uint256 totalFees;
    uint256 pending;
  }

  address public gameController;
  mapping(bytes => Round) public pools;
  uint8 public feePercentage = 9;
  uint8 public feeJackpotPercentage = 1;
  address public feeAddress = msg.sender; //default fee address
  address public feeJackpotAddress = msg.sender; //default fee jackpot address
  bool public isRunning;
  bytes public notRunningReason;

  // Errors

  error PendingDistributions();

  // Events

  event RoundStarted(bytes poolId, int64 timestamp, int32 price, uint256 minTradeAmount, uint256 maxTradeAmount, uint256 poolTradesLimit, bytes indexed indexedPoolId);
  event RoundEnded(bytes poolId, int64 timestamp, int32 startPrice, int32 endPrice, bytes indexed indexedPoolId);
  event TradePlaced(bytes poolId, address sender, uint256 amount, string prediction, uint256 newTotal, bytes indexed indexedPoolId, address indexed indexedSender, string avatarUrl, string countryCode, int64 roundStartTime, string whiteLabelId);
  event TradeReturned(bytes poolId, address sender, uint256 amount, string whiteLabelId);
  event GameStopped(bytes reason);
  event GameStarted();
  event RoundDistributed(bytes poolId, uint totalWinners, uint from, uint to, int64 timestamp);
  event TradeWinningsSent(bytes poolId, address sender, uint256 tradeAmount, uint256 winningsAmount, address indexed indexedSender, string whiteLabelId, uint8 feePercentage, uint8 feeJackpotPercentage);


  // Modifiers

  modifier onlyGameController () {
    require(msg.sender == gameController, 'Only game controller can do this');
    _;
  }

  modifier onlyOpenPool (bytes calldata poolId) {
    require(isPoolOpen(poolId), 'This pool has a round in progress');
    _;
  }

  modifier onlyGameRunning () {
    require(isRunning, 'The game is not running');
    _;
  }

  modifier onlyPoolExists (bytes calldata poolId) {
    require(pools[poolId].created, 'Pool does not exist');
    _;
  }

  constructor(address newGameController) {
    gameController = newGameController;
  }

  // Methods

  function changeGameControllerAddress(address newGameControllerAddress) public onlyOwner {
    require(newGameControllerAddress != address(0x0) , "Address cannot be zero address");

    gameController = newGameControllerAddress;
  }

  function changeGameFeePercentage(uint8 newFeePercentage) public onlyOwner {
    require (newFeePercentage <=100 , "Wrong fee percentage value");

    feePercentage = newFeePercentage;
  }

  function changeGameFeeJackpotPercentage(uint8 newFeeJackpotPercentage) public onlyOwner {
    require (newFeeJackpotPercentage <=100 , "Wrong jackpot fee percentage value");

    feeJackpotPercentage = newFeeJackpotPercentage;
  }

  function changeGameFeeAddress(address newFeeAddress) public onlyOwner {
    require(newFeeAddress != address(0x0) , "Address cannot be zero address");

    feeAddress = newFeeAddress;
  }

  function changeGameFeeJackpotAddress(address newFeeJackpotAddress) public onlyOwner {
    require(newFeeJackpotAddress != address(0x0) , "Address cannot be zero address");

    feeJackpotAddress = newFeeJackpotAddress;
  }

  function stopGame(bytes calldata reason) public onlyOwner {
    isRunning = false;
    notRunningReason = reason;
    emit GameStopped(reason);
  }

  function startGame() public onlyOwner {
    isRunning = true;
    notRunningReason = '';
    emit GameStarted();
  }

  function createPool(bytes calldata poolId, uint256 minBetAmount , uint256 maxBetAmount, uint256 poolBetsLimit) public onlyGameController {
    pools[poolId].created = true;
    pools[poolId].minBetAmount = minBetAmount;
    pools[poolId].maxBetAmount = maxBetAmount;
    pools[poolId].poolBetsLimit = poolBetsLimit;
  }

  function trigger(
    bytes calldata poolId,
    int64 timeMS,
    uint256 tradesStartTimeMS,
    uint256 tradesEndTimeMS,
    int32 price,
    uint32 batchSize
  ) public onlyGameController onlyPoolExists(poolId) {
    Round storage currentRound = pools[poolId];

    if(isPoolOpen(poolId)) {
      require(isRunning, 'The game is not running, rounds can only be ended at this point');
      currentRound.startPrice = price;
      currentRound.roundStartTime = timeMS;
      currentRound.tradesStartTimeMS = tradesStartTimeMS;
      currentRound.tradesEndTimeMS = tradesEndTimeMS;
      
      emit RoundStarted(poolId, timeMS, currentRound.startPrice, currentRound.minBetAmount, currentRound.maxBetAmount, currentRound.poolBetsLimit, poolId);
    } else if (currentRound.endPrice == 0) {
      currentRound.endPrice = price;

      emit RoundEnded(poolId, timeMS, currentRound.startPrice, currentRound.endPrice, poolId);

      distribute(poolId, batchSize, timeMS);
    } else {
      revert PendingDistributions();
    }
  }

  function getContractBalance() public view returns (uint256) {
    return address(this).balance;
  }

  function returnBets (
    bytes calldata poolId,
    BetGroup storage group,
    uint32 batchSize
  ) private {
    uint256 pending = group.bets.length - group.distributedCount;
    uint256 limit = pending > batchSize ? batchSize : pending;
    uint256 to = group.distributedCount + limit;

    for (uint i = group.distributedCount; i < to; i ++) {
      sendEther(group.addresses[i], group.bets[i]);
      emit TradeReturned(poolId, group.addresses[i], group.bets[i], group.whiteLabelIds[i]);
    }

    group.distributedCount = to;
  }

  function distribute (
    bytes calldata poolId,
    uint32 batchSize,
    int64 timeMS
  ) public onlyGameController onlyPoolExists(poolId) {
    Round storage round = pools[poolId];

    if (round.upBetGroup.bets.length == 0 || round.downBetGroup.bets.length == 0 || (round.startPrice == round.endPrice)) {
      if (round.startPrice == round.endPrice){ //In case of TIE return the investments to both sides
        BetGroup storage returnGroupUp = round.upBetGroup;
        BetGroup storage returnGroupDown = round.downBetGroup;

        uint fromReturnUp = returnGroupUp.distributedCount;
        uint fromReturnDown = returnGroupDown.distributedCount;

        returnBets(poolId, returnGroupUp, batchSize);
        returnBets(poolId, returnGroupDown, batchSize);

        emit RoundDistributed(poolId, returnGroupUp.bets.length, fromReturnUp, returnGroupUp.distributedCount,timeMS);
        emit RoundDistributed(poolId, returnGroupDown.bets.length, fromReturnDown, returnGroupDown.distributedCount,timeMS);

        if (returnGroupUp.distributedCount == returnGroupUp.bets.length && returnGroupDown.distributedCount == returnGroupDown.bets.length) {
          clearPool(poolId);
        }

      }else{
        BetGroup storage returnGroup = round.downBetGroup.bets.length == 0 ? round.upBetGroup : round.downBetGroup;

        uint fromReturn = returnGroup.distributedCount;
        returnBets(poolId, returnGroup, batchSize);
        emit RoundDistributed(poolId, returnGroup.bets.length, fromReturn, returnGroup.distributedCount,timeMS);

        if (returnGroup.distributedCount == returnGroup.bets.length) {
          clearPool(poolId);
        }
      }

      
      return;
    }


    BetGroup storage winners = round.downBetGroup;
    BetGroup storage losers = round.upBetGroup;

    if (round.startPrice < round.endPrice) {
      winners = round.upBetGroup;
      losers = round.downBetGroup;
    }

    Distribution memory dist = calculateDistribution(winners, losers);
    uint256 limit = dist.pending > batchSize ? batchSize : dist.pending;
    uint256 to = winners.distributedCount + limit;

    for (uint i = winners.distributedCount; i < to; i++) {
      uint256 winnings = (winners.bets[i] * dist.totalFees * 100 / winners.total  / 100);

      sendEther(winners.addresses[i], winnings + winners.bets[i]);
      emit TradeWinningsSent(poolId, winners.addresses[i], winners.bets[i], winnings, winners.addresses[i], winners.whiteLabelIds[i],feePercentage,feeJackpotPercentage);
      winners.totalDistributed = winners.totalDistributed + winnings;
    }

    emit RoundDistributed(poolId, winners.bets.length, winners.distributedCount, to, timeMS);

    winners.distributedCount = to;
    if (winners.distributedCount == winners.bets.length) {
      sendEther(feeAddress, (dist.fee + dist.totalMinusFee)*feePercentage / 100);
      sendEther(feeJackpotAddress, (dist.feeJackpot + dist.totalMinusJackpotFee)*feeJackpotPercentage / 100);
      //Send leftovers to fee address
      sendEther(feeAddress,getContractBalance());

      clearPool(poolId);
    }
  }

   function calculateDistribution (
    BetGroup storage winners,
    BetGroup storage losers
  ) private view returns (Distribution memory) {
    uint256 fee = feePercentage * losers.total / 100;
    uint256 jackpotFee = feeJackpotPercentage * losers.total / 100;
    uint256 totalFee = fee + jackpotFee;
    uint256 pending = winners.bets.length - winners.distributedCount;
    uint256 totalFees = losers.total - totalFee;
    uint256 totalMinusFee = losers.total - fee;
    uint256 totalMinusJackpotFee = losers.total - jackpotFee;

    return Distribution({
      fee: fee,
      feeJackpot: jackpotFee,
      totalMinusFee: totalMinusFee,
      totalMinusJackpotFee: totalMinusJackpotFee,
      totalFees: totalFees,
      pending: pending
    });
  }

  function clearPool (
    bytes calldata poolId
  ) private {
    delete pools[poolId].upBetGroup;
    delete pools[poolId].downBetGroup;
    delete pools[poolId].startPrice;
    delete pools[poolId].endPrice;
  }

  function hasPendingDistributions(
    bytes calldata poolId
  ) public view returns (bool) {
    return (pools[poolId].upBetGroup.bets.length + pools[poolId].downBetGroup.bets.length) > 0;
  }

  function isPoolOpen(
    bytes calldata poolId
  ) public view returns (bool) {
    return pools[poolId].startPrice == 0;
  }

  function addBet (
    BetGroup storage betGroup,
    uint256 amount,
    string calldata avatar,
    string calldata countryCode,
    string calldata whiteLabelId
  ) private returns (uint256) {
    betGroup.bets.push(amount);
    betGroup.addresses.push(msg.sender);
    betGroup.avatars.push(avatar);
    betGroup.countries.push(countryCode);
    betGroup.whiteLabelIds.push(whiteLabelId);
    betGroup.total += amount;
    return betGroup.total;
  }

  struct makeTradeStruct{
    bytes poolId;
    string avatarUrl;
    string countryCode;
    bool upOrDown;
    string whiteLabelId;
  }

  struct userDataStruct{
      string avatar;
      string countryCode;
      string whiteLabelId;
      int64 roundStartTime;
    }

  function makeTrade(
    makeTradeStruct calldata userTrade
  ) public payable onlyOpenPool(userTrade.poolId) onlyGameRunning onlyPoolExists(userTrade.poolId) {

    require(msg.value > 0, "Needs to send Matic to trade");
    require(msg.value >= pools[userTrade.poolId].minBetAmount, "Trade amount should be higher than the minimum");
    require(msg.value <= pools[userTrade.poolId].maxBetAmount, "Trade amount should be lower than the maximum");
    
    //Prevent making trade while end round transaction being confirmed on blockchain
    require(block.timestamp <= pools[userTrade.poolId].tradesEndTimeMS , "Round is closing");

    //Prevent making trade while round starts
    require(block.timestamp >= pools[userTrade.poolId].tradesStartTimeMS , "Round not started yet");

    uint256 newTotal;

    if (userTrade.upOrDown) {
      require(pools[userTrade.poolId].upBetGroup.bets.length <= pools[userTrade.poolId].poolBetsLimit-1,"Pool is full, wait for next round");
      newTotal = addBet(pools[userTrade.poolId].upBetGroup, msg.value, userTrade.avatarUrl, userTrade.countryCode, userTrade.whiteLabelId);
    } else {
      require(pools[userTrade.poolId].downBetGroup.bets.length <= pools[userTrade.poolId].poolBetsLimit-1,"Pool is full, wait for next round");
      newTotal = addBet(pools[userTrade.poolId].downBetGroup, msg.value, userTrade.avatarUrl, userTrade.countryCode, userTrade.whiteLabelId);
    }

    userDataStruct memory userTradeData;
    userTradeData.avatar = userTrade.avatarUrl;
    userTradeData.countryCode = userTrade.countryCode;
    userTradeData.whiteLabelId = userTrade.whiteLabelId;
    userTradeData.roundStartTime = pools[userTrade.poolId].roundStartTime;
    
    emit TradePlaced(userTrade.poolId, msg.sender, msg.value, (userTrade.upOrDown) ? "UP":"DOWN", newTotal, 
    userTrade.poolId, msg.sender, userTradeData.avatar, userTradeData.countryCode, 
    userTradeData.roundStartTime, userTradeData.whiteLabelId);
  }

  function sendEther (
    address to, 
    uint256 amount
  ) private {
    (bool sent, bytes memory data) = payable(to).call{gas: 0, value: amount}("");
    require(sent, "Couldn't send ether");
  } 
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"newGameController","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"PendingDistributions","type":"error"},{"anonymous":false,"inputs":[],"name":"GameStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"GameStopped","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"poolId","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"totalWinners","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"from","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"to","type":"uint256"},{"indexed":false,"internalType":"int64","name":"timestamp","type":"int64"}],"name":"RoundDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"poolId","type":"bytes"},{"indexed":false,"internalType":"int64","name":"timestamp","type":"int64"},{"indexed":false,"internalType":"int32","name":"startPrice","type":"int32"},{"indexed":false,"internalType":"int32","name":"endPrice","type":"int32"},{"indexed":true,"internalType":"bytes","name":"indexedPoolId","type":"bytes"}],"name":"RoundEnded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"poolId","type":"bytes"},{"indexed":false,"internalType":"int64","name":"timestamp","type":"int64"},{"indexed":false,"internalType":"int32","name":"price","type":"int32"},{"indexed":false,"internalType":"uint256","name":"minTradeAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxTradeAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"poolTradesLimit","type":"uint256"},{"indexed":true,"internalType":"bytes","name":"indexedPoolId","type":"bytes"}],"name":"RoundStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"poolId","type":"bytes"},{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"string","name":"prediction","type":"string"},{"indexed":false,"internalType":"uint256","name":"newTotal","type":"uint256"},{"indexed":true,"internalType":"bytes","name":"indexedPoolId","type":"bytes"},{"indexed":true,"internalType":"address","name":"indexedSender","type":"address"},{"indexed":false,"internalType":"string","name":"avatarUrl","type":"string"},{"indexed":false,"internalType":"string","name":"countryCode","type":"string"},{"indexed":false,"internalType":"int64","name":"roundStartTime","type":"int64"},{"indexed":false,"internalType":"string","name":"whiteLabelId","type":"string"}],"name":"TradePlaced","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"poolId","type":"bytes"},{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"string","name":"whiteLabelId","type":"string"}],"name":"TradeReturned","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"poolId","type":"bytes"},{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"tradeAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"winningsAmount","type":"uint256"},{"indexed":true,"internalType":"address","name":"indexedSender","type":"address"},{"indexed":false,"internalType":"string","name":"whiteLabelId","type":"string"},{"indexed":false,"internalType":"uint8","name":"feePercentage","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"feeJackpotPercentage","type":"uint8"}],"name":"TradeWinningsSent","type":"event"},{"inputs":[{"internalType":"address","name":"newGameControllerAddress","type":"address"}],"name":"changeGameControllerAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newFeeAddress","type":"address"}],"name":"changeGameFeeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newFeeJackpotAddress","type":"address"}],"name":"changeGameFeeJackpotAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newFeeJackpotPercentage","type":"uint8"}],"name":"changeGameFeeJackpotPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newFeePercentage","type":"uint8"}],"name":"changeGameFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"poolId","type":"bytes"},{"internalType":"uint256","name":"minBetAmount","type":"uint256"},{"internalType":"uint256","name":"maxBetAmount","type":"uint256"},{"internalType":"uint256","name":"poolBetsLimit","type":"uint256"}],"name":"createPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"poolId","type":"bytes"},{"internalType":"uint32","name":"batchSize","type":"uint32"},{"internalType":"int64","name":"timeMS","type":"int64"}],"name":"distribute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeJackpotAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeJackpotPercentage","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feePercentage","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gameController","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getContractBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"poolId","type":"bytes"}],"name":"hasPendingDistributions","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"poolId","type":"bytes"}],"name":"isPoolOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isRunning","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"bytes","name":"poolId","type":"bytes"},{"internalType":"string","name":"avatarUrl","type":"string"},{"internalType":"string","name":"countryCode","type":"string"},{"internalType":"bool","name":"upOrDown","type":"bool"},{"internalType":"string","name":"whiteLabelId","type":"string"}],"internalType":"struct UpVsDownGameV4.makeTradeStruct","name":"userTrade","type":"tuple"}],"name":"makeTrade","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"notRunningReason","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"","type":"bytes"}],"name":"pools","outputs":[{"internalType":"bool","name":"created","type":"bool"},{"internalType":"int32","name":"startPrice","type":"int32"},{"internalType":"int32","name":"endPrice","type":"int32"},{"internalType":"uint256","name":"minBetAmount","type":"uint256"},{"internalType":"uint256","name":"maxBetAmount","type":"uint256"},{"internalType":"uint256","name":"poolBetsLimit","type":"uint256"},{"components":[{"internalType":"uint256[]","name":"bets","type":"uint256[]"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"string[]","name":"avatars","type":"string[]"},{"internalType":"string[]","name":"countries","type":"string[]"},{"internalType":"string[]","name":"whiteLabelIds","type":"string[]"},{"internalType":"uint256","name":"total","type":"uint256"},{"internalType":"uint256","name":"distributedCount","type":"uint256"},{"internalType":"uint256","name":"totalDistributed","type":"uint256"}],"internalType":"struct UpVsDownGameV4.BetGroup","name":"upBetGroup","type":"tuple"},{"components":[{"internalType":"uint256[]","name":"bets","type":"uint256[]"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"string[]","name":"avatars","type":"string[]"},{"internalType":"string[]","name":"countries","type":"string[]"},{"internalType":"string[]","name":"whiteLabelIds","type":"string[]"},{"internalType":"uint256","name":"total","type":"uint256"},{"internalType":"uint256","name":"distributedCount","type":"uint256"},{"internalType":"uint256","name":"totalDistributed","type":"uint256"}],"internalType":"struct UpVsDownGameV4.BetGroup","name":"downBetGroup","type":"tuple"},{"internalType":"int64","name":"roundStartTime","type":"int64"},{"internalType":"uint256","name":"tradesStartTimeMS","type":"uint256"},{"internalType":"uint256","name":"tradesEndTimeMS","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startGame","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"reason","type":"bytes"}],"name":"stopGame","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"poolId","type":"bytes"},{"internalType":"int64","name":"timeMS","type":"int64"},{"internalType":"uint256","name":"tradesStartTimeMS","type":"uint256"},{"internalType":"uint256","name":"tradesEndTimeMS","type":"uint256"},{"internalType":"int32","name":"price","type":"int32"},{"internalType":"uint32","name":"batchSize","type":"uint32"}],"name":"trigger","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526009600360006101000a81548160ff021916908360ff1602179055506001600360016101000a81548160ff021916908360ff16021790555033600360026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620000cb57600080fd5b50604051620055e5380380620055e58339818101604052810190620000f191906200028f565b62000111620001056200015960201b60201c565b6200016160201b60201c565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050620002c1565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000257826200022a565b9050919050565b62000269816200024a565b81146200027557600080fd5b50565b60008151905062000289816200025e565b92915050565b600060208284031215620002a857620002a762000225565b5b6000620002b88482850162000278565b91505092915050565b61531480620002d16000396000f3fe6080604052600436106101665760003560e01c8063715018a6116100d1578063a7c3324d1161008a578063e470996911610064578063e4709969146104ed578063eab79b7d14610516578063f2fde38b1461053f578063f68256a81461056857610166565b8063a7c3324d14610484578063d4c770cf146104ad578063d65ab5f2146104d657610166565b8063715018a6146103a95780637b064240146103c057806381196ae2146103e95780638da5cb5b14610405578063900b7b3f14610430578063a001ecdd1461045957610166565b80633b9fe1ee116101235780633b9fe1ee1461028d5780633fafac92146102b857806341275358146102ff578063595dc8971461032a5780636518a0a9146103535780636f9fb98a1461037e57610166565b80630c2f915e1461016b578063159dc634146101a85780631c2db192146101d35780631d0d625b146101fc5780632014e5d11461022557806330efabd414610250575b600080fd5b34801561017757600080fd5b50610192600480360381019061018d9190613788565b610593565b60405161019f91906137f0565b60405180910390f35b3480156101b457600080fd5b506101bd6105fd565b6040516101ca9190613827565b60405180910390f35b3480156101df57600080fd5b506101fa60048036038101906101f591906138a0565b610610565b005b34801561020857600080fd5b50610223600480360381019061021e91906138a0565b610740565b005b34801561023157600080fd5b5061023a610870565b60405161024791906137f0565b60405180910390f35b34801561025c57600080fd5b5061027760048036038101906102729190613788565b610883565b60405161028491906137f0565b60405180910390f35b34801561029957600080fd5b506102a26108c3565b6040516102af91906138dc565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da9190613a38565b6108e9565b6040516102f69b9a99989796959493929190613e64565b60405180910390f35b34801561030b57600080fd5b506103146110c1565b60405161032191906138dc565b60405180910390f35b34801561033657600080fd5b50610351600480360381019061034c91906138a0565b6110e7565b005b34801561035f57600080fd5b50610368611217565b6040516103759190613f72565b60405180910390f35b34801561038a57600080fd5b506103936112a5565b6040516103a09190613f94565b60405180910390f35b3480156103b557600080fd5b506103be6112ad565b005b3480156103cc57600080fd5b506103e760048036038101906103e2919061406f565b611335565b005b61040360048036038101906103fe9190614142565b6116a8565b005b34801561041157600080fd5b5061041a611ee7565b60405161042791906138dc565b60405180910390f35b34801561043c57600080fd5b50610457600480360381019061045291906141b7565b611f10565b005b34801561046557600080fd5b5061046e611ff1565b60405161047b9190613827565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a691906141e4565b612004565b005b3480156104b957600080fd5b506104d460048036038101906104cf91906141b7565b6127d1565b005b3480156104e257600080fd5b506104eb6128b2565b005b3480156104f957600080fd5b50610514600480360381019061050f9190614258565b61299d565b005b34801561052257600080fd5b5061053d60048036038101906105389190613788565b612ae8565b005b34801561054b57600080fd5b50610566600480360381019061056191906138a0565b612bce565b005b34801561057457600080fd5b5061057d612cc6565b60405161058a91906138dc565b60405180910390f35b600080600284846040516105a8929190614310565b9081526020016040518091039020600c0160000180549050600285856040516105d2929190614310565b9081526020016040518091039020600401600001805490506105f49190614358565b11905092915050565b600360019054906101000a900460ff1681565b610618612cec565b73ffffffffffffffffffffffffffffffffffffffff16610636611ee7565b73ffffffffffffffffffffffffffffffffffffffff161461068c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106839061440b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156106fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f390614477565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610748612cec565b73ffffffffffffffffffffffffffffffffffffffff16610766611ee7565b73ffffffffffffffffffffffffffffffffffffffff16146107bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b39061440b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561082c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082390614477565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600460149054906101000a900460ff1681565b60008060028484604051610898929190614310565b908152602001604051809103902060000160019054906101000a900460030b60030b14905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002818051602081018201805184825260208301602085012081835280955050505050506000915090508060000160009054906101000a900460ff16908060000160019054906101000a900460030b908060000160059054906101000a900460030b908060010154908060020154908060030154908060040160405180610100016040529081600082018054806020026020016040519081016040528092919081815260200182805480156109bd57602002820191906000526020600020905b8154815260200190600101908083116109a9575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610a4b57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610a01575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015610b25578382906000526020600020018054610a98906144c6565b80601f0160208091040260200160405190810160405280929190818152602001828054610ac4906144c6565b8015610b115780601f10610ae657610100808354040283529160200191610b11565b820191906000526020600020905b815481529060010190602001808311610af457829003601f168201915b505050505081526020019060010190610a79565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015610bfe578382906000526020600020018054610b71906144c6565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9d906144c6565b8015610bea5780601f10610bbf57610100808354040283529160200191610bea565b820191906000526020600020905b815481529060010190602001808311610bcd57829003601f168201915b505050505081526020019060010190610b52565b50505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015610cd7578382906000526020600020018054610c4a906144c6565b80601f0160208091040260200160405190810160405280929190818152602001828054610c76906144c6565b8015610cc35780601f10610c9857610100808354040283529160200191610cc3565b820191906000526020600020905b815481529060010190602001808311610ca657829003601f168201915b505050505081526020019060010190610c2b565b50505050815260200160058201548152602001600682015481526020016007820154815250509080600c016040518061010001604052908160008201805480602002602001604051908101604052809291908181526020018280548015610d5d57602002820191906000526020600020905b815481526020019060010190808311610d49575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610deb57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610da1575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015610ec5578382906000526020600020018054610e38906144c6565b80601f0160208091040260200160405190810160405280929190818152602001828054610e64906144c6565b8015610eb15780601f10610e8657610100808354040283529160200191610eb1565b820191906000526020600020905b815481529060010190602001808311610e9457829003601f168201915b505050505081526020019060010190610e19565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015610f9e578382906000526020600020018054610f11906144c6565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3d906144c6565b8015610f8a5780601f10610f5f57610100808354040283529160200191610f8a565b820191906000526020600020905b815481529060010190602001808311610f6d57829003601f168201915b505050505081526020019060010190610ef2565b50505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015611077578382906000526020600020018054610fea906144c6565b80601f0160208091040260200160405190810160405280929190818152602001828054611016906144c6565b80156110635780601f1061103857610100808354040283529160200191611063565b820191906000526020600020905b81548152906001019060200180831161104657829003601f168201915b505050505081526020019060010190610fcb565b5050505081526020016005820154815260200160068201548152602001600782015481525050908060140160009054906101000a900460070b90806015015490806016015490508b565b600360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6110ef612cec565b73ffffffffffffffffffffffffffffffffffffffff1661110d611ee7565b73ffffffffffffffffffffffffffffffffffffffff1614611163576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115a9061440b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156111d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ca90614477565b60405180910390fd5b80600360026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60058054611224906144c6565b80601f0160208091040260200160405190810160405280929190818152602001828054611250906144c6565b801561129d5780601f106112725761010080835404028352916020019161129d565b820191906000526020600020905b81548152906001019060200180831161128057829003601f168201915b505050505081565b600047905090565b6112b5612cec565b73ffffffffffffffffffffffffffffffffffffffff166112d3611ee7565b73ffffffffffffffffffffffffffffffffffffffff1614611329576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113209061440b565b60405180910390fd5b6113336000612cf4565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bc90614544565b60405180910390fd5b8686600282826040516113d9929190614310565b908152602001604051809103902060000160009054906101000a900460ff16611437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142e906145b0565b60405180910390fd5b600060028a8a60405161144b929190614310565b908152602001604051809103902090506114658a8a610883565b1561159c57600460149054906101000a900460ff166114b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b090614642565b60405180910390fd5b848160000160016101000a81548163ffffffff021916908360030b63ffffffff160217905550878160140160006101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff160217905550868160150181905550858160160181905550898960405161152f929190614310565b60405180910390207f977f157300bb4d69d09b3e083fb55a17a0c02f978e5b220c08173c63de9665aa8b8b8b8560000160019054906101000a900460030b86600101548760020154886003015460405161158f979695949392919061468f565b60405180910390a261169c565b60008160000160059054906101000a900460030b60030b141561166957848160000160056101000a81548163ffffffff021916908360030b63ffffffff16021790555089896040516115ef929190614310565b60405180910390207fe097bf610f5827ffcdd36eb07b790e6ee02dd498f911ab45664208cfad9323b08b8b8b8560000160019054906101000a900460030b8660000160059054906101000a900460030b6040516116509594939291906146f9565b60405180910390a26116648a8a868b612004565b61169b565b6040517fd56be5db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050505050505050565b8080600001906116b89190614756565b6116c28282610883565b611701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f89061482b565b60405180910390fd5b600460149054906101000a900460ff16611750576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174790614897565b60405180910390fd5b8280600001906117609190614756565b60028282604051611772929190614310565b908152602001604051809103902060000160009054906101000a900460ff166117d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c7906145b0565b60405180910390fd5b60003411611813576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180a90614903565b60405180910390fd5b60028580600001906118259190614756565b604051611833929190614310565b908152602001604051809103902060010154341015611887576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187e90614995565b60405180910390fd5b60028580600001906118999190614756565b6040516118a7929190614310565b9081526020016040518091039020600201543411156118fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f290614a27565b60405180910390fd5b600285806000019061190d9190614756565b60405161191b929190614310565b90815260200160405180910390206016015442111561196f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196690614a93565b60405180910390fd5b60028580600001906119819190614756565b60405161198f929190614310565b9081526020016040518091039020601501544210156119e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119da90614aff565b60405180910390fd5b60008560600160208101906119f89190614b4b565b15611b255760016002878060000190611a119190614756565b604051611a1f929190614310565b908152602001604051809103902060030154611a3b9190614b78565b6002878060000190611a4d9190614756565b604051611a5b929190614310565b9081526020016040518091039020600401600001805490501115611ab4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aab90614c1e565b60405180910390fd5b611b1e6002878060000190611ac99190614756565b604051611ad7929190614310565b908152602001604051809103902060040134888060200190611af99190614c3e565b8a8060400190611b099190614c3e565b8c8060800190611b199190614c3e565b612db8565b9050611c49565b60016002878060000190611b399190614756565b604051611b47929190614310565b908152602001604051809103902060030154611b639190614b78565b6002878060000190611b759190614756565b604051611b83929190614310565b9081526020016040518091039020600c01600001805490501115611bdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd390614c1e565b60405180910390fd5b611c466002878060000190611bf19190614756565b604051611bff929190614310565b9081526020016040518091039020600c0134888060200190611c219190614c3e565b8a8060400190611c319190614c3e565b8c8060800190611c419190614c3e565b612db8565b90505b611c51613438565b868060200190611c619190614c3e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508160000181905250868060400190611cbc9190614c3e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508160200181905250868060800190611d179190614c3e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081604001819052506002878060000190611d749190614756565b604051611d82929190614310565b908152602001604051809103902060140160009054906101000a900460070b816060019060070b908160070b815250503373ffffffffffffffffffffffffffffffffffffffff16878060000190611dd99190614756565b604051611de7929190614310565b60405180910390207f68f6fc9b4292a4019c38f766d951dada112bf514a9fa2245e113dd0d72f28615898060000190611e209190614756565b33348d6060016020810190611e359190614b4b565b611e74576040518060400160405280600481526020017f444f574e00000000000000000000000000000000000000000000000000000000815250611eab565b6040518060400160405280600281526020017f55500000000000000000000000000000000000000000000000000000000000008152505b8989600001518a602001518b606001518c60400151604051611ed69a99989796959493929190614cda565b60405180910390a350505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611f18612cec565b73ffffffffffffffffffffffffffffffffffffffff16611f36611ee7565b73ffffffffffffffffffffffffffffffffffffffff1614611f8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f839061440b565b60405180910390fd5b60648160ff161115611fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fca90614dfe565b60405180910390fd5b80600360016101000a81548160ff021916908360ff16021790555050565b600360009054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612094576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208b90614544565b60405180910390fd5b8383600282826040516120a8929190614310565b908152602001604051809103902060000160009054906101000a900460ff16612106576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120fd906145b0565b60405180910390fd5b60006002878760405161211a929190614310565b9081526020016040518091039020905060008160040160000180549050148061214d5750600081600c0160000180549050145b8061217f57508060000160059054906101000a900460030b60030b8160000160019054906101000a900460030b60030b145b1561236e578060000160059054906101000a900460030b60030b8160000160019054906101000a900460030b60030b14156122c3576000816004019050600082600c0190506000826006015490506000826006015490506121e28b8b868c612f38565b6121ee8b8b858c612f38565b7fd86802201c3bf5d79ef71027c49cdfdee99fa298848917618ba148d098f15f748b8b86600001805490508588600601548d60405161223296959493929190614e1e565b60405180910390a17fd86802201c3bf5d79ef71027c49cdfdee99fa298848917618ba148d098f15f748b8b85600001805490508487600601548d60405161227e96959493929190614e1e565b60405180910390a1836000018054905084600601541480156122aa575082600001805490508360060154145b156122ba576122b98b8b6130e6565b5b50505050612368565b60008082600c0160000180549050146122df5781600c016122e4565b816004015b90506000816006015490506122fb8989848a612f38565b7fd86802201c3bf5d79ef71027c49cdfdee99fa298848917618ba148d098f15f74898984600001805490508486600601548b60405161233f96959493929190614e1e565b60405180910390a18160000180549050826006015414156123655761236489896130e6565b5b50505b506127c9565b600081600c01905060008260040190508260000160059054906101000a900460030b60030b8360000160019054906101000a900460030b60030b12156123bb5782600401915082600c0190505b60006123c78383613272565b905060008863ffffffff168260a00151116123e6578160a001516123ee565b8863ffffffff165b905060008185600601546124029190614358565b90506000856006015490505b8181101561264b57600060648760050154606487608001518a600001868154811061243c5761243b614e7a565b5b90600052602060002001546124519190614ea9565b61245b9190614ea9565b6124659190614f32565b61246f9190614f32565b90506124e687600101838154811061248a57612489614e7a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168860000184815481106124cb576124ca614e7a565b5b9060005260206000200154836124e19190614358565b613381565b8660010182815481106124fc576124fb614e7a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fc6f8d1369ef8a4d7d8373cd5079d27245ff35d49aba7ff57de55fbaf8d53813b8f8f8a600101868154811061257657612575614e7a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168b60000187815481106125b7576125b6614e7a565b5b9060005260206000200154868d60040189815481106125d9576125d8614e7a565b5b90600052602060002001600360009054906101000a900460ff16600360019054906101000a900460ff16604051612617989796959493929190614ff8565b60405180910390a280876007015461262f9190614358565b876007018190555050808061264390615077565b91505061240e565b507fd86802201c3bf5d79ef71027c49cdfdee99fa298848917618ba148d098f15f748c8c87600001805490508860060154858e60405161269096959493929190614e1e565b60405180910390a18085600601819055508460000180549050856006015414156127c25761271c600360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff166064600360009054906101000a900460ff1660ff16866040015187600001516127039190614358565b61270d9190614ea9565b6127179190614f32565b613381565b612784600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166064600360019054906101000a900460ff1660ff168660600151876020015161276b9190614358565b6127759190614ea9565b61277f9190614f32565b613381565b6127b7600360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff166127b26112a5565b613381565b6127c18c8c6130e6565b5b5050505050505b505050505050565b6127d9612cec565b73ffffffffffffffffffffffffffffffffffffffff166127f7611ee7565b73ffffffffffffffffffffffffffffffffffffffff161461284d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128449061440b565b60405180910390fd5b60648160ff161115612894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288b9061510c565b60405180910390fd5b80600360006101000a81548160ff021916908360ff16021790555050565b6128ba612cec565b73ffffffffffffffffffffffffffffffffffffffff166128d8611ee7565b73ffffffffffffffffffffffffffffffffffffffff161461292e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129259061440b565b60405180910390fd5b6001600460146101000a81548160ff021916908315150217905550604051806020016040528060008152506005908051906020019061296e929190613463565b507f762f260439bb4be3ef6e4dc2786e2e7bd187d3d80b79057d7a424fe98563e33560405160405180910390a1565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612a2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2490614544565b60405180910390fd5b600160028686604051612a41929190614310565b908152602001604051809103902060000160006101000a81548160ff0219169083151502179055508260028686604051612a7c929190614310565b9081526020016040518091039020600101819055508160028686604051612aa4929190614310565b9081526020016040518091039020600201819055508060028686604051612acc929190614310565b9081526020016040518091039020600301819055505050505050565b612af0612cec565b73ffffffffffffffffffffffffffffffffffffffff16612b0e611ee7565b73ffffffffffffffffffffffffffffffffffffffff1614612b64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5b9061440b565b60405180910390fd5b6000600460146101000a81548160ff021916908315150217905550818160059190612b909291906134e9565b507fbbed56c796999ec9481de9169e54d6f193c57a335189c8b82053d80e263fdbd68282604051612bc292919061512c565b60405180910390a15050565b612bd6612cec565b73ffffffffffffffffffffffffffffffffffffffff16612bf4611ee7565b73ffffffffffffffffffffffffffffffffffffffff1614612c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c419061440b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612cba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cb1906151c2565b60405180910390fd5b612cc381612cf4565b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008860000188908060018154018082558091505060019003906000526020600020016000909190919091505588600101339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555088600201878790918060018154018082558091505060019003906000526020600020016000909192909192909192909192509190612e8992919061356f565b5088600301858590918060018154018082558091505060019003906000526020600020016000909192909192909192909192509190612ec992919061356f565b5088600401838390918060018154018082558091505060019003906000526020600020016000909192909192909192909192509190612f0992919061356f565b5087896005016000828254612f1e9190614358565b925050819055508860050154905098975050505050505050565b600082600601548360000180549050612f519190614b78565b905060008263ffffffff168211612f685781612f70565b8263ffffffff165b90506000818560060154612f849190614358565b90506000856006015490505b818110156130d357613002866001018281548110612fb157612fb0614e7a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16876000018381548110612ff257612ff1614e7a565b5b9060005260206000200154613381565b7fb9b3cf88e16ddd6b941ffa04b763047af17bafd3cdecef4d26d46f43e64c1205888888600101848154811061303b5761303a614e7a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689600001858154811061307c5761307b614e7a565b5b90600052602060002001548a600401868154811061309d5761309c614e7a565b5b906000526020600020016040516130b89594939291906151e2565b60405180910390a180806130cb90615077565b915050612f90565b5080856006018190555050505050505050565b600282826040516130f8929190614310565b90815260200160405180910390206004016000808201600061311a91906135f5565b60018201600061312a9190613616565b60028201600061313a9190613637565b60038201600061314a9190613637565b60048201600061315a9190613637565b600582016000905560068201600090556007820160009055505060028282604051613186929190614310565b9081526020016040518091039020600c01600080820160006131a891906135f5565b6001820160006131b89190613616565b6002820160006131c89190613637565b6003820160006131d89190613637565b6004820160006131e89190613637565b600582016000905560068201600090556007820160009055505060028282604051613214929190614310565b908152602001604051809103902060000160016101000a81549063ffffffff02191690556002828260405161324a929190614310565b908152602001604051809103902060000160056101000a81549063ffffffff02191690555050565b61327a613658565b600060648360050154600360009054906101000a900460ff1660ff166132a09190614ea9565b6132aa9190614f32565b9050600060648460050154600360019054906101000a900460ff1660ff166132d29190614ea9565b6132dc9190614f32565b9050600081836132ec9190614358565b90506000866006015487600001805490506133079190614b78565b9050600082876005015461331b9190614b78565b9050600085886005015461332f9190614b78565b905060008589600501546133439190614b78565b90506040518060c001604052808881526020018781526020018381526020018281526020018481526020018581525097505050505050505092915050565b6000808373ffffffffffffffffffffffffffffffffffffffff166000846040516133aa9061525d565b600060405180830381858888f193505050503d80600081146133e8576040519150601f19603f3d011682016040523d82523d6000602084013e6133ed565b606091505b509150915081613432576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613429906152be565b60405180910390fd5b50505050565b6040518060800160405280606081526020016060815260200160608152602001600060070b81525090565b82805461346f906144c6565b90600052602060002090601f01602090048101928261349157600085556134d8565b82601f106134aa57805160ff19168380011785556134d8565b828001600101855582156134d8579182015b828111156134d75782518255916020019190600101906134bc565b5b5090506134e5919061368e565b5090565b8280546134f5906144c6565b90600052602060002090601f016020900481019282613517576000855561355e565b82601f1061353057803560ff191683800117855561355e565b8280016001018555821561355e579182015b8281111561355d578235825591602001919060010190613542565b5b50905061356b919061368e565b5090565b82805461357b906144c6565b90600052602060002090601f01602090048101928261359d57600085556135e4565b82601f106135b657803560ff19168380011785556135e4565b828001600101855582156135e4579182015b828111156135e35782358255916020019190600101906135c8565b5b5090506135f1919061368e565b5090565b5080546000825590600052602060002090810190613613919061368e565b50565b5080546000825590600052602060002090810190613634919061368e565b50565b508054600082559060005260206000209081019061365591906136ab565b50565b6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5b808211156136a757600081600090555060010161368f565b5090565b5b808211156136cb57600081816136c291906136cf565b506001016136ac565b5090565b5080546136db906144c6565b6000825580601f106136ed575061370c565b601f01602090049060005260206000209081019061370b919061368e565b5b50565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f84011261374857613747613723565b5b8235905067ffffffffffffffff81111561376557613764613728565b5b6020830191508360018202830111156137815761378061372d565b5b9250929050565b6000806020838503121561379f5761379e613719565b5b600083013567ffffffffffffffff8111156137bd576137bc61371e565b5b6137c985828601613732565b92509250509250929050565b60008115159050919050565b6137ea816137d5565b82525050565b600060208201905061380560008301846137e1565b92915050565b600060ff82169050919050565b6138218161380b565b82525050565b600060208201905061383c6000830184613818565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061386d82613842565b9050919050565b61387d81613862565b811461388857600080fd5b50565b60008135905061389a81613874565b92915050565b6000602082840312156138b6576138b5613719565b5b60006138c48482850161388b565b91505092915050565b6138d681613862565b82525050565b60006020820190506138f160008301846138cd565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613945826138fc565b810181811067ffffffffffffffff821117156139645761396361390d565b5b80604052505050565b600061397761370f565b9050613983828261393c565b919050565b600067ffffffffffffffff8211156139a3576139a261390d565b5b6139ac826138fc565b9050602081019050919050565b82818337600083830152505050565b60006139db6139d684613988565b61396d565b9050828152602081018484840111156139f7576139f66138f7565b5b613a028482856139b9565b509392505050565b600082601f830112613a1f57613a1e613723565b5b8135613a2f8482602086016139c8565b91505092915050565b600060208284031215613a4e57613a4d613719565b5b600082013567ffffffffffffffff811115613a6c57613a6b61371e565b5b613a7884828501613a0a565b91505092915050565b60008160030b9050919050565b613a9781613a81565b82525050565b6000819050919050565b613ab081613a9d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613aeb81613a9d565b82525050565b6000613afd8383613ae2565b60208301905092915050565b6000602082019050919050565b6000613b2182613ab6565b613b2b8185613ac1565b9350613b3683613ad2565b8060005b83811015613b67578151613b4e8882613af1565b9750613b5983613b09565b925050600181019050613b3a565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613ba981613862565b82525050565b6000613bbb8383613ba0565b60208301905092915050565b6000602082019050919050565b6000613bdf82613b74565b613be98185613b7f565b9350613bf483613b90565b8060005b83811015613c25578151613c0c8882613baf565b9750613c1783613bc7565b925050600181019050613bf8565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613c98578082015181840152602081019050613c7d565b83811115613ca7576000848401525b50505050565b6000613cb882613c5e565b613cc28185613c69565b9350613cd2818560208601613c7a565b613cdb816138fc565b840191505092915050565b6000613cf28383613cad565b905092915050565b6000602082019050919050565b6000613d1282613c32565b613d1c8185613c3d565b935083602082028501613d2e85613c4e565b8060005b85811015613d6a5784840389528151613d4b8582613ce6565b9450613d5683613cfa565b925060208a01995050600181019050613d32565b50829750879550505050505092915050565b6000610100830160008301518482036000860152613d9a8282613b16565b91505060208301518482036020860152613db48282613bd4565b91505060408301518482036040860152613dce8282613d07565b91505060608301518482036060860152613de88282613d07565b91505060808301518482036080860152613e028282613d07565b91505060a0830151613e1760a0860182613ae2565b5060c0830151613e2a60c0860182613ae2565b5060e0830151613e3d60e0860182613ae2565b508091505092915050565b60008160070b9050919050565b613e5e81613e48565b82525050565b600061016082019050613e7a600083018e6137e1565b613e87602083018d613a8e565b613e94604083018c613a8e565b613ea1606083018b613aa7565b613eae608083018a613aa7565b613ebb60a0830189613aa7565b81810360c0830152613ecd8188613d7c565b905081810360e0830152613ee18187613d7c565b9050613ef1610100830186613e55565b613eff610120830185613aa7565b613f0d610140830184613aa7565b9c9b505050505050505050505050565b600081519050919050565b600082825260208201905092915050565b6000613f4482613f1d565b613f4e8185613f28565b9350613f5e818560208601613c7a565b613f67816138fc565b840191505092915050565b60006020820190508181036000830152613f8c8184613f39565b905092915050565b6000602082019050613fa96000830184613aa7565b92915050565b613fb881613e48565b8114613fc357600080fd5b50565b600081359050613fd581613faf565b92915050565b613fe481613a9d565b8114613fef57600080fd5b50565b60008135905061400181613fdb565b92915050565b61401081613a81565b811461401b57600080fd5b50565b60008135905061402d81614007565b92915050565b600063ffffffff82169050919050565b61404c81614033565b811461405757600080fd5b50565b60008135905061406981614043565b92915050565b600080600080600080600060c0888a03121561408e5761408d613719565b5b600088013567ffffffffffffffff8111156140ac576140ab61371e565b5b6140b88a828b01613732565b975097505060206140cb8a828b01613fc6565b95505060406140dc8a828b01613ff2565b94505060606140ed8a828b01613ff2565b93505060806140fe8a828b0161401e565b92505060a061410f8a828b0161405a565b91505092959891949750929550565b600080fd5b600060a082840312156141395761413861411e565b5b81905092915050565b60006020828403121561415857614157613719565b5b600082013567ffffffffffffffff8111156141765761417561371e565b5b61418284828501614123565b91505092915050565b6141948161380b565b811461419f57600080fd5b50565b6000813590506141b18161418b565b92915050565b6000602082840312156141cd576141cc613719565b5b60006141db848285016141a2565b91505092915050565b600080600080606085870312156141fe576141fd613719565b5b600085013567ffffffffffffffff81111561421c5761421b61371e565b5b61422887828801613732565b9450945050602061423b8782880161405a565b925050604061424c87828801613fc6565b91505092959194509250565b60008060008060006080868803121561427457614273613719565b5b600086013567ffffffffffffffff8111156142925761429161371e565b5b61429e88828901613732565b955095505060206142b188828901613ff2565b93505060406142c288828901613ff2565b92505060606142d388828901613ff2565b9150509295509295909350565b600081905092915050565b60006142f783856142e0565b93506143048385846139b9565b82840190509392505050565b600061431d8284866142eb565b91508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061436382613a9d565b915061436e83613a9d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156143a3576143a2614329565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006143f56020836143ae565b9150614400826143bf565b602082019050919050565b60006020820190508181036000830152614424816143e8565b9050919050565b7f416464726573732063616e6e6f74206265207a65726f20616464726573730000600082015250565b6000614461601e836143ae565b915061446c8261442b565b602082019050919050565b6000602082019050818103600083015261449081614454565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806144de57607f821691505b602082108114156144f2576144f1614497565b5b50919050565b7f4f6e6c792067616d6520636f6e74726f6c6c65722063616e20646f2074686973600082015250565b600061452e6020836143ae565b9150614539826144f8565b602082019050919050565b6000602082019050818103600083015261455d81614521565b9050919050565b7f506f6f6c20646f6573206e6f7420657869737400000000000000000000000000600082015250565b600061459a6013836143ae565b91506145a582614564565b602082019050919050565b600060208201905081810360008301526145c98161458d565b9050919050565b7f5468652067616d65206973206e6f742072756e6e696e672c20726f756e64732060008201527f63616e206f6e6c7920626520656e646564206174207468697320706f696e7400602082015250565b600061462c603f836143ae565b9150614637826145d0565b604082019050919050565b6000602082019050818103600083015261465b8161461f565b9050919050565b600061466e8385613f28565b935061467b8385846139b9565b614684836138fc565b840190509392505050565b600060c08201905081810360008301526146aa81898b614662565b90506146b96020830188613e55565b6146c66040830187613a8e565b6146d36060830186613aa7565b6146e06080830185613aa7565b6146ed60a0830184613aa7565b98975050505050505050565b60006080820190508181036000830152614714818789614662565b90506147236020830186613e55565b6147306040830185613a8e565b61473d6060830184613a8e565b9695505050505050565b600080fd5b600080fd5b600080fd5b6000808335600160200384360303811261477357614772614747565b5b80840192508235915067ffffffffffffffff8211156147955761479461474c565b5b6020830192506001820236038313156147b1576147b0614751565b5b509250929050565b7f5468697320706f6f6c20686173206120726f756e6420696e2070726f6772657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006148156021836143ae565b9150614820826147b9565b604082019050919050565b6000602082019050818103600083015261484481614808565b9050919050565b7f5468652067616d65206973206e6f742072756e6e696e67000000000000000000600082015250565b60006148816017836143ae565b915061488c8261484b565b602082019050919050565b600060208201905081810360008301526148b081614874565b9050919050565b7f4e6565647320746f2073656e64204d6174696320746f20747261646500000000600082015250565b60006148ed601c836143ae565b91506148f8826148b7565b602082019050919050565b6000602082019050818103600083015261491c816148e0565b9050919050565b7f547261646520616d6f756e742073686f756c642062652068696768657220746860008201527f616e20746865206d696e696d756d000000000000000000000000000000000000602082015250565b600061497f602e836143ae565b915061498a82614923565b604082019050919050565b600060208201905081810360008301526149ae81614972565b9050919050565b7f547261646520616d6f756e742073686f756c64206265206c6f7765722074686160008201527f6e20746865206d6178696d756d00000000000000000000000000000000000000602082015250565b6000614a11602d836143ae565b9150614a1c826149b5565b604082019050919050565b60006020820190508181036000830152614a4081614a04565b9050919050565b7f526f756e6420697320636c6f73696e6700000000000000000000000000000000600082015250565b6000614a7d6010836143ae565b9150614a8882614a47565b602082019050919050565b60006020820190508181036000830152614aac81614a70565b9050919050565b7f526f756e64206e6f742073746172746564207965740000000000000000000000600082015250565b6000614ae96015836143ae565b9150614af482614ab3565b602082019050919050565b60006020820190508181036000830152614b1881614adc565b9050919050565b614b28816137d5565b8114614b3357600080fd5b50565b600081359050614b4581614b1f565b92915050565b600060208284031215614b6157614b60613719565b5b6000614b6f84828501614b36565b91505092915050565b6000614b8382613a9d565b9150614b8e83613a9d565b925082821015614ba157614ba0614329565b5b828203905092915050565b7f506f6f6c2069732066756c6c2c207761697420666f72206e65787420726f756e60008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000614c086021836143ae565b9150614c1382614bac565b604082019050919050565b60006020820190508181036000830152614c3781614bfb565b9050919050565b60008083356001602003843603038112614c5b57614c5a614747565b5b80840192508235915067ffffffffffffffff821115614c7d57614c7c61474c565b5b602083019250600182023603831315614c9957614c98614751565b5b509250929050565b6000614cac82613c5e565b614cb681856143ae565b9350614cc6818560208601613c7a565b614ccf816138fc565b840191505092915050565b6000610120820190508181036000830152614cf6818c8e614662565b9050614d05602083018b6138cd565b614d12604083018a613aa7565b8181036060830152614d248189614ca1565b9050614d336080830188613aa7565b81810360a0830152614d458187614ca1565b905081810360c0830152614d598186614ca1565b9050614d6860e0830185613e55565b818103610100830152614d7b8184614ca1565b90509b9a5050505050505050505050565b7f57726f6e67206a61636b706f74206665652070657263656e746167652076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b6000614de86022836143ae565b9150614df382614d8c565b604082019050919050565b60006020820190508181036000830152614e1781614ddb565b9050919050565b600060a0820190508181036000830152614e3981888a614662565b9050614e486020830187613aa7565b614e556040830186613aa7565b614e626060830185613aa7565b614e6f6080830184613e55565b979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614eb482613a9d565b9150614ebf83613a9d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614ef857614ef7614329565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614f3d82613a9d565b9150614f4883613a9d565b925082614f5857614f57614f03565b5b828204905092915050565b60008190508160005260206000209050919050565b60008154614f85816144c6565b614f8f81866143ae565b94506001821660008114614faa5760018114614fbc57614fef565b60ff1983168652602086019350614fef565b614fc585614f63565b60005b83811015614fe757815481890152600182019150602081019050614fc8565b808801955050505b50505092915050565b600060e0820190508181036000830152615013818a8c614662565b905061502260208301896138cd565b61502f6040830188613aa7565b61503c6060830187613aa7565b818103608083015261504e8186614f78565b905061505d60a0830185613818565b61506a60c0830184613818565b9998505050505050505050565b600061508282613a9d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156150b5576150b4614329565b5b600182019050919050565b7f57726f6e67206665652070657263656e746167652076616c7565000000000000600082015250565b60006150f6601a836143ae565b9150615101826150c0565b602082019050919050565b60006020820190508181036000830152615125816150e9565b9050919050565b60006020820190508181036000830152615147818486614662565b90509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006151ac6026836143ae565b91506151b782615150565b604082019050919050565b600060208201905081810360008301526151db8161519f565b9050919050565b600060808201905081810360008301526151fd818789614662565b905061520c60208301866138cd565b6152196040830185613aa7565b818103606083015261522b8184614f78565b90509695505050505050565b50565b60006152476000836142e0565b915061525282615237565b600082019050919050565b60006152688261523a565b9150819050919050565b7f436f756c646e27742073656e6420657468657200000000000000000000000000600082015250565b60006152a86013836143ae565b91506152b382615272565b602082019050919050565b600060208201905081810360008301526152d78161529b565b905091905056fea26469706673582212203c736c8f1215112629020138a1978a77ad335b97b3ef2f05517f27c02a457a2164736f6c634300080a0033000000000000000000000000b58c4690281ef11bb50801f247f2782b7b316bda

Deployed Bytecode

0x6080604052600436106101665760003560e01c8063715018a6116100d1578063a7c3324d1161008a578063e470996911610064578063e4709969146104ed578063eab79b7d14610516578063f2fde38b1461053f578063f68256a81461056857610166565b8063a7c3324d14610484578063d4c770cf146104ad578063d65ab5f2146104d657610166565b8063715018a6146103a95780637b064240146103c057806381196ae2146103e95780638da5cb5b14610405578063900b7b3f14610430578063a001ecdd1461045957610166565b80633b9fe1ee116101235780633b9fe1ee1461028d5780633fafac92146102b857806341275358146102ff578063595dc8971461032a5780636518a0a9146103535780636f9fb98a1461037e57610166565b80630c2f915e1461016b578063159dc634146101a85780631c2db192146101d35780631d0d625b146101fc5780632014e5d11461022557806330efabd414610250575b600080fd5b34801561017757600080fd5b50610192600480360381019061018d9190613788565b610593565b60405161019f91906137f0565b60405180910390f35b3480156101b457600080fd5b506101bd6105fd565b6040516101ca9190613827565b60405180910390f35b3480156101df57600080fd5b506101fa60048036038101906101f591906138a0565b610610565b005b34801561020857600080fd5b50610223600480360381019061021e91906138a0565b610740565b005b34801561023157600080fd5b5061023a610870565b60405161024791906137f0565b60405180910390f35b34801561025c57600080fd5b5061027760048036038101906102729190613788565b610883565b60405161028491906137f0565b60405180910390f35b34801561029957600080fd5b506102a26108c3565b6040516102af91906138dc565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da9190613a38565b6108e9565b6040516102f69b9a99989796959493929190613e64565b60405180910390f35b34801561030b57600080fd5b506103146110c1565b60405161032191906138dc565b60405180910390f35b34801561033657600080fd5b50610351600480360381019061034c91906138a0565b6110e7565b005b34801561035f57600080fd5b50610368611217565b6040516103759190613f72565b60405180910390f35b34801561038a57600080fd5b506103936112a5565b6040516103a09190613f94565b60405180910390f35b3480156103b557600080fd5b506103be6112ad565b005b3480156103cc57600080fd5b506103e760048036038101906103e2919061406f565b611335565b005b61040360048036038101906103fe9190614142565b6116a8565b005b34801561041157600080fd5b5061041a611ee7565b60405161042791906138dc565b60405180910390f35b34801561043c57600080fd5b50610457600480360381019061045291906141b7565b611f10565b005b34801561046557600080fd5b5061046e611ff1565b60405161047b9190613827565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a691906141e4565b612004565b005b3480156104b957600080fd5b506104d460048036038101906104cf91906141b7565b6127d1565b005b3480156104e257600080fd5b506104eb6128b2565b005b3480156104f957600080fd5b50610514600480360381019061050f9190614258565b61299d565b005b34801561052257600080fd5b5061053d60048036038101906105389190613788565b612ae8565b005b34801561054b57600080fd5b50610566600480360381019061056191906138a0565b612bce565b005b34801561057457600080fd5b5061057d612cc6565b60405161058a91906138dc565b60405180910390f35b600080600284846040516105a8929190614310565b9081526020016040518091039020600c0160000180549050600285856040516105d2929190614310565b9081526020016040518091039020600401600001805490506105f49190614358565b11905092915050565b600360019054906101000a900460ff1681565b610618612cec565b73ffffffffffffffffffffffffffffffffffffffff16610636611ee7565b73ffffffffffffffffffffffffffffffffffffffff161461068c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106839061440b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156106fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f390614477565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610748612cec565b73ffffffffffffffffffffffffffffffffffffffff16610766611ee7565b73ffffffffffffffffffffffffffffffffffffffff16146107bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b39061440b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561082c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082390614477565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600460149054906101000a900460ff1681565b60008060028484604051610898929190614310565b908152602001604051809103902060000160019054906101000a900460030b60030b14905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002818051602081018201805184825260208301602085012081835280955050505050506000915090508060000160009054906101000a900460ff16908060000160019054906101000a900460030b908060000160059054906101000a900460030b908060010154908060020154908060030154908060040160405180610100016040529081600082018054806020026020016040519081016040528092919081815260200182805480156109bd57602002820191906000526020600020905b8154815260200190600101908083116109a9575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610a4b57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610a01575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015610b25578382906000526020600020018054610a98906144c6565b80601f0160208091040260200160405190810160405280929190818152602001828054610ac4906144c6565b8015610b115780601f10610ae657610100808354040283529160200191610b11565b820191906000526020600020905b815481529060010190602001808311610af457829003601f168201915b505050505081526020019060010190610a79565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015610bfe578382906000526020600020018054610b71906144c6565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9d906144c6565b8015610bea5780601f10610bbf57610100808354040283529160200191610bea565b820191906000526020600020905b815481529060010190602001808311610bcd57829003601f168201915b505050505081526020019060010190610b52565b50505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015610cd7578382906000526020600020018054610c4a906144c6565b80601f0160208091040260200160405190810160405280929190818152602001828054610c76906144c6565b8015610cc35780601f10610c9857610100808354040283529160200191610cc3565b820191906000526020600020905b815481529060010190602001808311610ca657829003601f168201915b505050505081526020019060010190610c2b565b50505050815260200160058201548152602001600682015481526020016007820154815250509080600c016040518061010001604052908160008201805480602002602001604051908101604052809291908181526020018280548015610d5d57602002820191906000526020600020905b815481526020019060010190808311610d49575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610deb57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610da1575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015610ec5578382906000526020600020018054610e38906144c6565b80601f0160208091040260200160405190810160405280929190818152602001828054610e64906144c6565b8015610eb15780601f10610e8657610100808354040283529160200191610eb1565b820191906000526020600020905b815481529060010190602001808311610e9457829003601f168201915b505050505081526020019060010190610e19565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015610f9e578382906000526020600020018054610f11906144c6565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3d906144c6565b8015610f8a5780601f10610f5f57610100808354040283529160200191610f8a565b820191906000526020600020905b815481529060010190602001808311610f6d57829003601f168201915b505050505081526020019060010190610ef2565b50505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015611077578382906000526020600020018054610fea906144c6565b80601f0160208091040260200160405190810160405280929190818152602001828054611016906144c6565b80156110635780601f1061103857610100808354040283529160200191611063565b820191906000526020600020905b81548152906001019060200180831161104657829003601f168201915b505050505081526020019060010190610fcb565b5050505081526020016005820154815260200160068201548152602001600782015481525050908060140160009054906101000a900460070b90806015015490806016015490508b565b600360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6110ef612cec565b73ffffffffffffffffffffffffffffffffffffffff1661110d611ee7565b73ffffffffffffffffffffffffffffffffffffffff1614611163576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115a9061440b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156111d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ca90614477565b60405180910390fd5b80600360026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60058054611224906144c6565b80601f0160208091040260200160405190810160405280929190818152602001828054611250906144c6565b801561129d5780601f106112725761010080835404028352916020019161129d565b820191906000526020600020905b81548152906001019060200180831161128057829003601f168201915b505050505081565b600047905090565b6112b5612cec565b73ffffffffffffffffffffffffffffffffffffffff166112d3611ee7565b73ffffffffffffffffffffffffffffffffffffffff1614611329576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113209061440b565b60405180910390fd5b6113336000612cf4565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bc90614544565b60405180910390fd5b8686600282826040516113d9929190614310565b908152602001604051809103902060000160009054906101000a900460ff16611437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142e906145b0565b60405180910390fd5b600060028a8a60405161144b929190614310565b908152602001604051809103902090506114658a8a610883565b1561159c57600460149054906101000a900460ff166114b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b090614642565b60405180910390fd5b848160000160016101000a81548163ffffffff021916908360030b63ffffffff160217905550878160140160006101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff160217905550868160150181905550858160160181905550898960405161152f929190614310565b60405180910390207f977f157300bb4d69d09b3e083fb55a17a0c02f978e5b220c08173c63de9665aa8b8b8b8560000160019054906101000a900460030b86600101548760020154886003015460405161158f979695949392919061468f565b60405180910390a261169c565b60008160000160059054906101000a900460030b60030b141561166957848160000160056101000a81548163ffffffff021916908360030b63ffffffff16021790555089896040516115ef929190614310565b60405180910390207fe097bf610f5827ffcdd36eb07b790e6ee02dd498f911ab45664208cfad9323b08b8b8b8560000160019054906101000a900460030b8660000160059054906101000a900460030b6040516116509594939291906146f9565b60405180910390a26116648a8a868b612004565b61169b565b6040517fd56be5db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050505050505050565b8080600001906116b89190614756565b6116c28282610883565b611701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f89061482b565b60405180910390fd5b600460149054906101000a900460ff16611750576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174790614897565b60405180910390fd5b8280600001906117609190614756565b60028282604051611772929190614310565b908152602001604051809103902060000160009054906101000a900460ff166117d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c7906145b0565b60405180910390fd5b60003411611813576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180a90614903565b60405180910390fd5b60028580600001906118259190614756565b604051611833929190614310565b908152602001604051809103902060010154341015611887576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187e90614995565b60405180910390fd5b60028580600001906118999190614756565b6040516118a7929190614310565b9081526020016040518091039020600201543411156118fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f290614a27565b60405180910390fd5b600285806000019061190d9190614756565b60405161191b929190614310565b90815260200160405180910390206016015442111561196f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196690614a93565b60405180910390fd5b60028580600001906119819190614756565b60405161198f929190614310565b9081526020016040518091039020601501544210156119e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119da90614aff565b60405180910390fd5b60008560600160208101906119f89190614b4b565b15611b255760016002878060000190611a119190614756565b604051611a1f929190614310565b908152602001604051809103902060030154611a3b9190614b78565b6002878060000190611a4d9190614756565b604051611a5b929190614310565b9081526020016040518091039020600401600001805490501115611ab4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aab90614c1e565b60405180910390fd5b611b1e6002878060000190611ac99190614756565b604051611ad7929190614310565b908152602001604051809103902060040134888060200190611af99190614c3e565b8a8060400190611b099190614c3e565b8c8060800190611b199190614c3e565b612db8565b9050611c49565b60016002878060000190611b399190614756565b604051611b47929190614310565b908152602001604051809103902060030154611b639190614b78565b6002878060000190611b759190614756565b604051611b83929190614310565b9081526020016040518091039020600c01600001805490501115611bdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd390614c1e565b60405180910390fd5b611c466002878060000190611bf19190614756565b604051611bff929190614310565b9081526020016040518091039020600c0134888060200190611c219190614c3e565b8a8060400190611c319190614c3e565b8c8060800190611c419190614c3e565b612db8565b90505b611c51613438565b868060200190611c619190614c3e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508160000181905250868060400190611cbc9190614c3e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508160200181905250868060800190611d179190614c3e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081604001819052506002878060000190611d749190614756565b604051611d82929190614310565b908152602001604051809103902060140160009054906101000a900460070b816060019060070b908160070b815250503373ffffffffffffffffffffffffffffffffffffffff16878060000190611dd99190614756565b604051611de7929190614310565b60405180910390207f68f6fc9b4292a4019c38f766d951dada112bf514a9fa2245e113dd0d72f28615898060000190611e209190614756565b33348d6060016020810190611e359190614b4b565b611e74576040518060400160405280600481526020017f444f574e00000000000000000000000000000000000000000000000000000000815250611eab565b6040518060400160405280600281526020017f55500000000000000000000000000000000000000000000000000000000000008152505b8989600001518a602001518b606001518c60400151604051611ed69a99989796959493929190614cda565b60405180910390a350505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611f18612cec565b73ffffffffffffffffffffffffffffffffffffffff16611f36611ee7565b73ffffffffffffffffffffffffffffffffffffffff1614611f8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f839061440b565b60405180910390fd5b60648160ff161115611fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fca90614dfe565b60405180910390fd5b80600360016101000a81548160ff021916908360ff16021790555050565b600360009054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612094576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208b90614544565b60405180910390fd5b8383600282826040516120a8929190614310565b908152602001604051809103902060000160009054906101000a900460ff16612106576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120fd906145b0565b60405180910390fd5b60006002878760405161211a929190614310565b9081526020016040518091039020905060008160040160000180549050148061214d5750600081600c0160000180549050145b8061217f57508060000160059054906101000a900460030b60030b8160000160019054906101000a900460030b60030b145b1561236e578060000160059054906101000a900460030b60030b8160000160019054906101000a900460030b60030b14156122c3576000816004019050600082600c0190506000826006015490506000826006015490506121e28b8b868c612f38565b6121ee8b8b858c612f38565b7fd86802201c3bf5d79ef71027c49cdfdee99fa298848917618ba148d098f15f748b8b86600001805490508588600601548d60405161223296959493929190614e1e565b60405180910390a17fd86802201c3bf5d79ef71027c49cdfdee99fa298848917618ba148d098f15f748b8b85600001805490508487600601548d60405161227e96959493929190614e1e565b60405180910390a1836000018054905084600601541480156122aa575082600001805490508360060154145b156122ba576122b98b8b6130e6565b5b50505050612368565b60008082600c0160000180549050146122df5781600c016122e4565b816004015b90506000816006015490506122fb8989848a612f38565b7fd86802201c3bf5d79ef71027c49cdfdee99fa298848917618ba148d098f15f74898984600001805490508486600601548b60405161233f96959493929190614e1e565b60405180910390a18160000180549050826006015414156123655761236489896130e6565b5b50505b506127c9565b600081600c01905060008260040190508260000160059054906101000a900460030b60030b8360000160019054906101000a900460030b60030b12156123bb5782600401915082600c0190505b60006123c78383613272565b905060008863ffffffff168260a00151116123e6578160a001516123ee565b8863ffffffff165b905060008185600601546124029190614358565b90506000856006015490505b8181101561264b57600060648760050154606487608001518a600001868154811061243c5761243b614e7a565b5b90600052602060002001546124519190614ea9565b61245b9190614ea9565b6124659190614f32565b61246f9190614f32565b90506124e687600101838154811061248a57612489614e7a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168860000184815481106124cb576124ca614e7a565b5b9060005260206000200154836124e19190614358565b613381565b8660010182815481106124fc576124fb614e7a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fc6f8d1369ef8a4d7d8373cd5079d27245ff35d49aba7ff57de55fbaf8d53813b8f8f8a600101868154811061257657612575614e7a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168b60000187815481106125b7576125b6614e7a565b5b9060005260206000200154868d60040189815481106125d9576125d8614e7a565b5b90600052602060002001600360009054906101000a900460ff16600360019054906101000a900460ff16604051612617989796959493929190614ff8565b60405180910390a280876007015461262f9190614358565b876007018190555050808061264390615077565b91505061240e565b507fd86802201c3bf5d79ef71027c49cdfdee99fa298848917618ba148d098f15f748c8c87600001805490508860060154858e60405161269096959493929190614e1e565b60405180910390a18085600601819055508460000180549050856006015414156127c25761271c600360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff166064600360009054906101000a900460ff1660ff16866040015187600001516127039190614358565b61270d9190614ea9565b6127179190614f32565b613381565b612784600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166064600360019054906101000a900460ff1660ff168660600151876020015161276b9190614358565b6127759190614ea9565b61277f9190614f32565b613381565b6127b7600360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff166127b26112a5565b613381565b6127c18c8c6130e6565b5b5050505050505b505050505050565b6127d9612cec565b73ffffffffffffffffffffffffffffffffffffffff166127f7611ee7565b73ffffffffffffffffffffffffffffffffffffffff161461284d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128449061440b565b60405180910390fd5b60648160ff161115612894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288b9061510c565b60405180910390fd5b80600360006101000a81548160ff021916908360ff16021790555050565b6128ba612cec565b73ffffffffffffffffffffffffffffffffffffffff166128d8611ee7565b73ffffffffffffffffffffffffffffffffffffffff161461292e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129259061440b565b60405180910390fd5b6001600460146101000a81548160ff021916908315150217905550604051806020016040528060008152506005908051906020019061296e929190613463565b507f762f260439bb4be3ef6e4dc2786e2e7bd187d3d80b79057d7a424fe98563e33560405160405180910390a1565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612a2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2490614544565b60405180910390fd5b600160028686604051612a41929190614310565b908152602001604051809103902060000160006101000a81548160ff0219169083151502179055508260028686604051612a7c929190614310565b9081526020016040518091039020600101819055508160028686604051612aa4929190614310565b9081526020016040518091039020600201819055508060028686604051612acc929190614310565b9081526020016040518091039020600301819055505050505050565b612af0612cec565b73ffffffffffffffffffffffffffffffffffffffff16612b0e611ee7565b73ffffffffffffffffffffffffffffffffffffffff1614612b64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5b9061440b565b60405180910390fd5b6000600460146101000a81548160ff021916908315150217905550818160059190612b909291906134e9565b507fbbed56c796999ec9481de9169e54d6f193c57a335189c8b82053d80e263fdbd68282604051612bc292919061512c565b60405180910390a15050565b612bd6612cec565b73ffffffffffffffffffffffffffffffffffffffff16612bf4611ee7565b73ffffffffffffffffffffffffffffffffffffffff1614612c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c419061440b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612cba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cb1906151c2565b60405180910390fd5b612cc381612cf4565b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008860000188908060018154018082558091505060019003906000526020600020016000909190919091505588600101339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555088600201878790918060018154018082558091505060019003906000526020600020016000909192909192909192909192509190612e8992919061356f565b5088600301858590918060018154018082558091505060019003906000526020600020016000909192909192909192909192509190612ec992919061356f565b5088600401838390918060018154018082558091505060019003906000526020600020016000909192909192909192909192509190612f0992919061356f565b5087896005016000828254612f1e9190614358565b925050819055508860050154905098975050505050505050565b600082600601548360000180549050612f519190614b78565b905060008263ffffffff168211612f685781612f70565b8263ffffffff165b90506000818560060154612f849190614358565b90506000856006015490505b818110156130d357613002866001018281548110612fb157612fb0614e7a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16876000018381548110612ff257612ff1614e7a565b5b9060005260206000200154613381565b7fb9b3cf88e16ddd6b941ffa04b763047af17bafd3cdecef4d26d46f43e64c1205888888600101848154811061303b5761303a614e7a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689600001858154811061307c5761307b614e7a565b5b90600052602060002001548a600401868154811061309d5761309c614e7a565b5b906000526020600020016040516130b89594939291906151e2565b60405180910390a180806130cb90615077565b915050612f90565b5080856006018190555050505050505050565b600282826040516130f8929190614310565b90815260200160405180910390206004016000808201600061311a91906135f5565b60018201600061312a9190613616565b60028201600061313a9190613637565b60038201600061314a9190613637565b60048201600061315a9190613637565b600582016000905560068201600090556007820160009055505060028282604051613186929190614310565b9081526020016040518091039020600c01600080820160006131a891906135f5565b6001820160006131b89190613616565b6002820160006131c89190613637565b6003820160006131d89190613637565b6004820160006131e89190613637565b600582016000905560068201600090556007820160009055505060028282604051613214929190614310565b908152602001604051809103902060000160016101000a81549063ffffffff02191690556002828260405161324a929190614310565b908152602001604051809103902060000160056101000a81549063ffffffff02191690555050565b61327a613658565b600060648360050154600360009054906101000a900460ff1660ff166132a09190614ea9565b6132aa9190614f32565b9050600060648460050154600360019054906101000a900460ff1660ff166132d29190614ea9565b6132dc9190614f32565b9050600081836132ec9190614358565b90506000866006015487600001805490506133079190614b78565b9050600082876005015461331b9190614b78565b9050600085886005015461332f9190614b78565b905060008589600501546133439190614b78565b90506040518060c001604052808881526020018781526020018381526020018281526020018481526020018581525097505050505050505092915050565b6000808373ffffffffffffffffffffffffffffffffffffffff166000846040516133aa9061525d565b600060405180830381858888f193505050503d80600081146133e8576040519150601f19603f3d011682016040523d82523d6000602084013e6133ed565b606091505b509150915081613432576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613429906152be565b60405180910390fd5b50505050565b6040518060800160405280606081526020016060815260200160608152602001600060070b81525090565b82805461346f906144c6565b90600052602060002090601f01602090048101928261349157600085556134d8565b82601f106134aa57805160ff19168380011785556134d8565b828001600101855582156134d8579182015b828111156134d75782518255916020019190600101906134bc565b5b5090506134e5919061368e565b5090565b8280546134f5906144c6565b90600052602060002090601f016020900481019282613517576000855561355e565b82601f1061353057803560ff191683800117855561355e565b8280016001018555821561355e579182015b8281111561355d578235825591602001919060010190613542565b5b50905061356b919061368e565b5090565b82805461357b906144c6565b90600052602060002090601f01602090048101928261359d57600085556135e4565b82601f106135b657803560ff19168380011785556135e4565b828001600101855582156135e4579182015b828111156135e35782358255916020019190600101906135c8565b5b5090506135f1919061368e565b5090565b5080546000825590600052602060002090810190613613919061368e565b50565b5080546000825590600052602060002090810190613634919061368e565b50565b508054600082559060005260206000209081019061365591906136ab565b50565b6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5b808211156136a757600081600090555060010161368f565b5090565b5b808211156136cb57600081816136c291906136cf565b506001016136ac565b5090565b5080546136db906144c6565b6000825580601f106136ed575061370c565b601f01602090049060005260206000209081019061370b919061368e565b5b50565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f84011261374857613747613723565b5b8235905067ffffffffffffffff81111561376557613764613728565b5b6020830191508360018202830111156137815761378061372d565b5b9250929050565b6000806020838503121561379f5761379e613719565b5b600083013567ffffffffffffffff8111156137bd576137bc61371e565b5b6137c985828601613732565b92509250509250929050565b60008115159050919050565b6137ea816137d5565b82525050565b600060208201905061380560008301846137e1565b92915050565b600060ff82169050919050565b6138218161380b565b82525050565b600060208201905061383c6000830184613818565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061386d82613842565b9050919050565b61387d81613862565b811461388857600080fd5b50565b60008135905061389a81613874565b92915050565b6000602082840312156138b6576138b5613719565b5b60006138c48482850161388b565b91505092915050565b6138d681613862565b82525050565b60006020820190506138f160008301846138cd565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613945826138fc565b810181811067ffffffffffffffff821117156139645761396361390d565b5b80604052505050565b600061397761370f565b9050613983828261393c565b919050565b600067ffffffffffffffff8211156139a3576139a261390d565b5b6139ac826138fc565b9050602081019050919050565b82818337600083830152505050565b60006139db6139d684613988565b61396d565b9050828152602081018484840111156139f7576139f66138f7565b5b613a028482856139b9565b509392505050565b600082601f830112613a1f57613a1e613723565b5b8135613a2f8482602086016139c8565b91505092915050565b600060208284031215613a4e57613a4d613719565b5b600082013567ffffffffffffffff811115613a6c57613a6b61371e565b5b613a7884828501613a0a565b91505092915050565b60008160030b9050919050565b613a9781613a81565b82525050565b6000819050919050565b613ab081613a9d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613aeb81613a9d565b82525050565b6000613afd8383613ae2565b60208301905092915050565b6000602082019050919050565b6000613b2182613ab6565b613b2b8185613ac1565b9350613b3683613ad2565b8060005b83811015613b67578151613b4e8882613af1565b9750613b5983613b09565b925050600181019050613b3a565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613ba981613862565b82525050565b6000613bbb8383613ba0565b60208301905092915050565b6000602082019050919050565b6000613bdf82613b74565b613be98185613b7f565b9350613bf483613b90565b8060005b83811015613c25578151613c0c8882613baf565b9750613c1783613bc7565b925050600181019050613bf8565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613c98578082015181840152602081019050613c7d565b83811115613ca7576000848401525b50505050565b6000613cb882613c5e565b613cc28185613c69565b9350613cd2818560208601613c7a565b613cdb816138fc565b840191505092915050565b6000613cf28383613cad565b905092915050565b6000602082019050919050565b6000613d1282613c32565b613d1c8185613c3d565b935083602082028501613d2e85613c4e565b8060005b85811015613d6a5784840389528151613d4b8582613ce6565b9450613d5683613cfa565b925060208a01995050600181019050613d32565b50829750879550505050505092915050565b6000610100830160008301518482036000860152613d9a8282613b16565b91505060208301518482036020860152613db48282613bd4565b91505060408301518482036040860152613dce8282613d07565b91505060608301518482036060860152613de88282613d07565b91505060808301518482036080860152613e028282613d07565b91505060a0830151613e1760a0860182613ae2565b5060c0830151613e2a60c0860182613ae2565b5060e0830151613e3d60e0860182613ae2565b508091505092915050565b60008160070b9050919050565b613e5e81613e48565b82525050565b600061016082019050613e7a600083018e6137e1565b613e87602083018d613a8e565b613e94604083018c613a8e565b613ea1606083018b613aa7565b613eae608083018a613aa7565b613ebb60a0830189613aa7565b81810360c0830152613ecd8188613d7c565b905081810360e0830152613ee18187613d7c565b9050613ef1610100830186613e55565b613eff610120830185613aa7565b613f0d610140830184613aa7565b9c9b505050505050505050505050565b600081519050919050565b600082825260208201905092915050565b6000613f4482613f1d565b613f4e8185613f28565b9350613f5e818560208601613c7a565b613f67816138fc565b840191505092915050565b60006020820190508181036000830152613f8c8184613f39565b905092915050565b6000602082019050613fa96000830184613aa7565b92915050565b613fb881613e48565b8114613fc357600080fd5b50565b600081359050613fd581613faf565b92915050565b613fe481613a9d565b8114613fef57600080fd5b50565b60008135905061400181613fdb565b92915050565b61401081613a81565b811461401b57600080fd5b50565b60008135905061402d81614007565b92915050565b600063ffffffff82169050919050565b61404c81614033565b811461405757600080fd5b50565b60008135905061406981614043565b92915050565b600080600080600080600060c0888a03121561408e5761408d613719565b5b600088013567ffffffffffffffff8111156140ac576140ab61371e565b5b6140b88a828b01613732565b975097505060206140cb8a828b01613fc6565b95505060406140dc8a828b01613ff2565b94505060606140ed8a828b01613ff2565b93505060806140fe8a828b0161401e565b92505060a061410f8a828b0161405a565b91505092959891949750929550565b600080fd5b600060a082840312156141395761413861411e565b5b81905092915050565b60006020828403121561415857614157613719565b5b600082013567ffffffffffffffff8111156141765761417561371e565b5b61418284828501614123565b91505092915050565b6141948161380b565b811461419f57600080fd5b50565b6000813590506141b18161418b565b92915050565b6000602082840312156141cd576141cc613719565b5b60006141db848285016141a2565b91505092915050565b600080600080606085870312156141fe576141fd613719565b5b600085013567ffffffffffffffff81111561421c5761421b61371e565b5b61422887828801613732565b9450945050602061423b8782880161405a565b925050604061424c87828801613fc6565b91505092959194509250565b60008060008060006080868803121561427457614273613719565b5b600086013567ffffffffffffffff8111156142925761429161371e565b5b61429e88828901613732565b955095505060206142b188828901613ff2565b93505060406142c288828901613ff2565b92505060606142d388828901613ff2565b9150509295509295909350565b600081905092915050565b60006142f783856142e0565b93506143048385846139b9565b82840190509392505050565b600061431d8284866142eb565b91508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061436382613a9d565b915061436e83613a9d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156143a3576143a2614329565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006143f56020836143ae565b9150614400826143bf565b602082019050919050565b60006020820190508181036000830152614424816143e8565b9050919050565b7f416464726573732063616e6e6f74206265207a65726f20616464726573730000600082015250565b6000614461601e836143ae565b915061446c8261442b565b602082019050919050565b6000602082019050818103600083015261449081614454565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806144de57607f821691505b602082108114156144f2576144f1614497565b5b50919050565b7f4f6e6c792067616d6520636f6e74726f6c6c65722063616e20646f2074686973600082015250565b600061452e6020836143ae565b9150614539826144f8565b602082019050919050565b6000602082019050818103600083015261455d81614521565b9050919050565b7f506f6f6c20646f6573206e6f7420657869737400000000000000000000000000600082015250565b600061459a6013836143ae565b91506145a582614564565b602082019050919050565b600060208201905081810360008301526145c98161458d565b9050919050565b7f5468652067616d65206973206e6f742072756e6e696e672c20726f756e64732060008201527f63616e206f6e6c7920626520656e646564206174207468697320706f696e7400602082015250565b600061462c603f836143ae565b9150614637826145d0565b604082019050919050565b6000602082019050818103600083015261465b8161461f565b9050919050565b600061466e8385613f28565b935061467b8385846139b9565b614684836138fc565b840190509392505050565b600060c08201905081810360008301526146aa81898b614662565b90506146b96020830188613e55565b6146c66040830187613a8e565b6146d36060830186613aa7565b6146e06080830185613aa7565b6146ed60a0830184613aa7565b98975050505050505050565b60006080820190508181036000830152614714818789614662565b90506147236020830186613e55565b6147306040830185613a8e565b61473d6060830184613a8e565b9695505050505050565b600080fd5b600080fd5b600080fd5b6000808335600160200384360303811261477357614772614747565b5b80840192508235915067ffffffffffffffff8211156147955761479461474c565b5b6020830192506001820236038313156147b1576147b0614751565b5b509250929050565b7f5468697320706f6f6c20686173206120726f756e6420696e2070726f6772657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006148156021836143ae565b9150614820826147b9565b604082019050919050565b6000602082019050818103600083015261484481614808565b9050919050565b7f5468652067616d65206973206e6f742072756e6e696e67000000000000000000600082015250565b60006148816017836143ae565b915061488c8261484b565b602082019050919050565b600060208201905081810360008301526148b081614874565b9050919050565b7f4e6565647320746f2073656e64204d6174696320746f20747261646500000000600082015250565b60006148ed601c836143ae565b91506148f8826148b7565b602082019050919050565b6000602082019050818103600083015261491c816148e0565b9050919050565b7f547261646520616d6f756e742073686f756c642062652068696768657220746860008201527f616e20746865206d696e696d756d000000000000000000000000000000000000602082015250565b600061497f602e836143ae565b915061498a82614923565b604082019050919050565b600060208201905081810360008301526149ae81614972565b9050919050565b7f547261646520616d6f756e742073686f756c64206265206c6f7765722074686160008201527f6e20746865206d6178696d756d00000000000000000000000000000000000000602082015250565b6000614a11602d836143ae565b9150614a1c826149b5565b604082019050919050565b60006020820190508181036000830152614a4081614a04565b9050919050565b7f526f756e6420697320636c6f73696e6700000000000000000000000000000000600082015250565b6000614a7d6010836143ae565b9150614a8882614a47565b602082019050919050565b60006020820190508181036000830152614aac81614a70565b9050919050565b7f526f756e64206e6f742073746172746564207965740000000000000000000000600082015250565b6000614ae96015836143ae565b9150614af482614ab3565b602082019050919050565b60006020820190508181036000830152614b1881614adc565b9050919050565b614b28816137d5565b8114614b3357600080fd5b50565b600081359050614b4581614b1f565b92915050565b600060208284031215614b6157614b60613719565b5b6000614b6f84828501614b36565b91505092915050565b6000614b8382613a9d565b9150614b8e83613a9d565b925082821015614ba157614ba0614329565b5b828203905092915050565b7f506f6f6c2069732066756c6c2c207761697420666f72206e65787420726f756e60008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000614c086021836143ae565b9150614c1382614bac565b604082019050919050565b60006020820190508181036000830152614c3781614bfb565b9050919050565b60008083356001602003843603038112614c5b57614c5a614747565b5b80840192508235915067ffffffffffffffff821115614c7d57614c7c61474c565b5b602083019250600182023603831315614c9957614c98614751565b5b509250929050565b6000614cac82613c5e565b614cb681856143ae565b9350614cc6818560208601613c7a565b614ccf816138fc565b840191505092915050565b6000610120820190508181036000830152614cf6818c8e614662565b9050614d05602083018b6138cd565b614d12604083018a613aa7565b8181036060830152614d248189614ca1565b9050614d336080830188613aa7565b81810360a0830152614d458187614ca1565b905081810360c0830152614d598186614ca1565b9050614d6860e0830185613e55565b818103610100830152614d7b8184614ca1565b90509b9a5050505050505050505050565b7f57726f6e67206a61636b706f74206665652070657263656e746167652076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b6000614de86022836143ae565b9150614df382614d8c565b604082019050919050565b60006020820190508181036000830152614e1781614ddb565b9050919050565b600060a0820190508181036000830152614e3981888a614662565b9050614e486020830187613aa7565b614e556040830186613aa7565b614e626060830185613aa7565b614e6f6080830184613e55565b979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614eb482613a9d565b9150614ebf83613a9d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614ef857614ef7614329565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614f3d82613a9d565b9150614f4883613a9d565b925082614f5857614f57614f03565b5b828204905092915050565b60008190508160005260206000209050919050565b60008154614f85816144c6565b614f8f81866143ae565b94506001821660008114614faa5760018114614fbc57614fef565b60ff1983168652602086019350614fef565b614fc585614f63565b60005b83811015614fe757815481890152600182019150602081019050614fc8565b808801955050505b50505092915050565b600060e0820190508181036000830152615013818a8c614662565b905061502260208301896138cd565b61502f6040830188613aa7565b61503c6060830187613aa7565b818103608083015261504e8186614f78565b905061505d60a0830185613818565b61506a60c0830184613818565b9998505050505050505050565b600061508282613a9d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156150b5576150b4614329565b5b600182019050919050565b7f57726f6e67206665652070657263656e746167652076616c7565000000000000600082015250565b60006150f6601a836143ae565b9150615101826150c0565b602082019050919050565b60006020820190508181036000830152615125816150e9565b9050919050565b60006020820190508181036000830152615147818486614662565b90509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006151ac6026836143ae565b91506151b782615150565b604082019050919050565b600060208201905081810360008301526151db8161519f565b9050919050565b600060808201905081810360008301526151fd818789614662565b905061520c60208301866138cd565b6152196040830185613aa7565b818103606083015261522b8184614f78565b90509695505050505050565b50565b60006152476000836142e0565b915061525282615237565b600082019050919050565b60006152688261523a565b9150819050919050565b7f436f756c646e27742073656e6420657468657200000000000000000000000000600082015250565b60006152a86013836143ae565b91506152b382615272565b602082019050919050565b600060208201905081810360008301526152d78161529b565b905091905056fea26469706673582212203c736c8f1215112629020138a1978a77ad335b97b3ef2f05517f27c02a457a2164736f6c634300080a0033

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

000000000000000000000000b58c4690281ef11bb50801f247f2782b7b316bda

-----Decoded View---------------
Arg [0] : newGameController (address): 0xb58C4690281ef11bb50801f247F2782b7B316bda

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000b58c4690281ef11bb50801f247f2782b7b316bda


Deployed Bytecode Sourcemap

3219:13722:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13635:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4102:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6899:226;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6024:235;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4289:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13837:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4209:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4026:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;4144:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6702:191;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4315:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8805:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2513:94;;;;;;;;;;;;;:::i;:::-;;7744:1055;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14732:1995;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1862:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6462:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4067:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9470:3154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6265:191;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7288:120;;;;;;;;;;;;;:::i;:::-;;7414:324;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7131:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2762:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3992:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13635:196;13722:4;13824:1;13782:5;13788:6;;13782:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:26;;:31;;:38;;;;13743:5;13749:6;;13743:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:24;;:29;;:36;;;;:77;;;;:::i;:::-;13742:83;13735:90;;13635:196;;;;:::o;4102:37::-;;;;;;;;;;;;;:::o;6899:226::-;2093:12;:10;:12::i;:::-;2082:23;;:7;:5;:7::i;:::-;:23;;;2074:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7030:3:::1;6998:36;;:20;:36;;;;6990:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;7099:20;7079:17;;:40;;;;;;;;;;;;;;;;;;6899:226:::0;:::o;6024:235::-;2093:12;:10;:12::i;:::-;2082:23;;:7;:5;:7::i;:::-;:23;;;2074:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6163:3:::1;6127:40;;:24;:40;;;;6119:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;6229:24;6212:14;;:41;;;;;;;;;;;;;;;;;;6024:235:::0;:::o;4289:21::-;;;;;;;;;;;;;:::o;13837:129::-;13911:4;13959:1;13931:5;13937:6;;13931:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:24;;;;;;;;;;;;:29;;;13924:36;;13837:129;;;;:::o;4209:45::-;;;;;;;;;;;;;:::o;4026:36::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4144:38::-;;;;;;;;;;;;;:::o;6702:191::-;2093:12;:10;:12::i;:::-;2082:23;;:7;:5;:7::i;:::-;:23;;;2074:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6812:3:::1;6787:29;;:13;:29;;;;6779:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6874:13;6861:10;;:26;;;;;;;;;;;;;;;;;;6702:191:::0;:::o;4315:29::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8805:101::-;8856:7;8879:21;8872:28;;8805:101;:::o;2513:94::-;2093:12;:10;:12::i;:::-;2082:23;;:7;:5;:7::i;:::-;:23;;;2074:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2578:21:::1;2596:1;2578:9;:21::i;:::-;2513:94::o:0;7744:1055::-;5480:14;;;;;;;;;;;5466:28;;:10;:28;;;5458:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7957:6:::1;;5851:5;5857:6;;5851:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:21;;;;;;;;;;;;5843:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;7972:26:::2;8001:5;8007:6;;8001:13;;;;;;;:::i;:::-;;;;;;;;;;;;;7972:42;;8026:18;8037:6;;8026:10;:18::i;:::-;8023:771;;;8063:9;;;;;;;;;;;8055:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;8175:5;8149:12;:23;;;:31;;;;;;;;;;;;;;;;;;;;8219:6;8189:12;:27;;;:36;;;;;;;;;;;;;;;;;;;;8267:17;8234:12;:30;;:50;;;;8324:15;8293:12;:28;;:46;;;;8497:6;;8361:143;;;;;;;:::i;:::-;;;;;;;;;8374:6;;8382;8390:12;:23;;;;;;;;;;;;8415:12;:25;;;8442:12;:25;;;8469:12;:26;;;8361:143;;;;;;;;;;;;:::i;:::-;;;;;;;;8023:771;;;8547:1;8522:12;:21;;;;;;;;;;;;:26;;;8518:276;;;8583:5;8559:12;:21;;;:29;;;;;;;;;;;;;;;;;;;;8679:6;;8604:82;;;;;;;:::i;:::-;;;;;;;;;8615:6;;8623;8631:12;:23;;;;;;;;;;;;8656:12;:21;;;;;;;;;;;;8604:82;;;;;;;;;;:::i;:::-;;;;;;;;8697:37;8708:6;;8716:9;8727:6;8697:10;:37::i;:::-;8518:276;;;8764:22;;;;;;;;;;;;;;8518:276;8023:771;7965:834;5538:1:::1;;7744:1055:::0;;;;;;;:::o;14732:1995::-;14825:9;:16;;;;;;;;:::i;:::-;5612:18;5623:6;;5612:10;:18::i;:::-;5604:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;5731:9:::1;;;;;;;;;;;5723:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;14874:9:::2;:16;;;;;;;;:::i;:::-;5851:5;5857:6;;5851:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:21;;;;;;;;;;;;5843:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;14921:1:::3;14909:9;:13;14901:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;14983:5;14989:9;:16;;;;;;;;:::i;:::-;14983:23;;;;;;;:::i;:::-;;;;;;;;;;;;;:36;;;14970:9;:49;;14962:108;;;;;;;;;;;;:::i;:::-;;;;;;;;;15098:5;15104:9;:16;;;;;;;;:::i;:::-;15098:23;;;;;;;:::i;:::-;;;;;;;;;;;;;:36;;;15085:9;:49;;15077:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;15310:5;15316:9;:16;;;;;;;;:::i;:::-;15310:23;;;;;;;:::i;:::-;;;;;;;;;;;;;:39;;;15291:15;:58;;15283:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;15454:5;15460:9;:16;;;;;;;;:::i;:::-;15454:23;;;;;;;:::i;:::-;;;;;;;;;;;;;:41;;;15435:15;:60;;15427:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;15531:16;15560:9;:18;;;;;;;;;;:::i;:::-;15556:618;;;15685:1;15647:5;15653:9;:16;;;;;;;;:::i;:::-;15647:23;;;;;;;:::i;:::-;;;;;;;;;;;;;:37;;;:39;;;;:::i;:::-;15597:5;15603:9;:16;;;;;;;;:::i;:::-;15597:23;;;;;;;:::i;:::-;;;;;;;;;;;;;:34;;:39;;:46;;;;:89;;15589:134;;;;;;;;;;;;:::i;:::-;;;;;;;;;15743:121;15750:5;15756:9;:16;;;;;;;;:::i;:::-;15750:23;;;;;;;:::i;:::-;;;;;;;;;;;;;:34;;15786:9;15797;:19;;;;;;;;:::i;:::-;15818:9;:21;;;;;;;;:::i;:::-;15841:9;:22;;;;;;;;:::i;:::-;15743:6;:121::i;:::-;15732:132;;15556:618;;;15985:1;15947:5;15953:9;:16;;;;;;;;:::i;:::-;15947:23;;;;;;;:::i;:::-;;;;;;;;;;;;;:37;;;:39;;;;:::i;:::-;15895:5;15901:9;:16;;;;;;;;:::i;:::-;15895:23;;;;;;;:::i;:::-;;;;;;;;;;;;;:36;;:41;;:48;;;;:91;;15887:136;;;;;;;;;;;;:::i;:::-;;;;;;;;;16043:123;16050:5;16056:9;:16;;;;;;;;:::i;:::-;16050:23;;;;;;;:::i;:::-;;;;;;;;;;;;;:36;;16088:9;16099;:19;;;;;;;;:::i;:::-;16120:9;:21;;;;;;;;:::i;:::-;16143:9;:22;;;;;;;;:::i;:::-;16043:6;:123::i;:::-;16032:134;;15556:618;16182:35;;:::i;:::-;16247:9;:19;;;;;;;;:::i;:::-;16224:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:13;:20;;:42;;;;16301:9;:21;;;;;;;;:::i;:::-;16273:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:13;:25;;:49;;;;16358:9;:22;;;;;;;;:::i;:::-;16329:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:13;:26;;:51;;;;16418:5;16424:9;:16;;;;;;;;:::i;:::-;16418:23;;;;;;;:::i;:::-;;;;;;;;;;;;;:38;;;;;;;;;;;;16387:13;:28;;:69;;;;;;;;;::::0;::::3;16597:10;16474:247;;16579:9;:16;;;;;;;;:::i;:::-;16474:247;;;;;;;:::i;:::-;;;;;;;;;16486:9;:16;;;;;;;;:::i;:::-;16504:10;16516:9;16528;:18;;;;;;;;;;:::i;:::-;16527:34;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;::::0;::::3;16563:8;16609:13;:20;;;16631:13;:25;;;16664:13;:28;;;16694:13;:26;;;16474:247;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;14892:1835;;5775:1:::2;;14732:1995:::0;;;:::o;1862:87::-;1908:7;1935:6;;;;;;;;;;;1928:13;;1862:87;:::o;6462:234::-;2093:12;:10;:12::i;:::-;2082:23;;:7;:5;:7::i;:::-;:23;;;2074:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6592:3:::1;6566:23;:29;;;;6557:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;6667:23;6644:20;;:46;;;;;;;;;;;;;;;;;;6462:234:::0;:::o;4067:30::-;;;;;;;;;;;;;:::o;9470:3154::-;5480:14;;;;;;;;;;;5466:28;;:10;:28;;;5458:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;9607:6:::1;;5851:5;5857:6;;5851:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:21;;;;;;;;;;;;5843:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;9622:19:::2;9644:5;9650:6;;9644:13;;;;;;;:::i;:::-;;;;;;;;;;;;;9622:35;;9702:1;9670:5;:16;;:21;;:28;;;;:33;:72;;;;9741:1;9707:5;:18;;:23;;:30;;;;:35;9670:72;:112;;;;9767:5;:14;;;;;;;;;;;;9747:34;;:5;:16;;;;;;;;;;;;:34;;;9670:112;9666:1536;;;9817:5;:14;;;;;;;;;;;;9797:34;;:5;:16;;;;;;;;;;;;:34;;;9793:1377;;;9897:30;9930:5;:16;;9897:49;;9957:32;9992:5;:18;;9957:53;;10023:17;10043:13;:30;;;10023:50;;10084:19;10106:15;:32;;;10084:54;;10151:44;10162:6;;10170:13;10185:9;10151:10;:44::i;:::-;10206:46;10217:6;;10225:15;10242:9;10206:10;:46::i;:::-;10270:104;10287:6;;10295:13;:18;;:25;;;;10322:12;10336:13;:30;;;10367:6;10270:104;;;;;;;;;;;:::i;:::-;;;;;;;;10390:110;10407:6;;10415:15;:20;;:27;;;;10444:14;10460:15;:32;;;10493:6;10390:110;;;;;;;;;;;:::i;:::-;;;;;;;;10551:13;:18;;:25;;;;10517:13;:30;;;:59;:126;;;;;10616:15;:20;;:27;;;;10580:15;:32;;;:63;10517:126;10513:174;;;10658:17;10668:6;;10658:9;:17::i;:::-;10513:174;9832:866;;;;9793:1377;;;10713:28;10778:1:::0;10744:5:::2;:18;;:23;;:30;;;;:35;:75;;10801:5;:18;;10744:75;;;10782:5;:16;;10744:75;10713:106;;10832:15;10850:11;:28;;;10832:46;;10889:42;10900:6;;10908:11;10921:9;10889:10;:42::i;:::-;10947:98;10964:6;;10972:11;:16;;:23;;;;10997:10;11009:11;:28;;;11038:6;10947:98;;;;;;;;;;;:::i;:::-;;;;;;;;11094:11;:16;;:23;;;;11062:11;:28;;;:55;11058:103;;;11132:17;11142:6;;11132:9;:17::i;:::-;11058:103;10702:468;;9793:1377;11188:7;;;9666:1536;11212:24;11239:5;:18;;11212:45;;11264:23;11290:5;:16;;11264:42;;11338:5;:14;;;;;;;;;;;;11319:33;;:5;:16;;;;;;;;;;;;:33;;;11315:118;;;11373:5;:16;;11363:26;;11407:5;:18;;11398:27;;11315:118;11441:24;11468:38;11490:7;11499:6;11468:21;:38::i;:::-;11441:65;;11513:13;11544:9;11529:24;;:4;:12;;;:24;:51;;11568:4;:12;;;11529:51;;;11556:9;11529:51;;;11513:67;;11587:10;11627:5;11600:7;:24;;;:32;;;;:::i;:::-;11587:45;;11646:6;11655:7;:24;;;11646:33;;11641:464;11685:2;11681:1;:6;11641:464;;;11703:16;11781:3;11764:7;:13;;;11758:3;11741:4;:14;;;11723:7;:12;;11736:1;11723:15;;;;;;;;:::i;:::-;;;;;;;;;;:32;;;;:::i;:::-;:38;;;;:::i;:::-;:54;;;;:::i;:::-;:61;;;;:::i;:::-;11703:82;;11796:59;11806:7;:17;;11824:1;11806:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11839:7;:12;;11852:1;11839:15;;;;;;;;:::i;:::-;;;;;;;;;;11828:8;:26;;;;:::i;:::-;11796:9;:59::i;:::-;11944:7;:17;;11962:1;11944:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11869:157;;;11887:6;;11895:7;:17;;11913:1;11895:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11917:7;:12;;11930:1;11917:15;;;;;;;;:::i;:::-;;;;;;;;;;11934:8;11966:7;:21;;11988:1;11966:24;;;;;;;;:::i;:::-;;;;;;;;;11991:13;;;;;;;;;;;12005:20;;;;;;;;;;;11869:157;;;;;;;;;;;;;:::i;:::-;;;;;;;;12089:8;12062:7;:24;;;:35;;;;:::i;:::-;12035:7;:24;;:62;;;;11694:411;11689:3;;;;;:::i;:::-;;;;11641:464;;;;12118:83;12135:6;;12143:7;:12;;:19;;;;12164:7;:24;;;12190:2;12194:6;12118:83;;;;;;;;;;;:::i;:::-;;;;;;;;12237:2;12210:7;:24;;:29;;;;12278:7;:12;;:19;;;;12250:7;:24;;;:47;12246:373;;;12308:74;12318:10;;;;;;;;;;;12378:3;12362:13;;;;;;;;;;;12330:45;;12342:4;:18;;;12331:4;:8;;;:29;;;;:::i;:::-;12330:45;;;;:::i;:::-;:51;;;;:::i;:::-;12308:9;:74::i;:::-;12391:102;12401:17;;;;;;;;;;;12489:3;12466:20;;;;;;;;;;;12420:66;;12439:4;:25;;;12421:4;:15;;;:43;;;;:::i;:::-;12420:66;;;;:::i;:::-;:72;;;;:::i;:::-;12391:9;:102::i;:::-;12541:42;12551:10;;;;;;;;;;;12562:20;:18;:20::i;:::-;12541:9;:42::i;:::-;12594:17;12604:6;;12594:9;:17::i;:::-;12246:373;9615:3009;;;;;;5903:1;5538::::1;;9470:3154:::0;;;;:::o;6265:191::-;2093:12;:10;:12::i;:::-;2082:23;;:7;:5;:7::i;:::-;:23;;;2074:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6374:3:::1;6355:16;:22;;;;6346:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;6434:16;6418:13;;:32;;;;;;;;;;;;;;;;;;6265:191:::0;:::o;7288:120::-;2093:12;:10;:12::i;:::-;2082:23;;:7;:5;:7::i;:::-;:23;;;2074:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7345:4:::1;7333:9;;:16;;;;;;;;;;;;;;;;;;7356:21;;;;;;;;;;;::::0;:16:::1;:21;;;;;;;;;;;;:::i;:::-;;7389:13;;;;;;;;;;7288:120::o:0;7414:324::-;5480:14;;;;;;;;;;;5466:28;;:10;:28;;;5458:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7582:4:::1;7558:5;7564:6;;7558:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:21;;;:28;;;;;;;;;;;;;;;;;;7622:12;7593:5;7599:6;;7593:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:26;;:41;;;;7670:12;7641:5;7647:6;;7641:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:26;;:41;;;;7719:13;7689:5;7695:6;;7689:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:27;;:43;;;;7414:324:::0;;;;;:::o;7131:151::-;2093:12;:10;:12::i;:::-;2082:23;;:7;:5;:7::i;:::-;:23;;;2074:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7208:5:::1;7196:9;;:17;;;;;;;;;;;;;;;;;;7239:6;;7220:16;:25;;;;;;;:::i;:::-;;7257:19;7269:6;;7257:19;;;;;;;:::i;:::-;;;;;;;;7131:151:::0;;:::o;2762:192::-;2093:12;:10;:12::i;:::-;2082:23;;:7;:5;:7::i;:::-;:23;;;2074:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2871:1:::1;2851:22;;:8;:22;;;;2843:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2927:19;2937:8;2927:9;:19::i;:::-;2762:192:::0;:::o;3992:29::-;;;;;;;;;;;;;:::o;656:98::-;709:7;736:10;729:17;;656:98;:::o;2962:173::-;3018:16;3037:6;;;;;;;;;;;3018:25;;3063:8;3054:6;;:17;;;;;;;;;;;;;;;;;;3118:8;3087:40;;3108:8;3087:40;;;;;;;;;;;;3007:128;2962:173;:::o;13972:466::-;14162:7;14178:8;:13;;14197:6;14178:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14211:8;:18;;14235:10;14211:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14253:8;:16;;14275:6;;14253:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14289:8;:18;;14313:11;;14289:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14332:8;:22;;14360:12;;14332:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14398:6;14380:8;:14;;;:24;;;;;;;:::i;:::-;;;;;;;;14418:8;:14;;;14411:21;;13972:466;;;;;;;;;;:::o;8912:552::-;9033:15;9071:5;:22;;;9051:5;:10;;:17;;;;:42;;;;:::i;:::-;9033:60;;9100:13;9126:9;9116:19;;:7;:19;:41;;9150:7;9116:41;;;9138:9;9116:41;;;9100:57;;9164:10;9202:5;9177;:22;;;:30;;;;:::i;:::-;9164:43;;9221:6;9230:5;:22;;;9221:31;;9216:207;9258:2;9254:1;:6;9216:207;;;9277:44;9287:5;:15;;9303:1;9287:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9307:5;:10;;9318:1;9307:13;;;;;;;;:::i;:::-;;;;;;;;;;9277:9;:44::i;:::-;9335:80;9349:6;;9357:5;:15;;9373:1;9357:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9377:5;:10;;9388:1;9377:13;;;;;;;;:::i;:::-;;;;;;;;;;9392:5;:19;;9412:1;9392:22;;;;;;;;:::i;:::-;;;;;;;;;9335:80;;;;;;;;;;:::i;:::-;;;;;;;;9262:4;;;;;:::i;:::-;;;;9216:207;;;;9456:2;9431:5;:22;;:27;;;;9026:438;;;8912:552;;;;:::o;13410:219::-;13485:5;13491:6;;13485:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:24;;;13478:31;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13523:5;13529:6;;13523:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:26;;;13516:33;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13563:5;13569:6;;13563:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:24;;;13556:31;;;;;;;;;;;13601:5;13607:6;;13601:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;13594:29;;;;;;;;;;;13410:219;;:::o;12631:773::-;12751:19;;:::i;:::-;12779:11;12824:3;12809:6;:12;;;12793:13;;;;;;;;;;;:28;;;;;;:::i;:::-;:34;;;;:::i;:::-;12779:48;;12834:18;12893:3;12878:6;:12;;;12855:20;;;;;;;;;;;:35;;;;;;:::i;:::-;:41;;;;:::i;:::-;12834:62;;12903:16;12928:10;12922:3;:16;;;;:::i;:::-;12903:35;;12945:15;12985:7;:24;;;12963:7;:12;;:19;;;;:46;;;;:::i;:::-;12945:64;;13016:17;13051:8;13036:6;:12;;;:23;;;;:::i;:::-;13016:43;;13066:21;13105:3;13090:6;:12;;;:18;;;;:::i;:::-;13066:42;;13115:28;13161:10;13146:6;:12;;;:25;;;;:::i;:::-;13115:56;;13187:211;;;;;;;;13214:3;13187:211;;;;13238:10;13187:211;;;;13272:13;13187:211;;;;13316:20;13187:211;;;;13356:9;13187:211;;;;13383:7;13187:211;;;13180:218;;;;;;;;;12631:773;;;;:::o;16733:204::-;16813:9;16824:17;16853:2;16845:16;;16867:1;16877:6;16845:43;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16812:76;;;;16903:4;16895:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;16805:132;;16733:204;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:117;689:1;686;679:12;716:552;773:8;783:6;833:3;826:4;818:6;814:17;810:27;800:122;;841:79;;:::i;:::-;800:122;954:6;941:20;931:30;;984:18;976:6;973:30;970:117;;;1006:79;;:::i;:::-;970:117;1120:4;1112:6;1108:17;1096:29;;1174:3;1166:4;1158:6;1154:17;1144:8;1140:32;1137:41;1134:128;;;1181:79;;:::i;:::-;1134:128;716:552;;;;;:::o;1274:527::-;1344:6;1352;1401:2;1389:9;1380:7;1376:23;1372:32;1369:119;;;1407:79;;:::i;:::-;1369:119;1555:1;1544:9;1540:17;1527:31;1585:18;1577:6;1574:30;1571:117;;;1607:79;;:::i;:::-;1571:117;1720:64;1776:7;1767:6;1756:9;1752:22;1720:64;:::i;:::-;1702:82;;;;1498:296;1274:527;;;;;:::o;1807:90::-;1841:7;1884:5;1877:13;1870:21;1859:32;;1807:90;;;:::o;1903:109::-;1984:21;1999:5;1984:21;:::i;:::-;1979:3;1972:34;1903:109;;:::o;2018:210::-;2105:4;2143:2;2132:9;2128:18;2120:26;;2156:65;2218:1;2207:9;2203:17;2194:6;2156:65;:::i;:::-;2018:210;;;;:::o;2234:86::-;2269:7;2309:4;2302:5;2298:16;2287:27;;2234:86;;;:::o;2326:112::-;2409:22;2425:5;2409:22;:::i;:::-;2404:3;2397:35;2326:112;;:::o;2444:214::-;2533:4;2571:2;2560:9;2556:18;2548:26;;2584:67;2648:1;2637:9;2633:17;2624:6;2584:67;:::i;:::-;2444:214;;;;:::o;2664:126::-;2701:7;2741:42;2734:5;2730:54;2719:65;;2664:126;;;:::o;2796:96::-;2833:7;2862:24;2880:5;2862:24;:::i;:::-;2851:35;;2796:96;;;:::o;2898:122::-;2971:24;2989:5;2971:24;:::i;:::-;2964:5;2961:35;2951:63;;3010:1;3007;3000:12;2951:63;2898:122;:::o;3026:139::-;3072:5;3110:6;3097:20;3088:29;;3126:33;3153:5;3126:33;:::i;:::-;3026:139;;;;:::o;3171:329::-;3230:6;3279:2;3267:9;3258:7;3254:23;3250:32;3247:119;;;3285:79;;:::i;:::-;3247:119;3405:1;3430:53;3475:7;3466:6;3455:9;3451:22;3430:53;:::i;:::-;3420:63;;3376:117;3171:329;;;;:::o;3506:118::-;3593:24;3611:5;3593:24;:::i;:::-;3588:3;3581:37;3506:118;;:::o;3630:222::-;3723:4;3761:2;3750:9;3746:18;3738:26;;3774:71;3842:1;3831:9;3827:17;3818:6;3774:71;:::i;:::-;3630:222;;;;:::o;3858:117::-;3967:1;3964;3957:12;3981:102;4022:6;4073:2;4069:7;4064:2;4057:5;4053:14;4049:28;4039:38;;3981:102;;;:::o;4089:180::-;4137:77;4134:1;4127:88;4234:4;4231:1;4224:15;4258:4;4255:1;4248:15;4275:281;4358:27;4380:4;4358:27;:::i;:::-;4350:6;4346:40;4488:6;4476:10;4473:22;4452:18;4440:10;4437:34;4434:62;4431:88;;;4499:18;;:::i;:::-;4431:88;4539:10;4535:2;4528:22;4318:238;4275:281;;:::o;4562:129::-;4596:6;4623:20;;:::i;:::-;4613:30;;4652:33;4680:4;4672:6;4652:33;:::i;:::-;4562:129;;;:::o;4697:307::-;4758:4;4848:18;4840:6;4837:30;4834:56;;;4870:18;;:::i;:::-;4834:56;4908:29;4930:6;4908:29;:::i;:::-;4900:37;;4992:4;4986;4982:15;4974:23;;4697:307;;;:::o;5010:154::-;5094:6;5089:3;5084;5071:30;5156:1;5147:6;5142:3;5138:16;5131:27;5010:154;;;:::o;5170:410::-;5247:5;5272:65;5288:48;5329:6;5288:48;:::i;:::-;5272:65;:::i;:::-;5263:74;;5360:6;5353:5;5346:21;5398:4;5391:5;5387:16;5436:3;5427:6;5422:3;5418:16;5415:25;5412:112;;;5443:79;;:::i;:::-;5412:112;5533:41;5567:6;5562:3;5557;5533:41;:::i;:::-;5253:327;5170:410;;;;;:::o;5599:338::-;5654:5;5703:3;5696:4;5688:6;5684:17;5680:27;5670:122;;5711:79;;:::i;:::-;5670:122;5828:6;5815:20;5853:78;5927:3;5919:6;5912:4;5904:6;5900:17;5853:78;:::i;:::-;5844:87;;5660:277;5599:338;;;;:::o;5943:507::-;6011:6;6060:2;6048:9;6039:7;6035:23;6031:32;6028:119;;;6066:79;;:::i;:::-;6028:119;6214:1;6203:9;6199:17;6186:31;6244:18;6236:6;6233:30;6230:117;;;6266:79;;:::i;:::-;6230:117;6371:62;6425:7;6416:6;6405:9;6401:22;6371:62;:::i;:::-;6361:72;;6157:286;5943:507;;;;:::o;6456:90::-;6491:7;6534:5;6531:1;6520:20;6509:31;;6456:90;;;:::o;6552:112::-;6635:22;6651:5;6635:22;:::i;:::-;6630:3;6623:35;6552:112;;:::o;6670:77::-;6707:7;6736:5;6725:16;;6670:77;;;:::o;6753:118::-;6840:24;6858:5;6840:24;:::i;:::-;6835:3;6828:37;6753:118;;:::o;6877:114::-;6944:6;6978:5;6972:12;6962:22;;6877:114;;;:::o;6997:174::-;7086:11;7120:6;7115:3;7108:19;7160:4;7155:3;7151:14;7136:29;;6997:174;;;;:::o;7177:132::-;7244:4;7267:3;7259:11;;7297:4;7292:3;7288:14;7280:22;;7177:132;;;:::o;7315:108::-;7392:24;7410:5;7392:24;:::i;:::-;7387:3;7380:37;7315:108;;:::o;7429:179::-;7498:10;7519:46;7561:3;7553:6;7519:46;:::i;:::-;7597:4;7592:3;7588:14;7574:28;;7429:179;;;;:::o;7614:113::-;7684:4;7716;7711:3;7707:14;7699:22;;7614:113;;;:::o;7763:712::-;7872:3;7901:54;7949:5;7901:54;:::i;:::-;7971:76;8040:6;8035:3;7971:76;:::i;:::-;7964:83;;8071:56;8121:5;8071:56;:::i;:::-;8150:7;8181:1;8166:284;8191:6;8188:1;8185:13;8166:284;;;8267:6;8261:13;8294:63;8353:3;8338:13;8294:63;:::i;:::-;8287:70;;8380:60;8433:6;8380:60;:::i;:::-;8370:70;;8226:224;8213:1;8210;8206:9;8201:14;;8166:284;;;8170:14;8466:3;8459:10;;7877:598;;;7763:712;;;;:::o;8481:114::-;8548:6;8582:5;8576:12;8566:22;;8481:114;;;:::o;8601:174::-;8690:11;8724:6;8719:3;8712:19;8764:4;8759:3;8755:14;8740:29;;8601:174;;;;:::o;8781:132::-;8848:4;8871:3;8863:11;;8901:4;8896:3;8892:14;8884:22;;8781:132;;;:::o;8919:108::-;8996:24;9014:5;8996:24;:::i;:::-;8991:3;8984:37;8919:108;;:::o;9033:179::-;9102:10;9123:46;9165:3;9157:6;9123:46;:::i;:::-;9201:4;9196:3;9192:14;9178:28;;9033:179;;;;:::o;9218:113::-;9288:4;9320;9315:3;9311:14;9303:22;;9218:113;;;:::o;9367:712::-;9476:3;9505:54;9553:5;9505:54;:::i;:::-;9575:76;9644:6;9639:3;9575:76;:::i;:::-;9568:83;;9675:56;9725:5;9675:56;:::i;:::-;9754:7;9785:1;9770:284;9795:6;9792:1;9789:13;9770:284;;;9871:6;9865:13;9898:63;9957:3;9942:13;9898:63;:::i;:::-;9891:70;;9984:60;10037:6;9984:60;:::i;:::-;9974:70;;9830:224;9817:1;9814;9810:9;9805:14;;9770:284;;;9774:14;10070:3;10063:10;;9481:598;;;9367:712;;;;:::o;10085:124::-;10162:6;10196:5;10190:12;10180:22;;10085:124;;;:::o;10215:184::-;10314:11;10348:6;10343:3;10336:19;10388:4;10383:3;10379:14;10364:29;;10215:184;;;;:::o;10405:142::-;10482:4;10505:3;10497:11;;10535:4;10530:3;10526:14;10518:22;;10405:142;;;:::o;10553:99::-;10605:6;10639:5;10633:12;10623:22;;10553:99;;;:::o;10658:159::-;10732:11;10766:6;10761:3;10754:19;10806:4;10801:3;10797:14;10782:29;;10658:159;;;;:::o;10823:307::-;10891:1;10901:113;10915:6;10912:1;10909:13;10901:113;;;11000:1;10995:3;10991:11;10985:18;10981:1;10976:3;10972:11;10965:39;10937:2;10934:1;10930:10;10925:15;;10901:113;;;11032:6;11029:1;11026:13;11023:101;;;11112:1;11103:6;11098:3;11094:16;11087:27;11023:101;10872:258;10823:307;;;:::o;11136:344::-;11214:3;11242:39;11275:5;11242:39;:::i;:::-;11297:61;11351:6;11346:3;11297:61;:::i;:::-;11290:68;;11367:52;11412:6;11407:3;11400:4;11393:5;11389:16;11367:52;:::i;:::-;11444:29;11466:6;11444:29;:::i;:::-;11439:3;11435:39;11428:46;;11218:262;11136:344;;;;:::o;11486:196::-;11575:10;11610:66;11672:3;11664:6;11610:66;:::i;:::-;11596:80;;11486:196;;;;:::o;11688:123::-;11768:4;11800;11795:3;11791:14;11783:22;;11688:123;;;:::o;11845:971::-;11974:3;12003:64;12061:5;12003:64;:::i;:::-;12083:86;12162:6;12157:3;12083:86;:::i;:::-;12076:93;;12195:3;12240:4;12232:6;12228:17;12223:3;12219:27;12270:66;12330:5;12270:66;:::i;:::-;12359:7;12390:1;12375:396;12400:6;12397:1;12394:13;12375:396;;;12471:9;12465:4;12461:20;12456:3;12449:33;12522:6;12516:13;12550:84;12629:4;12614:13;12550:84;:::i;:::-;12542:92;;12657:70;12720:6;12657:70;:::i;:::-;12647:80;;12756:4;12751:3;12747:14;12740:21;;12435:336;12422:1;12419;12415:9;12410:14;;12375:396;;;12379:14;12787:4;12780:11;;12807:3;12800:10;;11979:837;;;;;11845:971;;;;:::o;12894:2193::-;13013:3;13049:6;13044:3;13040:16;13138:4;13131:5;13127:16;13121:23;13191:3;13185:4;13181:14;13174:4;13169:3;13165:14;13158:38;13217:103;13315:4;13301:12;13217:103;:::i;:::-;13209:111;;13066:265;13418:4;13411:5;13407:16;13401:23;13471:3;13465:4;13461:14;13454:4;13449:3;13445:14;13438:38;13497:103;13595:4;13581:12;13497:103;:::i;:::-;13489:111;;13341:270;13696:4;13689:5;13685:16;13679:23;13749:3;13743:4;13739:14;13732:4;13727:3;13723:14;13716:38;13775:123;13893:4;13879:12;13775:123;:::i;:::-;13767:131;;13621:288;13996:4;13989:5;13985:16;13979:23;14049:3;14043:4;14039:14;14032:4;14027:3;14023:14;14016:38;14075:123;14193:4;14179:12;14075:123;:::i;:::-;14067:131;;13919:290;14300:4;14293:5;14289:16;14283:23;14353:3;14347:4;14343:14;14336:4;14331:3;14327:14;14320:38;14379:123;14497:4;14483:12;14379:123;:::i;:::-;14371:131;;14219:294;14596:4;14589:5;14585:16;14579:23;14615:63;14672:4;14667:3;14663:14;14649:12;14615:63;:::i;:::-;14523:165;14782:4;14775:5;14771:16;14765:23;14801:63;14858:4;14853:3;14849:14;14835:12;14801:63;:::i;:::-;14698:176;14968:4;14961:5;14957:16;14951:23;14987:63;15044:4;15039:3;15035:14;15021:12;14987:63;:::i;:::-;14884:176;15077:4;15070:11;;13018:2069;12894:2193;;;;:::o;15093:90::-;15128:7;15171:5;15168:1;15157:20;15146:31;;15093:90;;;:::o;15189:112::-;15272:22;15288:5;15272:22;:::i;:::-;15267:3;15260:35;15189:112;;:::o;15307:1598::-;15763:4;15801:3;15790:9;15786:19;15778:27;;15815:65;15877:1;15866:9;15862:17;15853:6;15815:65;:::i;:::-;15890:68;15954:2;15943:9;15939:18;15930:6;15890:68;:::i;:::-;15968;16032:2;16021:9;16017:18;16008:6;15968:68;:::i;:::-;16046:72;16114:2;16103:9;16099:18;16090:6;16046:72;:::i;:::-;16128:73;16196:3;16185:9;16181:19;16172:6;16128:73;:::i;:::-;16211;16279:3;16268:9;16264:19;16255:6;16211:73;:::i;:::-;16332:9;16326:4;16322:20;16316:3;16305:9;16301:19;16294:49;16360:108;16463:4;16454:6;16360:108;:::i;:::-;16352:116;;16516:9;16510:4;16506:20;16500:3;16489:9;16485:19;16478:49;16544:108;16647:4;16638:6;16544:108;:::i;:::-;16536:116;;16662:69;16726:3;16715:9;16711:19;16702:6;16662:69;:::i;:::-;16741:73;16809:3;16798:9;16794:19;16785:6;16741:73;:::i;:::-;16824:74;16893:3;16882:9;16878:19;16868:7;16824:74;:::i;:::-;15307:1598;;;;;;;;;;;;;;:::o;16911:98::-;16962:6;16996:5;16990:12;16980:22;;16911:98;;;:::o;17015:168::-;17098:11;17132:6;17127:3;17120:19;17172:4;17167:3;17163:14;17148:29;;17015:168;;;;:::o;17189:360::-;17275:3;17303:38;17335:5;17303:38;:::i;:::-;17357:70;17420:6;17415:3;17357:70;:::i;:::-;17350:77;;17436:52;17481:6;17476:3;17469:4;17462:5;17458:16;17436:52;:::i;:::-;17513:29;17535:6;17513:29;:::i;:::-;17508:3;17504:39;17497:46;;17279:270;17189:360;;;;:::o;17555:309::-;17666:4;17704:2;17693:9;17689:18;17681:26;;17753:9;17747:4;17743:20;17739:1;17728:9;17724:17;17717:47;17781:76;17852:4;17843:6;17781:76;:::i;:::-;17773:84;;17555:309;;;;:::o;17870:222::-;17963:4;18001:2;17990:9;17986:18;17978:26;;18014:71;18082:1;18071:9;18067:17;18058:6;18014:71;:::i;:::-;17870:222;;;;:::o;18098:118::-;18169:22;18185:5;18169:22;:::i;:::-;18162:5;18159:33;18149:61;;18206:1;18203;18196:12;18149:61;18098:118;:::o;18222:135::-;18266:5;18304:6;18291:20;18282:29;;18320:31;18345:5;18320:31;:::i;:::-;18222:135;;;;:::o;18363:122::-;18436:24;18454:5;18436:24;:::i;:::-;18429:5;18426:35;18416:63;;18475:1;18472;18465:12;18416:63;18363:122;:::o;18491:139::-;18537:5;18575:6;18562:20;18553:29;;18591:33;18618:5;18591:33;:::i;:::-;18491:139;;;;:::o;18636:118::-;18707:22;18723:5;18707:22;:::i;:::-;18700:5;18697:33;18687:61;;18744:1;18741;18734:12;18687:61;18636:118;:::o;18760:135::-;18804:5;18842:6;18829:20;18820:29;;18858:31;18883:5;18858:31;:::i;:::-;18760:135;;;;:::o;18901:93::-;18937:7;18977:10;18970:5;18966:22;18955:33;;18901:93;;;:::o;19000:120::-;19072:23;19089:5;19072:23;:::i;:::-;19065:5;19062:34;19052:62;;19110:1;19107;19100:12;19052:62;19000:120;:::o;19126:137::-;19171:5;19209:6;19196:20;19187:29;;19225:32;19251:5;19225:32;:::i;:::-;19126:137;;;;:::o;19269:1245::-;19379:6;19387;19395;19403;19411;19419;19427;19476:3;19464:9;19455:7;19451:23;19447:33;19444:120;;;19483:79;;:::i;:::-;19444:120;19631:1;19620:9;19616:17;19603:31;19661:18;19653:6;19650:30;19647:117;;;19683:79;;:::i;:::-;19647:117;19796:64;19852:7;19843:6;19832:9;19828:22;19796:64;:::i;:::-;19778:82;;;;19574:296;19909:2;19935:51;19978:7;19969:6;19958:9;19954:22;19935:51;:::i;:::-;19925:61;;19880:116;20035:2;20061:53;20106:7;20097:6;20086:9;20082:22;20061:53;:::i;:::-;20051:63;;20006:118;20163:2;20189:53;20234:7;20225:6;20214:9;20210:22;20189:53;:::i;:::-;20179:63;;20134:118;20291:3;20318:51;20361:7;20352:6;20341:9;20337:22;20318:51;:::i;:::-;20308:61;;20262:117;20418:3;20445:52;20489:7;20480:6;20469:9;20465:22;20445:52;:::i;:::-;20435:62;;20389:118;19269:1245;;;;;;;;;;:::o;20520:117::-;20629:1;20626;20619:12;20688:240;20769:5;20810:3;20801:6;20796:3;20792:16;20788:26;20785:113;;;20817:79;;:::i;:::-;20785:113;20916:6;20907:15;;20688:240;;;;:::o;20934:559::-;21028:6;21077:2;21065:9;21056:7;21052:23;21048:32;21045:119;;;21083:79;;:::i;:::-;21045:119;21231:1;21220:9;21216:17;21203:31;21261:18;21253:6;21250:30;21247:117;;;21283:79;;:::i;:::-;21247:117;21388:88;21468:7;21459:6;21448:9;21444:22;21388:88;:::i;:::-;21378:98;;21174:312;20934:559;;;;:::o;21499:118::-;21570:22;21586:5;21570:22;:::i;:::-;21563:5;21560:33;21550:61;;21607:1;21604;21597:12;21550:61;21499:118;:::o;21623:135::-;21667:5;21705:6;21692:20;21683:29;;21721:31;21746:5;21721:31;:::i;:::-;21623:135;;;;:::o;21764:325::-;21821:6;21870:2;21858:9;21849:7;21845:23;21841:32;21838:119;;;21876:79;;:::i;:::-;21838:119;21996:1;22021:51;22064:7;22055:6;22044:9;22040:22;22021:51;:::i;:::-;22011:61;;21967:115;21764:325;;;;:::o;22095:811::-;22180:6;22188;22196;22204;22253:2;22241:9;22232:7;22228:23;22224:32;22221:119;;;22259:79;;:::i;:::-;22221:119;22407:1;22396:9;22392:17;22379:31;22437:18;22429:6;22426:30;22423:117;;;22459:79;;:::i;:::-;22423:117;22572:64;22628:7;22619:6;22608:9;22604:22;22572:64;:::i;:::-;22554:82;;;;22350:296;22685:2;22711:52;22755:7;22746:6;22735:9;22731:22;22711:52;:::i;:::-;22701:62;;22656:117;22812:2;22838:51;22881:7;22872:6;22861:9;22857:22;22838:51;:::i;:::-;22828:61;;22783:116;22095:811;;;;;;;:::o;22912:963::-;23009:6;23017;23025;23033;23041;23090:3;23078:9;23069:7;23065:23;23061:33;23058:120;;;23097:79;;:::i;:::-;23058:120;23245:1;23234:9;23230:17;23217:31;23275:18;23267:6;23264:30;23261:117;;;23297:79;;:::i;:::-;23261:117;23410:64;23466:7;23457:6;23446:9;23442:22;23410:64;:::i;:::-;23392:82;;;;23188:296;23523:2;23549:53;23594:7;23585:6;23574:9;23570:22;23549:53;:::i;:::-;23539:63;;23494:118;23651:2;23677:53;23722:7;23713:6;23702:9;23698:22;23677:53;:::i;:::-;23667:63;;23622:118;23779:2;23805:53;23850:7;23841:6;23830:9;23826:22;23805:53;:::i;:::-;23795:63;;23750:118;22912:963;;;;;;;;:::o;23881:147::-;23982:11;24019:3;24004:18;;23881:147;;;;:::o;24056:314::-;24170:3;24191:88;24272:6;24267:3;24191:88;:::i;:::-;24184:95;;24289:43;24325:6;24320:3;24313:5;24289:43;:::i;:::-;24357:6;24352:3;24348:16;24341:23;;24056:314;;;;;:::o;24376:291::-;24516:3;24538:103;24637:3;24628:6;24620;24538:103;:::i;:::-;24531:110;;24658:3;24651:10;;24376:291;;;;;:::o;24673:180::-;24721:77;24718:1;24711:88;24818:4;24815:1;24808:15;24842:4;24839:1;24832:15;24859:305;24899:3;24918:20;24936:1;24918:20;:::i;:::-;24913:25;;24952:20;24970:1;24952:20;:::i;:::-;24947:25;;25106:1;25038:66;25034:74;25031:1;25028:81;25025:107;;;25112:18;;:::i;:::-;25025:107;25156:1;25153;25149:9;25142:16;;24859:305;;;;:::o;25170:169::-;25254:11;25288:6;25283:3;25276:19;25328:4;25323:3;25319:14;25304:29;;25170:169;;;;:::o;25345:182::-;25485:34;25481:1;25473:6;25469:14;25462:58;25345:182;:::o;25533:366::-;25675:3;25696:67;25760:2;25755:3;25696:67;:::i;:::-;25689:74;;25772:93;25861:3;25772:93;:::i;:::-;25890:2;25885:3;25881:12;25874:19;;25533:366;;;:::o;25905:419::-;26071:4;26109:2;26098:9;26094:18;26086:26;;26158:9;26152:4;26148:20;26144:1;26133:9;26129:17;26122:47;26186:131;26312:4;26186:131;:::i;:::-;26178:139;;25905:419;;;:::o;26330:180::-;26470:32;26466:1;26458:6;26454:14;26447:56;26330:180;:::o;26516:366::-;26658:3;26679:67;26743:2;26738:3;26679:67;:::i;:::-;26672:74;;26755:93;26844:3;26755:93;:::i;:::-;26873:2;26868:3;26864:12;26857:19;;26516:366;;;:::o;26888:419::-;27054:4;27092:2;27081:9;27077:18;27069:26;;27141:9;27135:4;27131:20;27127:1;27116:9;27112:17;27105:47;27169:131;27295:4;27169:131;:::i;:::-;27161:139;;26888:419;;;:::o;27313:180::-;27361:77;27358:1;27351:88;27458:4;27455:1;27448:15;27482:4;27479:1;27472:15;27499:320;27543:6;27580:1;27574:4;27570:12;27560:22;;27627:1;27621:4;27617:12;27648:18;27638:81;;27704:4;27696:6;27692:17;27682:27;;27638:81;27766:2;27758:6;27755:14;27735:18;27732:38;27729:84;;;27785:18;;:::i;:::-;27729:84;27550:269;27499:320;;;:::o;27825:182::-;27965:34;27961:1;27953:6;27949:14;27942:58;27825:182;:::o;28013:366::-;28155:3;28176:67;28240:2;28235:3;28176:67;:::i;:::-;28169:74;;28252:93;28341:3;28252:93;:::i;:::-;28370:2;28365:3;28361:12;28354:19;;28013:366;;;:::o;28385:419::-;28551:4;28589:2;28578:9;28574:18;28566:26;;28638:9;28632:4;28628:20;28624:1;28613:9;28609:17;28602:47;28666:131;28792:4;28666:131;:::i;:::-;28658:139;;28385:419;;;:::o;28810:169::-;28950:21;28946:1;28938:6;28934:14;28927:45;28810:169;:::o;28985:366::-;29127:3;29148:67;29212:2;29207:3;29148:67;:::i;:::-;29141:74;;29224:93;29313:3;29224:93;:::i;:::-;29342:2;29337:3;29333:12;29326:19;;28985:366;;;:::o;29357:419::-;29523:4;29561:2;29550:9;29546:18;29538:26;;29610:9;29604:4;29600:20;29596:1;29585:9;29581:17;29574:47;29638:131;29764:4;29638:131;:::i;:::-;29630:139;;29357:419;;;:::o;29782:250::-;29922:34;29918:1;29910:6;29906:14;29899:58;29991:33;29986:2;29978:6;29974:15;29967:58;29782:250;:::o;30038:366::-;30180:3;30201:67;30265:2;30260:3;30201:67;:::i;:::-;30194:74;;30277:93;30366:3;30277:93;:::i;:::-;30395:2;30390:3;30386:12;30379:19;;30038:366;;;:::o;30410:419::-;30576:4;30614:2;30603:9;30599:18;30591:26;;30663:9;30657:4;30653:20;30649:1;30638:9;30634:17;30627:47;30691:131;30817:4;30691:131;:::i;:::-;30683:139;;30410:419;;;:::o;30857:301::-;30953:3;30974:70;31037:6;31032:3;30974:70;:::i;:::-;30967:77;;31054:43;31090:6;31085:3;31078:5;31054:43;:::i;:::-;31122:29;31144:6;31122:29;:::i;:::-;31117:3;31113:39;31106:46;;30857:301;;;;;:::o;31164:866::-;31417:4;31455:3;31444:9;31440:19;31432:27;;31505:9;31499:4;31495:20;31491:1;31480:9;31476:17;31469:47;31533:86;31614:4;31605:6;31597;31533:86;:::i;:::-;31525:94;;31629:68;31693:2;31682:9;31678:18;31669:6;31629:68;:::i;:::-;31707;31771:2;31760:9;31756:18;31747:6;31707:68;:::i;:::-;31785:72;31853:2;31842:9;31838:18;31829:6;31785:72;:::i;:::-;31867:73;31935:3;31924:9;31920:19;31911:6;31867:73;:::i;:::-;31950;32018:3;32007:9;32003:19;31994:6;31950:73;:::i;:::-;31164:866;;;;;;;;;;:::o;32036:636::-;32229:4;32267:3;32256:9;32252:19;32244:27;;32317:9;32311:4;32307:20;32303:1;32292:9;32288:17;32281:47;32345:86;32426:4;32417:6;32409;32345:86;:::i;:::-;32337:94;;32441:68;32505:2;32494:9;32490:18;32481:6;32441:68;:::i;:::-;32519;32583:2;32572:9;32568:18;32559:6;32519:68;:::i;:::-;32597;32661:2;32650:9;32646:18;32637:6;32597:68;:::i;:::-;32036:636;;;;;;;;:::o;32678:117::-;32787:1;32784;32777:12;32801:117;32910:1;32907;32900:12;32924:117;33033:1;33030;33023:12;33047:724;33124:4;33130:6;33186:11;33173:25;33286:1;33280:4;33276:12;33265:8;33249:14;33245:29;33241:48;33221:18;33217:73;33207:168;;33294:79;;:::i;:::-;33207:168;33406:18;33396:8;33392:33;33384:41;;33458:4;33445:18;33435:28;;33486:18;33478:6;33475:30;33472:117;;;33508:79;;:::i;:::-;33472:117;33616:2;33610:4;33606:13;33598:21;;33673:4;33665:6;33661:17;33645:14;33641:38;33635:4;33631:49;33628:136;;;33683:79;;:::i;:::-;33628:136;33137:634;33047:724;;;;;:::o;33777:220::-;33917:34;33913:1;33905:6;33901:14;33894:58;33986:3;33981:2;33973:6;33969:15;33962:28;33777:220;:::o;34003:366::-;34145:3;34166:67;34230:2;34225:3;34166:67;:::i;:::-;34159:74;;34242:93;34331:3;34242:93;:::i;:::-;34360:2;34355:3;34351:12;34344:19;;34003:366;;;:::o;34375:419::-;34541:4;34579:2;34568:9;34564:18;34556:26;;34628:9;34622:4;34618:20;34614:1;34603:9;34599:17;34592:47;34656:131;34782:4;34656:131;:::i;:::-;34648:139;;34375:419;;;:::o;34800:173::-;34940:25;34936:1;34928:6;34924:14;34917:49;34800:173;:::o;34979:366::-;35121:3;35142:67;35206:2;35201:3;35142:67;:::i;:::-;35135:74;;35218:93;35307:3;35218:93;:::i;:::-;35336:2;35331:3;35327:12;35320:19;;34979:366;;;:::o;35351:419::-;35517:4;35555:2;35544:9;35540:18;35532:26;;35604:9;35598:4;35594:20;35590:1;35579:9;35575:17;35568:47;35632:131;35758:4;35632:131;:::i;:::-;35624:139;;35351:419;;;:::o;35776:178::-;35916:30;35912:1;35904:6;35900:14;35893:54;35776:178;:::o;35960:366::-;36102:3;36123:67;36187:2;36182:3;36123:67;:::i;:::-;36116:74;;36199:93;36288:3;36199:93;:::i;:::-;36317:2;36312:3;36308:12;36301:19;;35960:366;;;:::o;36332:419::-;36498:4;36536:2;36525:9;36521:18;36513:26;;36585:9;36579:4;36575:20;36571:1;36560:9;36556:17;36549:47;36613:131;36739:4;36613:131;:::i;:::-;36605:139;;36332:419;;;:::o;36757:233::-;36897:34;36893:1;36885:6;36881:14;36874:58;36966:16;36961:2;36953:6;36949:15;36942:41;36757:233;:::o;36996:366::-;37138:3;37159:67;37223:2;37218:3;37159:67;:::i;:::-;37152:74;;37235:93;37324:3;37235:93;:::i;:::-;37353:2;37348:3;37344:12;37337:19;;36996:366;;;:::o;37368:419::-;37534:4;37572:2;37561:9;37557:18;37549:26;;37621:9;37615:4;37611:20;37607:1;37596:9;37592:17;37585:47;37649:131;37775:4;37649:131;:::i;:::-;37641:139;;37368:419;;;:::o;37793:232::-;37933:34;37929:1;37921:6;37917:14;37910:58;38002:15;37997:2;37989:6;37985:15;37978:40;37793:232;:::o;38031:366::-;38173:3;38194:67;38258:2;38253:3;38194:67;:::i;:::-;38187:74;;38270:93;38359:3;38270:93;:::i;:::-;38388:2;38383:3;38379:12;38372:19;;38031:366;;;:::o;38403:419::-;38569:4;38607:2;38596:9;38592:18;38584:26;;38656:9;38650:4;38646:20;38642:1;38631:9;38627:17;38620:47;38684:131;38810:4;38684:131;:::i;:::-;38676:139;;38403:419;;;:::o;38828:166::-;38968:18;38964:1;38956:6;38952:14;38945:42;38828:166;:::o;39000:366::-;39142:3;39163:67;39227:2;39222:3;39163:67;:::i;:::-;39156:74;;39239:93;39328:3;39239:93;:::i;:::-;39357:2;39352:3;39348:12;39341:19;;39000:366;;;:::o;39372:419::-;39538:4;39576:2;39565:9;39561:18;39553:26;;39625:9;39619:4;39615:20;39611:1;39600:9;39596:17;39589:47;39653:131;39779:4;39653:131;:::i;:::-;39645:139;;39372:419;;;:::o;39797:171::-;39937:23;39933:1;39925:6;39921:14;39914:47;39797:171;:::o;39974:366::-;40116:3;40137:67;40201:2;40196:3;40137:67;:::i;:::-;40130:74;;40213:93;40302:3;40213:93;:::i;:::-;40331:2;40326:3;40322:12;40315:19;;39974:366;;;:::o;40346:419::-;40512:4;40550:2;40539:9;40535:18;40527:26;;40599:9;40593:4;40589:20;40585:1;40574:9;40570:17;40563:47;40627:131;40753:4;40627:131;:::i;:::-;40619:139;;40346:419;;;:::o;40771:116::-;40841:21;40856:5;40841:21;:::i;:::-;40834:5;40831:32;40821:60;;40877:1;40874;40867:12;40821:60;40771:116;:::o;40893:133::-;40936:5;40974:6;40961:20;40952:29;;40990:30;41014:5;40990:30;:::i;:::-;40893:133;;;;:::o;41032:323::-;41088:6;41137:2;41125:9;41116:7;41112:23;41108:32;41105:119;;;41143:79;;:::i;:::-;41105:119;41263:1;41288:50;41330:7;41321:6;41310:9;41306:22;41288:50;:::i;:::-;41278:60;;41234:114;41032:323;;;;:::o;41361:191::-;41401:4;41421:20;41439:1;41421:20;:::i;:::-;41416:25;;41455:20;41473:1;41455:20;:::i;:::-;41450:25;;41494:1;41491;41488:8;41485:34;;;41499:18;;:::i;:::-;41485:34;41544:1;41541;41537:9;41529:17;;41361:191;;;;:::o;41558:220::-;41698:34;41694:1;41686:6;41682:14;41675:58;41767:3;41762:2;41754:6;41750:15;41743:28;41558:220;:::o;41784:366::-;41926:3;41947:67;42011:2;42006:3;41947:67;:::i;:::-;41940:74;;42023:93;42112:3;42023:93;:::i;:::-;42141:2;42136:3;42132:12;42125:19;;41784:366;;;:::o;42156:419::-;42322:4;42360:2;42349:9;42345:18;42337:26;;42409:9;42403:4;42399:20;42395:1;42384:9;42380:17;42373:47;42437:131;42563:4;42437:131;:::i;:::-;42429:139;;42156:419;;;:::o;42581:725::-;42659:4;42665:6;42721:11;42708:25;42821:1;42815:4;42811:12;42800:8;42784:14;42780:29;42776:48;42756:18;42752:73;42742:168;;42829:79;;:::i;:::-;42742:168;42941:18;42931:8;42927:33;42919:41;;42993:4;42980:18;42970:28;;43021:18;43013:6;43010:30;43007:117;;;43043:79;;:::i;:::-;43007:117;43151:2;43145:4;43141:13;43133:21;;43208:4;43200:6;43196:17;43180:14;43176:38;43170:4;43166:49;43163:136;;;43218:79;;:::i;:::-;43163:136;42672:634;42581:725;;;;;:::o;43312:364::-;43400:3;43428:39;43461:5;43428:39;:::i;:::-;43483:71;43547:6;43542:3;43483:71;:::i;:::-;43476:78;;43563:52;43608:6;43603:3;43596:4;43589:5;43585:16;43563:52;:::i;:::-;43640:29;43662:6;43640:29;:::i;:::-;43635:3;43631:39;43624:46;;43404:272;43312:364;;;;:::o;43682:1571::-;44103:4;44141:3;44130:9;44126:19;44118:27;;44191:9;44185:4;44181:20;44177:1;44166:9;44162:17;44155:47;44219:86;44300:4;44291:6;44283;44219:86;:::i;:::-;44211:94;;44315:72;44383:2;44372:9;44368:18;44359:6;44315:72;:::i;:::-;44397;44465:2;44454:9;44450:18;44441:6;44397:72;:::i;:::-;44516:9;44510:4;44506:20;44501:2;44490:9;44486:18;44479:48;44544:78;44617:4;44608:6;44544:78;:::i;:::-;44536:86;;44632:73;44700:3;44689:9;44685:19;44676:6;44632:73;:::i;:::-;44753:9;44747:4;44743:20;44737:3;44726:9;44722:19;44715:49;44781:78;44854:4;44845:6;44781:78;:::i;:::-;44773:86;;44907:9;44901:4;44897:20;44891:3;44880:9;44876:19;44869:49;44935:78;45008:4;44999:6;44935:78;:::i;:::-;44927:86;;45023:69;45087:3;45076:9;45072:19;45063:6;45023:69;:::i;:::-;45140:9;45134:4;45130:20;45124:3;45113:9;45109:19;45102:49;45168:78;45241:4;45232:6;45168:78;:::i;:::-;45160:86;;43682:1571;;;;;;;;;;;;;:::o;45259:221::-;45399:34;45395:1;45387:6;45383:14;45376:58;45468:4;45463:2;45455:6;45451:15;45444:29;45259:221;:::o;45486:366::-;45628:3;45649:67;45713:2;45708:3;45649:67;:::i;:::-;45642:74;;45725:93;45814:3;45725:93;:::i;:::-;45843:2;45838:3;45834:12;45827:19;;45486:366;;;:::o;45858:419::-;46024:4;46062:2;46051:9;46047:18;46039:26;;46111:9;46105:4;46101:20;46097:1;46086:9;46082:17;46075:47;46139:131;46265:4;46139:131;:::i;:::-;46131:139;;45858:419;;;:::o;46283:763::-;46512:4;46550:3;46539:9;46535:19;46527:27;;46600:9;46594:4;46590:20;46586:1;46575:9;46571:17;46564:47;46628:86;46709:4;46700:6;46692;46628:86;:::i;:::-;46620:94;;46724:72;46792:2;46781:9;46777:18;46768:6;46724:72;:::i;:::-;46806;46874:2;46863:9;46859:18;46850:6;46806:72;:::i;:::-;46888;46956:2;46945:9;46941:18;46932:6;46888:72;:::i;:::-;46970:69;47034:3;47023:9;47019:19;47010:6;46970:69;:::i;:::-;46283:763;;;;;;;;;:::o;47052:180::-;47100:77;47097:1;47090:88;47197:4;47194:1;47187:15;47221:4;47218:1;47211:15;47238:348;47278:7;47301:20;47319:1;47301:20;:::i;:::-;47296:25;;47335:20;47353:1;47335:20;:::i;:::-;47330:25;;47523:1;47455:66;47451:74;47448:1;47445:81;47440:1;47433:9;47426:17;47422:105;47419:131;;;47530:18;;:::i;:::-;47419:131;47578:1;47575;47571:9;47560:20;;47238:348;;;;:::o;47592:180::-;47640:77;47637:1;47630:88;47737:4;47734:1;47727:15;47761:4;47758:1;47751:15;47778:185;47818:1;47835:20;47853:1;47835:20;:::i;:::-;47830:25;;47869:20;47887:1;47869:20;:::i;:::-;47864:25;;47908:1;47898:35;;47913:18;;:::i;:::-;47898:35;47955:1;47952;47948:9;47943:14;;47778:185;;;;:::o;47969:141::-;48018:4;48041:3;48033:11;;48064:3;48061:1;48054:14;48098:4;48095:1;48085:18;48077:26;;47969:141;;;:::o;48140:802::-;48225:3;48262:5;48256:12;48291:36;48317:9;48291:36;:::i;:::-;48343:71;48407:6;48402:3;48343:71;:::i;:::-;48336:78;;48445:1;48434:9;48430:17;48461:1;48456:135;;;;48605:1;48600:336;;;;48423:513;;48456:135;48540:4;48536:9;48525;48521:25;48516:3;48509:38;48576:4;48571:3;48567:14;48560:21;;48456:135;;48600:336;48667:38;48699:5;48667:38;:::i;:::-;48727:1;48741:154;48755:6;48752:1;48749:13;48741:154;;;48829:7;48823:14;48819:1;48814:3;48810:11;48803:35;48879:1;48870:7;48866:15;48855:26;;48777:4;48774:1;48770:12;48765:17;;48741:154;;;48924:1;48919:3;48915:11;48908:18;;48607:329;;48423:513;;48229:713;;48140:802;;;;:::o;48948:1062::-;49246:4;49284:3;49273:9;49269:19;49261:27;;49334:9;49328:4;49324:20;49320:1;49309:9;49305:17;49298:47;49362:86;49443:4;49434:6;49426;49362:86;:::i;:::-;49354:94;;49458:72;49526:2;49515:9;49511:18;49502:6;49458:72;:::i;:::-;49540;49608:2;49597:9;49593:18;49584:6;49540:72;:::i;:::-;49622;49690:2;49679:9;49675:18;49666:6;49622:72;:::i;:::-;49742:9;49736:4;49732:20;49726:3;49715:9;49711:19;49704:49;49770:75;49840:4;49831:6;49770:75;:::i;:::-;49762:83;;49855:69;49919:3;49908:9;49904:19;49895:6;49855:69;:::i;:::-;49934;49998:3;49987:9;49983:19;49974:6;49934:69;:::i;:::-;48948:1062;;;;;;;;;;;:::o;50016:233::-;50055:3;50078:24;50096:5;50078:24;:::i;:::-;50069:33;;50124:66;50117:5;50114:77;50111:103;;;50194:18;;:::i;:::-;50111:103;50241:1;50234:5;50230:13;50223:20;;50016:233;;;:::o;50255:176::-;50395:28;50391:1;50383:6;50379:14;50372:52;50255:176;:::o;50437:366::-;50579:3;50600:67;50664:2;50659:3;50600:67;:::i;:::-;50593:74;;50676:93;50765:3;50676:93;:::i;:::-;50794:2;50789:3;50785:12;50778:19;;50437:366;;;:::o;50809:419::-;50975:4;51013:2;51002:9;50998:18;50990:26;;51062:9;51056:4;51052:20;51048:1;51037:9;51033:17;51026:47;51090:131;51216:4;51090:131;:::i;:::-;51082:139;;50809:419;;;:::o;51234:329::-;51355:4;51393:2;51382:9;51378:18;51370:26;;51442:9;51436:4;51432:20;51428:1;51417:9;51413:17;51406:47;51470:86;51551:4;51542:6;51534;51470:86;:::i;:::-;51462:94;;51234:329;;;;;:::o;51569:225::-;51709:34;51705:1;51697:6;51693:14;51686:58;51778:8;51773:2;51765:6;51761:15;51754:33;51569:225;:::o;51800:366::-;51942:3;51963:67;52027:2;52022:3;51963:67;:::i;:::-;51956:74;;52039:93;52128:3;52039:93;:::i;:::-;52157:2;52152:3;52148:12;52141:19;;51800:366;;;:::o;52172:419::-;52338:4;52376:2;52365:9;52361:18;52353:26;;52425:9;52419:4;52415:20;52411:1;52400:9;52396:17;52389:47;52453:131;52579:4;52453:131;:::i;:::-;52445:139;;52172:419;;;:::o;52597:745::-;52819:4;52857:3;52846:9;52842:19;52834:27;;52907:9;52901:4;52897:20;52893:1;52882:9;52878:17;52871:47;52935:86;53016:4;53007:6;52999;52935:86;:::i;:::-;52927:94;;53031:72;53099:2;53088:9;53084:18;53075:6;53031:72;:::i;:::-;53113;53181:2;53170:9;53166:18;53157:6;53113:72;:::i;:::-;53232:9;53226:4;53222:20;53217:2;53206:9;53202:18;53195:48;53260:75;53330:4;53321:6;53260:75;:::i;:::-;53252:83;;52597:745;;;;;;;;:::o;53348:114::-;;:::o;53468:398::-;53627:3;53648:83;53729:1;53724:3;53648:83;:::i;:::-;53641:90;;53740:93;53829:3;53740:93;:::i;:::-;53858:1;53853:3;53849:11;53842:18;;53468:398;;;:::o;53872:379::-;54056:3;54078:147;54221:3;54078:147;:::i;:::-;54071:154;;54242:3;54235:10;;53872:379;;;:::o;54257:169::-;54397:21;54393:1;54385:6;54381:14;54374:45;54257:169;:::o;54432:366::-;54574:3;54595:67;54659:2;54654:3;54595:67;:::i;:::-;54588:74;;54671:93;54760:3;54671:93;:::i;:::-;54789:2;54784:3;54780:12;54773:19;;54432:366;;;:::o;54804:419::-;54970:4;55008:2;54997:9;54993:18;54985:26;;55057:9;55051:4;55047:20;55043:1;55032:9;55028:17;55021:47;55085:131;55211:4;55085:131;:::i;:::-;55077:139;;54804:419;;;:::o

Swarm Source

ipfs://3c736c8f1215112629020138a1978a77ad335b97b3ef2f05517f27c02a457a21

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Txn Hash Block Value Eth2 PubKey Valid
View All Deposits
[ Download: CSV Export  ]
[ 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.