@lightlink-network/ll-sdk
Version:
[LightLink] Tools for working with LightLink
1,227 lines • 288 kB
JSON
{
"abi": [
{
"type": "function",
"name": "UPGRADE_INTERFACE_VERSION",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "chain",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract ICanonicalStateChain"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "chainOracle",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IChainOracle"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "challengeDataRootInclusion",
"inputs": [
{
"name": "_blockIndex",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "_pointerIndex",
"type": "uint8",
"internalType": "uint8"
},
{
"name": "_shareIndex",
"type": "uint32",
"internalType": "uint32"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "payable"
},
{
"type": "function",
"name": "challengeFee",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "challengeL2Header",
"inputs": [
{
"name": "_rblockNum",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "_l2Num",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "payable"
},
{
"type": "function",
"name": "challengePeriod",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "challengeReward",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "challengeWindow",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "claimDAChallengeReward",
"inputs": [
{
"name": "_challengeKey",
"type": "bytes32",
"internalType": "bytes32"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "claimL2HeaderChallengeReward",
"inputs": [
{
"name": "_challengeKey",
"type": "bytes32",
"internalType": "bytes32"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "daChallenges",
"inputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"outputs": [
{
"name": "blockHash",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "blockIndex",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "pointerIndex",
"type": "uint8",
"internalType": "uint8"
},
{
"name": "shareIndex",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "challenger",
"type": "address",
"internalType": "address"
},
{
"name": "expiry",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "status",
"type": "uint8",
"internalType": "enum ChallengeDataAvailability.ChallengeDAStatus"
},
{
"name": "claimed",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "daNamespace",
"inputs": [],
"outputs": [
{
"name": "version",
"type": "bytes1",
"internalType": "bytes1"
},
{
"name": "id",
"type": "bytes28",
"internalType": "bytes28"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "daOracle",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IDAOracle"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "dataRootInclusionChallengeKey",
"inputs": [
{
"name": "_blockHash",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "_pointerIndex",
"type": "uint8",
"internalType": "uint8"
},
{
"name": "_shareIndex",
"type": "uint32",
"internalType": "uint32"
}
],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "pure"
},
{
"type": "function",
"name": "defendDataRootInclusion",
"inputs": [
{
"name": "_challengeKey",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "_proof",
"type": "tuple",
"internalType": "struct SharesProof",
"components": [
{
"name": "data",
"type": "bytes[]",
"internalType": "bytes[]"
},
{
"name": "shareProofs",
"type": "tuple[]",
"internalType": "struct NamespaceMerkleMultiproof[]",
"components": [
{
"name": "beginKey",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "endKey",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "sideNodes",
"type": "tuple[]",
"internalType": "struct NamespaceNode[]",
"components": [
{
"name": "min",
"type": "tuple",
"internalType": "struct Namespace",
"components": [
{
"name": "version",
"type": "bytes1",
"internalType": "bytes1"
},
{
"name": "id",
"type": "bytes28",
"internalType": "bytes28"
}
]
},
{
"name": "max",
"type": "tuple",
"internalType": "struct Namespace",
"components": [
{
"name": "version",
"type": "bytes1",
"internalType": "bytes1"
},
{
"name": "id",
"type": "bytes28",
"internalType": "bytes28"
}
]
},
{
"name": "digest",
"type": "bytes32",
"internalType": "bytes32"
}
]
}
]
},
{
"name": "namespace",
"type": "tuple",
"internalType": "struct Namespace",
"components": [
{
"name": "version",
"type": "bytes1",
"internalType": "bytes1"
},
{
"name": "id",
"type": "bytes28",
"internalType": "bytes28"
}
]
},
{
"name": "rowRoots",
"type": "tuple[]",
"internalType": "struct NamespaceNode[]",
"components": [
{
"name": "min",
"type": "tuple",
"internalType": "struct Namespace",
"components": [
{
"name": "version",
"type": "bytes1",
"internalType": "bytes1"
},
{
"name": "id",
"type": "bytes28",
"internalType": "bytes28"
}
]
},
{
"name": "max",
"type": "tuple",
"internalType": "struct Namespace",
"components": [
{
"name": "version",
"type": "bytes1",
"internalType": "bytes1"
},
{
"name": "id",
"type": "bytes28",
"internalType": "bytes28"
}
]
},
{
"name": "digest",
"type": "bytes32",
"internalType": "bytes32"
}
]
},
{
"name": "rowProofs",
"type": "tuple[]",
"internalType": "struct BinaryMerkleProof[]",
"components": [
{
"name": "sideNodes",
"type": "bytes32[]",
"internalType": "bytes32[]"
},
{
"name": "key",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "numLeaves",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "attestationProof",
"type": "tuple",
"internalType": "struct AttestationProof",
"components": [
{
"name": "tupleRootNonce",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "tuple",
"type": "tuple",
"internalType": "struct DataRootTuple",
"components": [
{
"name": "height",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "dataRoot",
"type": "bytes32",
"internalType": "bytes32"
}
]
},
{
"name": "proof",
"type": "tuple",
"internalType": "struct BinaryMerkleProof",
"components": [
{
"name": "sideNodes",
"type": "bytes32[]",
"internalType": "bytes32[]"
},
{
"name": "key",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "numLeaves",
"type": "uint256",
"internalType": "uint256"
}
]
}
]
}
]
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "defendL2Header",
"inputs": [
{
"name": "_challengeHash",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "_headerHash",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "_headerPrevHash",
"type": "bytes32",
"internalType": "bytes32"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "defender",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "finalizationSeconds",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "initialize",
"inputs": [
{
"name": "_chain",
"type": "address",
"internalType": "address"
},
{
"name": "_daOracle",
"type": "address",
"internalType": "address"
},
{
"name": "_chainOracle",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "invalidateHeader",
"inputs": [
{
"name": "_blockIndex",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "isDAChallengeEnabled",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "isHeaderChallengeEnabled",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "isL2HeaderChallengeEnabled",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "l2HeaderChallengeHash",
"inputs": [
{
"name": "_rblockHash",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "_l2Num",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "pure"
},
{
"type": "function",
"name": "l2HeaderChallenges",
"inputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"outputs": [
{
"name": "blockNum",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "header",
"type": "tuple",
"internalType": "struct ChallengeL2Header.L2HeaderPointer",
"components": [
{
"name": "rblock",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "number",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "prevHeader",
"type": "tuple",
"internalType": "struct ChallengeL2Header.L2HeaderPointer",
"components": [
{
"name": "rblock",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "number",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "challengeEnd",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "challenger",
"type": "address",
"internalType": "address"
},
{
"name": "status",
"type": "uint8",
"internalType": "enum ChallengeL2Header.L2HeaderChallengeStatus"
},
{
"name": "claimed",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "maxBundleSize",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "owner",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "proxiableUUID",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "renounceOwnership",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "setChallengeFee",
"inputs": [
{
"name": "_challengeFee",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "setChallengePeriod",
"inputs": [
{
"name": "_challengePeriod",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "setChallengeReward",
"inputs": [
{
"name": "_challengeReward",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "setChallengeWindow",
"inputs": [
{
"name": "_challengeWindow",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "setDANamespace",
"inputs": [
{
"name": "_namespace",
"type": "tuple",
"internalType": "struct Namespace",
"components": [
{
"name": "version",
"type": "bytes1",
"internalType": "bytes1"
},
{
"name": "id",
"type": "bytes28",
"internalType": "bytes28"
}
]
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "setDAOracle",
"inputs": [
{
"name": "_daOracle",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "setDefender",
"inputs": [
{
"name": "_defender",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "setMaxBundleSize",
"inputs": [
{
"name": "_maxBundleSize",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "settleDataRootInclusion",
"inputs": [
{
"name": "_challengeKey",
"type": "bytes32",
"internalType": "bytes32"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "settleL2HeaderChallenge",
"inputs": [
{
"name": "_challengeHash",
"type": "bytes32",
"internalType": "bytes32"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "toggleDAChallenge",
"inputs": [
{
"name": "_status",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "toggleHeaderChallenge",
"inputs": [
{
"name": "_status",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "toggleL2HeaderChallenge",
"inputs": [
{
"name": "_status",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "transferOwnership",
"inputs": [
{
"name": "newOwner",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "upgradeToAndCall",
"inputs": [
{
"name": "newImplementation",
"type": "address",
"internalType": "address"
},
{
"name": "data",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [],
"stateMutability": "payable"
},
{
"type": "event",
"name": "ChallengeDAUpdate",
"inputs": [
{
"name": "_blockHash",
"type": "bytes32",
"indexed": true,
"internalType": "bytes32"
},
{
"name": "_pointerIndex",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "_shareIndex",
"type": "uint32",
"indexed": false,
"internalType": "uint32"
},
{
"name": "_blockIndex",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "_expiry",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "_status",
"type": "uint8",
"indexed": true,
"internalType": "enum ChallengeDataAvailability.ChallengeDAStatus"
}
],
"anonymous": false
},
{
"type": "event",
"name": "Initialized",
"inputs": [
{
"name": "version",
"type": "uint64",
"indexed": false,
"internalType": "uint64"
}
],
"anonymous": false
},
{
"type": "event",
"name": "InvalidHeader",
"inputs": [
{
"name": "_blockIndex",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "_hash",
"type": "bytes32",
"indexed": true,
"internalType": "bytes32"
},
{
"name": "_reason",
"type": "uint8",
"indexed": true,
"internalType": "enum ChallengeHeader.InvalidHeaderReason"
}
],
"anonymous": false
},
{
"type": "event",
"name": "L2HeaderChallengeUpdate",
"inputs": [
{
"name": "challengeHash",
"type": "bytes32",
"indexed": true,
"internalType": "bytes32"
},
{
"name": "l2Number",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "rblock",
"type": "bytes32",
"indexed": false,
"internalType": "bytes32"
},
{
"name": "expiry",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "status",
"type": "uint8",
"indexed": true,
"internalType": "enum ChallengeL2Header.L2HeaderChallengeStatus"
}
],
"anonymous": false
},
{
"type": "event",
"name": "OwnershipTransferred",
"inputs": [
{
"name": "previousOwner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "newOwner",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"type": "event",
"name": "Upgraded",
"inputs": [
{
"name": "implementation",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"type": "error",
"name": "AddressEmptyCode",
"inputs": [
{
"name": "target",
"type": "address",
"internalType": "address"
}
]
},
{
"type": "error",
"name": "ERC1967InvalidImplementation",
"inputs": [
{
"name": "implementation",
"type": "address",
"internalType": "address"
}
]
},
{
"type": "error",
"name": "ERC1967NonPayable",
"inputs": []
},
{
"type": "error",
"name": "FailedInnerCall",
"inputs": []
},
{
"type": "error",
"name": "InvalidInitialization",
"inputs": []
},
{
"type": "error",
"name": "NotInitializing",
"inputs": []
},
{
"type": "error",
"name": "OwnableInvalidOwner",
"inputs": [
{
"name": "owner",
"type": "address",
"internalType": "address"
}
]
},
{
"type": "error",
"name": "OwnableUnauthorizedAccount",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
}
]
},
{
"type": "error",
"name": "ReentrancyGuardReentrantCall",
"inputs": []
},
{
"type": "error",
"name": "UUPSUnauthorizedCallContext",
"inputs": []
},
{
"type": "error",
"name": "UUPSUnsupportedProxiableUUID",
"inputs": [
{
"name": "slot",
"type": "bytes32",
"internalType": "bytes32"
}
]
}
],
"bytecode": {
"object": "0x60a0806040523461002a5730608052614d729081610030823960805181818161165001526117f60152f35b600080fdfe6080604052600436101561001257600080fd5b6000803560e01c806301c1aa0d14612e455780630200501d1461294e5780630eea9bab146122cd578063113e70fb14612238578063163a7177146121a057806317eef5b1146120e75780631b0ec391146120b75780631bd8f9ca14612099578063325898b1146120765780633323d3e414611b7457806335bf82f614611ac657806339e87c2214611aa35780633ea0c15e14611a855780634329b10114611a08578063485bc239146119d05780634c1b6e4b146119b25780634f1ef286146117b857806351ad15cf146116ba57806352d1902d1461163d57806355c20747146116065780635ae45d8b14610fe65780635bba0ea914610e475780635d475fdd14610da35780635dade41214610a855780636da802c8146109df578063715018a6146109745780637d3020ad146108be5780637f4c91c51461089557806380a2558a14610872578063861a1412146108555780638da5cb5b1461081f57806395618a28146107e7578063988c6671146107ab57806398e2dffb14610781578063a3be6534146106e9578063ad3cb1cc1461068c578063bc67745114610669578063bfcf449514610640578063c0c53b8b14610465578063c763e5a11461043c578063ee223c0214610413578063f2fde38b146103e6578063f3f480d9146103c8578063f8a22c6c1461024e5763fa8e8de21461020c57600080fd5b3461024b57604036600319011261024b57602060405181810190600435825260243560408201526040815261024081612ee8565b519020604051908152f35b80fd5b503461024b57602036600319011261024b57600435808252607160205260408220906006820190815491610293600160ff8560a01c1661028d81613184565b1461321e565b600584019283544211156103835760ff60a01b1916600160a11b1790556006548354600019810193916001600160a01b031690841161036f57859060018601948554823b1561036b57604484928360405195869485936334c9bca560e01b8552600485015260248401525af1801561036057610348575b505060407f89389219f04af163105506312f99d6ca034af96d3ee1128efc6a9619ee2aeec2916002809601549454905482519182526020820152a480f35b61035190612f34565b61035c57843861030a565b8480fd5b6040513d84823e3d90fd5b8380fd5b634e487b7160e01b86526011600452602486fd5b60405162461bcd60e51b815260206004820152601e60248201527f6368616c6c656e676520706572696f6420686173206e6f7420656e64656400006044820152606490fd5b503461024b578060031936011261024b576020600154604051908152f35b503461024b57602036600319011261024b576104106104036131a4565b61040b61393f565b6138cb565b80f35b503461024b578060031936011261024b576008546040516001600160a01b039091168152602090f35b503461024b578060031936011261024b576006546040516001600160a01b039091168152602090f35b503461024b57606036600319011261024b5761047f6131a4565b6001600160a01b03602435818116929083900361063b576044359082821680920361063b577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009384549360ff8560401c1615946001600160401b03811680159081610633575b6001149081610629575b159081610620575b5061060e5767ffffffffffffffff1981166001178755856105ef575b5061051c61446d565b61052461446d565b61052c61446d565b610535336138cb565b61053d61446d565b61054561446d565b6001600080516020614d46833981519152556203f48087556202a3006001556714d1120d7b1600006002556702c68af0bb1400006003556001600160601b0360a01b9216826006541617600655816008541617600855600554161760055561a410603c556105b1575080f35b68ff00000000000000001981541690557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a180f35b68ffffffffffffffffff19166801000000000000000117865538610513565b60405163f92ee8a960e01b8152600490fd5b905015386104f7565b303b1591506104ef565b8791506104e5565b600080fd5b503461024b578060031936011261024b576005546040516001600160a01b039091168152602090f35b503461024b57602036600319011261024b5761068361393f565b600435603c5580f35b503461024b578060031936011261024b576106db604080516106ad81612f19565b6005815260208101640352e302e360dc1b8152825193849260208452518092816020860152858501906131fb565b601f01601f19168101030190f35b503461024b57602036600319011261024b576107036131a4565b61070b61393f565b6001600160a01b03168015610730576001600160601b0360a01b600854161760085580f35b60405162461bcd60e51b815260206004820152602360248201527f64614f7261636c652063616e6e6f7420626520746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b503461024b578060031936011261024b576107a3602091600154905490613570565b604051908152f35b503461024b57602036600319011261024b576004358015158091036107e3576107d261393f565b60ff8019603b5416911617603b5580f35b5080fd5b503461024b57602036600319011261024b576004358015158091036107e35761080e61393f565b60ff80196072541691161760725580f35b503461024b578060031936011261024b57600080516020614ce6833981519152546040516001600160a01b039091168152602090f35b503461024b578060031936011261024b5760209054604051908152f35b503461024b578060031936011261024b57602060ff607054166040519015158152f35b503461024b578060031936011261024b576004546040516001600160a01b039091168152602090f35b503461024b57602036600319011261024b576004356108db61393f565b662386f26fc1000081101580610962575b156108f75760035580f35b60405162461bcd60e51b815260206004820152603860248201527f6368616c6c656e676520726577617264206d757374206265206265747765656e60448201527f20302e303120657468657220616e6420313020657468657200000000000000006064820152608490fd5b50678ac7230489e800008111156108ec565b503461024b578060031936011261024b5761098d61393f565b600080516020614ce683398151915280546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b503461024b57602036600319011261024b57604061012091600435815260716020522060ff815491610a13600182016131dd565b610a1f600383016131dd565b916020600660058301549201549381868660a01c16946040519889528051828a015201516040880152805160608801520151608086015260a085015260018060a01b03821660c0850152610a7281613184565b60e084015260a81c161515610100820152f35b503461024b576020908160031936011261024b576004359160018060a01b0360065416926040516247a8e360e11b81528281600481885afa8015610d98578490610d69575b610ad791508211156136dc565b610ae2811515613728565b60405193631614b30360e21b9283865282600487015260249581818881865afa908115610c85578691610d3c575b5060405190630a2a343960e21b825260048201526040818881865afa908115610c85576001600160401b03610b5d92610b55928991610d0d575b505116875490613570565b4211156137aa565b60ff603b541615610cca5760405193845282600485015280848781855afa938415610cbf578594610c90575b5060405163392af9bf60e11b81526004810184905285818881865afa908115610c855785610bc09286928991610c63575b50613dab565b610c2e57506000198201918211610c1a57938484953b1561035c5784928360449260405196879586946334c9bca560e01b865260048601528401525af1801561036057610c0a5750f35b610c1390612f34565b61024b5780f35b5050634e487b7160e01b8252506011600452fd5b606490600f876040519262461bcd60e51b845260048401528201526e1a195859195c881a5cc81d985b1a59608a1b6044820152fd5b610c7f91503d808b833e610c778183612f62565b8101906133ec565b38610bba565b6040513d88823e3d90fd5b9080945081813d8311610cb8575b610ca88183612f62565b8101031261063b57519238610b89565b503d610c9e565b6040513d87823e3d90fd5b606490601c876040519262461bcd60e51b845260048401528201527f686561646572206368616c6c656e67652069732064697361626c6564000000006044820152fd5b610d2f915060403d604011610d35575b610d278183612f62565b810190613774565b38610b4a565b503d610d1d565b90508181813d8311610d62575b610d538183612f62565b8101031261063b575138610b10565b503d610d49565b508281813d8311610d91575b610d7f8183612f62565b8101031261063b57610ad79051610aca565b503d610d75565b6040513d86823e3d90fd5b503461024b57602036600319011261024b57600435610dc061393f565b61a8c081101580610e3a575b15610dd75760015580f35b60405162461bcd60e51b815260206004820152603560248201527f6368616c6c656e676520706572696f64206d757374206265206265747765656e60448201527420313220686f75727320616e642033207765656b7360581b6064820152608490fd5b50621baf80811115610dcc565b503461024b57602036600319011261024b57610e61613978565b6004358152606f60205260408120906004820191825492610e8a600160ff861661028d81613184565b60038201938454421115610fa15760ff191660021790556006546001820180549092916001600160a01b0316906000198101908111610f8d57825490823b15610f895790604486928360405195869485936334c9bca560e01b8552600485015260248401525af18015610d9857610f67575b50600080516020614d26833981519152600293948483549301549354905490610f4f60405192839263ffffffff60ff89169860081c168460409194939263ffffffff606083019616825260208201520152565b0390a46001600080516020614d468339815191525580f35b600293610f82600080516020614d2683398151915292612f34565b9350610efc565b8580fd5b634e487b7160e01b85526011600452602485fd5b60405162461bcd60e51b815260206004820152601960248201527f6368616c6c656e676520686173206e6f742065787069726564000000000000006044820152606490fd5b50604036600319011261024b576006546040516247a8e360e11b81526001600160a01b0390911690602081600481855afa80156115315783906115d2575b611033915060043511156136dc565b6110406004351515613728565b604051631614b30360e21b808252600480359083015290602081602481865afa908115610d985784916115a0575b5060405190630a2a343960e21b82526004820152604081602481865afa8015610d98576001600160401b03610b55916110b3938791611581575b505116855490613570565b6110c060025434146137f6565b60ff607254161561153c576040519081526004356004820152602081602481855afa9081156115315783916114fb575b5060405163392af9bf60e11b81526004803590820152918383602481845afa928315610d985784936114df575b506004356000198101116114cb57836024916040519283809263392af9bf60e11b82526000196004350160048301525afa908115610d985784916114b1575b50604051602081019083825260243560408201526040815261117d81612ee8565b5190209283855260716020526111a960ff600660408820015460a01c166111a381613184565b1561383b565b6001600160401b036020830151166024351180611498575b1561143a5760016004351480611418575b6113ad57604051916111e383612f19565b8383526024356020840181905260001981011161036f5760405161120681612f19565b848152600019602435016020820152916001600160401b0361122d816020850151166138b3565b166024351461137c575b505061124560015442613570565b6040519160e083018381106001600160401b038211176113685760019594936020989389899460069460405260043584528184019788526040840190815260608401928352816080850198338a52604060a08701998d8b5260c0880199818b5281526071845220955186555180518c870155015160028501555180516003850155015160048301555160058201550192858060a01b0390511683549251916112ec83613184565b6112f583613184565b60ff60a81b9051151560a81b169269ff