witnet-solidity-bridge
Version:
Witnet Solidity Bridge contracts for EVM-compatible chains
1,039 lines • 104 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "WitnetRequestBytecodesNoSha256",
"sourceName": "contracts/core/customs/WitnetRequestBytecodesNoSha256.sol",
"abi": [
{
"inputs": [
{
"internalType": "bool",
"name": "_upgradable",
"type": "bool"
},
{
"internalType": "bytes32",
"name": "_versionTag",
"type": "bytes32"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "InvalidInitialization",
"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": "bytes32",
"name": "hash",
"type": "bytes32"
}
],
"name": "UnknownRadonReducer",
"type": "error"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "hash",
"type": "bytes32"
}
],
"name": "UnknownRadonRequest",
"type": "error"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "hash",
"type": "bytes32"
}
],
"name": "UnknownRadonRetrieval",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint64",
"name": "version",
"type": "uint64"
}
],
"name": "Initialized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "index",
"type": "uint256"
}
],
"name": "NewDataProvider",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bytes32",
"name": "hash",
"type": "bytes32"
}
],
"name": "NewRadHash",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bytes32",
"name": "hash",
"type": "bytes32"
}
],
"name": "NewRadonReducerHash",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bytes32",
"name": "hash",
"type": "bytes32"
}
],
"name": "NewRadonRetrievalHash",
"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": 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"
},
{
"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": [
{
"internalType": "bytes32",
"name": "_radHash",
"type": "bytes32"
}
],
"name": "bytecodeOf",
"outputs": [
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes",
"name": "_radBytecode",
"type": "bytes"
},
{
"components": [
{
"internalType": "uint8",
"name": "committeeSize",
"type": "uint8"
},
{
"internalType": "uint64",
"name": "witnessingFeeNanoWit",
"type": "uint64"
}
],
"internalType": "struct WitnetV2.RadonSLA",
"name": "_sla",
"type": "tuple"
}
],
"name": "bytecodeOf",
"outputs": [
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_radHash",
"type": "bytes32"
},
{
"components": [
{
"internalType": "uint8",
"name": "committeeSize",
"type": "uint8"
},
{
"internalType": "uint64",
"name": "witnessingFeeNanoWit",
"type": "uint64"
}
],
"internalType": "struct WitnetV2.RadonSLA",
"name": "_sla",
"type": "tuple"
}
],
"name": "bytecodeOf",
"outputs": [
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"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": "deployer",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes",
"name": "_radBytecode",
"type": "bytes"
}
],
"name": "hashOf",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes",
"name": "_initData",
"type": "bytes"
}
],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"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": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "lookupDataProvider",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "_authority",
"type": "string"
}
],
"name": "lookupDataProviderIndex",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_offset",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_length",
"type": "uint256"
}
],
"name": "lookupDataProviderSources",
"outputs": [
{
"internalType": "bytes32[]",
"name": "_endpoints",
"type": "bytes32[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_hash",
"type": "bytes32"
}
],
"name": "lookupRadonReducer",
"outputs": [
{
"components": [
{
"internalType": "enum Witnet.RadonReducerOpcodes",
"name": "opcode",
"type": "uint8"
},
{
"components": [
{
"internalType": "enum Witnet.RadonFilterOpcodes",
"name": "opcode",
"type": "uint8"
},
{
"internalType": "bytes",
"name": "args",
"type": "bytes"
}
],
"internalType": "struct Witnet.RadonFilter[]",
"name": "filters",
"type": "tuple[]"
}
],
"internalType": "struct Witnet.RadonReducer",
"name": "_reducer",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_radHash",
"type": "bytes32"
}
],
"name": "lookupRadonRequestAggregator",
"outputs": [
{
"components": [
{
"internalType": "enum Witnet.RadonReducerOpcodes",
"name": "opcode",
"type": "uint8"
},
{
"components": [
{
"internalType": "enum Witnet.RadonFilterOpcodes",
"name": "opcode",
"type": "uint8"
},
{
"internalType": "bytes",
"name": "args",
"type": "bytes"
}
],
"internalType": "struct Witnet.RadonFilter[]",
"name": "filters",
"type": "tuple[]"
}
],
"internalType": "struct Witnet.RadonReducer",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_radHash",
"type": "bytes32"
}
],
"name": "lookupRadonRequestResultDataType",
"outputs": [
{
"internalType": "enum Witnet.RadonDataTypes",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_radHash",
"type": "bytes32"
}
],
"name": "lookupRadonRequestResultMaxSize",
"outputs": [
{
"internalType": "uint16",
"name": "",
"type": "uint16"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_radHash",
"type": "bytes32"
}
],
"name": "lookupRadonRequestSources",
"outputs": [
{
"internalType": "bytes32[]",
"name": "",
"type": "bytes32[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_radHash",
"type": "bytes32"
}
],
"name": "lookupRadonRequestSourcesCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_radHash",
"type": "bytes32"
}
],
"name": "lookupRadonRequestTally",
"outputs": [
{
"components": [
{
"internalType": "enum Witnet.RadonReducerOpcodes",
"name": "opcode",
"type": "uint8"
},
{
"components": [
{
"internalType": "enum Witnet.RadonFilterOpcodes",
"name": "opcode",
"type": "uint8"
},
{
"internalType": "bytes",
"name": "args",
"type": "bytes"
}
],
"internalType": "struct Witnet.RadonFilter[]",
"name": "filters",
"type": "tuple[]"
}
],
"internalType": "struct Witnet.RadonReducer",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_hash",
"type": "bytes32"
}
],
"name": "lookupRadonRetrieval",
"outputs": [
{
"components": [
{
"internalType": "uint8",
"name": "argsCount",
"type": "uint8"
},
{
"internalType": "enum Witnet.RadonDataRequestMethods",
"name": "method",
"type": "uint8"
},
{
"internalType": "enum Witnet.RadonDataTypes",
"name": "resultDataType",
"type": "uint8"
},
{
"internalType": "string",
"name": "url",
"type": "string"
},
{
"internalType": "string",
"name": "body",
"type": "string"
},
{
"internalType": "string[2][]",
"name": "headers",
"type": "string[2][]"
},
{
"internalType": "bytes",
"name": "script",
"type": "bytes"
}
],
"internalType": "struct Witnet.RadonRetrieval",
"name": "_source",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_hash",
"type": "bytes32"
}
],
"name": "lookupRadonRetrievalArgsCount",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_hash",
"type": "bytes32"
}
],
"name": "lookupRadonRetrievalResultDataType",
"outputs": [
{
"internalType": "enum Witnet.RadonDataTypes",
"name": "",
"type": "uint8"
}
],
"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": [],
"name": "proxiableUUID",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "specs",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalDataProviders",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "enum Witnet.RadonReducerOpcodes",
"name": "opcode",
"type": "uint8"
},
{
"components": [
{
"internalType": "enum Witnet.RadonFilterOpcodes",
"name": "opcode",
"type": "uint8"
},
{
"internalType": "bytes",
"name": "args",
"type": "bytes"
}
],
"internalType": "struct Witnet.RadonFilter[]",
"name": "filters",
"type": "tuple[]"
}
],
"internalType": "struct Witnet.RadonReducer",
"name": "_reducer",
"type": "tuple"
}
],
"name": "verifyRadonReducer",
"outputs": [
{
"internalType": "bytes32",
"name": "hash",
"type": "bytes32"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32[]",
"name": "_retrievalsIds",
"type": "bytes32[]"
},
{
"internalType": "bytes32",
"name": "_aggregatorId",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "_tallyId",
"type": "bytes32"
},
{
"internalType": "uint16",
"name": "_resultMaxSize",
"type": "uint16"
},
{
"internalType": "string[][]",
"name": "_args",
"type": "string[][]"
}
],
"name": "verifyRadonRequest",
"outputs": [
{
"internalType": "bytes32",
"name": "_radHash",
"type": "bytes32"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "enum Witnet.RadonDataRequestMethods",
"name": "_requestMethod",
"type": "uint8"
},
{
"internalType": "string",
"name": "_requestURL",
"type": "string"
},
{
"internalType": "string",
"name": "_requestBody",
"type": "string"
},
{
"internalType": "string[2][]",
"name": "_requestHeaders",
"type": "string[2][]"
},
{
"internalType": "bytes",
"name": "_requestRadonScript",
"type": "bytes"
}
],
"name": "verifyRadonRetrieval",
"outputs": [
{
"internalType": "bytes32",
"name": "hash",
"type": "bytes32"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "version",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
],
"bytecode": "0x6101606040523361010052636f1735ab60e01b6101405234801561002257600080fd5b50604051614e70380380614e70833981016040819052610041916101ef565b818181816040518060400160405280601d81526020017f696f2e7769746e65742e70726f786961626c652e62797465636f64657300000081525082333061008c61010160201b60201c565b80546001600160a01b0319166001600160a01b0392831617905581166100cc57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100d581610125565b5030608052151560c052600160025560e091909152805160209091012061012052506102229350505050565b7f673359bdfd0124f9962355e7aed2d07d989b0d4bc4cbe2c94c295e0f81427dec90565b7f673359bdfd0124f9962355e7aed2d07d989b0d4bc4cbe2c94c295e0f81427dee80546001600160a01b03191690556000610175600080516020614e50833981519152546001600160a01b031690565b9050806001600160a01b0316826001600160a01b0316146101eb57600080516020614e5083398151915280546001600160a01b0319166001600160a01b0384811691821790925560405190918316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35b5050565b6000806040838503121561020257600080fd5b8251801515811461021257600080fd5b6020939093015192949293505050565b60805160a05160c05160e051610100516101205161014051614bbb61029560003960006106af015260006103e6015260006107d601526000610eb70152600081816104250152610efe0152600050506000818161039c0152818161067801528181610d3f0152610e220152614bbb6000f3fe6080604052600436106102135760003560e01c80639f34df1911610118578063b2299677116100a0578063d5f394881161006f578063d5f39488146107c4578063db4c6b21146107f8578063e30c397814610818578063f2fde38b14610843578063f4f07e991461086357610271565b8063b2299677146106ea578063b4ab01a51461071e578063bff852fa14610750578063c0a673611461079657610271565b8063a47bd1a4116100e7578063a47bd1a414610609578063a4a7cecd14610629578063a83e942c14610649578063a9e954b914610669578063adb7c3f71461069d57610271565b80639f34df1914610589578063a0490fa0146105a9578063a09948b0146105c9578063a0e55336146105e957610271565b80636b58960a1161019b57806379ba50971161016a57806379ba5097146104f25780637f412e23146105075780638da5cb5b146105275780639dd487571461053c5780639eb3ab1f1461056957610271565b80636b58960a1461046a5780636ea3ebe41461048a578063715018a6146104aa57806376b78a06146104bf57610271565b80634c729104116101e25780634c729104146103605780635001f3b51461038d57806352d1902d146103d45780635479d9401461041657806354fd4d501461045557610271565b806321ead36f146102b05780632ebf5d5c146102e65780633679f86414610313578063439fab911461034057610271565b366102715760405162461bcd60e51b8152602060048201526024808201527f5769746e65745265717565737442797465636f6465733a206e6f207472616e736044820152636665727360e01b60648201526084015b60405180910390fd5b34801561027d57600080fd5b506102ae6040518060400160405280600f81526020016e1b9bdd081a5b5c1b195b595b9d1959608a1b815250610883565b005b3480156102bc57600080fd5b506102d06102cb36600461371f565b6108ef565b6040516102dd9190613787565b60405180910390f35b3480156102f257600080fd5b5061030661030136600461379a565b6109d7565b6040516102dd9190613803565b34801561031f57600080fd5b5061033361032e36600461379a565b610a83565b6040516102dd9190613850565b34801561034c57600080fd5b506102ae61035b3660046139d2565b610c46565b34801561036c57600080fd5b5061038061037b36600461379a565b610e98565b6040516102dd9190613a1e565b34801561039957600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016102dd565b3480156103e057600080fd5b506104087f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016102dd565b34801561042257600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405190151581526020016102dd565b34801561046157600080fd5b50610306610eb0565b34801561047657600080fd5b50610445610485366004613a41565b610ee0565b34801561049657600080fd5b506104086104a536600461379a565b610f41565b3480156104b657600080fd5b506102ae610f56565b3480156104cb57600080fd5b506104df6104da36600461379a565b610f6a565b60405161ffff90911681526020016102dd565b3480156104fe57600080fd5b506102ae610f88565b34801561051357600080fd5b50610408610522366004613a81565b61101d565b34801561053357600080fd5b506103bc611168565b34801561054857600080fd5b5061055c61055736600461379a565b611184565b6040516102dd9190613c58565b34801561057557600080fd5b50610408610584366004613e3b565b611569565b34801561059557600080fd5b506103336105a436600461379a565b61194e565b3480156105b557600080fd5b506104086105c4366004613f0f565b611ae7565b3480156105d557600080fd5b506103066105e4366004613f62565b611b31565b3480156105f557600080fd5b5061038061060436600461379a565b611c7d565b34801561061557600080fd5b50610408610624366004613f0f565b611cfa565b34801561063557600080fd5b506104086106443660046140c3565b611d49565b34801561065557600080fd5b506102d061066436600461379a565b612b0e565b34801561067557600080fd5b507f00000000000000000000000000000000000000000000000000000000000000003f610408565b3480156106a957600080fd5b506106d17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160e01b031990911681526020016102dd565b3480156106f657600080fd5b507f673359bdfd0124f9962355e7aed2d07d989b0d4bc4cbe2c94c295e0f81427df754610408565b34801561072a57600080fd5b5061073e61073936600461379a565b612b71565b60405160ff90911681526020016102dd565b34801561075c57600080fd5b5060408051808201909152601e81527f5769746e65745265717565737442797465636f6465734e6f53686132353600006020820152610306565b3480156107a257600080fd5b506107b66107b136600461379a565b612be8565b6040516102dd92919061419f565b3480156107d057600080fd5b506103bc7f000000000000000000000000000000000000000000000000000000000000000081565b34801561080457600080fd5b5061033361081336600461379a565b612cb4565b34801561082457600080fd5b50600080516020614b66833981519152546001600160a01b03166103bc565b34801561084f57600080fd5b506102ae61085e366004613a41565b612e3f565b34801561086f57600080fd5b5061030661087e3660046141c1565b612eb2565b60408051808201909152601e81527f5769746e65745265717565737442797465636f6465734e6f53686132353600006020820152816040516020016108c99291906141ee565b60408051601f198184030181529082905262461bcd60e51b825261026891600401613803565b606060006108fb613007565b6000868152602091909152604090206001810154909150808510156109ce57806109258587614241565b1115610938576109358582614254565b93505b836001600160401b03811115610950576109506138e7565b604051908082528060200260200182016040528015610979578160200160208202803683370190505b50925060005b83518110156109cc576002830160006109988884614241565b8152602001908152602001600020548482815181106109b9576109b9614267565b602090810291909101015260010161097f565b505b50509392505050565b60606109e1613007565b60008381526006919091016020526040902080546109fe9061427d565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2a9061427d565b8015610a775780601f10610a4c57610100808354040283529160200191610a77565b820191906000526020600020905b815481529060010190602001808311610a5a57829003601f168201915b50505050509050919050565b604080518082019091526000815260606020820152610aa0613007565b600083815260029190910160205260409081902081518083019092528054829060ff16600b811115610ad457610ad4613816565b600b811115610ae557610ae5613816565b815260200160018201805480602002602001604051908101604052809291908181526020016000905b82821015610bfe5760008481526020902060408051808201909152600284029091018054829060ff166009811115610b4857610b48613816565b6009811115610b5957610b59613816565b8152602001600182018054610b6d9061427d565b80601f0160208091040260200160405190810160405280929190818152602001828054610b999061427d565b8015610be65780601f10610bbb57610100808354040283529160200191610be6565b820191906000526020600020905b815481529060010190602001808311610bc957829003601f168201915b50505050508152505081526020019060010190610b0e565b505050915250508051909150600b811115610c1b57610c1b613816565b60ff16600003610c415760405163b020432960e01b815260048101839052602401610268565b919050565b600080516020614b46833981519152546001600160a01b031680610ca75781806020019051810190610c7891906142b1565b600080516020614b4683398151915280546001600160a01b0319166001600160a01b0383161790559050610d0d565b336001600160a01b03821614610d0d5760405162461bcd60e51b815260206004820152602560248201527f5769746e65745265717565737442797465636f6465733a206e6f74207468652060448201526437bbb732b960d91b6064820152608401610268565b7f673359bdfd0124f9962355e7aed2d07d989b0d4bc4cbe2c94c295e0f81427dec546001600160a01b031615610df3577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f673359bdfd0124f9962355e7aed2d07d989b0d4bc4cbe2c94c295e0f81427dec546001600160a01b031603610df35760405162461bcd60e51b815260206004820152602b60248201527f5769746e65745265717565737442797465636f6465733a20616c72656164792060448201526a1a5b9a5d1a585b1a5e995960aa1b6064820152608401610268565b7f673359bdfd0124f9962355e7aed2d07d989b0d4bc4cbe2c94c295e0f81427dec80546001600160a01b0319167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b038181169283179093553f9183167fe73e754121f0bad1327816970101955bfffdf53d270ac509d777c25be070d7f6610e7f610eb0565b604051610e8c9190613803565b60405180910390a45050565b6000610ea38261302b565b6003015460ff1692915050565b6060610edb7f0000000000000000000000000000000000000000000000000000000000000000613048565b905090565b600080516020614b46833981519152546000906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000008015610f3a5750826001600160a01b0316816001600160a01b0316145b9392505050565b6000610f4c8261302b565b6004015492915050565b610f5e6130f3565b610f686000613125565b565b6000610f758261302b565b60030154610100900461ffff1692915050565b3380610fa9600080516020614b66833981519152546001600160a01b031690565b6001600160a01b0316146110115760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610268565b61101a81613125565b50565b6000816040516020016110309190613850565b6040516020818303038152906040528051906020012090506000611052613007565b600083815260029190910160205260409020805490915060ff16600b81111561107d5761107d613816565b60ff1615801561108f57506001810154155b156111625760405163daf4b0ef60e01b815273__$6fdcaaf223938e26cbe304f958c2f40bbf$__9063daf4b0ef906110cb9086906004016142ce565b60006040518083038186803b1580156110e357600080fd5b505af41580156110f7573d6000803e3d6000fd5b50508451835490925083915060ff1916600183600b81111561111b5761111b613816565b021790555061112e8184602001516131c6565b6040518281527feb8b5415ec9648a9403c5cce90965dfa18af4388f474323741018a06e231be829060200160405180910390a15b50919050565b600080516020614b46833981519152546001600160a01b031690565b6111c56040805160e0810190915260008082526020820190815260200160008152602001606081526020016060815260200160608152602001606081525090565b6111cd613007565b60008381526003919091016020908152604091829020825160e08101909352805460ff8082168552919284019161010090910416600481111561121257611212613816565b600481111561122357611223613816565b8152815460209091019062010000900460ff16601381111561124757611247613816565b601381111561125857611258613816565b815260200160018201805461126c9061427d565b80601f01602080910402602001604051908101604052809291908181526020018280546112989061427d565b80156112e55780601f106112ba576101008083540402835291602001916112e5565b820191906000526020600020905b8154815290600101906020018083116112c857829003601f168201915b505050505081526020016002820180546112fe9061427d565b80601f016020809104026020016040519081016040528092919081815260200182805461132a9061427d565b80156113775780601f1061134c57610100808354040283529160200191611377565b820191906000526020600020905b81548152906001019060200180831161135a57829003601f168201915b5050505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b8282101561148357600084815260208120604080518082019091529160028086029092019190835b828210156114705783820180546113e39061427d565b80601f016020809104026020016040519081016040528092919081815260200182805461140f9061427d565b801561145c5780601f106114315761010080835404028352916020019161145c565b820191906000526020600020905b81548152906001019060200180831161143f57829003601f168201915b5050505050815260200190600101906113cd565b50505050815260200190600101906113a5565b50505050815260200160048201805461149b9061427d565b80601f01602080910402602001604051908101604052809291908181526020018280546114c79061427d565b80156115145780601f106114e957610100808354040283529160200191611514565b820191906000526020600020905b8154815290600101906020018083116114f757829003601f168201915b50505050508152505090506000600481111561153257611532613816565b8160200151600481111561154857611548613816565b03610c4157604051633552703b60e21b815260048101839052602401610268565b600088600481111561157d5761157d613816565b604051631746472760e01b815273__$6fdcaaf223938e26cbe304f958c2f40bbf$__916317464727916115c191908c908c908c908c908c908c908c906004016143f8565b602060405180830381865af41580156115de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116029190614464565b9050600061160e613007565b60008381526003919091016020526040902054610100900460ff16600481111561163a5761163a613816565b03611942576040518060e001604052806116cf8a8a604051806040016040528060018152602001600160fd1b8152508b8b604051806040016040528060018152602001600160fd1b8152508c604051806040016040528060018152602001600160fd1b8152508d8d6040516020016116bb9a9998979695949392919061447d565b60405160208183030381529060405261325a565b60ff1681526020018a60048111156116e9576116e9613816565b815260200173__$6fdcaaf223938e26cbe304f958c2f40bbf$__63f3106f7886866040518363ffffffff1660e01b815260040161172792919061451a565b602060405180830381865af4158015611744573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611768919061452e565b601381111561177957611779613816565b815260200189898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080516020601f8a0181900481028201810190925288815291810191908990899081908401838280828437600092019190915250505090825250602080820187905260408051601f870183900483028101830182528681529201919086908690819084018382808284376000920191909152505050915250611838613007565b6000838152600391909101602090815260409091208251815460ff90911660ff19821681178355928401519192839161ffff19161761010083600481111561188257611882613816565b021790555060408201518154829062ff00001916620100008360138111156118ac576118ac613816565b0217905550606082015160018201906118c5908261459f565b50608082015160028201906118da908261459f565b5060a082015180516118f69160038401916020909101906134ba565b5060c0820151600482019061190b908261459f565b50506040518281527fd4d6341509dbdeb3a349aa77cc95076376f8e1c84fd3d27e0081424b01909272915060200160405180910390a15b98975050505050505050565b60408051808201909152600081526060602082015261196b613007565b60020160006119798461302b565b6001015481526020810191909152604090810160002081518083019092528054829060ff16600b8111156119af576119af613816565b600b8111156119c0576119c0613816565b815260200160018201805480602002602001604051908101604052809291908181526020016000905b82821015611ad95760008481526020902060408051808201909152600284029091018054829060ff166009811115611a2357611a23613816565b6009811115611a3457611a34613816565b8152602001600182018054611a489061427d565b80601f0160208091040260200160405190810160405280929190818152602001828054611a749061427d565b8015611ac15780601f10611a9657610100808354040283529160200191611ac1565b820191906000526020600020905b815481529060010190602001808311611aa457829003601f168201915b505050505081525050815260200190600101906119e9565b505050915250909392505050565b6000611b2883838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506133cf92505050565b90505b92915050565b60405163acbade1f60e01b81526001600160401b0383166004820152600560f91b602482015260609073__$6fdcaaf223938e26cbe304f958c2f40bbf$__9063acbade1f90604401600060405180830381865af4158015611b96573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611bbe919081019061465e565b8484611bd7611bd2368790038701876146cb565b6133da565b6040516316c0d2a160e11b815273__$6fdcaaf223938e26cbe304f958c2f40bbf$__91632d81a54291611c0d919060040161471e565b600060405180830381865af4158015611c2a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c52919081019061465e565b604051602001611c65949392919061476f565b60405160208183030381529060405290509392505050565b600080611c88613007565b60008481526003919091016020526040902054610100900460ff166004811115611cb457611cb4613816565b03611cd557604051633552703b60e21b815260048101839052602401610268565b611cdd613007565b600092835260030160205250604090205462010000900460ff1690565b6000611d04613007565b60010160008484604051602001611d1c9291906147aa565b60405160208183030381529060405280519060200120815260200190815260200160002054905092915050565b6000808686868686604051602001611d659594939291906147ba565b604051602081830303815290604052805190602001209050611d85613007565b600082815260059190910160205260408120549250611da2613007565b6000838152600591909101602052604090205403612b04578651600003611e195760405162461bcd60e51b815260206004820152602560248201527f5769746e65745265717565737442797465636f6465733a206e6f2072657472696044820152646576616c7360d81b6064820152608401610268565b8251875114611e785760405162461bcd60e51b815260206004820152602560248201527f5769746e65745265717565737442797465636f6465733a2061726773206d69736044820152640dac2e8c6d60db1b6064820152608401610268565b6000611e82613007565b600088815260029190910160205260409081902081518083019092528054829060ff16600b811115611eb657611eb6613816565b600b811115611ec757611ec7613816565b815260200160018201805480602002602001604051908101604052809291908181526020016000905b82821015611fe05760008481526020902060408051808201909152600284029091018054829060ff166009811115611f2a57611f2a613816565b6009811115611f3b57611f3b613816565b8152602001600182018054611f4f9061427d565b80601f0160208091040260200160405190810160405280929190818152602001828054611f7b9061427d565b8015611fc85780601f10611f9d57610100808354040283529160200191611fc8565b820191906000526020600020905b815481529060010190602001808311611fab57829003601f168201915b50505050508152505081526020019060010190611ef0565b505050508152505090506000611ff4613007565b600088815260029190910160205260409081902081518083019092528054829060ff16600b81111561202857612028613816565b600b81111561203957612039613816565b815260200160018201805480602002602001604051908101604052809291908181526020016000905b828210156121525760008481526020902060408051808201909152600284029091018054829060ff16600981111561209c5761209c613816565b60098111156120ad576120ad613816565b81526020016001820180546120c19061427d565b80601f01602080910402602001604051908101604052809291908181526020018280546120ed9061427d565b801561213a5780601f1061210f5761010080835404028352916020019161213a565b820191906000526020600020905b81548152906001019060200180831161211d57829003601f168201915b50505050508152505081526020019060010190612062565b505050508152505090506000808a516001600160401b03811115612178576121786138e7565b6040519080825280602002602001820160405280156121ea57816020015b6121d76040805160e0810190915260008082526020820190815260200160008152602001606081526020016060815260200160608152602001606081525090565b8152602001906001900390816121965790505b50905060005b815181101561270057612201613007565b60030160008d838151811061221857612218614267565b6020908102919091018101518252818101929092526040908101600020815160e08101909252805460ff8082168452929391929184019161010090910416600481111561226757612267613816565b600481111561227857612278613816565b8152815460209091019062010000900460ff16601381111561229c5761229c613816565b60138111156122ad576122ad613816565b81526020016001820180546122c19061427d565b80601f01602080910402602001604051908101604052809291908181526020018280546122ed9061427d565b801561233a5780601f1061230f5761010080835404028352916020019161233a565b820191906000526020600020905b81548152906001019060200180831161231d57829003601f168201915b505050505081526020016002820180546123539061427d565b80601f016020809104026020016040519081016040528092919081815260200182805461237f9061427d565b80156123cc5780601f106123a1576101008083540402835291602001916123cc565b820191906000526020600020905b8154815290600101906020018083116123af57829003601f168201915b5050505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b828210156124d857600084815260208120604080518082019091529160028086029092019190835b828210156124c55783820180546124389061427d565b80601f01602080910402602001604051908101604052809291908181526020018280546124649061427d565b80156124b15780601f10612486576101008083540402835291602001916124b1565b820191906000526020600020905b81548152906001019060200180831161249457829003601f168201915b505050505081526020019060010190612422565b50505050815260200190600101906123fa565b5050505081526020016004820180546124f09061427d565b80601f016020809104026020016040519081016040528092919081815260200182805461251c9061427d565b80156125695780601f1061253e57610100808354040283529160200191612569565b820191906000526020600020905b81548152906001019060200180831161254c57829003601f168201915b50505050508152505082828151811061258457612584614267565b6020026020010181905250806000036125bd57816000815181106125aa576125aa614267565b6020026020010151604001519250612662565b8260138111156125cf576125cf613816565b8282815181106125e1576125e1614267565b60200260200101516040015160138111156125fe576125fe613816565b146126625760405162461bcd60e51b815260206004820152602e60248201527f5769746e65745265717565737442797465636f6465733a206d69736d6174636860448201526d696e672072657472696576616c7360901b6064820152608401610268565b81818151811061267457612674614267565b60200260200101516000015160ff1688828151811061269557612695614267565b60200260200101515110156126f85760405162461bcd60e51b8152602060048201526024808201527f5769746e65745265717565737442797465636f6465733a206d697373696e67206044820152636172677360e01b6064820152608401610268565b6001016121f0565b5081601381111561271357612713613816565b604051630160730f60e01b815273__$6fdcaaf223938e26cbe304f958c2f40bbf$__91630160730f9161274b91908c90600401614889565b602060405180830381865af4158015612768573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278c91906148a8565b975060008173__$6fdcaaf223938e26cbe304f958c2f40bbf$__63b6349ebd90918a8873__$6fdcaaf223938e26cbe304f958c2f40bbf$__631c02d22b90916040518263ffffffff1660e01b81526004016127e791906142ce565b600060405180830381865af4158015612804573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261282c919081019061465e565b604051631c02d22b60e01b815273__$6fdcaaf223938e26cbe304f958c2f40bbf$__90631c02d22b90612863908c906004016142ce565b600060405180830381865af4158015612880573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128a8919081019061465e565b8e6040518663ffffffff1660e01b81526004016128c9959493929190614961565b600060405180830381865af41580156128e6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261290e919081019061465e565b905061ffff815111156129755760405162461bcd60e51b815260206004820152602960248201527f5769746e65745265717565737442797465636f6465733a20746f6f20686561766044820152681e481c995c5d595cdd60ba1b6064820152608401610268565b80516020820120965086612987613007565b60008881526005919091016020526040902055806129a3613007565b600089815260069190910160205260409020906129c0908261459f565b506040518060e001604052808981526020018c81526020018881526020018460138111156129f0576129f0613816565b81526020018a61ffff1681526020018d81526020018b815250612a11613007565b600089815260049190910160209081526040909120825180519192612a3b92849290910190613514565b50602082015181600101556040820151816002015560608201518160030160006101000a81548160ff02191690836013811115612a7a57612a7a613816565b0217905550608082015160038201805461ffff9092166101000262ffff001990921691909117905560a08201518051612abd91600484019160209091019061356d565b5060c091909101516005909101556040518781527fe8845fcb11242df46ec5ca06bf7d381c3c6e9cc4f110abacffc933558e8dd67d9060200160405180910390a150505050505b5095945050505050565b6060612b198261302b565b600401805480602002602001604051908101604052809291908181526020018280548015610a7757602002820191906000526020600020905b815481526020019060010190808311612b525750505050509050919050565b600080612b7c613007565b60008481526003919091016020526040902054610100900460ff166004811115612ba857612ba8613816565b03612bc957604051633552703b60e21b815260048101839052602401610268565b612bd1613007565b600092835260030160205250604090205460ff1690565b60606000612bf4613007565b600084815260209190915260409020612c0b613007565b6000858152602091909152604090206001015481548290612c2b9061427d565b80601f0160208091040260200160405190810160405280929190818152602001828054612c579061427d565b8015612ca45780601f10612c7957610100808354040283529160200191612ca4565b820191906000526020600020905b815481529060010190602001808311612c8757829003601f168201915b5050505050915091509150915091565b604080518082019091526000815260606020820152612cd1613007565b6002016000612cdf8461302b565b6005015481526020810191909152604090810160002081518083019092528054829060ff16600b811115612d1557612d15613816565b600b811115612d2657612d26613816565b815260200160018201805480602002602001604051908101604052809291908181526020016000905b82821015611ad95760008481526020902060408051808201909152600284029091018054829060ff166009811115612d8957612d89613816565b6009811115612d9a57612d9a613816565b8152602001600182018054612dae9061427d565b80601f0160208091040260200160405190810160405280929190818152602001828054612dda9061427d565b8015612e275780601f10612dfc57610100808354040283529160200191612e27565b820191906000526020600020905b815481529060010190602001808311612e0a57829003601f168201915b50505050508152505081526020019060010190612d4f565b612e476130f3565b600080516020614b6683398151915280546001600160a01b0319166001600160a01b038316908117909155612e7a611168565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60606000612ebf846109d7565b805160405163acbade1f60e01b81526001600160401b039091166004820152600560f91b602482015290915073__$6fdcaaf223938e26cbe304f958c2f40bbf$__9063acbade1f90604401600060405180830381865af4158015612f27573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612f4f919081019061465e565b81612f62611bd2368790038701876146cb565b6040516316c0d2a160e11b815273__$6fdcaaf223938e26cbe304f958c2f40bbf$__91632d81a54291612f98919060040161471e565b600060405180830381865af4158015612fb5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612fdd919081019061465e565b604051602001612fef93929190614aa3565b60405160208183030381529060405291505092915050565b7f673359bdfd0124f9962355e7aed2d07d989b0d4bc4cbe2c94c295e0f81427def90565b6000613035613007565b6000928352600401602052506040902090565b6060600061305583613481565b6001600160401b0381111561306c5761306c6138e7565b6040519080825280601f01601f191660200182016040528015613096576020820181803683370190505b50905060005b81518110156130ec578381602081106130b7576130b7614267565b1a60f81b8282815181106130cd576130cd614267565b60200101906001600160f81b031916908160001a90535060010161309c565b5092915050565b336130fc611168565b6001600160a01b031614610f685760405163118cdaa760e01b8152336004820152602401610268565b600080516020614b6683398151915280546001600160a01b0319169055600061314c611168565b9050806001600160a01b0316826001600160a01b0316146131c257600080516020614b4683398151915280546001600160a01b0319166001600160a01b0384811691821790925560405190918316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35b5050565b60005b815181101561325557826001018282815181106131e8576131e8614267565b60209081029190910181015182546001818101855560009485529290932081516002909402018054919390929091839160ff199091169083600981111561323157613231613816565b02179055506020820151600182019061324a908261459f565b5050506001016131c9565b505050565b600060038