witnet-solidity-bridge
Version:
Witnet Solidity Bridge contracts for EVM-compatible chains
1,484 lines • 129 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "WitnetMockedOracle",
"sourceName": "contracts/mocks/WitnetMockedOracle.sol",
"abi": [
{
"inputs": [
{
"internalType": "contract WitnetMockedRequestBytecodes",
"name": "_registry",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "EmptyBuffer",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "index",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "range",
"type": "uint256"
}
],
"name": "IndexOutOfBounds",
"type": "error"
},
{
"inputs": [],
"name": "InvalidInitialization",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "length",
"type": "uint256"
}
],
"name": "InvalidLengthEncoding",
"type": "error"
},
{
"inputs": [],
"name": "NotInitializing",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "OwnableInvalidOwner",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "OwnableUnauthorizedAccount",
"type": "error"
},
{
"inputs": [],
"name": "ReentrancyGuardReentrantCall",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "read",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "expected",
"type": "uint256"
}
],
"name": "UnexpectedMajorType",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "unexpected",
"type": "uint256"
}
],
"name": "UnsupportedMajorType",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "queryId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "string",
"name": "reason",
"type": "string"
}
],
"name": "BatchReportError",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint64",
"name": "version",
"type": "uint64"
}
],
"name": "Initialized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferStarted",
"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": "address",
"name": "from",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Received",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address[]",
"name": "reporters",
"type": "address[]"
}
],
"name": "ReportersSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address[]",
"name": "reporters",
"type": "address[]"
}
],
"name": "ReportersUnset",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "baseAddr",
"type": "address"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "baseCodehash",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "string",
"name": "versionTag",
"type": "string"
}
],
"name": "Upgraded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "evmReward",
"type": "uint256"
},
{
"components": [
{
"internalType": "uint8",
"name": "committeeSize",
"type": "uint8"
},
{
"internalType": "uint64",
"name": "witnessingFeeNanoWit",
"type": "uint64"
}
],
"indexed": false,
"internalType": "struct WitnetV2.RadonSLA",
"name": "witnetSLA",
"type": "tuple"
}
],
"name": "WitnetQuery",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "evmGasPrice",
"type": "uint256"
}
],
"name": "WitnetQueryResponse",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "evmGasPrice",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "evmCallbackGas",
"type": "uint256"
}
],
"name": "WitnetQueryResponseDelivered",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"indexed": false,
"internalType": "bytes",
"name": "resultCborBytes",
"type": "bytes"
},
{
"indexed": false,
"internalType": "uint256",
"name": "evmGasPrice",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "evmCallbackActualGas",
"type": "uint256"
},
{
"indexed": false,
"internalType": "string",
"name": "evmCallbackRevertReason",
"type": "string"
}
],
"name": "WitnetQueryResponseDeliveryFailed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "evmReward",
"type": "uint256"
}
],
"name": "WitnetQueryRewardUpgraded",
"type": "event"
},
{
"stateMutability": "nonpayable",
"type": "fallback"
},
{
"inputs": [],
"name": "acceptOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "base",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "channel",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "class",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "codehash",
"outputs": [
{
"internalType": "bytes32",
"name": "_codehash",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "currency",
"outputs": [
{
"internalType": "contract IERC20",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "deployer",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_gasPrice",
"type": "uint256"
},
{
"internalType": "uint16",
"name": "_resultMaxSize",
"type": "uint16"
}
],
"name": "estimateBaseFee",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "gasPrice",
"type": "uint256"
},
{
"internalType": "bytes32",
"name": "radHash",
"type": "bytes32"
}
],
"name": "estimateBaseFee",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_gasPrice",
"type": "uint256"
},
{
"internalType": "uint24",
"name": "_callbackGasLimit",
"type": "uint24"
}
],
"name": "estimateBaseFeeWithCallback",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256[]",
"name": "_witnetQueryIds",
"type": "uint256[]"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
},
{
"internalType": "uint256",
"name": "_txGasPrice",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_nanoWitPrice",
"type": "uint256"
}
],
"name": "estimateReportEarnings",
"outputs": [
{
"internalType": "uint256",
"name": "_revenues",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_expenses",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256[]",
"name": "_queryIds",
"type": "uint256[]"
}
],
"name": "extractWitnetDataRequests",
"outputs": [
{
"internalType": "bytes[]",
"name": "_bytecodes",
"type": "bytes[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "factory",
"outputs": [
{
"internalType": "contract WitnetRequestFactory",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_witnetQueryId",
"type": "uint256"
}
],
"name": "fetchQueryResponse",
"outputs": [
{
"components": [
{
"internalType": "address",
"name": "reporter",
"type": "address"
},
{
"internalType": "uint64",
"name": "finality",
"type": "uint64"
},
{
"internalType": "uint32",
"name": "resultTimestamp",
"type": "uint32"
},
{
"internalType": "bytes32",
"name": "resultTallyHash",
"type": "bytes32"
},
{
"internalType": "bytes",
"name": "resultCborBytes",
"type": "bytes"
}
],
"internalType": "struct WitnetV2.Response",
"name": "_response",
"type": "tuple"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "getNextQueryId",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_witnetQueryId",
"type": "uint256"
}
],
"name": "getQuery",
"outputs": [
{
"components": [
{
"components": [
{
"internalType": "address",
"name": "requester",
"type": "address"
},
{
"internalType": "uint24",
"name": "gasCallback",
"type": "uint24"
},
{
"internalType": "uint72",
"name": "evmReward",
"type": "uint72"
},
{
"internalType": "bytes",
"name": "witnetBytecode",
"type": "bytes"
},
{
"internalType": "bytes32",
"name": "witnetRAD",
"type": "bytes32"
},
{
"components": [
{
"internalType": "uint8",
"name": "committeeSize",
"type": "uint8"
},
{
"internalType": "uint64",
"name": "witnessingFeeNanoWit",
"type": "uint64"
}
],
"internalType": "struct WitnetV2.RadonSLA",
"name": "witnetSLA",
"type": "tuple"
}
],
"internalType": "struct WitnetV2.Request",
"name": "request",
"type": "tuple"
},
{
"components": [
{
"internalType": "address",
"name": "reporter",
"type": "address"
},
{
"internalType": "uint64",
"name": "finality",
"type": "uint64"
},
{
"internalType": "uint32",
"name": "resultTimestamp",
"type": "uint32"
},
{
"internalType": "bytes32",
"name": "resultTallyHash",
"type": "bytes32"
},
{
"internalType": "bytes",
"name": "resultCborBytes",
"type": "bytes"
}
],
"internalType": "struct WitnetV2.Response",
"name": "response",
"type": "tuple"
}
],
"internalType": "struct WitnetV2.Query",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_witnetQueryId",
"type": "uint256"
}
],
"name": "getQueryEvmReward",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_witnetQueryId",
"type": "uint256"
}
],
"name": "getQueryRequest",
"outputs": [
{
"components": [
{
"internalType": "address",
"name": "requester",
"type": "address"
},
{
"internalType": "uint24",
"name": "gasCallback",
"type": "uint24"
},
{
"internalType": "uint72",
"name": "evmReward",
"type": "uint72"
},
{
"internalType": "bytes",
"name": "witnetBytecode",
"type": "bytes"
},
{
"internalType": "bytes32",
"name": "witnetRAD",
"type": "bytes32"
},
{
"components": [
{
"internalType": "uint8",
"name": "committeeSize",
"type": "uint8"
},
{
"internalType": "uint64",
"name": "witnessingFeeNanoWit",
"type": "uint64"
}
],
"internalType": "struct WitnetV2.RadonSLA",
"name": "witnetSLA",
"type": "tuple"
}
],
"internalType": "struct WitnetV2.Request",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_witnetQueryId",
"type": "uint256"
}
],
"name": "getQueryResponse",
"outputs": [
{
"components": [
{
"internalType": "address",
"name": "reporter",
"type": "address"
},
{
"internalType": "uint64",
"name": "finality",
"type": "uint64"
},
{
"internalType": "uint32",
"name": "resultTimestamp",
"type": "uint32"
},
{
"internalType": "bytes32",
"name": "resultTallyHash",
"type": "bytes32"
},
{
"internalType": "bytes",
"name": "resultCborBytes",
"type": "bytes"
}
],
"internalType": "struct WitnetV2.Response",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_witnetQueryId",
"type": "uint256"
}
],
"name": "getQueryResponseStatus",
"outputs": [
{
"internalType": "enum WitnetV2.ResponseStatus",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_witnetQueryId",
"type": "uint256"
}
],
"name": "getQueryResultCborBytes",
"outputs": [
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_witnetQueryId",
"type": "uint256"
}
],
"name": "getQueryResultError",
"outputs": [
{
"components": [
{
"internalType": "enum Witnet.ResultErrorCodes",
"name": "code",
"type": "uint8"
},
{
"internalType": "string",
"name": "reason",
"type": "string"
}
],
"internalType": "struct Witnet.ResultError",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_witnetQueryId",
"type": "uint256"
}
],
"name": "getQueryStatus",
"outputs": [
{
"internalType": "enum WitnetV2.QueryStatus",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256[]",
"name": "_witnetQueryIds",
"type": "uint256[]"
}
],
"name": "getQueryStatusBatch",
"outputs": [
{
"internalType": "enum WitnetV2.QueryStatus[]",
"name": "_status",
"type": "uint8[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes",
"name": "_initData",
"type": "bytes"
}
],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_reporter",
"type": "address"
}
],
"name": "isReporter",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "isUpgradable",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_from",
"type": "address"
}
],
"name": "isUpgradableFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "pendingOwner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_queryRAD",
"type": "bytes32"
},
{
"components": [
{
"internalType": "uint8",
"name": "committeeSize",
"type": "uint8"
},
{
"internalType": "uint64",
"name": "witnessingFeeNanoWit",
"type": "uint64"
}
],
"internalType": "struct WitnetV2.RadonSLA",
"name": "_querySLA",
"type": "tuple"
}
],
"name": "postRequest",
"outputs": [
{
"internalType": "uint256",
"name": "_witnetQueryId",
"type": "uint256"
}
],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes",
"name": "_queryUnverifiedBytecode",
"type": "bytes"
},
{
"components": [
{
"internalType": "uint8",
"name": "committeeSize",
"type": "uint8"
},
{
"internalType": "uint64",
"name": "witnessingFeeNanoWit",
"type": "uint64"
}
],
"internalType": "struct WitnetV2.RadonSLA",
"name": "_querySLA",
"type": "tuple"
},
{
"internalType": "uint24",
"name": "_queryCallbackGasLimit",
"type": "uint24"
}
],
"name": "postRequestWithCallback",
"outputs": [
{
"internalType": "uint256",
"name": "_witnetQueryId",
"type": "uint256"
}
],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_queryRAD",
"type": "bytes32"
},
{
"components": [
{
"internalType": "uint8",
"name": "committeeSize",
"type": "uint8"
},
{
"internalType": "uint64",
"name": "witnessingFeeNanoWit",
"type": "uint64"
}
],
"internalType": "struct WitnetV2.RadonSLA",
"name": "_querySLA",
"type": "tuple"
},
{
"internalType": "uint24",
"name": "_queryCallbackGasLimit",
"type": "uint24"
}
],
"name": "postRequestWithCallback",
"outputs": [
{
"internalType": "uint256",
"name": "_witnetQueryId",
"type": "uint256"
}
],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"name": "proxiableUUID",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "registry",
"outputs": [
{
"internalType": "contract WitnetRequestBytecodes",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_witnetQueryId",
"type": "uint256"
},
{
"internalType": "bytes32",
"name": "_witnetQueryResultTallyHash",
"type": "bytes32"
},
{
"internalType": "bytes",
"name": "_witnetQueryResultCborBytes",
"type": "bytes"
}
],
"name": "reportResult",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_witnetQueryId",
"type": "uint256"
},
{
"internalType": "uint32",
"name": "_witnetQueryResultTimestamp",
"type": "uint32"
},
{
"internalType": "bytes32",
"name": "_witnetQueryResultTallyHash",
"type": "bytes32"
},
{
"internalType": "bytes",
"name": "_witnetQueryResultCborBytes",
"type": "bytes"
}
],
"name": "reportResult",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "uint256",
"name": "queryId",
"type": "uint256"
},
{
"internalType": "uint32",
"name": "queryResultTimestamp",
"type": "uint32"
},
{
"internalType": "bytes32",
"name": "queryResultTallyHash",
"type": "bytes32"
},
{
"internalType": "bytes",
"name": "queryResultCborBytes",
"type": "bytes"
}
],
"internalType": "struct IWitnetOracleReporter.BatchResult[]",
"name": "_batchResults",
"type": "tuple[]"
}
],
"name": "reportResultBatch",
"outputs": [
{
"internalType": "uint256",
"name": "_batchReward",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract WitnetMockedRequestFactory",
"name": "_factory",
"type": "address"
}
],
"name": "setFactory",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "_reporters",
"type": "address[]"
}
],
"name": "setReporters",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "specs",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "_exReporters",
"type": "address[]"
}
],
"name": "unsetReporters",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_witnetQueryId",
"type": "uint256"
}
],
"name": "upgradeQueryEvmReward",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"name": "version",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
],
"bytecode": "0x610240604052336101005263baeca88b60e01b6101605234801561002257600080fd5b50604051615dcd380380615dcd833981016040819052610041916102ec565b6000816000651b5bd8dad95960d21b61ea6061fde862011170614e208787878760008083836040518060400160405280601981526020017f696f2e7769746e65742e70726f786961626c652e626f61726400000000000000815250823360006001600160a01b0316816001600160a01b0316036100d857604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100e1816101b2565b5030608052151560c0526001600281905560e0929092528051602090910120610120526001600160a01b03928316610140529682166101a0525093909316610180525050506101c0949094526101e092909252610200526102205260009450925061014a915050565b604051908082528060200260200182016040528015610173578160200160208202803683370190505b509050338160008151811061018a5761018a61031c565b6001600160a01b03909216602092830291909101909101526101ab816101ce565b505061037f565b600180546001600160a01b03191690556101cb81610278565b50565b60005b815181101561023d5760008282815181106101ee576101ee61031c565b6020026020010151905060016102086102c860201b60201c565b6001600160a01b0392909216600090815260029092016020526040909120805460ff19169115159190911790556001016101d1565b507f4d570ee36dec878006609360d34ac8d6a0b68d521871ae15a407b6340877ca018160405161026d9190610332565b60405180910390a150565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b7ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e18390565b6000602082840312156102fe57600080fd5b81516001600160a01b038116811461031557600080fd5b9392505050565b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b818110156103735783516001600160a01b03168352928401929184019160010161034e565b50909695505050505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e051610200516102205161594861048560003960008181610bc30152611ea301526000610bef015260008181610c2f0152610c7701526000611ecd0152600081816117a8015281816117f0015281816118bb01526119780152600081816106f00152818161194e01528181611b0601526120eb0152600061089b015260006109b6015260006105390152600061096401526000611b9901526000818161056a0152611d7b015260005050600081816104ef01528181610864015281816116dd0152818161173701528181611a3e0152611a6001526159486000f3fe6080604052600436106102815760003560e01c80637b1039991161014f578063aeb2ffc1116100c1578063e30c39781161007a578063e30c397814610986578063e5a6b10f146109a4578063e900aa33146109d8578063ec5946db146109eb578063f2fde38b146109fe578063f61921b214610a1e576102be565b8063aeb2ffc1146108bd578063b207e730146108ea578063bff852fa1461090a578063c45a01551461091f578063c805dd0f1461093d578063d5f3948814610952576102be565b806393d5185c1161011357806393d5185c146107c05780639cc56e67146107f5578063a3ff5b0014610815578063a77fc1a414610828578063a9e954b914610855578063adb7c3f714610889576102be565b80637b103999146106de5780637bbdb96e146107125780637bd88218146107625780638d3d8b38146107825780638da5cb5b146107a2576102be565b80635001f3b5116101f35780636280bce8116101ac5780636280bce8146105fd5780636b58960a1461061d5780636f07abcc1461063d5780636fdaab7e1461066a578063715018a6146106b457806379ba5097146106c9576102be565b80635001f3b5146104e057806352d1902d146105275780635479d9401461055b57806354fd4d501461058e578063581f5094146105b05780635bb47808146105dd576102be565b8063234fe6e311610245578063234fe6e31461041357806328a78d9b146104405780633dc2b7a214610460578063439fab911461047357806345ea6c17146104935780634c9f72e3146104c0576102be565b8063044ad7be1461033657806305e742ef1461036b57806306eb2c421461039957806308b7e85e146103b95780630aa4112a146103e6576102be565b366102be576102bc604051806040016040528060158152602001741b9bc81d1c985b9cd9995c9cc81858d8d95c1d1959605a1b815250610a3e565b005b3480156102ca57600080fd5b506102bc6102dc60003560f81c610a87565b6102ed60ff60003560f01c16610a87565b6102fe60ff60003560e81c16610a87565b61030f60ff60003560e01c16610a87565b604051602001610322949392919061432b565b604051602081830303815290604052610a3e565b34801561034257600080fd5b506103566103513660046143bf565b610b79565b60405190151581526020015b60405180910390f35b34801561037757600080fd5b5061038b6103863660046143ef565b610bbb565b604051908152602001610362565b3480156103a557600080fd5b5061038b6103b4366004614466565b610cac565b3480156103c557600080fd5b506103d96103d43660046144a7565b611016565b6040516103629190614540565b3480156103f257600080fd5b506104066104013660046144a7565b6112ad565b60405161036291906145d5565b34801561041f57600080fd5b5061043361042e3660046144a7565b611413565b6040516103629190614612565b34801561044c57600080fd5b506102bc61045b366004614685565b61141e565b61038b61046e36600461473b565b6114d7565b34801561047f57600080fd5b506102bc61048e366004614786565b6115e1565b34801561049f57600080fd5b506104b36104ae366004614466565b611ad5565b604051610362919061480b565b3480156104cc57600080fd5b506102bc6104db366004614685565b611b7e565b3480156104ec57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610362565b34801561053357600080fd5b5061038b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561056757600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610356565b34801561059a57600080fd5b506105a3611b92565b604051610362919061486f565b3480156105bc57600080fd5b506105d06105cb366004614466565b611bc2565b6040516103629190614892565b3480156105e957600080fd5b506102bc6105f83660046143bf565b611c7d565b34801561060957600080fd5b5061038b61061836600461491e565b611ca7565b34801561062957600080fd5b506103566106383660046143bf565b611d77565b34801561064957600080fd5b5061065d6106583660046144a7565b611dcd565b6040516103629190614970565b34801561067657600080fd5b5061038b6106853660046144a7565b60009081526000805160206158f38339815191526020526040902054600160b81b90046001600160481b031690565b3480156106c057600080fd5b506102bc611dd8565b3480156106d557600080fd5b506102bc611dec565b3480156106ea57600080fd5b5061050f7f000000000000000000000000000000000000000000000000000000000000000081565b34801561071e57600080fd5b5060408051306020808301919091524682840152825180830384018152606090920190925280519101205b6040516001600160e01b03199091168152602001610362565b34801561076e57600080fd5b5061038b61077d36600461498e565b611e63565b34801561078e57600080fd5b506105a361079d3660046144a7565b611efb565b3480156107ae57600080fd5b506000546001600160a01b031661050f565b3480156107cc57600080fd5b506107e06107db3660046149be565b611f99565b60408051928352602083019190915201610362565b34801561080157600080fd5b5061038b610810366004614a3b565b6120c8565b61038b610823366004614a5d565b61219e565b34801561083457600080fd5b506108486108433660046144a7565b6122f8565b6040516103629190614ad2565b34801561086157600080fd5b507f00000000000000000000000000000000000000000000000000000000000000003f61038b565b34801561089557600080fd5b506107497f000000000000000000000000000000000000000000000000000000000000000081565b3480156108c957600080fd5b506108dd6108d83660046144a7565b612471565b6040516103629190614afe565b3480156108f657600080fd5b5061038b610905366004614b4b565b6126a7565b34801561091657600080fd5b506105a36127c2565b34801561092b57600080fd5b506003546001600160a01b031661050f565b34801561094957600080fd5b5061038b6127f9565b34801561095e57600080fd5b5061050f7f000000000000000000000000000000000000000000000000000000000000000081565b34801561099257600080fd5b506001546001600160a01b031661050f565b3480156109b057600080fd5b5061050f7f000000000000000000000000000000000000000000000000000000000000000081565b61038b6109e6366004614bb2565b612816565b6102bc6109f93660046144a7565b6128d5565b348015610a0a57600080fd5b506102bc610a193660046143bf565b6129d3565b348015610a2a57600080fd5b506103d9610a393660046144a7565b612a44565b610a466127c2565b81604051602001610a58929190614bef565b60408051601f198184030181529082905262461bcd60e51b8252610a7e9160040161486f565b60405180910390fd5b604080516002808252818301909252606091600091906020820181803683370190505090506000610ab9601085614c58565b610ac4906030614c7a565b90506000610ad3601086614c93565b610ade906030614c7a565b905060398260ff161115610afa57610af7600783614c7a565b91505b60398160ff161115610b1457610b11600782614c7a565b90505b8160f81b83600081518110610b2b57610b2b614cb5565b60200101906001600160f81b031916908160001a9053508060f81b83600181518110610b5957610b59614cb5565b60200101906001600160f81b031916908160001a90535091949350505050565b6001600160a01b03811660009081527ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e185602052604081205460ff165b92915050565b600080610be97f00000000000000000000000000000000000000000000000000000000000000006003614ccb565b610c13907f0000000000000000000000000000000000000000000000000000000000000000614ce2565b9050808362ffffff161080610c55575080610c5362ffffff85167f0000000000000000000000000000000000000000000000000000000000000000614ce2565b105b15610c6c57610c648185614ccb565b915050610bb5565b610c9b62ffffff84167f0000000000000000000000000000000000000000000000000000000000000000614ce2565b610c649085614ccb565b5092915050565b6000610d0e6000805160206158d38339815191525b336000908152600291909101602090815260409182902054825180840190935260158352743ab730baba3437b934bd32b2103932b837b93a32b960591b9183019190915260ff1690612b66565b60005b82811015611005576001610d48858584818110610d3057610d30614cb5565b9050602002810190610d429190614cf5565b35612b78565b6003811115610d5957610d596145e8565b14610e3e577f4df64445edc775fba59db44b8001852fb1b777eea88fd54f04572dd114e3ff7f848483818110610d9157610d91614cb5565b9050602002810190610da39190614cf5565b6040516353e8875160e11b815290359073__$e6ff738751a05f257ae0de251e4d5c9673$__9063a7d10ea290610dde90600190600401614970565b600060405180830381865af4158015610dfb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e239190810190614d64565b604051610e31929190614d98565b60405180910390a1610ffd565b838382818110610e5057610e50614cb5565b9050602002810190610e629190614cf5565b610e73906040810190602001614db1565b63ffffffff161580610eb65750838382818110610e9257610e92614cb5565b9050602002810190610ea49190614cf5565b610eb2906060810190614dcc565b1590505b15610f34577f4df64445edc775fba59db44b8001852fb1b777eea88fd54f04572dd114e3ff7f848483818110610eee57610eee614cb5565b9050602002810190610f009190614cf5565b35610f096127c2565b604051602001610f199190614e12565b60408051601f1981840301815290829052610e319291614d98565b610ff0848483818110610f4957610f49614cb5565b9050602002810190610f5b9190614cf5565b35858584818110610f6e57610f6e614cb5565b9050602002810190610f809190614cf5565b610f91906040810190602001614db1565b868685818110610fa357610fa3614cb5565b9050602002810190610fb59190614cf5565b60400135878786818110610fcb57610fcb614cb5565b9050602002810190610fdd9190614cf5565b610feb906060810190614dcc565b612bf9565b610ffa9083614ce2565b91505b600101610d11565b508015610bb557610bb53382612dd8565b6040805160a08101825260008082526020820181905291810182905260608082019290925260808101919091528160038061105083612b78565b6003811115611061576110616145e8565b146110f0576040516353e8875160e11b81526110eb9073__$e6ff738751a05f257ae0de251e4d5c9673$__9063a7d10ea2906110a1908590600401614970565b600060405180830381865af41580156110be573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110e69190810190614d64565b610a3e565b6112a6565b836111396110fd82612e0e565b546040805180820190915260118152703737ba103a3432903932b8bab2b9ba32b960791b60208201526001600160a01b03909116331490612b66565b61114285612e0e565b6040805160a0810182526004830180546001600160a01b0381168352600160a01b81046001600160401b03166020840152600160e01b900463ffffffff169282019290925260058301546060820152600690920180546080840191906111a790614e4b565b80601f01602080910402602001604051908101604052809291908181526020018280546111d390614e4b565b80156112205780601f106111f557610100808354040283529160200191611220565b820191906000526020600020905b81548152906001019060200180831161120357829003601f168201915b50505050508152505093506112406000805160206158d383398151915290565b60008681526001918201602052604081208181559182908290611265908301826141ef565b506000600282018190556003909101805468ffffffffffffffffff191690556004830181815560058401829055906112a060068501826141ef565b50505050505b5050919050565b6112f16040805160c081018252600080825260208083018290528284018290526060808401526080830182905283518085019094528184528301529060a082015290565b6112fa82612e0e565b6040805160c08101825282546001600160a01b0381168252600160a01b810462ffffff166020830152600160b81b90046001600160481b03169181019190915260018201805491929160608401919061135290614e4b565b80601f016020809104026020016040519081016040528092919081815260200182805461137e90614e4b565b80156113cb5780601f106113a0576101008083540402835291602001916113cb565b820191906000526020600020905b8154815290600101906020018083116113ae57829003601f168201915b5050509183525050600282015460208083019190915260408051808201825260039094015460ff8116855261010090046001600160401b031691840191909152015292915050565b6000610bb582612e2c565b611426612f44565b60005b815181101561149c57600082828151811061144657611446614cb5565b6020026020010151905060006114676000805160206158d383398151915290565b6001600160a01b0392909216600090815260029092016020526040909120805460ff1916911515919091179055600101611429565b507f646436560d9757cb3c0f01da0f62642c6040b00c9a80685f94ef1a7725cad5f1816040516114cc9190614e7f565b60405180910390a150565b60006114e33a846120c8565b61151c81345b1015604051806040016040528060138152602001721a5b9cdd59999a58da595b9d081c995dd85c99606a1b815250612b66565b61155a61152a82600a614ccb565b3411156040518060400160405280600f81526020016e1d1bdbc81b5d58da081c995dd85c99608a1b815250612b66565b8261159061156782612f71565b6040518060400160405280600b81526020016a696e76616c696420534c4160a81b815250612b66565b61159c85856000612fca565b92507ffb94adf28ab7e538d2691d90927f622cbc1100eae6afec58052efdee6c98a6168334866040516115d193929190614ee4565b60405180910390a1505092915050565b6000546001600160a01b03166060816116345760608380602001905181019061160a9190614f2b565b90935090506116188361309e565b8080602001905181019061162c9190614f7b565b91505061168e565b611677826001600160a01b0316336001600160a01b0316146040518060400160405280600d81526020016c3737ba103a34329037bbb732b960991b815250612b66565b8280602001905181019061168b9190614f7b565b90505b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbe54158015906116ff57507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbe547f00000000000000000000000000000000000000000000000000000000000000003f145b15611735576117356040518060400160405280601081526020016f185b1c9958591e481d5c19dc9859195960821b815250610a3e565b7f00000000000000000000000000000000000000000000000000000000000000003f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbe55604080518082019091526012815271696e6578697374656e7420666163746f727960701b60208201526117d9907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b151590612b66565b6118ac630db7c58b60e41b6001600160e01b0319167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663adb7c3f76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561184c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118709190615014565b6001600160e01b0319161460405180604001604052806013815260200172756e636f6d706c69616e7420666163746f727960681b815250612b66565b611a33306001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166346d1d21a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611917573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193b919061503e565b6001600160a01b0316148015611a0357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637b1039996040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f8919061503e565b6001600160a01b0316145b60405180604001604052806012815260200171646973636f7264616e7420666163746f727960701b815250612b66565b611a3c816130b7565b7f00000000000000000000000000000000000000000000000000000000000000003f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03167fe73e754121f0bad1327816970101955bfffdf53d270ac509d777c25be070d7f6611abb611b92565b604051611ac8919061486f565b60405180910390a4505050565b6040516251ca3160e21b815260609073__$e6ff738751a05f257ae0de251e4d5c9673$__9063014728c490611b32907f0000000000000000000000000000000000000000000000000000000000000000908790879060040161505b565b600060405180830381865af4158015611b4f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b7791908101906150a5565b9392505050565b611b86612f44565b611b8f816130b7565b50565b6060611bbd7f000000000000000000000000000000000000000000000000000000000000000061315d565b905090565b6060816001600160401b03811115611b