Contract Overview
Balance:
0 AVAX

Token:
More Info
Tag:
Not Available. Update?

Contract Creators:
Contract Source Code Verified (Partial Match)
Contract Name:
Racing

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 200 runs

Created At:
Fri, 31 May 2024 04:13:14 GMT
FunctionsClient.sol
lib
chainlink
contracts
src
v0.8
functions
v1_0_0
FunctionsClient.sol


Contract ABI
[
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_router",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_vrfCoordinator",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_vrfSubscriptionId",
        "type": "uint256"
      },
      {
        "internalType": "uint64",
        "name": "_functionSubscriptionId",
        "type": "uint64"
      },
      {
        "internalType": "bytes32",
        "name": "_keyHash",
        "type": "bytes32"
      },
      {
        "internalType": "bytes32",
        "name": "_donID",
        "type": "bytes32"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "inputs": [],
    "name": "ChainlinkFeed__InvalidCircuitIndex",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ChainlinkFeed__InvalidForwarder",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ChainlinkFeed__InvalidFunctionRequestId",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ChainlinkFeed__InvalidRandomRequestId",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ChainlinkFeed__OnlyForwarder",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ChainlinkFeed__UnknownResquestType",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "EmptyArgs",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "EmptySource",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "EnforcedPause",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ExpectedPause",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "NoInlineSecrets",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "have",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "want",
        "type": "address"
      }
    ],
    "name": "OnlyCoordinatorCanFulfill",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "have",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "coordinator",
        "type": "address"
      }
    ],
    "name": "OnlyOwnerOrCoordinator",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "OnlyRouterCanFulfill",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "Racing__CircuitNotFound",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "Racing__EmergencyWithdrawFailed",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "Racing__InvalidAttribute",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "Racing__InvalidAttributesSum",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "Racing__InvalidBetAmount",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "Racing__PlayerAlreadyJoined",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "Racing__WeeklyPaymentFailed",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "Racing__WeeklyPaymentInsufficientBalance",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "Racing__WinnerPaymentFailed",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ReentrancyGuardReentrantCall",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ZeroAddress",
    "type": "error"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "newBetAmount",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "oldBetAmount",
        "type": "uint256"
      }
    ],
    "name": "BetAmountUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "vrfCoordinator",
        "type": "address"
      }
    ],
    "name": "CoordinatorSet",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "raceId",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "winner",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "loser",
        "type": "address"
      }
    ],
    "name": "FinishedRace",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "newForwarder",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "oldForwarder",
        "type": "address"
      }
    ],
    "name": "ForwarderUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "raceId",
        "type": "uint256"
      }
    ],
    "name": "FreeRaceStarted",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "player",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "raceId",
        "type": "uint256"
      }
    ],
    "name": "JoinedRace",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "to",
        "type": "address"
      }
    ],
    "name": "OwnershipTransferRequested",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "to",
        "type": "address"
      }
    ],
    "name": "OwnershipTransferred",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "Paused",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "player",
        "type": "address"
      },
      {
        "components": [
          {
            "internalType": "uint8",
            "name": "reliability",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "maniability",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "speed",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "breaks",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "car_balance",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "aerodynamics",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "driver_skills",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "luck",
            "type": "uint8"
          }
        ],
        "indexed": false,
        "internalType": "struct IRacing.PlayerAttributes",
        "name": "attributes",
        "type": "tuple"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "playerId",
        "type": "uint256"
      }
    ],
    "name": "PlayerCreated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "requestId",
        "type": "bytes32"
      },
      {
        "indexed": false,
        "internalType": "uint256[]",
        "name": "values",
        "type": "uint256[]"
      }
    ],
    "name": "RaceResultFulfilled",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "raceId",
        "type": "uint256"
      }
    ],
    "name": "RaceStarted",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "requestId",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256[]",
        "name": "randomWords",
        "type": "uint256[]"
      }
    ],
    "name": "RandomnessReceived",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "id",
        "type": "bytes32"
      }
    ],
    "name": "RequestFulfilled",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "id",
        "type": "bytes32"
      }
    ],
    "name": "RequestSent",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "requestId",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint32",
        "name": "numWords",
        "type": "uint32"
      }
    ],
    "name": "RequestedRandomness",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "player",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "raceId",
        "type": "uint256"
      }
    ],
    "name": "SoloRaceStarted",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "Unpaused",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "requestId",
        "type": "bytes32"
      },
      {
        "indexed": false,
        "internalType": "uint256[]",
        "name": "values",
        "type": "uint256[]"
      }
    ],
    "name": "WeatherResultFulfilled",
    "type": "event"
  },
  {
    "stateMutability": "payable",
    "type": "fallback"
  },
  {
    "inputs": [],
    "name": "acceptOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "uint8",
            "name": "weather",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "crashes",
            "type": "uint8"
          },
          {
            "internalType": "uint16",
            "name": "full_Throttle",
            "type": "uint16"
          },
          {
            "internalType": "uint8",
            "name": "downforce",
            "type": "uint8"
          },
          {
            "internalType": "uint16",
            "name": "top_Speed",
            "type": "uint16"
          }
        ],
        "internalType": "struct IRacing.ExternalFactors",
        "name": "factors",
        "type": "tuple"
      },
      {
        "internalType": "string",
        "name": "name",
        "type": "string"
      }
    ],
    "name": "addCircuit",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "addressToPlayer",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint8",
            "name": "reliability",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "maniability",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "speed",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "breaks",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "car_balance",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "aerodynamics",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "driver_skills",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "luck",
            "type": "uint8"
          }
        ],
        "internalType": "struct IRacing.PlayerAttributes",
        "name": "attributes",
        "type": "tuple"
      },
      {
        "internalType": "address",
        "name": "playerAddress",
        "type": "address"
      },
      {
        "internalType": "uint16",
        "name": "ELO",
        "type": "uint16"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "betAmount",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "circuits",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint8",
            "name": "weather",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "crashes",
            "type": "uint8"
          },
          {
            "internalType": "uint16",
            "name": "full_Throttle",
            "type": "uint16"
          },
          {
            "internalType": "uint8",
            "name": "downforce",
            "type": "uint8"
          },
          {
            "internalType": "uint16",
            "name": "top_Speed",
            "type": "uint16"
          }
        ],
        "internalType": "struct IRacing.ExternalFactors",
        "name": "factors",
        "type": "tuple"
      },
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      },
      {
        "internalType": "string",
        "name": "name",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "currentPrizePool",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "emergencyWithdraw",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "freeRaceCounter",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "raceId",
        "type": "uint256"
      }
    ],
    "name": "getFreeRaceFromRaceID",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "circuit",
            "type": "uint256"
          },
          {
            "internalType": "enum IRacing.RaceMode",
            "name": "mode",
            "type": "uint8"
          },
          {
            "internalType": "enum IRacing.RaceState",
            "name": "state",
            "type": "uint8"
          },
          {
            "internalType": "address",
            "name": "player1",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "player2",
            "type": "address"
          },
          {
            "internalType": "uint40",
            "name": "player1Time",
            "type": "uint40"
          },
          {
            "internalType": "uint40",
            "name": "player2Time",
            "type": "uint40"
          }
        ],
        "internalType": "struct IRacing.Race",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "id",
        "type": "bytes32"
      }
    ],
    "name": "getFunctionsRequestFromID",
    "outputs": [
      {
        "components": [
          {
            "internalType": "bool",
            "name": "fulfilled",
            "type": "bool"
          },
          {
            "internalType": "bool",
            "name": "exists",
            "type": "bool"
          },
          {
            "internalType": "enum IRacing.RequestType",
            "name": "requestType",
            "type": "uint8"
          },
          {
            "internalType": "uint256[]",
            "name": "results",
            "type": "uint256[]"
          }
        ],
        "internalType": "struct IRacing.FunctionsRequests",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "week",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      }
    ],
    "name": "getPlayerAddressForWeeklyTournament",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "raceId",
        "type": "uint256"
      }
    ],
    "name": "getRaceFromRaceID",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "circuit",
            "type": "uint256"
          },
          {
            "internalType": "enum IRacing.RaceMode",
            "name": "mode",
            "type": "uint8"
          },
          {
            "internalType": "enum IRacing.RaceState",
            "name": "state",
            "type": "uint8"
          },
          {
            "internalType": "address",
            "name": "player1",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "player2",
            "type": "address"
          },
          {
            "internalType": "uint40",
            "name": "player1Time",
            "type": "uint40"
          },
          {
            "internalType": "uint40",
            "name": "player2Time",
            "type": "uint40"
          }
        ],
        "internalType": "struct IRacing.Race",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "raceId",
        "type": "uint256"
      },
      {
        "internalType": "enum IRacing.RaceMode",
        "name": "mode",
        "type": "uint8"
      }
    ],
    "name": "getRaceResults",
    "outputs": [
      {
        "internalType": "uint256[]",
        "name": "",
        "type": "uint256[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "getRandomRequestFromID",
    "outputs": [
      {
        "components": [
          {
            "internalType": "bool",
            "name": "fulfilled",
            "type": "bool"
          },
          {
            "internalType": "bool",
            "name": "exists",
            "type": "bool"
          },
          {
            "internalType": "uint256[]",
            "name": "randomWords",
            "type": "uint256[]"
          }
        ],
        "internalType": "struct IRacing.RandomRequests",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "raceId",
        "type": "uint256"
      },
      {
        "internalType": "enum IRacing.RaceMode",
        "name": "mode",
        "type": "uint8"
      }
    ],
    "name": "getRandomWords",
    "outputs": [
      {
        "internalType": "uint256[]",
        "name": "",
        "type": "uint256[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "raceId",
        "type": "uint256"
      }
    ],
    "name": "getSoloRaceFromRaceID",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "circuit",
            "type": "uint256"
          },
          {
            "internalType": "enum IRacing.RaceMode",
            "name": "mode",
            "type": "uint8"
          },
          {
            "internalType": "enum IRacing.RaceState",
            "name": "state",
            "type": "uint8"
          },
          {
            "internalType": "address",
            "name": "player1",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "player2",
            "type": "address"
          },
          {
            "internalType": "uint40",
            "name": "player1Time",
            "type": "uint40"
          },
          {
            "internalType": "uint40",
            "name": "player2Time",
            "type": "uint40"
          }
        ],
        "internalType": "struct IRacing.Race",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getWeekAndPlayerAmount",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "requestId",
        "type": "bytes32"
      },
      {
        "internalType": "bytes",
        "name": "response",
        "type": "bytes"
      },
      {
        "internalType": "bytes",
        "name": "err",
        "type": "bytes"
      }
    ],
    "name": "handleOracleFulfillment",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "uint8",
            "name": "reliability",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "maniability",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "speed",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "breaks",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "car_balance",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "aerodynamics",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "driver_skills",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "luck",
            "type": "uint8"
          }
        ],
        "internalType": "struct IRacing.PlayerAttributes",
        "name": "attributes",
        "type": "tuple"
      },
      {
        "internalType": "uint256",
        "name": "circuitId",
        "type": "uint256"
      }
    ],
    "name": "joinFreeRace",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "uint8",
            "name": "reliability",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "maniability",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "speed",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "breaks",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "car_balance",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "aerodynamics",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "driver_skills",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "luck",
            "type": "uint8"
          }
        ],
        "internalType": "struct IRacing.PlayerAttributes",
        "name": "attributes",
        "type": "tuple"
      },
      {
        "internalType": "uint256",
        "name": "circuitId",
        "type": "uint256"
      }
    ],
    "name": "joinRace",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "uint8",
            "name": "reliability",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "maniability",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "speed",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "breaks",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "car_balance",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "aerodynamics",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "driver_skills",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "luck",
            "type": "uint8"
          }
        ],
        "internalType": "struct IRacing.PlayerAttributes",
        "name": "attributes1",
        "type": "tuple"
      },
      {
        "components": [
          {
            "internalType": "uint8",
            "name": "reliability",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "maniability",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "speed",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "breaks",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "car_balance",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "aerodynamics",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "driver_skills",
            "type": "uint8"
          },
          {
            "internalType": "uint8",
            "name": "luck",
            "type": "uint8"
          }
        ],
        "internalType": "struct IRacing.PlayerAttributes",
        "name": "attributes2",
        "type": "tuple"
      },
      {
        "internalType": "uint256",
        "name": "circuitId",
        "type": "uint256"
      }
    ],
    "name": "joinSoloRace",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "lastPrizeDistribution",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "owner",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "pause",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "paused",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "playersCounter",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "raceCounter",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "requestId",
        "type": "uint256"
      },
      {
        "internalType": "uint256[]",
        "name": "randomWords",
        "type": "uint256[]"
      }
    ],
    "name": "rawFulfillRandomWords",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "requestWeatherUpdate",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "_requestId",
        "type": "bytes32"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "s_vrfCoordinator",
    "outputs": [
      {
        "internalType": "contract IVRFCoordinatorV2Plus",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_betAmount",
        "type": "uint256"
      }
    ],
    "name": "setBetAmount",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_vrfCoordinator",
        "type": "address"
      }
    ],
    "name": "setCoordinator",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "soloRaceCounter",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "sponsorWeeklyPrizePool",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "tournamentPlayersCounter",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      }
    ],
    "name": "transferOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "unpause",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_forwarder",
        "type": "address"
      }
    ],
    "name": "updateForwarder",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "weeklyTournamentCounter",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "stateMutability": "payable",
    "type": "receive"
  }
]


Contract Creation Code
61016060405266038d7ea4c68000600c5560016011556001601555600160165560016017553480156200003157600080fd5b506040516200679438038062006794833981016040819052620000549162000750565b6001600160a01b0386166080528585803380600081620000bb5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000ee57620000ee8162000227565b5050506001600160a01b038116620001195760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b0319166001600160a01b0392831617905590811660a0908152600a805460ff191690556001600b559088166101005260e08690526001600160401b0385166101205260c0849052610140839052604080519182018152601182526042602083810191909152603b83830152605a60608401526101226080840152815180830190925260068252654d6f6e61636f60d01b90820152620001c49250620002d2565b6040805161010081018252600580825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810191909152620002169060a1906000906200042f565b505042600e555062000a3f92505050565b336001600160a01b03821603620002815760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401620000b2565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b620002dc620006d5565b60006040518060600160405280848152602001601b805490506001620003039190620007dc565b81526020908101849052601b80546001810182556000919091528251805160039092027f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc18101805483860151604080860151606087015160809097015161ffff908116650100000000000261ffff60281b1960ff998a166401000000000260ff60201b199390941662010000029290921664ffffff000019958a166101000261ffff1990971699909a16989098179490941792909216969096171716929092178255928401517f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc284015590830151929350839290917f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc301906200042790826200089b565b505050505050565b600f8054906000620004418362000967565b919050555060006040518060600160405280838152602001856001600160a01b031681526020016104b061ffff1681525090508060186000866001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff16021790555060a08201518160000160056101000a81548160ff021916908360ff16021790555060c08201518160000160066101000a81548160ff021916908360ff16021790555060e08201518160000160076101000a81548160ff021916908360ff160217905550505060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160010160146101000a81548161ffff021916908361ffff160217905550905050836001600160a01b03167ff059c90b21605353e523101edcf8793d3ac0f3717c0411f8fee3c967c0b97e1e83600f546040516200063f92919062000983565b60405180910390a260028360028111156200065e576200065e62000a29565b03620006cf5760108054906000620006768362000967565b909155505060118054600090815260196020908152604080832060108054855290835281842080546001600160a01b0319166001600160a01b038b16908117909155905494548452601a83528184209084529091529020555b50505050565b6000546001600160a01b03163314620007315760405162461bcd60e51b815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401620000b2565b565b80516001600160a01b03811681146200074b57600080fd5b919050565b60008060008060008060c087890312156200076a57600080fd5b620007758762000733565b9550620007856020880162000733565b6040880151606089015191965094506001600160401b0381168114620007aa57600080fd5b809350506080870151915060a087015190509295509295509295565b634e487b7160e01b600052601160045260246000fd5b80820180821115620007f257620007f2620007c6565b92915050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200082357607f821691505b6020821081036200084457634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000896576000816000526020600020601f850160051c81016020861015620008755750805b601f850160051c820191505b81811015620004275782815560010162000881565b505050565b81516001600160401b03811115620008b757620008b7620007f8565b620008cf81620008c884546200080e565b846200084a565b602080601f831160018114620009075760008415620008ee5750858301515b600019600386901b1c1916600185901b17855562000427565b600085815260208120601f198616915b82811015620009385788860151825594840194600190910190840162000917565b5085821015620009575787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000600182016200097c576200097c620007c6565b5060010190565b60006101208201905060ff845116825260ff602085015116602083015260ff60408501511660408301526060840151620009c2606084018260ff169052565b506080840151620009d8608084018260ff169052565b5060a0840151620009ee60a084018260ff169052565b5060c084015162000a0460c084018260ff169052565b5060e084015162000a1a60e084018260ff169052565b50826101008301529392505050565b634e487b7160e01b600052602160045260246000fd5b60805160a05160c05160e051610100516101205161014051615cf662000a9e60003960006116c00152600061169b015260005050600061267d015260006126570152600061261d01526000818161084b0152612e200152615cf66000f3fe60806040526004361061021c5760003560e01c806379a39ebd11610122578063ccb3d9ee116100a5578063e2a5ac421161006c578063e2a5ac4214610707578063e68a37c514610727578063eab8ff7a1461072f578063ef7477981461074f578063f2fde38b1461077c57005b8063ccb3d9ee1461067a578063d24257c0146106a7578063db2e21bc146106bd578063df2fb6e6146106d2578063e0b2b785146106e757005b80638ea98117116100e95780638ea98117146105f85780639eccacf614610618578063a8cd500a14610638578063b8aea03d1461064e578063bc68f0e71461066457005b806379a39ebd146104cc57806379ba50971461059d5780638456cb59146105b2578063896caa4a146105c75780638da5cb5b146105da57005b80633aaeb807116101aa5780635c975abb116101715780635c975abb1461043d578063675f8aea14610460578063710ada3514610476578063731973731461048c578063735323d2146104ac57005b80633aaeb8071461036a5780633f4ba83a146103c35780634f4ad94e146103d857806353a79d74146104075780635a40bcb81461042757005b80631fe543e3116101ee5780631fe543e3146102c75780632291237e146102e7578063254f7225146103075780632f2b2cc9146103345780633436f8471461034a57005b8063073afa16146102255780630ca761751461025b578063118c09781461027b578063192e74c61461029f57005b3661022357005b005b34801561023157600080fd5b50610245610240366004614d3d565b61079c565b6040516102529190614d92565b60405180910390f35b34801561026757600080fd5b50610223610276366004614e6f565b610840565b34801561028757600080fd5b50610291600f5481565b604051908152602001610252565b3480156102ab57600080fd5b5060115460105460408051928352602083019190915201610252565b3480156102d357600080fd5b506102236102e2366004614edb565b6108c4565b3480156102f357600080fd5b50610223610302366004614f59565b610919565b34801561031357600080fd5b50610327610322366004614f82565b6109a8565b6040516102529190614fb6565b34801561034057600080fd5b5061029160155481565b34801561035657600080fd5b506102236103653660046150d7565b610a53565b34801561037657600080fd5b506103ab610385366004615104565b60009182526019602090815260408084209284529190529020546001600160a01b031690565b6040516001600160a01b039091168152602001610252565b3480156103cf57600080fd5b50610223610c14565b3480156103e457600080fd5b506103f86103f3366004614d3d565b610c26565b60405161025293929190615176565b34801561041357600080fd5b50610223610422366004614d3d565b610d36565b34801561043357600080fd5b5061029160105481565b34801561044957600080fd5b50600a5460ff166040519015158152602001610252565b34801561046c57600080fd5b50610291600d5481565b34801561048257600080fd5b5061029160175481565b34801561049857600080fd5b506102236104a73660046151da565b610d7c565b3480156104b857600080fd5b506103276104c7366004614f82565b6110f7565b3480156104d857600080fd5b5061058e6104e7366004614f59565b60186020908152600091825260409182902082516101008082018552825460ff80821684529181048216948301949094526201000084048116948201949094526301000000830484166060820152600160201b830484166080820152600160281b8304841660a0820152600160301b8304841660c0820152600160381b90920490921660e08201526001909101546001600160a01b03811690600160a01b900461ffff1683565b6040516102529392919061527c565b3480156105a957600080fd5b5061022361119f565b3480156105be57600080fd5b50610223611249565b6102236105d53660046150d7565b611259565b3480156105e657600080fd5b506000546001600160a01b03166103ab565b34801561060457600080fd5b50610223610613366004614f59565b6113b0565b34801561062457600080fd5b506002546103ab906001600160a01b031681565b34801561064457600080fd5b50610291600e5481565b34801561065a57600080fd5b5061029160115481565b34801561067057600080fd5b5061029160165481565b34801561068657600080fd5b5061069a610695366004614d3d565b6114a2565b60405161025291906152c6565b3480156106b357600080fd5b50610291600c5481565b3480156106c957600080fd5b50610223611587565b3480156106de57600080fd5b5061029161160c565b3480156106f357600080fd5b50610223610702366004615385565b611793565b34801561071357600080fd5b5061069a610722366004614d3d565b6118e2565b610223611927565b34801561073b57600080fd5b5061069a61074a366004614d3d565b611940565b34801561075b57600080fd5b5061076f61076a366004614d3d565b611985565b604051610252919061544c565b34801561078857600080fd5b50610223610797366004614f59565b611a6a565b604080516060808201835260008083526020808401829052838501839052858252600481529084902084519283018552805460ff8082161515855261010090910416151583830152600181018054865181850281018501885281815295969495929486019383018282801561083057602002820191906000526020600020905b81548152602001906001019080831161081c575b5050505050815250509050919050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108895760405163c6829f8360e01b815260040160405180910390fd5b610894838383611a7b565b60405183907f85e1543bf2f84fe80c6badbce3648c8539ad1df4d2b3d822938ca0538be727e690600090a2505050565b6002546001600160a01b031633146109095760025460405163073e64fd60e21b81523360048201526001600160a01b0390911660248201526044015b60405180910390fd5b610914838383611e6e565b505050565b610921611f5f565b6001600160a01b03811661094857604051636b50302160e11b815260040160405180910390fd5b600380546001600160a01b038381166001600160a01b03198316811790935560408051938452911660208301819052917ffbea789d6a139c51ef0f88cde81c3881e90e894fde6c8665726e118af8b13c3591015b60405180910390a15050565b60606000600960008460028111156109c2576109c26152b0565b60028111156109d3576109d36152b0565b815260208082019290925260409081016000908120878252835281812054808252600584529082902060010180548351818602810186019094528084529194509192830182828015610a4457602002820191906000526020600020905b815481526020019060010190808311610a30575b50505050509150505b92915050565b610a5c82611fb2565b336000908152601860205260409020600101546001600160a01b0316610a8d57610a88336001846120ae565b610b6a565b336000908152601860209081526040918290208451815492860151938601516060870151608088015160a089015160c08a015160e08b015160ff96871661ffff1990991698909817610100998716999099029890981763ffff00001916620100009486169490940263ff0000001916939093176301000000928516929092029190911765ffff000000001916600160201b9184169190910260ff60281b191617600160281b918316919091021761ffff60301b1916600160301b9482169490940260ff60381b191693909317600160381b93909216929092021790555b6016546000610b7b8383600161234a565b60405183815290915033907fb7ca5fd11fcc371b7342f8d32d7904bfa8a90b42408f17aa2374cc9f8e569ec39060200160405180910390a28015610c0e576040518281527f3bfb8b0a9033c58e53fb4034e9dd93b547332b3ce863c7fbdc17e3de6b6042229060200160405180910390a160168054906000610bfc836154b1565b9190505550610c0c826001612619565b505b50505050565b610c1c611f5f565b610c24612885565b565b601b8181548110610c3657600080fd5b60009182526020918290206040805160a0810182526003909302909101805460ff8082168552610100820481169585019590955261ffff620100008204811693850193909352600160201b81049094166060840152600160281b9093041660808201526001820154600283018054929450909291610cb3906154ca565b80601f0160208091040260200160405190810160405280929190818152602001828054610cdf906154ca565b8015610d2c5780601f10610d0157610100808354040283529160200191610d2c565b820191906000526020600020905b815481529060010190602001808311610d0f57829003601f168201915b5050505050905083565b610d3e611f5f565b600c80549082905560408051838152602081018390527f91a8221228f69680d3ac694590d00346a90b656ad61b0d4dbbce2f10dda082a8910161099c565b610d8583611fb2565b610d8e82611fb2565b336000908152601860205260409020600101546001600160a01b0316610dbf57610dba336000856120ae565b610e9c565b336000908152601860209081526040918290208551815492870151938701516060880151608089015160a08a015160c08b015160e08c015160ff96871661ffff1990991698909817610100998716999099029890981763ffff00001916620100009486169490940263ff0000001916939093176301000000928516929092029190911765ffff000000001916600160201b9184169190910260ff60281b191617600160281b918316919091021761ffff60301b1916600160301b9482169490940260ff60381b191693909317600160381b93909216929092021790555b60155460a160009081526018602090815284517fd3723054c0d834f13759de124846cd7afc111c73a0a6bc0861788fd4662eae0b8054928701516040880151606089015160808a015160a08b015160c08c015160e08d015160ff908116600160381b0260ff60381b19928216600160301b029290921661ffff60301b19938216600160281b0260ff60281b19958316600160201b029590951665ffff000000001996831663010000000263ff0000001998841662010000029890981663ffff0000199984166101000261ffff19909d1693909b16929092179a909a179690961697909717939093179190911692909217919091171692909217179055610fa283826128d7565b90506002604082018190525060008281526012602090815260409091208251815590820151600180830180548594939260ff1990911690836002811115610feb57610feb6152b0565b0217905550604082015160018201805461ff001916610100836003811115611015576110156152b0565b0217905550606082015160018201805462010000600160b01b031916620100006001600160a01b039384160217905560808301516002909201805460a085015160c090950151939092166001600160c81b031990921691909117600160a01b64ffffffffff948516021764ffffffffff60c81b1916600160c81b9390921692909202179055601580549060006110aa836154b1565b909155505060405182815233907fae83fac315b6466290259e65572ffa6c9013591cf7e7e9973a526791e2b2b0fd9060200160405180910390a26110ef826000612619565b505050505050565b6060600060086000846002811115611111576111116152b0565b6002811115611122576111226152b0565b815260208082019290925260409081016000908120878252835281812054808252600484529082902060010180548351818602810186019094528084529194509192830182828015610a445760200282019190600052602060002090815481526020019060010190808311610a3057505050505091505092915050565b6001546001600160a01b031633146111f25760405162461bcd60e51b815260206004820152601660248201527526bab9ba10313290383937b837b9b2b21037bbb732b960511b6044820152606401610900565b60008054336001600160a01b0319808316821784556001805490911690556040516001600160a01b0390921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b611251611f5f565b610c2461292e565b61126161296b565b61126961298f565b600c54341461128b576040516345c6b33b60e11b815260040160405180910390fd5b61129482611fb2565b336000908152601860205260409020600101546001600160a01b03166112c5576112c0336002846120ae565b6112cf565b6112cf33836129b9565b60646112dc3460056154fe565b6112e6919061552b565b600d60008282546112f7919061553f565b9091555050601754600061130d8383600261234a565b60405183815290915033907fb7ca5fd11fcc371b7342f8d32d7904bfa8a90b42408f17aa2374cc9f8e569ec39060200160405180910390a280156113a0576040518281527fd8a537561d247cabc83980738b2fd3771513f9b3a4b696b3fead967d36efe7da9060200160405180910390a16017805490600061138e836154b1565b919050555061139e826002612619565b505b50506113ac6001600b55565b5050565b6000546001600160a01b031633148015906113d657506002546001600160a01b03163314155b1561142757336113ee6000546001600160a01b031690565b60025460405163061db9c160e01b81526001600160a01b0393841660048201529183166024830152919091166044820152606401610900565b6001600160a01b03811661144e5760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b0319166001600160a01b0383169081179091556040519081527fd1a6a14209a385a964d036e404cb5cfb71f4000cdb03c9366292430787261be69060200160405180910390a150565b6114aa614beb565b600082815260136020908152604091829020825160e08101909352805483526001810154909183019060ff1660028111156114e7576114e76152b0565b60028111156114f8576114f86152b0565b81526020016001820160019054906101000a900460ff166003811115611520576115206152b0565b6003811115611531576115316152b0565b815260018201546001600160a01b036201000090910481166020830152600290920154918216604082015264ffffffffff600160a01b830481166060830152600160c81b90920490911660809091015292915050565b61158f611f5f565b4715610c2457600080546040516001600160a01b039091169047908381818185875af1925050503d80600081146115e2576040519150601f19603f3d011682016040523d82523d6000602084013e6115e7565b606091505b50509050806116095760405163d969379360e01b815260040160405180910390fd5b50565b6003546000906001600160a01b0316331461163a57604051636864b1c960e11b815260040160405180910390fd5b61167b6040805160e0810190915280600081526020016000815260200160008152602001606081526020016060815260200160608152602001606081525090565b61168d611686612b23565b8290612b46565b6116e461169982612b53565b7f0000000000000000000000000000000000000000000000000000000000000000620493e07f0000000000000000000000000000000000000000000000000000000000000000612e1b565b6040805160808101825260008082526001602080840182815284860183815286518581528084018852606087015287855260059092529490922083518154955161ffff1990961690151561ff0019161761010095151595909502949094178085559151949650919391839162ff00001916906201000090849081111561176c5761176c6152b0565b02179055506060820151805161178c916001840191602090910190614c29565b5050505090565b61179b611f5f565b60006040518060600160405280848152602001601b8054905060016117c0919061553f565b81526020908101849052601b80546001810182556000919091528251805160039092027f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc18101805483860151604080860151606087015160809097015161ffff908116600160281b0266ffff00000000001960ff998a16600160201b0264ff00000000199390941662010000029290921664ffffff000019958a166101000261ffff1990971699909a16989098179490941792909216969096171716929092178255928401517f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc284015590830151929350839290917f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc301906110ef908261559a565b6118ea614beb565b600082815260146020908152604091829020825160e08101909352805483526001810154909183019060ff1660028111156114e7576114e76152b0565b34600d6000828254611939919061553f565b9091555050565b611948614beb565b600082815260126020908152604091829020825160e08101909352805483526001810154909183019060ff1660028111156114e7576114e76152b0565b604080516080808201835260008083526020808401829052838501829052606080850152858252600581529084902084519283018552805460ff8082161515855261010082048116151593850193909352939492939092840191620100009091041660018111156119f8576119f86152b0565b6001811115611a0957611a096152b0565b815260200160018201805480602002602001604051908101604052809291908181526020018280548015610830576020028201919060005260206000209081548152602001906001019080831161081c575050505050815250509050919050565b611a72611f5f565b61160981612eed565b60008381526005602090815260408083208151608081018352815460ff80821615158352610100820481161515958301959095529093919284019162010000909104166001811115611acf57611acf6152b0565b6001811115611ae057611ae06152b0565b815260200160018201805480602002602001604051908101604052809291908181526020018280548015611b3357602002820191906000526020600020905b815481526020019060010190808311611b1f575b50505050508152505090508060200151611b605760405163d9db887560e01b815260040160405180910390fd5b600180825281604001516001811115611b7b57611b7b6152b0565b03611cad57600083806020019051810190611b969190615659565b60408051600180825281830190925291925060208083019080368337505050606083018190528051829190600090611bd057611bd0615672565b602090810291909101810191909152600086815260058252604090819020845181549386015161ffff1990941690151561ff00191617610100931515939093029290921780835590840151849291829062ff0000191662010000836001811115611c3c57611c3c6152b0565b021790555060608201518051611c5c916001840191602090910190614c29565b50905050611c6b600182612f96565b847f8669487a0ce43a05aa08d22f75a488515efb856f596ad9827a04c60eb3d9ddd98360600151604051611c9f9190614fb6565b60405180910390a250610c0e565b600081604001516001811115611cc557611cc56152b0565b03611e5557600083806020019051810190611ce09190615659565b604080516002808252606082018352929350608084901c926fffffffffffffffffffffffffffffffff85169260009291906020830190803683370190505090508281600081518110611d3457611d34615672565b6020026020010181815250508181600181518110611d5457611d54615672565b60209081029190910181019190915260608601829052600089815260058252604090819020875181549389015161ffff1990941690151561ff00191617610100931515939093029290921780835590870151879291829062ff0000191662010000836001811115611dc757611dc76152b0565b021790555060608201518051611de7916001840191602090910190614c29565b50905050877fa0773f255e7f88c558c9ffc8eb46f9981eff25ae8605581f7abf55b3487c6d8a82604051611e1b9190614fb6565b60405180910390a2600088815260076020908152604080832054600690925290912054611e4c919060ff1683613083565b50505050610c0e565b6040516317c3b69160e21b815260040160405180910390fd5b600083815260046020526040902054610100900460ff16611ea25760405163f100e72d60e01b815260040160405180910390fd5b6000838152600460205260409020805460ff191660019081178255611ec991018383614c74565b507fc337b17e42752dab36d6fe891e0d288f5933bf4a5613914a1f7ac9bbd86a1b9b838383604051611efd93929190615688565b60405180910390a161091482828080602002602001604051908101604052809392919081815260200183836020028082843760009201829052508881526007602090815260408083205460069092529091205490935060ff1691506135749050565b6000546001600160a01b03163314610c245760405162461bcd60e51b815260206004820152601660248201527527b7363c9031b0b63630b1363290313c9037bbb732b960511b6044820152606401610900565b8051611fbd90613792565b611fca8160200151613792565b611fd78160400151613792565b611fe48160600151613792565b611ff18160800151613792565b611ffe8160a00151613792565b61200b8160c00151613792565b6120188160e00151613792565b60008160e001518260c001518360a001518460800151856060015186604001518760200151886000015161204c91906156c9565b61205691906156c9565b61206091906156c9565b61206a91906156c9565b61207491906156c9565b61207e91906156c9565b61208891906156c9565b90508060ff166028146113ac57604051630c06689360e41b815260040160405180910390fd5b600f80549060006120be836154b1565b919050555060006040518060600160405280838152602001856001600160a01b031681526020016104b061ffff1681525090508060186000866001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff16021790555060a08201518160000160056101000a81548160ff021916908360ff16021790555060c08201518160000160066101000a81548160ff021916908360ff16021790555060e08201518160000160076101000a81548160ff021916908360ff160217905550505060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160010160146101000a81548161ffff021916908361ffff160217905550905050836001600160a01b03167ff059c90b21605353e523101edcf8793d3ac0f3717c0411f8fee3c967c0b97e1e83600f546040516122ba9291906156e2565b60405180910390a260028360028111156122d6576122d66152b0565b03610c0e57601080549060006122eb836154b1565b909155505060118054600090815260196020908152604080832060108054855290835281842080546001600160a01b038b166001600160a01b03199091168117909155905494548452601a835281842090845290915290205550505050565b60006001826002811115612360576123606152b0565b036125185760008084815260136020526040902060010154610100900460ff166003811115612391576123916152b0565b036124975760006123a285846128d7565b60008581526013602090815260409091208251815590820151600180830180549495508594909160ff19909116908360028111156123e2576123e26152b0565b0217905550604082015160018201805461ff00191661010083600381111561240c5761240c6152b0565b0217905550606082015160018201805462010000600160b01b031916620100006001600160a01b039384160217905560808301516002909201805460a085015160c090950151939092166001600160c81b031990921691909117600160a01b64ffffffffff948516021764ffffffffff60c81b1916600160c81b939092169290920217905550612612565b6000838152601360205260409020600101546201000090046001600160a01b031633036124d75760405163d157af3b60e01b815260040160405180910390fd5b60008381526013602052604090206001810180546002919061ff00191661010083021790555060020180546001600160a01b03191633179055506001612612565b60008084815260146020526040902060010154610100900460ff166003811115612544576125446152b0565b0361259557600061255585846128d7565b60008581526014602090815260409091208251815590820151600180830180549495508594909160ff19909116908360028111156123e2576123e26152b0565b6000838152601460205260409020600101546201000090046001600160a01b031633036125d55760405163d157af3b60e01b815260040160405180910390fd5b60008381526014602052604090206001810180546002919061ff00191661010083021790555060020180546001600160a01b031916331790555060015b9392505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b1c385e6040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000081526020017f00000000000000000000000000000000000000000000000000000000000000008152602001600361ffff168152602001622625a063ffffffff168152602001600263ffffffff1681526020016126e26040518060200160405280600015158152506137c5565b8152506040518263ffffffff1660e01b815260040161270191906156ff565b6020604051808303816000875af1158015612720573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127449190615659565b6040805160608101825260008082526001602080840182815285518481528083018752858701908152878552600483529590932084518154945161ffff1990951690151561ff001916176101009415159490940293909317835593518051959650929491936127b99391850192910190614c29565b5050506000818152600660205260409020805483919060ff191660018360028111156127e7576127e76152b0565b021790555060008181526007602052604081208490558190600890846002811115612814576128146152b0565b6002811115612825576128256152b0565b81526020808201929092526040908101600090812087825283528190209290925581518381526002918101919091527fb0a9876f9361311a99fea793151f603d6e589d54d7e058d1b1b7d8e5d70e5034910160405180910390a192915050565b61288d613836565b600a805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6128df614beb565b6040518060e00160405280848152602001836002811115612902576129026152b0565b815260200160018152336020820152600060408201819052606082018190526080909101529392505050565b61293661296b565b600a805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586128ba3390565b600a5460ff1615610c245760405163d93c066560e01b815260040160405180910390fd5b6002600b54036129b257604051633ee5aeb560e01b815260040160405180910390fd5b6002600b55565b6001600160a01b038216600081815260186020908152604080832085518154848801518489015160608a015160808b015160a08c015160c08d015160e08e015160ff908116600160381b0260ff60381b19928216600160301b029290921661ffff60301b19938216600160281b0260ff60281b19958316600160201b029590951665ffff000000001996831663010000000263ff0000001998841662010000029890981663ffff0000199984166101000261ffff19909b1693909b16929092179890981796909616979097179390931791909116929092179190911716171790556011548352601a82528083209383529290529081205490036113ac5760108054906000612ac6836154b1565b909155505060118054600090815260196020908152604080832060108054855290835281842080546001600160a01b0389166001600160a01b03199091168117909155905494548452601a83528184209084529091529020555050565b60606040518061012001604052806101008152602001615a456101009139905090565b6113ac8260008084613859565b60606000612b626101006138d7565b9050612b9b6040518060400160405280600c81526020016b31b7b232a637b1b0ba34b7b760a11b815250826138f890919063ffffffff16565b8251612bb9906002811115612bb257612bb26152b0565b8290613911565b6040805180820190915260088152676c616e677561676560c01b6020820152612be39082906138f8565b6040830151612bfa908015612bb257612bb26152b0565b604080518082019091526006815265736f7572636560d01b6020820152612c229082906138f8565b6060830151612c329082906138f8565b60a08301515115612cbe576040805180820190915260048152636172677360e01b6020820152612c639082906138f8565b612c6c8161394a565b60005b8360a0015151811015612cb457612cac8460a001518281518110612c9557612c95615672565b6020026020010151836138f890919063ffffffff16565b600101612c6f565b50612cbe8161396e565b60808301515115612d8257600083602001516002811115612ce157612ce16152b0565b03612cff5760405163a80d31f760e01b815260040160405180910390fd5b60408051808201909152600f81526e39b2b1b932ba39a637b1b0ba34b7b760891b6020820152612d309082906138f8565b612d4983602001516002811115612bb257612bb26152b0565b6040805180820190915260078152667365637265747360c81b6020820152612d729082906138f8565b6080830151612d8290829061398c565b60c08301515115612e135760408051808201909152600981526862797465734172677360b81b6020820152612db89082906138f8565b612dc18161394a565b60005b8360c0015151811015612e0957612e018460c001518281518110612dea57612dea615672565b60200260200101518361398c90919063ffffffff16565b600101612dc4565b50612e138161396e565b515192915050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663461d27628688600188886040518663ffffffff1660e01b8152600401612e7395949392919061575c565b6020604051808303816000875af1158015612e92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eb69190615659565b60405190915081907f1131472297a800fee664d1d89cfa8f7676ff07189ecc53f80bbb5f4969099db890600090a295945050505050565b336001600160a01b03821603612f455760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610900565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6000612fa183613999565b805160ff84169052905080601b612fb96001866157a5565b81548110612fc957612fc9615672565b6000918252602091829020835180516003909302909101805482850151604080850151606086015160809096015161ffff908116600160281b0266ffff00000000001960ff988916600160201b0264ff00000000199390941662010000029290921664ffffff0000199589166101000261ffff19909716989099169790971794909417929092169590951717169190911781559183015160018301558201516002820190613077908261559a565b50905050610914613b30565b600061308f8484613b53565b9050816000815181106130a4576130a4615672565b602090810291909101015164ffffffffff1660a08201528151829060019081106130d0576130d0615672565b602090810291909101015164ffffffffff90811660c0830181905260a083015160009216111561310457816080015161310a565b81606001515b90506000816001600160a01b031683606001516001600160a01b03161461313557826060015161313b565b82608001515b905060036040840181905250604080516001600160a01b0380851682528316602082015287917f4fa07dbeaec3b1252f94a00273e5d685765a5fc79c7f0a6d3a2db00fd07e6883910160405180910390a260008560028111156131a0576131a06152b0565b036132965760008681526012602090815260409091208451815590840151600180830180548794939260ff19909116908360028111156131e2576131e26152b0565b0217905550604082015160018201805461ff00191661010083600381111561320c5761320c6152b0565b0217905550606082015160018201805462010000600160b01b031916620100006001600160a01b039384160217905560808301516002909201805460a085015160c090950151939092166001600160c81b031990921691909117600160a01b64ffffffffff948516021764ffffffffff60c81b1916600160c81b93909216929092021790556110ef565b60018560028111156132aa576132aa6152b0565b036132ec5760008681526013602090815260409091208451815590840151600180830180548794939260ff19909116908360028111156131e2576131e26152b0565b6001600160a01b0382166000908152601860205260409020600101805460039190601490613326908490600160a01b900461ffff166157b8565b92506101000a81548161ffff021916908361ffff160217905550600160186000846001600160a01b031686606001516001600160a01b03161461336d578560600151613373565b85608001515b6001600160a01b03168152602081019190915260400160002060010180546014906133aa908490600160a01b900461ffff166157b8565b92506101000a81548161ffff021916908361ffff16021790555082601460008881526020019081526020016000206000820151816000015560208201518160010160006101000a81548160ff0219169083600281111561340c5761340c6152b0565b0217905550604082015160018201805461ff001916610100836003811115613436576134366152b0565b0217905550606082015160018201805462010000600160b01b031916620100006001600160a01b039384160217905560808301516002909201805460a085015160c090950151939092166001600160c81b031990921691909117600160a01b64ffffffffff948516021764ffffffffff60c81b1916600160c81b9390921692909202179055600c54600090156134f1576064600c5460026134d791906154fe565b6134e290605f6154fe565b6134ec919061552b565b6134f4565b60005b90506000836001600160a01b03168260405160006040518083038185875af1925050503d8060008114613543576040519150601f19603f3d011682016040523d82523d6000602084013e613548565b606091505b505090508061356a57604051637a401d2b60e01b815260040160405180910390fd5b5050505050505050565b60006135808383613b53565b905060006135918260000151613999565b51516040805160028082526060820190925260ff909216925060009190816020015b6135bb614caf565b8152602001906001900390816135b35750506060848101516001600160a01b0316600090815260186020908152604080832081516101008082018452915460ff808216835292810483169482019490945262010000840482169281019290925263010000008304811694820194909452600160201b820484166080820152600160281b8204841660a0820152600160301b8204841660c0820152600160381b90910490921660e0830152885192935061368a9289919061367d5761367d615672565b6020026020010151613ce5565b8160008151811061369d5761369d615672565b6020908102919091018101919091526080808501516001600160a01b031660009081526018835260409081902081516101008082018452915460ff80821683529281048316958201959095526201000085048216928101929092526301000000840481166060830152600160201b8404811692820192909252600160281b8304821660a0820152600160301b8304821660c0820152600160381b9092041660e0820152865161375a91908890600190811061367d5761367d615672565b8160018151811061376d5761376d615672565b6020026020010181905250613789836000015186848785613df8565b50505050505050565b60018160ff1610806137a75750600a8160ff16115b15611609576040516392ccd95160e01b815260040160405180910390fd5b60607f92fd13387c7fe7befbc38d303d6468778fb9731bc4583f17d92989c6fcfdeaaa826040516024016137fe91511515815260200190565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915292915050565b600a5460ff16610c2457604051638dfc202b60e01b815260040160405180910390fd5b805160000361387b576040516322ce3edd60e01b815260040160405180910390fd5b8383600281111561388e5761388e6152b0565b908160028111156138a1576138a16152b0565b905250604084018280156138b7576138b76152b0565b908180156138c7576138c76152b0565b9052506060909301929092525050565b6138df614cf3565b80516138eb9083614020565b5060006020820152919050565b6139058260038351614097565b815161091490826141b0565b815161391e9060c26141d1565b506113ac828260405160200161393691815260200190565b60405160208183030381529060405261398c565b61395581600461423a565b600181602001818151613968919061553f565b90525050565b61397981600761423a565b60018160200181815161396891906157a5565b6139058260028351614097565b6040805161010081018252600060608083018281526080840183905260a0840183905260c0840183905260e0840183905283526020830182905292820192909252906139e66001846157a5565b601b54909150811115613a0c57604051631003fbe960e01b815260040160405180910390fd5b601b8181548110613a1f57613a1f615672565b60009182526020918290206040805161010080820183526003909402909201805460ff808216606086019081529582048116608086015261ffff620100008304811660a0870152600160201b830490911660c0860152600160281b9091041660e08401529282526001830154938201939093526002820180549193840191613aa6906154ca565b80601f0160208091040260200160405190810160405280929190818152602001828054613ad2906154ca565b8015613b1f5780601f10613af457610100808354040283529160200191613b1f565b820191906000526020600020905b815481529060010190602001808311613b0257829003601f168201915b505050505081525050915050919050565b62093a80600e54613b41919061553f565b4210610c245742600e55610c24614251565b613b5b614beb565b6002826002811115613b6f57613b6f6152b0565b03613c5257600083815260146020908152604091829020825160e08101909352805483526001810154909183019060ff166002811115613bb157613bb16152b0565b6002811115613bc257613bc26152b0565b81526020016001820160019054906101000a900460ff166003811115613bea57613bea6152b0565b6003811115613bfb57613bfb6152b0565b815260018201546001600160a01b036201000090910481166020830152600290920154918216604082015264ffffffffff600160a01b830481166060830152600160c81b9092049091166080909101529050610a4d565b6001826002811115613c6657613c666152b0565b03613ca857600083815260136020908152604091829020825160e08101909352805483526001810154909183019060ff166002811115613bb157613bb16152b0565b600083815260126020908152604091829020825160e08101909352805483526001810154909183019060ff166002811115613bb157613bb16152b0565b613ced614caf565b60006005600a613cfe6065866157d3565b613d08919061552b565b613d1291906157e7565b9050600060058560e0015160ff16613d2a91906157e7565b90506000613d388284615807565b9050613d488660000151826146e8565b60ff1686526020860151613d5c90826146e8565b60ff1660208701526040860151613d7390826146e8565b60ff1660408701526060860151613d8a90826146e8565b60ff1660608701526080860151613da190826146e8565b60ff16608087015260a0860151613db890826146e8565b60ff1660a087015260c0860151613dcf90826146e8565b60ff1660c087015260e0860151613de690826146e8565b60ff1660e08701525093949350505050565b604080516001808252818301909252600091829190816020015b6060815260200190600190039081613e12579050509050613e34878685614726565b81600081518110613e4757613e47615672565b6020026020010181905250613e936040805160e0810190915280600081526020016000815260200160008152602001606081526020016060815260200160608152602001606081525090565b613e9e61168661479e565b815115613eaf57613eaf81836147c1565b613ebb61169982612b53565b60408051608081018252600080825260016020830152929550919082019081526020016000604051908082528060200260200182016040528015613f09578160200160208202803683370190505b509052600084815260056020908152604091829020835181549285015161ffff1990931690151561ff001916176101009215159290920291909117808255918301519091829062ff0000191662010000836001811115613f6b57613f6b6152b0565b021790555060608201518051613f8b916001840191602090910190614c29565b5050506000838152600660205260409020805486919060ff19166001836002811115613fb957613fb96152b0565b021790555060008381526007602052604081208890558390600990876002811115613fe657613fe66152b0565b6002811115613ff757613ff76152b0565b8152602080820192909252604090810160009081208b8252909252902055505095945050505050565b6040805180820190915260608152600060208201526140406020836157d3565b15614068576140506020836157d3565b61405b9060206157a5565b614065908361553f565b91505b60208084018390526040518085526000815290818401018181101561408c57600080fd5b604052509192915050565b6017816001600160401b0316116140bd578251610c0e9060e0600585901b1683176141d1565b60ff816001600160401b0316116140fd5782516140e5906018611fe0600586901b16176141d1565b508251610c0e906001600160401b03831660016147eb565b61ffff816001600160401b03161161413e578251614126906019611fe0600586901b16176141d1565b508251610c0e906001600160401b03831660026147eb565b63ffffffff816001600160401b03161161418157825161416990601a611fe0600586901b16176141d1565b508251610c0e906001600160401b03831660046147eb565b825161419890601b611fe0600586901b16176141d1565b508251610c0e906001600160401b03831660086147eb565b60408051808201909152606081526000602082015261261283838451614870565b60408051808201909152606081526000602082015282515160006141f682600161553f565b90508460200151821061421757614217856142128360026154fe565b614941565b8451602083820101858153508051821115614230578181525b5093949350505050565b815161091490601f611fe0600585901b16176141d1565b6000806104b0905060006064601054101561426e57601054614271565b60645b905060015b81811161460f576000601960006011548152602001908152602001600020600083815260200190815260200160002060009054906101000a90046001600160a01b03169050600060186000836001600160a01b03166001600160a01b0316815260200190815260200160002060405180606001604052908160008201604051806101000160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff1681526020016000820160029054906101000a900460ff1660ff1660ff1681526020016000820160039054906101000a900460ff1660ff1660ff1681526020016000820160049054906101000a900460ff1660ff1660ff1681526020016000820160059054906101000a900460ff1660ff1660ff1681526020016000820160069054906101000a900460ff1660ff1660ff1681526020016000820160079054906101000a900460ff1660ff1660ff168152505081526020016001820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016001820160149054906101000a900461ffff1661ffff1661ffff168152505090506000816040015190506104b0826040019061ffff16908161ffff16815250508160186000856001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff16021790555060a08201518160000160056101000a81548160ff021916908360ff16021790555060c08201518160000160066101000a81548160ff021916908360ff16021790555060e08201518160000160076101000a81548160ff021916908360ff160217905550505060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160010160146101000a81548161ffff021916908361ffff1602179055509050508561ffff168161ffff16111561460157809550816020015196505b836001019350505050614276565b5060118054906000614620836154b1565b909155505060006010556001600160a01b0383161580159061464457506000600d54115b1561091457600d5447101561466c57604051632793f54760e11b815260040160405180910390fd5b600d80546000918290556040519091906001600160a01b0386169083908381818185875af1925050503d80600081146146c1576040519150601f19603f3d011682016040523d82523d6000602084013e6146c6565b606091505b5050905080610c0c576040516356b513fd60e11b815260040160405180910390fd5b600080826146fa60ff8616600a6154fe565b6147049190615807565b9050600a8112156147135750600a5b6063811315612612575060639392505050565b606061473184614958565b61473a846149d2565b61475d8460008151811061475057614750615672565b6020026020010151614a64565b6147738560018151811061475057614750615672565b604051602001614786949392919061582f565b60405160208183030381529060405290509392505050565b6060604051806101a0016040528061017c8152602001615b4561017c9139905090565b80516000036147e35760405163fe936cb760e01b815260040160405180910390fd5b60a090910152565b604080518082019091526060815260006020820152835151600061480f828561553f565b9050856020015181111561482c5761482c866142128360026154fe565b6000600161483c8661010061596a565b61484691906157a5565b90508651828101878319825116178152508051831115614864578281525b50959695505050505050565b604080518082019091526060815260006020820152825182111561489357600080fd5b83515160006148a2848361553f565b905085602001518111156148bf576148bf866142128360026154fe565b8551805183820160200191600091808511156148d9578482525b505050602086015b6020861061491957805182526148f860208361553f565b915061490560208261553f565b90506149126020876157a5565b95506148e1565b51815160001960208890036101000a0190811690199190911617905250849150509392505050565b815161494d8383614020565b50610c0e83826141b0565b60608160000361497b576040516349a87cdd60e11b815260040160405180910390fd5b60006149886001846157a5565b9050600a8110156149c35761499c816149d2565b6040516020016149ac9190615976565b604051602081830303815290604052915050919050565b612612816149d2565b50919050565b606060006149df83614b13565b60010190506000816001600160401b038111156149fe576149fe614dcd565b6040519080825280601f01601f191660200182016040528015614a28576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084614a3257509392505050565b6060614a76826000015160ff166149d2565b614a86836020015160ff166149d2565b614a96846040015160ff166149d2565b614aa6856060015160ff166149d2565b614ab6866080015160ff166149d2565b614ac68760a0015160ff166149d2565b614ad68860c0015160ff166149d2565b614ae68960e0015160ff166149d2565b604051602001614afd98979695949392919061599f565b6040516020818303038152906040529050919050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310614b525772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310614b7e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310614b9c57662386f26fc10000830492506010015b6305f5e1008310614bb4576305f5e100830492506008015b6127108310614bc857612710830492506004015b60648310614bda576064830492506002015b600a8310610a4d5760010192915050565b6040805160e0810190915260008082526020820190815260200160008152600060208201819052604082018190526060820181905260809091015290565b828054828255906000526020600020908101928215614c64579160200282015b82811115614c64578251825591602001919060010190614c49565b50614c70929150614d28565b5090565b828054828255906000526020600020908101928215614c64579160200282015b82811115614c64578235825591602001919060010190614c94565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915290565b6040518060400160405280614d1b604051806040016040528060608152602001600081525090565b8152602001600081525090565b5b80821115614c705760008155600101614d29565b600060208284031215614d4f57600080fd5b5035919050565b60008151808452602080850194506020840160005b83811015614d8757815187529582019590820190600101614d6b565b509495945050505050565b6020815281511515602082015260208201511515604082015260006040830151606080840152614dc56080840182614d56565b949350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112614df457600080fd5b81356001600160401b0380821115614e0e57614e0e614dcd565b604051601f8301601f19908116603f01168101908282118183101715614e3657614e36614dcd565b81604052838152866020858801011115614e4f57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215614e8457600080fd5b8335925060208401356001600160401b0380821115614ea257600080fd5b614eae87838801614de3565b93506040860135915080821115614ec457600080fd5b50614ed186828701614de3565b9150509250925092565b600080600060408486031215614ef057600080fd5b8335925060208401356001600160401b0380821115614f0e57600080fd5b818601915086601f830112614f2257600080fd5b813581811115614f3157600080fd5b8760208260051b8501011115614f4657600080fd5b6020830194508093505050509250925092565b600060208284031215614f6b57600080fd5b81356001600160a01b038116811461261257600080fd5b60008060408385031215614f9557600080fd5b82359150602083013560038110614fab57600080fd5b809150509250929050565b6020808252825182820181905260009190848201906040850190845b81811015614fee57835183529284019291840191600101614fd2565b50909695505050505050565b803560ff8116811461500b57600080fd5b919050565b600061010080838503121561502457600080fd5b604051908101906001600160401b038211818310171561504657615046614dcd565b8160405280925061505684614ffa565b815261506460208501614ffa565b602082015261507560408501614ffa565b604082015261508660608501614ffa565b606082015261509760808501614ffa565b60808201526150a860a08501614ffa565b60a08201526150b960c08501614ffa565b60c08201526150ca60e08501614ffa565b60e0820152505092915050565b60008061012083850312156150eb57600080fd5b6150f58484615010565b94610100939093013593505050565b6000806040838503121561511757600080fd5b50508035926020909101359150565b60005b83811015615141578181015183820152602001615129565b50506000910152565b60008151808452615162816020860160208601615126565b601f01601f19169290920160200192915050565b60ff845116815260ff60208501511660208201526000604085015161ffff808216604085015260ff606088015116606085015280608088015116608085015250508360a083015260e060c08301526151d160e083018461514a565b95945050505050565b600080600061022084860312156151f057600080fd5b6151fa8585615010565b925061520a856101008601615010565b915061020084013590509250925092565b60ff8082511683528060208301511660208401528060408301511660408401528060608301511660608401528060808301511660808401528060a08301511660a08401528060c08301511660c08401528060e08301511660e0840152505050565b610140810161528b828661521b565b6001600160a01b039390931661010082015261ffff9190911661012090910152919050565b634e487b7160e01b600052602160045260246000fd5b81518152602082015160e0820190600381106152e4576152e46152b0565b60208301526040830151600481106152fe576152fe6152b0565b80604084015250606083015161531f60608401826001600160a01b03169052565b50608083015161533a60808401826001600160a01b03169052565b5060a083015161535360a084018264ffffffffff169052565b5060c083015161536c60c084018264ffffffffff169052565b5092915050565b803561ffff8116811461500b57600080fd5b60008082840360c081121561539957600080fd5b60a08112156153a757600080fd5b5060405160a081016001600160401b0382821081831117156153cb576153cb614dcd565b816040526153d886614ffa565b83526153e660208701614ffa565b60208401526153f760408701615373565b604084015261540860608701614ffa565b606084015261541960808701615373565b608084015291935060a0850135918083111561543457600080fd5b505061544285828601614de3565b9150509250929050565b60208152815115156020820152602082015115156040820152600060408301516002811061547c5761547c6152b0565b806060840152506060830151608080840152614dc560a0840182614d56565b634e487b7160e01b600052601160045260246000fd5b6000600182016154c3576154c361549b565b5060010190565b600181811c908216806154de57607f821691505b6020821081036149cc57634e487b7160e01b600052602260045260246000fd5b8082028115828204841417610a4d57610a4d61549b565b634e487b7160e01b600052601260045260246000fd5b60008261553a5761553a615515565b500490565b80820180821115610a4d57610a4d61549b565b601f821115610914576000816000526020600020601f850160051c8101602086101561557b5750805b601f850160051c820191505b818110156110ef57828155600101615587565b81516001600160401b038111156155b3576155b3614dcd565b6155c7816155c184546154ca565b84615552565b602080601f8311600181146155fc57600084156155e45750858301515b600019600386901b1c1916600185901b1785556110ef565b600085815260208120601f198616915b8281101561562b5788860151825594840194600190910190840161560c565b50858210156156495787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121561566b57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b838152604060208201819052810182905260006001600160fb1b038311156156af57600080fd5b8260051b8085606085013791909101606001949350505050565b60ff8181168382160190811115610a4d57610a4d61549b565b61012081016156f1828561521b565b826101008301529392505050565b60208152815160208201526020820151604082015261ffff60408301511660608201526000606083015163ffffffff80821660808501528060808601511660a0850152505060a083015160c080840152614dc560e084018261514a565b6001600160401b038616815260a06020820152600061577e60a083018761514a565b61ffff9590951660408301525063ffffffff92909216606083015260809091015292915050565b81810381811115610a4d57610a4d61549b565b61ffff81811683821601908082111561536c5761536c61549b565b6000826157e2576157e2615515565b500690565b818103600083128015838313168383128216171561536c5761536c61549b565b80820182811260008312801582168215821617156158275761582761549b565b505092915050565b60008551615841818460208a01615126565b855190830190615855818360208a01615126565b8551910190615868818360208901615126565b845191019061587b818360208801615126565b019695505050505050565b600181815b808511156158c15781600019048211156158a7576158a761549b565b808516156158b457918102915b93841c939080029061588b565b509250929050565b6000826158d857506001610a4d565b816158e557506000610a4d565b81600181146158fb576002811461590557615921565b6001915050610a4d565b60ff8411156159165761591661549b565b50506001821b610a4d565b5060208310610133831016604e8410600b8410161715615944575081810a610a4d565b61594e8383615886565b80600019048211156159625761596261549b565b029392505050565b600061261283836158c9565b600360fc1b815260008251615992816001850160208701615126565b9190910160010192915050565b6000895160206159b28285838f01615126565b8a51918401916159c58184848f01615126565b8a519201916159d78184848e01615126565b89519201916159e98184848d01615126565b88519201916159fb8184848c01615126565b8751920191615a0d8184848b01615126565b8651920191615a1f8184848a01615126565b8551920191615a318184848901615126565b919091019b9a505050505050505050505056fe636f6e737420726573706f6e7365203d2061776169742046756e6374696f6e732e6d616b654874747052657175657374287b202075726c3a206068747470733a2f2f6f7661626370393872352e657865637574652d6170692e75732d656173742d312e616d617a6f6e6177732e636f6d2f6465762f6170692f72616365732f77656174686572602c7d293b69662028726573706f6e73652e6572726f7229207b20207468726f77206e6577204572726f72282752657175657374206661696c656427293b7d72657475726e2046756e6374696f6e732e656e636f646555696e7432353628726573706f6e73652e646174612e7765617468657253636f7265293b636f6e73742061747472696275746573203d20617267735b305d2e746f537472696e6728293b636f6e73742072616365526573756c7452657175657374203d2061776169742046756e6374696f6e732e6d616b654874747052657175657374287b202075726c3a206068747470733a2f2f6f7661626370393872352e657865637574652d6170692e75732d656173742d312e616d617a6f6e6177732e636f6d2f6465762f6170692f72616365732f646174612f247b617474726962757465737d602c7d293b6966202872616365526573756c74526571756573742e6572726f7229207b20207468726f77206e6577204572726f72282752657175657374206661696c656427293b7d636f6e737420636f6d62696e6564526573756c74203d20426967496e742872616365526573756c74526571756573742e646174612e636f6d62696e6564526573756c74293b72657475726e2046756e6374696f6e732e656e636f646555696e7432353628636f6d62696e6564526573756c74293ba264697066735822122013439de6dd9e63d0d495d12156447055d1c93587656f51f90928b663161e8a5a64736f6c63430008180033000000000000000000000000a9d587a00a31a52ed70d6026794a8fc5e2f5dcb00000000000000000000000005c210ef41cd1a72de73bf76ec39637bb0d3d7bee8baff4fc90b2fe25e03fa78205d9418e53b1fa36436460be6530f6039b3dfef20000000000000000000000000000000000000000000000000000000000002247c799bd1e3bd4d1a41cd4968997a4e03dfd2a3c7c04b695881138580163f4288766756e2d6176616c616e6368652d66756a692d31000000000000000000000000