{
    "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": "0x60a0806040523461002a5730608052614d729081610030823960805181818161165001526117f60152f35b600080fdfe6080604052600436101561001257600080fd5b6000803560e01c806301c1aa0d14612e455780630200501d1461294e5780630eea9bab146122cd578063113e70fb14612238578063163a7177146121a057806317eef5b1146120e75780631b0ec391146120b75780631bd8f9ca14612099578063325898b1146120765780633323d3e414611b7457806335bf82f614611ac657806339e87c2214611aa35780633ea0c15e14611a855780634329b10114611a08578063485bc239146119d05780634c1b6e4b146119b25780634f1ef286146117b857806351ad15cf146116ba57806352d1902d1461163d57806355c20747146116065780635ae45d8b14610fe65780635bba0ea914610e475780635d475fdd14610da35780635dade41214610a855780636da802c8146109df578063715018a6146109745780637d3020ad146108be5780637f4c91c51461089557806380a2558a14610872578063861a1412146108555780638da5cb5b1461081f57806395618a28146107e7578063988c6671146107ab57806398e2dffb14610781578063a3be6534146106e9578063ad3cb1cc1461068c578063bc67745114610669578063bfcf449514610640578063c0c53b8b14610465578063c763e5a11461043c578063ee223c0214610413578063f2fde38b146103e6578063f3f480d9146103c8578063f8a22c6c1461024e5763fa8e8de21461020c57600080fd5b3461024b57604036600319011261024b57602060405181810190600435825260243560408201526040815261024081612ee8565b519020604051908152f35b80fd5b503461024b57602036600319011261024b57600435808252607160205260408220906006820190815491610293600160ff8560a01c1661028d81613184565b1461321e565b600584019283544211156103835760ff60a01b1916600160a11b1790556006548354600019810193916001600160a01b031690841161036f57859060018601948554823b1561036b57604484928360405195869485936334c9bca560e01b8552600485015260248401525af1801561036057610348575b505060407f89389219f04af163105506312f99d6ca034af96d3ee1128efc6a9619ee2aeec2916002809601549454905482519182526020820152a480f35b61035190612f34565b61035c57843861030a565b8480fd5b6040513d84823e3d90fd5b8380fd5b634e487b7160e01b86526011600452602486fd5b60405162461bcd60e51b815260206004820152601e60248201527f6368616c6c656e676520706572696f6420686173206e6f7420656e64656400006044820152606490fd5b503461024b578060031936011261024b576020600154604051908152f35b503461024b57602036600319011261024b576104106104036131a4565b61040b61393f565b6138cb565b80f35b503461024b578060031936011261024b576008546040516001600160a01b039091168152602090f35b503461024b578060031936011261024b576006546040516001600160a01b039091168152602090f35b503461024b57606036600319011261024b5761047f6131a4565b6001600160a01b03602435818116929083900361063b576044359082821680920361063b577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009384549360ff8560401c1615946001600160401b03811680159081610633575b6001149081610629575b159081610620575b5061060e5767ffffffffffffffff1981166001178755856105ef575b5061051c61446d565b61052461446d565b61052c61446d565b610535336138cb565b61053d61446d565b61054561446d565b6001600080516020614d46833981519152556203f48087556202a3006001556714d1120d7b1600006002556702c68af0bb1400006003556001600160601b0360a01b9216826006541617600655816008541617600855600554161760055561a410603c556105b1575080f35b68ff00000000000000001981541690557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a180f35b68ffffffffffffffffff19166801000000000000000117865538610513565b60405163f92ee8a960e01b8152600490fd5b905015386104f7565b303b1591506104ef565b8791506104e5565b600080fd5b503461024b578060031936011261024b576005546040516001600160a01b039091168152602090f35b503461024b57602036600319011261024b5761068361393f565b600435603c5580f35b503461024b578060031936011261024b576106db604080516106ad81612f19565b6005815260208101640352e302e360dc1b8152825193849260208452518092816020860152858501906131fb565b601f01601f19168101030190f35b503461024b57602036600319011261024b576107036131a4565b61070b61393f565b6001600160a01b03168015610730576001600160601b0360a01b600854161760085580f35b60405162461bcd60e51b815260206004820152602360248201527f64614f7261636c652063616e6e6f7420626520746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b503461024b578060031936011261024b576107a3602091600154905490613570565b604051908152f35b503461024b57602036600319011261024b576004358015158091036107e3576107d261393f565b60ff8019603b5416911617603b5580f35b5080fd5b503461024b57602036600319011261024b576004358015158091036107e35761080e61393f565b60ff80196072541691161760725580f35b503461024b578060031936011261024b57600080516020614ce6833981519152546040516001600160a01b039091168152602090f35b503461024b578060031936011261024b5760209054604051908152f35b503461024b578060031936011261024b57602060ff607054166040519015158152f35b503461024b578060031936011261024b576004546040516001600160a01b039091168152602090f35b503461024b57602036600319011261024b576004356108db61393f565b662386f26fc1000081101580610962575b156108f75760035580f35b60405162461bcd60e51b815260206004820152603860248201527f6368616c6c656e676520726577617264206d757374206265206265747765656e60448201527f20302e303120657468657220616e6420313020657468657200000000000000006064820152608490fd5b50678ac7230489e800008111156108ec565b503461024b578060031936011261024b5761098d61393f565b600080516020614ce683398151915280546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b503461024b57602036600319011261024b57604061012091600435815260716020522060ff815491610a13600182016131dd565b610a1f600383016131dd565b916020600660058301549201549381868660a01c16946040519889528051828a015201516040880152805160608801520151608086015260a085015260018060a01b03821660c0850152610a7281613184565b60e084015260a81c161515610100820152f35b503461024b576020908160031936011261024b576004359160018060a01b0360065416926040516247a8e360e11b81528281600481885afa8015610d98578490610d69575b610ad791508211156136dc565b610ae2811515613728565b60405193631614b30360e21b9283865282600487015260249581818881865afa908115610c85578691610d3c575b5060405190630a2a343960e21b825260048201526040818881865afa908115610c85576001600160401b03610b5d92610b55928991610d0d575b505116875490613570565b4211156137aa565b60ff603b541615610cca5760405193845282600485015280848781855afa938415610cbf578594610c90575b5060405163392af9bf60e11b81526004810184905285818881865afa908115610c855785610bc09286928991610c63575b50613dab565b610c2e57506000198201918211610c1a57938484953b1561035c5784928360449260405196879586946334c9bca560e01b865260048601528401525af1801561036057610c0a5750f35b610c1390612f34565b61024b5780f35b5050634e487b7160e01b8252506011600452fd5b606490600f876040519262461bcd60e51b845260048401528201526e1a195859195c881a5cc81d985b1a59608a1b6044820152fd5b610c7f91503d808b833e610c778183612f62565b8101906133ec565b38610bba565b6040513d88823e3d90fd5b9080945081813d8311610cb8575b610ca88183612f62565b8101031261063b57519238610b89565b503d610c9e565b6040513d87823e3d90fd5b606490601c876040519262461bcd60e51b845260048401528201527f686561646572206368616c6c656e67652069732064697361626c6564000000006044820152fd5b610d2f915060403d604011610d35575b610d278183612f62565b810190613774565b38610b4a565b503d610d1d565b90508181813d8311610d62575b610d538183612f62565b8101031261063b575138610b10565b503d610d49565b508281813d8311610d91575b610d7f8183612f62565b8101031261063b57610ad79051610aca565b503d610d75565b6040513d86823e3d90fd5b503461024b57602036600319011261024b57600435610dc061393f565b61a8c081101580610e3a575b15610dd75760015580f35b60405162461bcd60e51b815260206004820152603560248201527f6368616c6c656e676520706572696f64206d757374206265206265747765656e60448201527420313220686f75727320616e642033207765656b7360581b6064820152608490fd5b50621baf80811115610dcc565b503461024b57602036600319011261024b57610e61613978565b6004358152606f60205260408120906004820191825492610e8a600160ff861661028d81613184565b60038201938454421115610fa15760ff191660021790556006546001820180549092916001600160a01b0316906000198101908111610f8d57825490823b15610f895790604486928360405195869485936334c9bca560e01b8552600485015260248401525af18015610d9857610f67575b50600080516020614d26833981519152600293948483549301549354905490610f4f60405192839263ffffffff60ff89169860081c168460409194939263ffffffff606083019616825260208201520152565b0390a46001600080516020614d468339815191525580f35b600293610f82600080516020614d2683398151915292612f34565b9350610efc565b8580fd5b634e487b7160e01b85526011600452602485fd5b60405162461bcd60e51b815260206004820152601960248201527f6368616c6c656e676520686173206e6f742065787069726564000000000000006044820152606490fd5b50604036600319011261024b576006546040516247a8e360e11b81526001600160a01b0390911690602081600481855afa80156115315783906115d2575b611033915060043511156136dc565b6110406004351515613728565b604051631614b30360e21b808252600480359083015290602081602481865afa908115610d985784916115a0575b5060405190630a2a343960e21b82526004820152604081602481865afa8015610d98576001600160401b03610b55916110b3938791611581575b505116855490613570565b6110c060025434146137f6565b60ff607254161561153c576040519081526004356004820152602081602481855afa9081156115315783916114fb575b5060405163392af9bf60e11b81526004803590820152918383602481845afa928315610d985784936114df575b506004356000198101116114cb57836024916040519283809263392af9bf60e11b82526000196004350160048301525afa908115610d985784916114b1575b50604051602081019083825260243560408201526040815261117d81612ee8565b5190209283855260716020526111a960ff600660408820015460a01c166111a381613184565b1561383b565b6001600160401b036020830151166024351180611498575b1561143a5760016004351480611418575b6113ad57604051916111e383612f19565b8383526024356020840181905260001981011161036f5760405161120681612f19565b848152600019602435016020820152916001600160401b0361122d816020850151166138b3565b166024351461137c575b505061124560015442613570565b6040519160e083018381106001600160401b038211176113685760019594936020989389899460069460405260043584528184019788526040840190815260608401928352816080850198338a52604060a08701998d8b5260c0880199818b5281526071845220955186555180518c870155015160028501555180516003850155015160048301555160058201550192858060a01b0390511683549251916112ec83613184565b6112f583613184565b60ff60a81b9051151560a81b169269ffffffffffffffffffff60b01b16179060ff60a01b9060a01b161717905561132d825442613570565b60405191825284820152827f89389219f04af163105506312f99d6ca034af96d3ee1128efc6a9619ee2aeec2604060243593a4604051908152f35b634e487b7160e01b88526041600452602488fd5b6001600160401b0391925060406020910151920151166040519161139f83612f19565b825260208201523880611237565b60405162461bcd60e51b815260206004820152603860248201527f43616e6e6f74206368616c6c656e676520746865206669727374204c3220686560448201527f6164657220696e207468652066697273742072626c6f636b00000000000000006064820152608490fd5b506001600160401b03611430816020850151166138b3565b16602435146111d2565b60405162461bcd60e51b815260206004820152603060248201527f4c3220686561646572206d7573742062652077697468696e207468652072626c60448201526f6f636b2062756e646c652072616e676560801b6064820152608490fd5b506001600160401b0360208201511660243511156111c1565b6114c591503d8086833e610c778183612f62565b3861115c565b634e487b7160e01b84526011600452602484fd5b6114f49193503d8086833e610c778183612f62565b913861111d565b90506020813d602011611529575b8161151660209383612f62565b810103126115255751386110f0565b8280fd5b3d9150611509565b6040513d85823e3d90fd5b60405162461bcd60e51b815260206004820152601f60248201527f4c3220686561646572206368616c6c656e67652069732064697361626c6564006044820152606490fd5b61159a915060403d604011610d3557610d278183612f62565b386110a8565b90506020813d6020116115ca575b816115bb60209383612f62565b8101031261036b57513861106e565b3d91506115ae565b506020813d6020116115fe575b816115ec60209383612f62565b81010312611525576110339051611024565b3d91506115df565b503461024b578060031936011261024b57604060075481519060ff60f81b8160f81b16825263ffffffff199060181b166020820152f35b503461024b578060031936011261024b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036116a85760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b60405163703e46dd60e11b8152600490fd5b503461024b57602036600319011261024b576116d4613978565b6004358152606f6020526040812081600482016117318154916116fd60ff8460081c161561357d565b60ff83169061170b82613184565b61010060028314948580156117a5575b6117249061321e565b61ff001916179055613184565b156117765780808061176194600260018060a01b0391015460281c16600254905af161175b6135d4565b50613649565b6001600080516020614d468339815191525580f35b6004546002546117a093508291829182916001600160a01b03165af161179a6135d4565b50613604565b611761565b506117af84613184565b6003841461171b565b50604036600319011261024b576117cd6131a4565b6024356001600160401b038111611525576117ec903690600401612fb5565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116308114908115611984575b506116a85761182f61393f565b8216916040516352d1902d60e01b8152602081600481875afa859181611950575b5061186e57604051634c9c8ce360e01b815260048101859052602490fd5b9284937f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc908181036119385750823b1561191f5780546001600160a01b0319168217905560405184917fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8380a28351156119035750808360206118ff95519101845af46118f96135d4565b91614a07565b5080f35b9250505034611910575080f35b63b398979f60e01b8152600490fd5b604051634c9c8ce360e01b815260048101839052602490fd5b60249060405190632a87526960e21b82526004820152fd5b9091506020813d60201161197c575b8161196c60209383612f62565b81010312610f8957519038611850565b3d915061195f565b9050817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416141538611822565b503461024b578060031936011261024b576020603c54604051908152f35b503461024b57602036600319011261024b576004358015158091036107e3576119f761393f565b60ff80196070541691161760705580f35b503461024b57604036600319011261024b57604051611a2681612f19565b6004356001600160f81b0319811681036115255781526024359063ffffffff19821682036115255760208101918252611a5d61393f565b5160f81c60075491610100600160e81b03905160181c169162ffffff60e81b16171760075580f35b503461024b578060031936011261024b576020600354604051908152f35b503461024b578060031936011261024b57602060ff607254166040519015158152f35b503461024b57602036600319011261024b57600435611ae361393f565b662386f26fc1000081101580611b62575b15611aff5760025580f35b60405162461bcd60e51b815260206004820152603560248201527f6368616c6c656e676520666565206d757374206265206265747765656e20302e60448201527418189032ba3432b91030b7321018981032ba3432b960591b6064820152608490fd5b50678ac7230489e80000811115611af4565b50606036600319011261024b57600435611b8c6131ba565b611b946131ca565b6006546040516247a8e360e11b815260209592916001600160a01b0316908681600481855afa8015610d98578490612047575b611bd491508611156136dc565b611bdf851515613728565b604051631614b30360e21b80825260048201879052936024919088828481875afa918215611fa6578192612018575b5060405191630a2a343960e21b835260048301526040828481875afa918215611fa6578192611ff7575b50611c53610b556001600160401b0380945116835490613570565b611c6060025434146137f6565b60ff6070541615611fb35760405195865287600487015288868481875afa958615611fa6578196611f77575b508281611c9a878a8a613695565b95868252606f8c52611cb960ff6004604085200154166111a381613184565b6040519283809263392af9bf60e11b82528d60048301525afa90811561036057906080918391611f5d575b500160ff815151981697881015611f21578962ffffff8082611d078c8651613538565b51015116928a63ffffffff8a16948510159384611ed1575b5050505015611e7a57611d3460015442613570565b926040519461010086019186831090831117611e68575089946001999897948c94600080516020614d2683398151915298946004946040528a84528684019189835260408501928d8452606086019283526040608087019233845260a08801968752606f60c089019b60018d5260e08a019b838d528352522095518655518e86015564ffffffff0060ff6002870194511684549351926001650100000000009060c81b03905160281b169366ffffffffffffff60c81b16179160081b161717905551600382015501915190611e0882613184565b611e1182613184565b60ff61ff0084549251151560081b1692169061ffff191617179055611e5d611e3a875442613570565b6040519384938460409194939263ffffffff606083019616825260208201520152565b0390a4604051908152f35b634e487b7160e01b8452604160045283fd5b60405162461bcd60e51b8152600481018b9052602a818601527f696e76616c696420736861726520696e6465783a206e6f7420696e20706f696e604482015269746572732072616e676560b01b6064820152608490fd5b839450818394611ef692611eeb60409561ffff9751613538565b510151169451613538565b5101511601818111611f0e5716811038808a8d611d1f565b634e487b7160e01b845260116004528584fd5b60405162461bcd60e51b8152600481018b9052601581860152740d2dcecc2d8d2c840e0ded2dce8cae440d2dcc8caf605b1b6044820152606490fd5b611f7191503d8085833e610c778183612f62565b38611ce4565b9095508881813d8311611f9f575b611f8f8183612f62565b81010312610f8957519438611c8c565b503d611f85565b50604051903d90823e3d90fd5b60405162461bcd60e51b8152600481018a9052601a818501527f4441206368616c6c656e676573206172652064697361626c65640000000000006044820152606490fd5b61201191925060403d604011610d3557610d278183612f62565b9038611c38565b9091508881813d8311612040575b6120308183612f62565b810103126107e357519038611c0e565b503d612026565b508681813d831161206f575b61205d8183612f62565b8101031261036b57611bd49051611bc7565b503d612053565b503461024b578060031936011261024b57602060ff603b54166040519015158152f35b503461024b578060031936011261024b576020600254604051908152f35b503461024b57606036600319011261024b5760206107a36120d66131ba565b6120de6131ca565b90600435613695565b503461024b57602036600319011261024b57612101613978565b600435815260716020526006604082200181600260ff8354612128828260a81c161561357d565b61214b828260a01c1661213a81613184565b84811490811561218c575b5061321e565b60a882901b1916600160a81b1780855560a01c1661216881613184565b03611776578080806117619460018060a01b03905416600254905af161175b6135d4565b6003915061219981613184565b1438612145565b503461024b57602036600319011261024b576121ba6131a4565b6121c261393f565b6001600160a01b031680156121e7576001600160601b0360a01b600454161760045580f35b60405162461bcd60e51b815260206004820152602360248201527f646566656e6465722063616e6e6f7420626520746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b503461024b57602036600319011261024b576040610100916004358152606f6020522060ff81549160018101546002820154916004600382015491015492848416926040519687526020870152848116604087015263ffffffff8160081c16606087015260018060a01b039060281c16608086015260a08501526122bb81613184565b60c084015260081c16151560e0820152f35b503461024b576003196040368201126107e357602435906001600160401b0382116115255760e0818336030112611525576040519160c083018381106001600160401b0382111761293a5760405280600401356001600160401b03811161035c5781013660238201121561035c5760048101359061234a82612f83565b916123586040519384612f62565b80835260051b81016024016020830136821161288d5760248301905b82821061290b5750505050835260248101356001600160401b03811161035c5781013660238201121561035c5760048101356123af81612f83565b916123bd6040519384612f62565b8183526024602084019260051b8201019036821161288d5760248101925b828410612891575050505060208401526123f83660448301612ffc565b604084015260848101356001600160401b03811161035c576124209060043691840101613047565b606084015260a48101356001600160401b03811161035c5781013660238201121561035c5760048101359061245482612f83565b916124626040519384612f62565b80835260051b81016024016020830136821161288d5760248301905b82821061285a5750505050608084015260c4810135906001600160401b03821161035c570160808136039283011261036b5760408051926124be84612ee8565b60048301358452602319011261036b576040516124da81612f19565b602482013581526044820135602082015260208301526064810135906001600160401b03821161035c57600461251392369201016130e8565b604082015260a0820152612525613978565b6004358252606f6020526040822060018060a01b0360065416906024846001830154936040519283809263392af9bf60e11b82528760048301525afa908115610cbf578591612840575b50608060048301549161258a600160ff851661028d81613184565b0151936001600160401b036125a860028501549660ff881690613538565b515116602060a0830151015151036127fb5760408101516126086125fa604051926125d284612f19565b60075460f881901b6001600160f81b031916855260181b63ffffffff19166020850152613fee565b9162ffffff19918291613fee565b169116036127c25760085460a082015160209081015101516126349183906001600160a01b03166139a8565b50156127655761265061264a6080830151613515565b51613d8d565b5090602061266f608061266583850151613515565b5151930151613515565b51015191828102928184041490151715612751579061268d91613570565b9263ffffffff8560081c168094036126ee57600394610f4f60ff9287600080516020614d26833981519152958519161760048701558786549601549060405194859416978460409194939263ffffffff606083019616825260208201520152565b60405162461bcd60e51b815260206004820152603560248201527f70726f6f66206d7573742062652070726f766964656420666f722074686520636044820152740d0c2d8d8cadccecac840e6d0c2e4ca40d2dcc8caf605b1b6064820152608490fd5b634e487b7160e01b87526011600452602487fd5b60405162461bcd60e51b815260206004820152602f60248201527f6661696c656420746f207665726966792073686172657320746f20646174612060448201526e1c9bdbdd081d1d5c1b19481c9bdbdd608a1b6064820152608490fd5b60405162461bcd60e51b8152602060048201526011602482015270696e76616c6964206e616d65737061636560781b6044820152606490fd5b60405162461bcd60e51b815260206004820152601760248201527f696e76616c69642063656c6573746961206865696768740000000000000000006044820152606490fd5b61285491503d8087833e610c778183612f62565b3861256f565b81356001600160401b0381116128895760209161287e8392602436918901016130e8565b81520191019061247e565b8980fd5b8780fd5b83356001600160401b0381116128895782016060602319823603011261288957604051916128be83612ee8565b60248201358352604482013560208401526064820135926001600160401b038411612907576128f7602094936024869536920101613047565b60408201528152019301926123db565b8b80fd5b81356001600160401b0381116128895760209161292f839260243691890101612fb5565b815201910190612374565b634e487b7160e01b85526041600452602485fd5b503461024b57606036600319011261024b57602490604480359060043590843590612977613978565b82855260209060718252604086209060068201908154906129a3600160ff8460a01c1661028d81613184565b60018060a01b0360055416604051968b8789637afdc39160e01b9283825284600483015281865afa988915612d2a578c99612e16575b506001870154809903612dc157604051908152600481018b905287818e81865afa908115612d2a578c91612d94575b50600387015403612d355760405163172c2b0f60e31b8082526004820192909252908b828e81865afa918215612d2a578d8d928d928495612d0e575b506040519586938492835260048301525afa918215612d03578b92612cdf575b50610100998a8201519a6002880154809c03612c9c57830151600488015403612c4b57815103612bf257610160809101908151920191825111612bae5751421115612b61574290511015612b0f575060ff60a01b1916600360a01b17905560050154604080519384529183015260039392917f89389219f04af163105506312f99d6ca034af96d3ee1128efc6a9619ee2aeec29190a46001600080516020614d468339815191525580f35b847f70726576696f7573206865616465722074696d657374616d702069732074686560849260278d6040519462461bcd60e51b86526004860152840152820152662066757475726560c81b6064820152fd5b60405162461bcd60e51b8152600481018790526021818d01527f6865616465722074696d657374616d7020697320696e2074686520667574757281840152606560f81b6064820152608490fd5b5060405162461bcd60e51b815260048101879052601c818d01527f6865616465722074696d657374616d7020697320746f6f206c6174650000000081840152606490fd5b5060405162461bcd60e51b815260048101879052602c818d01527f68656164657220646f6573206e6f7420706f696e7420746f2074686520707265818401526b3b34b7bab9903432b0b232b960a11b6064820152608490fd5b60405162461bcd60e51b8152600481018990526025818f01527f70726576696f757320686561646572206e756d62657220646f6573206e6f742081860152640dac2e8c6d60db1b6064820152608490fd5b6064898f87601c7f686561646572206e756d62657220646f6573206e6f74206d6174636800000000926040519462461bcd60e51b86526004860152840152820152fd5b612cfc9192503d808d833e612cf48183612f62565b8101906132d1565b9038612a64565b6040513d8d823e3d90fd5b612d239195503d8086833e612cf48183612f62565b9338612a44565b6040513d8e823e3d90fd5b5060405162461bcd60e51b8152600481018790526032818d01527f70726576696f7573206c3220686561646572206e6f74206c6f6164656420666f8184015271722074686520676976656e2072626c6f636b60701b6064820152608490fd5b90508781813d8311612dba575b612dab8183612f62565b81010312612907575138612a08565b503d612da1565b60405162461bcd60e51b8152600481018990526029818f01527f6c3220686561646572206e6f74206c6f6164656420666f7220746865206769768186015268656e2072626c6f636b60b81b6064820152608490fd5b9098508781813d8311612e3e575b612e2e8183612f62565b81010312612907575197386129d9565b503d612e24565b503461024b57602036600319011261024b57600435612e6261393f565b61a8c081101580612edb575b15612e7857815580f35b60405162461bcd60e51b815260206004820152603560248201527f6368616c6c656e67652077696e646f77206d757374206265206265747765656e60448201527420313220686f75727320616e642033207765656b7360581b6064820152608490fd5b50621baf80811115612e6e565b606081019081106001600160401b03821117612f0357604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117612f0357604052565b6001600160401b038111612f0357604052565b608081019081106001600160401b03821117612f0357604052565b90601f801991011681019081106001600160401b03821117612f0357604052565b6001600160401b038111612f035760051b60200190565b6001600160401b038111612f0357601f01601f191660200190565b81601f8201121561063b57803590612fcc82612f9a565b92612fda6040519485612f62565b8284526020838301011161063b57816000926020809301838601378301015290565b919082604091031261063b5760405161301481612f19565b9182908035906001600160f81b03198216820361063b57908252602001359063ffffffff198216820361063b5760200152565b81601f8201121561063b57803590602061306083612f83565b936040906130716040519687612f62565b8486526020860191602060a08097028601019482861161063b57602001925b8584106130a1575050505050505090565b868484031261063b5784879183516130b881612ee8565b6130c28688612ffc565b81526130d086868901612ffc565b83820152608087013585820152815201930192613090565b91909160608184031261063b576040519061310282612ee8565b819381356001600160401b03811161063b57820181601f8201121561063b57602091813561312f81612f83565b9261313d6040519485612f62565b818452848085019260051b82010192831161063b578401905b8282106131755750505083528082013590830152604090810135910152565b81358152908401908401613156565b6004111561318e57565b634e487b7160e01b600052602160045260246000fd5b600435906001600160a01b038216820361063b57565b6024359060ff8216820361063b57565b6044359063ffffffff8216820361063b57565b906040516131ea81612f19565b602060018294805484520154910152565b60005b83811061320e5750506000910152565b81810151838201526020016131fe565b1561322557565b60405162461bcd60e51b815260206004820152602560248201527f6368616c6c656e6765206973206e6f7420696e2074686520636f727265637420604482015264737461746560d81b6064820152608490fd5b51906001600160a01b038216820361063b57565b81601f8201121561063b5780516132a281612f9a565b926132b06040519485612f62565b8184526020828401011161063b576132ce91602080850191016131fb565b90565b9060208282031261063b5781516001600160401b039283821161063b5701906101e092838383031261063b5760405193840184811082821117612f0357604052825184526020830151602085015261332b60408401613278565b6040850152606083015160608501526080830151608085015260a083015160a085015260c083015181811161063b578261336691850161328c565b60c085015260e083015160e08501526101008084015190850152610120808401519085015261014080840151908501526101608084015190850152610180918284015191821161063b576133bb91840161328c565b908301526101a080820151908301526101c0809101519082015290565b51906001600160401b038216820361063b57565b906020808383031261063b5782516001600160401b039384821161063b57019060a08284031261063b5760409081519460a0860186811082821117612f03578352613436846133d8565b86526134438285016133d8565b82870152828401518387015260609360608101516060880152608081015191821161063b57019184601f8401121561063b5782519061348182612f83565b9561348e82519788612f62565b82875283606081890194028601019481861161063b578401925b8584106134be5750505050505050608082015290565b868483031261063b578251906134d382612ee8565b6134dc856133d8565b82528585015162ffffff8116810361063b5786830152838501519061ffff8216820361063b57828792868b9501528152019301926134a8565b8051156135225760200190565b634e487b7160e01b600052603260045260246000fd5b80518210156135225760209160051b010190565b600101908160011161355a57565b634e487b7160e01b600052601160045260246000fd5b9190820180921161355a57565b1561358457565b60405162461bcd60e51b815260206004820152602260248201527f6368616c6c656e67652068617320616c7265616479206265656e20636c61696d604482015261195960f21b6064820152608490fd5b3d156135ff573d906135e582612f9a565b916135f36040519384612f62565b82523d6000602084013e565b606090565b1561360b57565b60405162461bcd60e51b81526020600482015260166024820152753330b4b632b2103a37903830bc903232b332b73232b960511b6044820152606490fd5b1561365057565b60405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f20706179206368616c6c656e67657200000000000000006044820152606490fd5b604080516020810192835260f89390931b6001600160f81b0319169083015260e09290921b6001600160e01b0319166041820152602581526136d681612ee8565b51902090565b156136e357565b60405162461bcd60e51b815260206004820152601a60248201527f626c6f636b206e6f7420696e2074686520636861696e207965740000000000006044820152606490fd5b1561372f57565b60405162461bcd60e51b815260206004820152601e60248201527f63616e6e6f74206368616c6c656e67652067656e6573697320626c6f636b00006044820152606490fd5b9081604091031261063b576137a260206040519261379184612f19565b61379a816133d8565b845201613278565b602082015290565b156137b157565b60405162461bcd60e51b815260206004820152601d60248201527f626c6f636b20697320746f6f206f6c6420746f206368616c6c656e67650000006044820152606490fd5b156137fd57565b60405162461bcd60e51b815260206004820152601660248201527518da185b1b195b99d948199959481b9bdd081c185a5960521b6044820152606490fd5b1561384257565b60405162461bcd60e51b815260206004820152601860248201527f6368616c6c656e676520616c72656164792065786973747300000000000000006044820152606490fd5b9061010091820391821161355a57565b60001981019190821161355a57565b9190820391821161355a57565b9060016001600160401b038093160191821161355a57565b6001600160a01b0390811690811561392657600080516020614ce683398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b604051631e4fbdf760e01b815260006004820152602490fd5b600080516020614ce6833981519152546001600160a01b0316330361396057565b60405163118cdaa760e01b8152336004820152602490fd5b600080516020614d4683398151915260028154146139965760029055565b604051633ee5aeb560e01b8152600490fd5b916139c5919392606085015160808601519060a087015192614057565b9015613d86575060208201515160608301515103613d7d576000805b60208401518051831015613a2b57600191613a1d6020613a0486613a2395613538565b510151613a158660208a0151613538565b5151906138a6565b90613570565b9101906139e1565b50905091909181515103613d7457600090815b60208201518051841015613d68576020613a5b85613a6c93613538565b510151613a15856020860151613538565b93613a83835183613a7d8882613570565b91614223565b600b81949294101561318e5780613d5b5750613aa3856060860151613538565b5190613ab3866020870151613538565b5191604086015197613ac58651614333565b9660005b8751811015613b9e5760206000613b488d613af7613ae7868e613538565b5191613af16142ee565b50613fee565b90613b37604051918683019386855262ffffff1916602184015282603e91613b27815180928b86860191016131fb565b810103601e810184520182612f62565b6040519283928392519283916131fb565b8101039060025afa15613b925760019060005160405190613b6882612ee8565b8d82528d60208301526040820152613b80828c613538565b52613b8b818b613538565b5001613ac9565b6040513d6000823e3d90fd5b5096955092969190939750600094613bba604089015151614333565b95805b89518082141580613d4d575b15613c16578a82613bee856040613be6613c0a96613c10986146e2565b940151613538565b51613bf9868d613538565b52613c04858c613538565b50613570565b9161445e565b90613bbd565b5050509294509290969495613c2e602082015161474b565b60019381851b918083046002149015171561355a5760008083613c61938880969210613d45575b9082869594928861477c565b5050939093925b613d0a575b5050509081613c919251613c82835191613fee565b9062ffffff1980958192613fee565b169116149283613cde575b5082613ccb575b505015613cc15750600191613cb791613570565b9301919092613a3e565b6000955093505050565b6040919250810151910151143880613ca3565b90925060208301519080613cff613cf9602086015194613fee565b93613fee565b169116149138613c9c565b90919260408201518051851015613d3b578391613d2a86613d3193613538565b5190614889565b9301919081613c68565b5092829150613c6d565b859150613c55565b5060408b0151518310613bc9565b9550509250505060009190565b50505050600190600090565b50600090600790565b60009150600590565b6000925090565b6040015160038116613da25760021c90600090565b50600090600890565b80516006546001600160a01b0316939192916001600160401b0391821690600019810190811161355a57604080519663392af9bf60e11b938489528360048a01526000988981602481865afa908115613fe4578a929188918491613fca575b5051161015613fad57506020928388018681511684518781528360048201528b81602481885afa908115613f6857899188918e8092613f92575b50500151161015613f7257888401518451631614b30360e21b815260048101849052908682602481885afa918215613f6857908c949392918592613f32575b5003613f11578760249151169685519485938492835260048301525afa918215613f085750908492918891613eee575b500151169003818111610f8d5781603c54911611613ed45750505050600190565b6003925116600080516020614d068339815191528480a490565b613f0291503d808a833e610c778183612f62565b38613eb3565b513d89823e3d90fd5b505050505050506002925116600080516020614d068339815191528480a490565b888092949596508193503d8311613f61575b613f4e8183612f62565b8101031261290757518b93929138613e83565b503d613f44565b86513d8e823e3d90fd5b5050505050506001925116600080516020614d068339815191528480a490565b613fa692503d8091833e610c778183612f62565b388e613e44565b9693505050505116600080516020614d068339815191528380a490565b613fde91503d8086833e610c778183612f62565b38613e0a565b84513d8c823e3d90fd5b80516020918201516040516001600160f81b031990921692820192835263ffffffff19166021820152601d815261402481612f19565b51905162ffffff19918282169190601d8110614042575b5050905090565b83919250601d0360031b1b161680388061403b565b9192939093805192602080948184015192604080950151838651958694631f3302a960e01b865260048601528051602486015201516044840152608060648401528560e484019180519260606084870152835180915286610104870194019060005b818110614207575050508581015160a4860152015160c48401528290039082906001600160a01b03165afa9081156141fc576000916141c6575b50156141b95783518551036141ac5760005b845181101561419e5761418361412561411e8389613538565b5151613fee565b61413b86614133858b613538565b510151613fee565b9084614147858b613538565b5101519085519262ffffff198092168985015216603d830152605a9081830152815261417281612f47565b61417c8388613538565b5185614383565b1561419057600101614105565b505050505050600090600290565b505050505050600190600090565b5050505050600090600690565b5050505050600090600490565b8481813d83116141f5575b6141db8183612f62565b810103126107e3575190811515820361024b5750386140f3565b503d6141d1565b82513d6000823e3d90fd5b825186528c988a9850958601958b9550909201916001016140b9565b91908181116142e65782518082119081156142dc575b506142d45761424881836138a6565b9261425284612f83565b936142606040519586612f62565b80855261426f601f1991612f83565b0160005b8181106142c3575050815b83811061428f575050505090600090565b806142bc61429f60019385613538565b516142aa86846138a6565b906142b5828a613538565b5287613538565b500161427e565b806060602080938901015201614273565b505090600a90565b9050821138614239565b505090600990565b604051906142fb82612ee8565b6000604083815161430b81612f19565b8381528360208201528152815161432181612f19565b83815283602082015260208201520152565b9061433d82612f83565b61434a6040519182612f62565b828152809261435b601f1991612f83565b019060005b82811061436c57505050565b6020906143776142ee565b82828501015201614360565b604082018051929391926001811161443f5750835151614436575b602084019182518251111561442c5760006143e7602092604051613b37602182878101948786526143d7815180928b86860191016131fb565b8101036001810184520182612f62565b8101039060025afa15613b9257600051935191825115614415579061441193949151905190614557565b1490565b5051600114159050614425571490565b5050600090565b5050505050600090565b50505050600090565b6144508551519160208701516144ae565b1461439e5750505050600090565b600019811461355a5760010190565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c161561449c57565b604051631afcd79f60e31b8152600490fd5b909160005b60018481831b10156144df578101809111156144b357634e487b7160e01b600052601160045260246000fd5b509291909261010090810390811161355a576144fa90613887565b91600161450684613897565b1b9161451183613897565b811161451d5750505090565b919250906001830361453157505050600190565b8261454261454e94614548936138a6565b926138a6565b906144ae565b6132ce9061354c565b909182156146815760018314614630578351156145eb576145778361474b565b61458a6145848651613897565b86614a6a565b928181106145c757816145426145aa96936145a4936138a6565b90614557565b6145c1826145bb6132ce9451613897565b90613538565b51614b2e565b6145d19450614557565b906145e46132ce92916145bb8151613897565b5190614b2e565b60405162461bcd60e51b815260206004820181905260248201527f6578706563746564206174206c65617374206f6e6520696e6e657220686173686044820152606490fd5b929150505161463c5790565b60405162461bcd60e51b815260206004820152601760248201527f756e657870656374656420696e6e6572206861736865730000000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152603360248201527f63616e6e6f742063616c6c20636f6d70757465526f6f744861736820776974686044820152722030206e756d626572206f66206c656176657360681b6064820152608490fd5b90918160005b83151580614740575b15614709576146ff9061445e565b9260011c926146e8565b92506147199061471e92946138a6565b614b70565b60001981019190821161355a5781600192821161473a57501b90565b90501b90565b5083600116156146f1565b6001811061063b5761475c81614b70565b600019810190811161355a576001901b9081146147765790565b60011c90565b93959492909261478a6142ee565b50600161479784846138a6565b146148445784518211801590614836575b61481a576147d5906147c26147bd85856138a6565b61474b565b976147cd8986613570565b85878961477c565b5091976147f096929591946147ea9190613570565b9161477c565b9194909392909115156001146148115761480991614889565b929190600090565b50929190600090565b93604091935061482e959692500151614bb0565b929391929091565b5060208501518310156147a8565b939495918086949294511115908161487b575b5061486a5750604061482e940151614bb0565b805161482e95509193919250614b91565b905060208601511138614857565b906148926142ee565b506148a08251825190614bc6565b916000916040918251936148b385612f19565b8085526020809501526148e181516148d26148cc614c06565b91613fee565b9062ffffff1980938192613fee565b169116146000146149c3576148f4614c06565b925b6149008351613fee565b918561490e88860151613fee565b940151918161491d8251613fee565b8861492a8b850151613fee565b93015194828a5198818d8b0199600160f81b8b521660218b015216603e890152605b88015216607b86015216609884015260b583015260b5825260e082018281106001600160401b03821117612f035785928161499060009482895283519283916131fb565b8101039060025afa156149b857600051928251946149ad86612ee8565b855284015282015290565b50513d6000823e3d90fd5b825181806149db613cf96149d5614c06565b94613fee565b169116146000146149f05784820151926148f6565b614a01858301518685015190614c40565b926148f6565b90614a2e5750805115614a1c57805190602001fd5b604051630a12f52160e11b8152600490fd5b81511580614a61575b614a3f575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b15614a37565b919082518111614ad157614a7d81612f83565b90614a8b6040519283612f62565b808252601f19614a9a82612f83565b0136602084013760005b818110614ab2575090925050565b80614abf60019287613538565b51614aca8286613538565b5201614aa4565b60405162461bcd60e51b815260206004820152602f60248201527f496e76616c69642072616e67653a205f626567696e206f72205f656e6420617260448201526e65206f7574206f6620626f756e647360881b6064820152608490fd5b614b5d6000916020936040519085820192600160f81b84526021830152604182015260418152613b3781612f47565b8101039060025afa15613b925760005190565b806000915b614b7d575090565b90614b879061445e565b9060011c80614b75565b90614ba89291949394614ba26142ee565b50614c7b565b919392909190565b90614bbe9291614ba26142ee565b919390929190565b9060006020604051614bd781612f19565b8281520152614be582613fee565b62ffffff1980614bf484613fee565b1691161015614c01575090565b905090565b60006020604051614c1681612f19565b8281520152604051614c2781612f19565b6001600160f81b0319815263ffffffff19602082015290565b9060006020604051614c5181612f19565b8281520152614c5f82613fee565b62ffffff1980614c6e84613fee565b1691161115614c01575090565b90809392614c876142ee565b508251908115918215614cda575b508115614ccf575b50614cbe57614cab91613538565b516001830180931161355a579190600090565b5050614cc86142ee565b9190600190565b905081101538614c9d565b831015915038614c9556fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300ea46f8ad2711844c28d6aa0fe8ed10b1ac38bdcdc6df7ba3b8f3bfc35232f31b6c1c38434bf7781d35ea9020730ba834cfde2300c18c12141e82e3662d6c45669b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a164736f6c6343000816000a",
        "sourceMap": "881:590:7:-:0;;;;;;;1171:4:83;1163:13;;881:590:7;;;;;;1163:13:83;881:590:7;;;;;;;;;;;;;;",
        "linkReferences": {}
    },
    "deployedBytecode": {
        "object": "0x6080604052600436101561001257600080fd5b6000803560e01c806301c1aa0d14612e455780630200501d1461294e5780630eea9bab146122cd578063113e70fb14612238578063163a7177146121a057806317eef5b1146120e75780631b0ec391146120b75780631bd8f9ca14612099578063325898b1146120765780633323d3e414611b7457806335bf82f614611ac657806339e87c2214611aa35780633ea0c15e14611a855780634329b10114611a08578063485bc239146119d05780634c1b6e4b146119b25780634f1ef286146117b857806351ad15cf146116ba57806352d1902d1461163d57806355c20747146116065780635ae45d8b14610fe65780635bba0ea914610e475780635d475fdd14610da35780635dade41214610a855780636da802c8146109df578063715018a6146109745780637d3020ad146108be5780637f4c91c51461089557806380a2558a14610872578063861a1412146108555780638da5cb5b1461081f57806395618a28146107e7578063988c6671146107ab57806398e2dffb14610781578063a3be6534146106e9578063ad3cb1cc1461068c578063bc67745114610669578063bfcf449514610640578063c0c53b8b14610465578063c763e5a11461043c578063ee223c0214610413578063f2fde38b146103e6578063f3f480d9146103c8578063f8a22c6c1461024e5763fa8e8de21461020c57600080fd5b3461024b57604036600319011261024b57602060405181810190600435825260243560408201526040815261024081612ee8565b519020604051908152f35b80fd5b503461024b57602036600319011261024b57600435808252607160205260408220906006820190815491610293600160ff8560a01c1661028d81613184565b1461321e565b600584019283544211156103835760ff60a01b1916600160a11b1790556006548354600019810193916001600160a01b031690841161036f57859060018601948554823b1561036b57604484928360405195869485936334c9bca560e01b8552600485015260248401525af1801561036057610348575b505060407f89389219f04af163105506312f99d6ca034af96d3ee1128efc6a9619ee2aeec2916002809601549454905482519182526020820152a480f35b61035190612f34565b61035c57843861030a565b8480fd5b6040513d84823e3d90fd5b8380fd5b634e487b7160e01b86526011600452602486fd5b60405162461bcd60e51b815260206004820152601e60248201527f6368616c6c656e676520706572696f6420686173206e6f7420656e64656400006044820152606490fd5b503461024b578060031936011261024b576020600154604051908152f35b503461024b57602036600319011261024b576104106104036131a4565b61040b61393f565b6138cb565b80f35b503461024b578060031936011261024b576008546040516001600160a01b039091168152602090f35b503461024b578060031936011261024b576006546040516001600160a01b039091168152602090f35b503461024b57606036600319011261024b5761047f6131a4565b6001600160a01b03602435818116929083900361063b576044359082821680920361063b577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009384549360ff8560401c1615946001600160401b03811680159081610633575b6001149081610629575b159081610620575b5061060e5767ffffffffffffffff1981166001178755856105ef575b5061051c61446d565b61052461446d565b61052c61446d565b610535336138cb565b61053d61446d565b61054561446d565b6001600080516020614d46833981519152556203f48087556202a3006001556714d1120d7b1600006002556702c68af0bb1400006003556001600160601b0360a01b9216826006541617600655816008541617600855600554161760055561a410603c556105b1575080f35b68ff00000000000000001981541690557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a180f35b68ffffffffffffffffff19166801000000000000000117865538610513565b60405163f92ee8a960e01b8152600490fd5b905015386104f7565b303b1591506104ef565b8791506104e5565b600080fd5b503461024b578060031936011261024b576005546040516001600160a01b039091168152602090f35b503461024b57602036600319011261024b5761068361393f565b600435603c5580f35b503461024b578060031936011261024b576106db604080516106ad81612f19565b6005815260208101640352e302e360dc1b8152825193849260208452518092816020860152858501906131fb565b601f01601f19168101030190f35b503461024b57602036600319011261024b576107036131a4565b61070b61393f565b6001600160a01b03168015610730576001600160601b0360a01b600854161760085580f35b60405162461bcd60e51b815260206004820152602360248201527f64614f7261636c652063616e6e6f7420626520746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b503461024b578060031936011261024b576107a3602091600154905490613570565b604051908152f35b503461024b57602036600319011261024b576004358015158091036107e3576107d261393f565b60ff8019603b5416911617603b5580f35b5080fd5b503461024b57602036600319011261024b576004358015158091036107e35761080e61393f565b60ff80196072541691161760725580f35b503461024b578060031936011261024b57600080516020614ce6833981519152546040516001600160a01b039091168152602090f35b503461024b578060031936011261024b5760209054604051908152f35b503461024b578060031936011261024b57602060ff607054166040519015158152f35b503461024b578060031936011261024b576004546040516001600160a01b039091168152602090f35b503461024b57602036600319011261024b576004356108db61393f565b662386f26fc1000081101580610962575b156108f75760035580f35b60405162461bcd60e51b815260206004820152603860248201527f6368616c6c656e676520726577617264206d757374206265206265747765656e60448201527f20302e303120657468657220616e6420313020657468657200000000000000006064820152608490fd5b50678ac7230489e800008111156108ec565b503461024b578060031936011261024b5761098d61393f565b600080516020614ce683398151915280546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b503461024b57602036600319011261024b57604061012091600435815260716020522060ff815491610a13600182016131dd565b610a1f600383016131dd565b916020600660058301549201549381868660a01c16946040519889528051828a015201516040880152805160608801520151608086015260a085015260018060a01b03821660c0850152610a7281613184565b60e084015260a81c161515610100820152f35b503461024b576020908160031936011261024b576004359160018060a01b0360065416926040516247a8e360e11b81528281600481885afa8015610d98578490610d69575b610ad791508211156136dc565b610ae2811515613728565b60405193631614b30360e21b9283865282600487015260249581818881865afa908115610c85578691610d3c575b5060405190630a2a343960e21b825260048201526040818881865afa908115610c85576001600160401b03610b5d92610b55928991610d0d575b505116875490613570565b4211156137aa565b60ff603b541615610cca5760405193845282600485015280848781855afa938415610cbf578594610c90575b5060405163392af9bf60e11b81526004810184905285818881865afa908115610c855785610bc09286928991610c63575b50613dab565b610c2e57506000198201918211610c1a57938484953b1561035c5784928360449260405196879586946334c9bca560e01b865260048601528401525af1801561036057610c0a5750f35b610c1390612f34565b61024b5780f35b5050634e487b7160e01b8252506011600452fd5b606490600f876040519262461bcd60e51b845260048401528201526e1a195859195c881a5cc81d985b1a59608a1b6044820152fd5b610c7f91503d808b833e610c778183612f62565b8101906133ec565b38610bba565b6040513d88823e3d90fd5b9080945081813d8311610cb8575b610ca88183612f62565b8101031261063b57519238610b89565b503d610c9e565b6040513d87823e3d90fd5b606490601c876040519262461bcd60e51b845260048401528201527f686561646572206368616c6c656e67652069732064697361626c6564000000006044820152fd5b610d2f915060403d604011610d35575b610d278183612f62565b810190613774565b38610b4a565b503d610d1d565b90508181813d8311610d62575b610d538183612f62565b8101031261063b575138610b10565b503d610d49565b508281813d8311610d91575b610d7f8183612f62565b8101031261063b57610ad79051610aca565b503d610d75565b6040513d86823e3d90fd5b503461024b57602036600319011261024b57600435610dc061393f565b61a8c081101580610e3a575b15610dd75760015580f35b60405162461bcd60e51b815260206004820152603560248201527f6368616c6c656e676520706572696f64206d757374206265206265747765656e60448201527420313220686f75727320616e642033207765656b7360581b6064820152608490fd5b50621baf80811115610dcc565b503461024b57602036600319011261024b57610e61613978565b6004358152606f60205260408120906004820191825492610e8a600160ff861661028d81613184565b60038201938454421115610fa15760ff191660021790556006546001820180549092916001600160a01b0316906000198101908111610f8d57825490823b15610f895790604486928360405195869485936334c9bca560e01b8552600485015260248401525af18015610d9857610f67575b50600080516020614d26833981519152600293948483549301549354905490610f4f60405192839263ffffffff60ff89169860081c168460409194939263ffffffff606083019616825260208201520152565b0390a46001600080516020614d468339815191525580f35b600293610f82600080516020614d2683398151915292612f34565b9350610efc565b8580fd5b634e487b7160e01b85526011600452602485fd5b60405162461bcd60e51b815260206004820152601960248201527f6368616c6c656e676520686173206e6f742065787069726564000000000000006044820152606490fd5b50604036600319011261024b576006546040516247a8e360e11b81526001600160a01b0390911690602081600481855afa80156115315783906115d2575b611033915060043511156136dc565b6110406004351515613728565b604051631614b30360e21b808252600480359083015290602081602481865afa908115610d985784916115a0575b5060405190630a2a343960e21b82526004820152604081602481865afa8015610d98576001600160401b03610b55916110b3938791611581575b505116855490613570565b6110c060025434146137f6565b60ff607254161561153c576040519081526004356004820152602081602481855afa9081156115315783916114fb575b5060405163392af9bf60e11b81526004803590820152918383602481845afa928315610d985784936114df575b506004356000198101116114cb57836024916040519283809263392af9bf60e11b82526000196004350160048301525afa908115610d985784916114b1575b50604051602081019083825260243560408201526040815261117d81612ee8565b5190209283855260716020526111a960ff600660408820015460a01c166111a381613184565b1561383b565b6001600160401b036020830151166024351180611498575b1561143a5760016004351480611418575b6113ad57604051916111e383612f19565b8383526024356020840181905260001981011161036f5760405161120681612f19565b848152600019602435016020820152916001600160401b0361122d816020850151166138b3565b166024351461137c575b505061124560015442613570565b6040519160e083018381106001600160401b038211176113685760019594936020989389899460069460405260043584528184019788526040840190815260608401928352816080850198338a52604060a08701998d8b5260c0880199818b5281526071845220955186555180518c870155015160028501555180516003850155015160048301555160058201550192858060a01b0390511683549251916112ec83613184565b6112f583613184565b60ff60a81b9051151560a81b169269ffffffffffffffffffff60b01b16179060ff60a01b9060a01b161717905561132d825442613570565b60405191825284820152827f89389219f04af163105506312f99d6ca034af96d3ee1128efc6a9619ee2aeec2604060243593a4604051908152f35b634e487b7160e01b88526041600452602488fd5b6001600160401b0391925060406020910151920151166040519161139f83612f19565b825260208201523880611237565b60405162461bcd60e51b815260206004820152603860248201527f43616e6e6f74206368616c6c656e676520746865206669727374204c3220686560448201527f6164657220696e207468652066697273742072626c6f636b00000000000000006064820152608490fd5b506001600160401b03611430816020850151166138b3565b16602435146111d2565b60405162461bcd60e51b815260206004820152603060248201527f4c3220686561646572206d7573742062652077697468696e207468652072626c60448201526f6f636b2062756e646c652072616e676560801b6064820152608490fd5b506001600160401b0360208201511660243511156111c1565b6114c591503d8086833e610c778183612f62565b3861115c565b634e487b7160e01b84526011600452602484fd5b6114f49193503d8086833e610c778183612f62565b913861111d565b90506020813d602011611529575b8161151660209383612f62565b810103126115255751386110f0565b8280fd5b3d9150611509565b6040513d85823e3d90fd5b60405162461bcd60e51b815260206004820152601f60248201527f4c3220686561646572206368616c6c656e67652069732064697361626c6564006044820152606490fd5b61159a915060403d604011610d3557610d278183612f62565b386110a8565b90506020813d6020116115ca575b816115bb60209383612f62565b8101031261036b57513861106e565b3d91506115ae565b506020813d6020116115fe575b816115ec60209383612f62565b81010312611525576110339051611024565b3d91506115df565b503461024b578060031936011261024b57604060075481519060ff60f81b8160f81b16825263ffffffff199060181b166020820152f35b503461024b578060031936011261024b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036116a85760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b60405163703e46dd60e11b8152600490fd5b503461024b57602036600319011261024b576116d4613978565b6004358152606f6020526040812081600482016117318154916116fd60ff8460081c161561357d565b60ff83169061170b82613184565b61010060028314948580156117a5575b6117249061321e565b61ff001916179055613184565b156117765780808061176194600260018060a01b0391015460281c16600254905af161175b6135d4565b50613649565b6001600080516020614d468339815191525580f35b6004546002546117a093508291829182916001600160a01b03165af161179a6135d4565b50613604565b611761565b506117af84613184565b6003841461171b565b50604036600319011261024b576117cd6131a4565b6024356001600160401b038111611525576117ec903690600401612fb5565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116308114908115611984575b506116a85761182f61393f565b8216916040516352d1902d60e01b8152602081600481875afa859181611950575b5061186e57604051634c9c8ce360e01b815260048101859052602490fd5b9284937f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc908181036119385750823b1561191f5780546001600160a01b0319168217905560405184917fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8380a28351156119035750808360206118ff95519101845af46118f96135d4565b91614a07565b5080f35b9250505034611910575080f35b63b398979f60e01b8152600490fd5b604051634c9c8ce360e01b815260048101839052602490fd5b60249060405190632a87526960e21b82526004820152fd5b9091506020813d60201161197c575b8161196c60209383612f62565b81010312610f8957519038611850565b3d915061195f565b9050817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416141538611822565b503461024b578060031936011261024b576020603c54604051908152f35b503461024b57602036600319011261024b576004358015158091036107e3576119f761393f565b60ff80196070541691161760705580f35b503461024b57604036600319011261024b57604051611a2681612f19565b6004356001600160f81b0319811681036115255781526024359063ffffffff19821682036115255760208101918252611a5d61393f565b5160f81c60075491610100600160e81b03905160181c169162ffffff60e81b16171760075580f35b503461024b578060031936011261024b576020600354604051908152f35b503461024b578060031936011261024b57602060ff607254166040519015158152f35b503461024b57602036600319011261024b57600435611ae361393f565b662386f26fc1000081101580611b62575b15611aff5760025580f35b60405162461bcd60e51b815260206004820152603560248201527f6368616c6c656e676520666565206d757374206265206265747765656e20302e60448201527418189032ba3432b91030b7321018981032ba3432b960591b6064820152608490fd5b50678ac7230489e80000811115611af4565b50606036600319011261024b57600435611b8c6131ba565b611b946131ca565b6006546040516247a8e360e11b815260209592916001600160a01b0316908681600481855afa8015610d98578490612047575b611bd491508611156136dc565b611bdf851515613728565b604051631614b30360e21b80825260048201879052936024919088828481875afa918215611fa6578192612018575b5060405191630a2a343960e21b835260048301526040828481875afa918215611fa6578192611ff7575b50611c53610b556001600160401b0380945116835490613570565b611c6060025434146137f6565b60ff6070541615611fb35760405195865287600487015288868481875afa958615611fa6578196611f77575b508281611c9a878a8a613695565b95868252606f8c52611cb960ff6004604085200154166111a381613184565b6040519283809263392af9bf60e11b82528d60048301525afa90811561036057906080918391611f5d575b500160ff815151981697881015611f21578962ffffff8082611d078c8651613538565b51015116928a63ffffffff8a16948510159384611ed1575b5050505015611e7a57611d3460015442613570565b926040519461010086019186831090831117611e68575089946001999897948c94600080516020614d2683398151915298946004946040528a84528684019189835260408501928d8452606086019283526040608087019233845260a08801968752606f60c089019b60018d5260e08a019b838d528352522095518655518e86015564ffffffff0060ff6002870194511684549351926001650100000000009060c81b03905160281b169366ffffffffffffff60c81b16179160081b161717905551600382015501915190611e0882613184565b611e1182613184565b60ff61ff0084549251151560081b1692169061ffff191617179055611e5d611e3a875442613570565b6040519384938460409194939263ffffffff606083019616825260208201520152565b0390a4604051908152f35b634e487b7160e01b8452604160045283fd5b60405162461bcd60e51b8152600481018b9052602a818601527f696e76616c696420736861726520696e6465783a206e6f7420696e20706f696e604482015269746572732072616e676560b01b6064820152608490fd5b839450818394611ef692611eeb60409561ffff9751613538565b510151169451613538565b5101511601818111611f0e5716811038808a8d611d1f565b634e487b7160e01b845260116004528584fd5b60405162461bcd60e51b8152600481018b9052601581860152740d2dcecc2d8d2c840e0ded2dce8cae440d2dcc8caf605b1b6044820152606490fd5b611f7191503d8085833e610c778183612f62565b38611ce4565b9095508881813d8311611f9f575b611f8f8183612f62565b81010312610f8957519438611c8c565b503d611f85565b50604051903d90823e3d90fd5b60405162461bcd60e51b8152600481018a9052601a818501527f4441206368616c6c656e676573206172652064697361626c65640000000000006044820152606490fd5b61201191925060403d604011610d3557610d278183612f62565b9038611c38565b9091508881813d8311612040575b6120308183612f62565b810103126107e357519038611c0e565b503d612026565b508681813d831161206f575b61205d8183612f62565b8101031261036b57611bd49051611bc7565b503d612053565b503461024b578060031936011261024b57602060ff603b54166040519015158152f35b503461024b578060031936011261024b576020600254604051908152f35b503461024b57606036600319011261024b5760206107a36120d66131ba565b6120de6131ca565b90600435613695565b503461024b57602036600319011261024b57612101613978565b600435815260716020526006604082200181600260ff8354612128828260a81c161561357d565b61214b828260a01c1661213a81613184565b84811490811561218c575b5061321e565b60a882901b1916600160a81b1780855560a01c1661216881613184565b03611776578080806117619460018060a01b03905416600254905af161175b6135d4565b6003915061219981613184565b1438612145565b503461024b57602036600319011261024b576121ba6131a4565b6121c261393f565b6001600160a01b031680156121e7576001600160601b0360a01b600454161760045580f35b60405162461bcd60e51b815260206004820152602360248201527f646566656e6465722063616e6e6f7420626520746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b503461024b57602036600319011261024b576040610100916004358152606f6020522060ff81549160018101546002820154916004600382015491015492848416926040519687526020870152848116604087015263ffffffff8160081c16606087015260018060a01b039060281c16608086015260a08501526122bb81613184565b60c084015260081c16151560e0820152f35b503461024b576003196040368201126107e357602435906001600160401b0382116115255760e0818336030112611525576040519160c083018381106001600160401b0382111761293a5760405280600401356001600160401b03811161035c5781013660238201121561035c5760048101359061234a82612f83565b916123586040519384612f62565b80835260051b81016024016020830136821161288d5760248301905b82821061290b5750505050835260248101356001600160401b03811161035c5781013660238201121561035c5760048101356123af81612f83565b916123bd6040519384612f62565b8183526024602084019260051b8201019036821161288d5760248101925b828410612891575050505060208401526123f83660448301612ffc565b604084015260848101356001600160401b03811161035c576124209060043691840101613047565b606084015260a48101356001600160401b03811161035c5781013660238201121561035c5760048101359061245482612f83565b916124626040519384612f62565b80835260051b81016024016020830136821161288d5760248301905b82821061285a5750505050608084015260c4810135906001600160401b03821161035c570160808136039283011261036b5760408051926124be84612ee8565b60048301358452602319011261036b576040516124da81612f19565b602482013581526044820135602082015260208301526064810135906001600160401b03821161035c57600461251392369201016130e8565b604082015260a0820152612525613978565b6004358252606f6020526040822060018060a01b0360065416906024846001830154936040519283809263392af9bf60e11b82528760048301525afa908115610cbf578591612840575b50608060048301549161258a600160ff851661028d81613184565b0151936001600160401b036125a860028501549660ff881690613538565b515116602060a0830151015151036127fb5760408101516126086125fa604051926125d284612f19565b60075460f881901b6001600160f81b031916855260181b63ffffffff19166020850152613fee565b9162ffffff19918291613fee565b169116036127c25760085460a082015160209081015101516126349183906001600160a01b03166139a8565b50156127655761265061264a6080830151613515565b51613d8d565b5090602061266f608061266583850151613515565b5151930151613515565b51015191828102928184041490151715612751579061268d91613570565b9263ffffffff8560081c168094036126ee57600394610f4f60ff9287600080516020614d26833981519152958519161760048701558786549601549060405194859416978460409194939263ffffffff606083019616825260208201520152565b60405162461bcd60e51b815260206004820152603560248201527f70726f6f66206d7573742062652070726f766964656420666f722074686520636044820152740d0c2d8d8cadccecac840e6d0c2e4ca40d2dcc8caf605b1b6064820152608490fd5b634e487b7160e01b87526011600452602487fd5b60405162461bcd60e51b815260206004820152602f60248201527f6661696c656420746f207665726966792073686172657320746f20646174612060448201526e1c9bdbdd081d1d5c1b19481c9bdbdd608a1b6064820152608490fd5b60405162461bcd60e51b8152602060048201526011602482015270696e76616c6964206e616d65737061636560781b6044820152606490fd5b60405162461bcd60e51b815260206004820152601760248201527f696e76616c69642063656c6573746961206865696768740000000000000000006044820152606490fd5b61285491503d8087833e610c778183612f62565b3861256f565b81356001600160401b0381116128895760209161287e8392602436918901016130e8565b81520191019061247e565b8980fd5b8780fd5b83356001600160401b0381116128895782016060602319823603011261288957604051916128be83612ee8565b60248201358352604482013560208401526064820135926001600160401b038411612907576128f7602094936024869536920101613047565b60408201528152019301926123db565b8b80fd5b81356001600160401b0381116128895760209161292f839260243691890101612fb5565b815201910190612374565b634e487b7160e01b85526041600452602485fd5b503461024b57606036600319011261024b57602490604480359060043590843590612977613978565b82855260209060718252604086209060068201908154906129a3600160ff8460a01c1661028d81613184565b60018060a01b0360055416604051968b8789637afdc39160e01b9283825284600483015281865afa988915612d2a578c99612e16575b506001870154809903612dc157604051908152600481018b905287818e81865afa908115612d2a578c91612d94575b50600387015403612d355760405163172c2b0f60e31b8082526004820192909252908b828e81865afa918215612d2a578d8d928d928495612d0e575b506040519586938492835260048301525afa918215612d03578b92612cdf575b50610100998a8201519a6002880154809c03612c9c57830151600488015403612c4b57815103612bf257610160809101908151920191825111612bae5751421115612b61574290511015612b0f575060ff60a01b1916600360a01b17905560050154604080519384529183015260039392917f89389219f04af163105506312f99d6ca034af96d3ee1128efc6a9619ee2aeec29190a46001600080516020614d468339815191525580f35b847f70726576696f7573206865616465722074696d657374616d702069732074686560849260278d6040519462461bcd60e51b86526004860152840152820152662066757475726560c81b6064820152fd5b60405162461bcd60e51b8152600481018790526021818d01527f6865616465722074696d657374616d7020697320696e2074686520667574757281840152606560f81b6064820152608490fd5b5060405162461bcd60e51b815260048101879052601c818d01527f6865616465722074696d657374616d7020697320746f6f206c6174650000000081840152606490fd5b5060405162461bcd60e51b815260048101879052602c818d01527f68656164657220646f6573206e6f7420706f696e7420746f2074686520707265818401526b3b34b7bab9903432b0b232b960a11b6064820152608490fd5b60405162461bcd60e51b8152600481018990526025818f01527f70726576696f757320686561646572206e756d62657220646f6573206e6f742081860152640dac2e8c6d60db1b6064820152608490fd5b6064898f87601c7f686561646572206e756d62657220646f6573206e6f74206d6174636800000000926040519462461bcd60e51b86526004860152840152820152fd5b612cfc9192503d808d833e612cf48183612f62565b8101906132d1565b9038612a64565b6040513d8d823e3d90fd5b612d239195503d8086833e612cf48183612f62565b9338612a44565b6040513d8e823e3d90fd5b5060405162461bcd60e51b8152600481018790526032818d01527f70726576696f7573206c3220686561646572206e6f74206c6f6164656420666f8184015271722074686520676976656e2072626c6f636b60701b6064820152608490fd5b90508781813d8311612dba575b612dab8183612f62565b81010312612907575138612a08565b503d612da1565b60405162461bcd60e51b8152600481018990526029818f01527f6c3220686561646572206e6f74206c6f6164656420666f7220746865206769768186015268656e2072626c6f636b60b81b6064820152608490fd5b9098508781813d8311612e3e575b612e2e8183612f62565b81010312612907575197386129d9565b503d612e24565b503461024b57602036600319011261024b57600435612e6261393f565b61a8c081101580612edb575b15612e7857815580f35b60405162461bcd60e51b815260206004820152603560248201527f6368616c6c656e67652077696e646f77206d757374206265206265747765656e60448201527420313220686f75727320616e642033207765656b7360581b6064820152608490fd5b50621baf80811115612e6e565b606081019081106001600160401b03821117612f0357604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117612f0357604052565b6001600160401b038111612f0357604052565b608081019081106001600160401b03821117612f0357604052565b90601f801991011681019081106001600160401b03821117612f0357604052565b6001600160401b038111612f035760051b60200190565b6001600160401b038111612f0357601f01601f191660200190565b81601f8201121561063b57803590612fcc82612f9a565b92612fda6040519485612f62565b8284526020838301011161063b57816000926020809301838601378301015290565b919082604091031261063b5760405161301481612f19565b9182908035906001600160f81b03198216820361063b57908252602001359063ffffffff198216820361063b5760200152565b81601f8201121561063b57803590602061306083612f83565b936040906130716040519687612f62565b8486526020860191602060a08097028601019482861161063b57602001925b8584106130a1575050505050505090565b868484031261063b5784879183516130b881612ee8565b6130c28688612ffc565b81526130d086868901612ffc565b83820152608087013585820152815201930192613090565b91909160608184031261063b576040519061310282612ee8565b819381356001600160401b03811161063b57820181601f8201121561063b57602091813561312f81612f83565b9261313d6040519485612f62565b818452848085019260051b82010192831161063b578401905b8282106131755750505083528082013590830152604090810135910152565b81358152908401908401613156565b6004111561318e57565b634e487b7160e01b600052602160045260246000fd5b600435906001600160a01b038216820361063b57565b6024359060ff8216820361063b57565b6044359063ffffffff8216820361063b57565b906040516131ea81612f19565b602060018294805484520154910152565b60005b83811061320e5750506000910152565b81810151838201526020016131fe565b1561322557565b60405162461bcd60e51b815260206004820152602560248201527f6368616c6c656e6765206973206e6f7420696e2074686520636f727265637420604482015264737461746560d81b6064820152608490fd5b51906001600160a01b038216820361063b57565b81601f8201121561063b5780516132a281612f9a565b926132b06040519485612f62565b8184526020828401011161063b576132ce91602080850191016131fb565b90565b9060208282031261063b5781516001600160401b039283821161063b5701906101e092838383031261063b5760405193840184811082821117612f0357604052825184526020830151602085015261332b60408401613278565b6040850152606083015160608501526080830151608085015260a083015160a085015260c083015181811161063b578261336691850161328c565b60c085015260e083015160e08501526101008084015190850152610120808401519085015261014080840151908501526101608084015190850152610180918284015191821161063b576133bb91840161328c565b908301526101a080820151908301526101c0809101519082015290565b51906001600160401b038216820361063b57565b906020808383031261063b5782516001600160401b039384821161063b57019060a08284031261063b5760409081519460a0860186811082821117612f03578352613436846133d8565b86526134438285016133d8565b82870152828401518387015260609360608101516060880152608081015191821161063b57019184601f8401121561063b5782519061348182612f83565b9561348e82519788612f62565b82875283606081890194028601019481861161063b578401925b8584106134be5750505050505050608082015290565b868483031261063b578251906134d382612ee8565b6134dc856133d8565b82528585015162ffffff8116810361063b5786830152838501519061ffff8216820361063b57828792868b9501528152019301926134a8565b8051156135225760200190565b634e487b7160e01b600052603260045260246000fd5b80518210156135225760209160051b010190565b600101908160011161355a57565b634e487b7160e01b600052601160045260246000fd5b9190820180921161355a57565b1561358457565b60405162461bcd60e51b815260206004820152602260248201527f6368616c6c656e67652068617320616c7265616479206265656e20636c61696d604482015261195960f21b6064820152608490fd5b3d156135ff573d906135e582612f9a565b916135f36040519384612f62565b82523d6000602084013e565b606090565b1561360b57565b60405162461bcd60e51b81526020600482015260166024820152753330b4b632b2103a37903830bc903232b332b73232b960511b6044820152606490fd5b1561365057565b60405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f20706179206368616c6c656e67657200000000000000006044820152606490fd5b604080516020810192835260f89390931b6001600160f81b0319169083015260e09290921b6001600160e01b0319166041820152602581526136d681612ee8565b51902090565b156136e357565b60405162461bcd60e51b815260206004820152601a60248201527f626c6f636b206e6f7420696e2074686520636861696e207965740000000000006044820152606490fd5b1561372f57565b60405162461bcd60e51b815260206004820152601e60248201527f63616e6e6f74206368616c6c656e67652067656e6573697320626c6f636b00006044820152606490fd5b9081604091031261063b576137a260206040519261379184612f19565b61379a816133d8565b845201613278565b602082015290565b156137b157565b60405162461bcd60e51b815260206004820152601d60248201527f626c6f636b20697320746f6f206f6c6420746f206368616c6c656e67650000006044820152606490fd5b156137fd57565b60405162461bcd60e51b815260206004820152601660248201527518da185b1b195b99d948199959481b9bdd081c185a5960521b6044820152606490fd5b1561384257565b60405162461bcd60e51b815260206004820152601860248201527f6368616c6c656e676520616c72656164792065786973747300000000000000006044820152606490fd5b9061010091820391821161355a57565b60001981019190821161355a57565b9190820391821161355a57565b9060016001600160401b038093160191821161355a57565b6001600160a01b0390811690811561392657600080516020614ce683398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b604051631e4fbdf760e01b815260006004820152602490fd5b600080516020614ce6833981519152546001600160a01b0316330361396057565b60405163118cdaa760e01b8152336004820152602490fd5b600080516020614d4683398151915260028154146139965760029055565b604051633ee5aeb560e01b8152600490fd5b916139c5919392606085015160808601519060a087015192614057565b9015613d86575060208201515160608301515103613d7d576000805b60208401518051831015613a2b57600191613a1d6020613a0486613a2395613538565b510151613a158660208a0151613538565b5151906138a6565b90613570565b9101906139e1565b50905091909181515103613d7457600090815b60208201518051841015613d68576020613a5b85613a6c93613538565b510151613a15856020860151613538565b93613a83835183613a7d8882613570565b91614223565b600b81949294101561318e5780613d5b5750613aa3856060860151613538565b5190613ab3866020870151613538565b5191604086015197613ac58651614333565b9660005b8751811015613b9e5760206000613b488d613af7613ae7868e613538565b5191613af16142ee565b50613fee565b90613b37604051918683019386855262ffffff1916602184015282603e91613b27815180928b86860191016131fb565b810103601e810184520182612f62565b6040519283928392519283916131fb565b8101039060025afa15613b925760019060005160405190613b6882612ee8565b8d82528d60208301526040820152613b80828c613538565b52613b8b818b613538565b5001613ac9565b6040513d6000823e3d90fd5b5096955092969190939750600094613bba604089015151614333565b95805b89518082141580613d4d575b15613c16578a82613bee856040613be6613c0a96613c10986146e2565b940151613538565b51613bf9868d613538565b52613c04858c613538565b50613570565b9161445e565b90613bbd565b5050509294509290969495613c2e602082015161474b565b60019381851b918083046002149015171561355a5760008083613c61938880969210613d45575b9082869594928861477c565b5050939093925b613d0a575b5050509081613c919251613c82835191613fee565b9062ffffff1980958192613fee565b169116149283613cde575b5082613ccb575b505015613cc15750600191613cb791613570565b9301919092613a3e565b6000955093505050565b6040919250810151910151143880613ca3565b90925060208301519080613cff613cf9602086015194613fee565b93613fee565b169116149138613c9c565b90919260408201518051851015613d3b578391613d2a86613d3193613538565b5190614889565b9301919081613c68565b5092829150613c6d565b859150613c55565b5060408b0151518310613bc9565b9550509250505060009190565b50505050600190600090565b50600090600790565b60009150600590565b6000925090565b6040015160038116613da25760021c90600090565b50600090600890565b80516006546001600160a01b0316939192916001600160401b0391821690600019810190811161355a57604080519663392af9bf60e11b938489528360048a01526000988981602481865afa908115613fe4578a929188918491613fca575b5051161015613fad57506020928388018681511684518781528360048201528b81602481885afa908115613f6857899188918e8092613f92575b50500151161015613f7257888401518451631614b30360e21b815260048101849052908682602481885afa918215613f6857908c949392918592613f32575b5003613f11578760249151169685519485938492835260048301525afa918215613f085750908492918891613eee575b500151169003818111610f8d5781603c54911611613ed45750505050600190565b6003925116600080516020614d068339815191528480a490565b613f0291503d808a833e610c778183612f62565b38613eb3565b513d89823e3d90fd5b505050505050506002925116600080516020614d068339815191528480a490565b888092949596508193503d8311613f61575b613f4e8183612f62565b8101031261290757518b93929138613e83565b503d613f44565b86513d8e823e3d90fd5b5050505050506001925116600080516020614d068339815191528480a490565b613fa692503d8091833e610c778183612f62565b388e613e44565b9693505050505116600080516020614d068339815191528380a490565b613fde91503d8086833e610c778183612f62565b38613e0a565b84513d8c823e3d90fd5b80516020918201516040516001600160f81b031990921692820192835263ffffffff19166021820152601d815261402481612f19565b51905162ffffff19918282169190601d8110614042575b5050905090565b83919250601d0360031b1b161680388061403b565b9192939093805192602080948184015192604080950151838651958694631f3302a960e01b865260048601528051602486015201516044840152608060648401528560e484019180519260606084870152835180915286610104870194019060005b818110614207575050508581015160a4860152015160c48401528290039082906001600160a01b03165afa9081156141fc576000916141c6575b50156141b95783518551036141ac5760005b845181101561419e5761418361412561411e8389613538565b5151613fee565b61413b86614133858b613538565b510151613fee565b9084614147858b613538565b5101519085519262ffffff198092168985015216603d830152605a9081830152815261417281612f47565b61417c8388613538565b5185614383565b1561419057600101614105565b505050505050600090600290565b505050505050600190600090565b5050505050600090600690565b5050505050600090600490565b8481813d83116141f5575b6141db8183612f62565b810103126107e3575190811515820361024b5750386140f3565b503d6141d1565b82513d6000823e3d90fd5b825186528c988a9850958601958b9550909201916001016140b9565b91908181116142e65782518082119081156142dc575b506142d45761424881836138a6565b9261425284612f83565b936142606040519586612f62565b80855261426f601f1991612f83565b0160005b8181106142c3575050815b83811061428f575050505090600090565b806142bc61429f60019385613538565b516142aa86846138a6565b906142b5828a613538565b5287613538565b500161427e565b806060602080938901015201614273565b505090600a90565b9050821138614239565b505090600990565b604051906142fb82612ee8565b6000604083815161430b81612f19565b8381528360208201528152815161432181612f19565b83815283602082015260208201520152565b9061433d82612f83565b61434a6040519182612f62565b828152809261435b601f1991612f83565b019060005b82811061436c57505050565b6020906143776142ee565b82828501015201614360565b604082018051929391926001811161443f5750835151614436575b602084019182518251111561442c5760006143e7602092604051613b37602182878101948786526143d7815180928b86860191016131fb565b8101036001810184520182612f62565b8101039060025afa15613b9257600051935191825115614415579061441193949151905190614557565b1490565b5051600114159050614425571490565b5050600090565b5050505050600090565b50505050600090565b6144508551519160208701516144ae565b1461439e5750505050600090565b600019811461355a5760010190565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c161561449c57565b604051631afcd79f60e31b8152600490fd5b909160005b60018481831b10156144df578101809111156144b357634e487b7160e01b600052601160045260246000fd5b509291909261010090810390811161355a576144fa90613887565b91600161450684613897565b1b9161451183613897565b811161451d5750505090565b919250906001830361453157505050600190565b8261454261454e94614548936138a6565b926138a6565b906144ae565b6132ce9061354c565b909182156146815760018314614630578351156145eb576145778361474b565b61458a6145848651613897565b86614a6a565b928181106145c757816145426145aa96936145a4936138a6565b90614557565b6145c1826145bb6132ce9451613897565b90613538565b51614b2e565b6145d19450614557565b906145e46132ce92916145bb8151613897565b5190614b2e565b60405162461bcd60e51b815260206004820181905260248201527f6578706563746564206174206c65617374206f6e6520696e6e657220686173686044820152606490fd5b929150505161463c5790565b60405162461bcd60e51b815260206004820152601760248201527f756e657870656374656420696e6e6572206861736865730000000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152603360248201527f63616e6e6f742063616c6c20636f6d70757465526f6f744861736820776974686044820152722030206e756d626572206f66206c656176657360681b6064820152608490fd5b90918160005b83151580614740575b15614709576146ff9061445e565b9260011c926146e8565b92506147199061471e92946138a6565b614b70565b60001981019190821161355a5781600192821161473a57501b90565b90501b90565b5083600116156146f1565b6001811061063b5761475c81614b70565b600019810190811161355a576001901b9081146147765790565b60011c90565b93959492909261478a6142ee565b50600161479784846138a6565b146148445784518211801590614836575b61481a576147d5906147c26147bd85856138a6565b61474b565b976147cd8986613570565b85878961477c565b5091976147f096929591946147ea9190613570565b9161477c565b9194909392909115156001146148115761480991614889565b929190600090565b50929190600090565b93604091935061482e959692500151614bb0565b929391929091565b5060208501518310156147a8565b939495918086949294511115908161487b575b5061486a5750604061482e940151614bb0565b805161482e95509193919250614b91565b905060208601511138614857565b906148926142ee565b506148a08251825190614bc6565b916000916040918251936148b385612f19565b8085526020809501526148e181516148d26148cc614c06565b91613fee565b9062ffffff1980938192613fee565b169116146000146149c3576148f4614c06565b925b6149008351613fee565b918561490e88860151613fee565b940151918161491d8251613fee565b8861492a8b850151613fee565b93015194828a5198818d8b0199600160f81b8b521660218b015216603e890152605b88015216607b86015216609884015260b583015260b5825260e082018281106001600160401b03821117612f035785928161499060009482895283519283916131fb565b8101039060025afa156149b857600051928251946149ad86612ee8565b855284015282015290565b50513d6000823e3d90fd5b825181806149db613cf96149d5614c06565b94613fee565b169116146000146149f05784820151926148f6565b614a01858301518685015190614c40565b926148f6565b90614a2e5750805115614a1c57805190602001fd5b604051630a12f52160e11b8152600490fd5b81511580614a61575b614a3f575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b15614a37565b919082518111614ad157614a7d81612f83565b90614a8b6040519283612f62565b808252601f19614a9a82612f83565b0136602084013760005b818110614ab2575090925050565b80614abf60019287613538565b51614aca8286613538565b5201614aa4565b60405162461bcd60e51b815260206004820152602f60248201527f496e76616c69642072616e67653a205f626567696e206f72205f656e6420617260448201526e65206f7574206f6620626f756e647360881b6064820152608490fd5b614b5d6000916020936040519085820192600160f81b84526021830152604182015260418152613b3781612f47565b8101039060025afa15613b925760005190565b806000915b614b7d575090565b90614b879061445e565b9060011c80614b75565b90614ba89291949394614ba26142ee565b50614c7b565b919392909190565b90614bbe9291614ba26142ee565b919390929190565b9060006020604051614bd781612f19565b8281520152614be582613fee565b62ffffff1980614bf484613fee565b1691161015614c01575090565b905090565b60006020604051614c1681612f19565b8281520152604051614c2781612f19565b6001600160f81b0319815263ffffffff19602082015290565b9060006020604051614c5181612f19565b8281520152614c5f82613fee565b62ffffff1980614c6e84613fee565b1691161115614c01575090565b90809392614c876142ee565b508251908115918215614cda575b508115614ccf575b50614cbe57614cab91613538565b516001830180931161355a579190600090565b5050614cc86142ee565b9190600190565b905081101538614c9d565b831015915038614c9556fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300ea46f8ad2711844c28d6aa0fe8ed10b1ac38bdcdc6df7ba3b8f3bfc35232f31b6c1c38434bf7781d35ea9020730ba834cfde2300c18c12141e82e3662d6c45669b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a164736f6c6343000816000a",
        "sourceMap": "881:590:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;881:590:7;;;;;;;10522:37:11;;;881:590:7;;;;;;;;;;;;10522:37:11;;;;;:::i;:::-;881:590:7;10512:48:11;;881:590:7;;;;;;;;;;;;;;;;-1:-1:-1;;881:590:7;;;;;;;;;9413:18:11;881:590:7;;;;;9500:16:11;;;;881:590:7;;;;9479:137:11;881:590:7;;;;;;;;;:::i;:::-;9500:53:11;9479:137;:::i;:::-;9665:22;;;881:590:7;;;9647:15:11;:40;881:590:7;;;-1:-1:-1;;;;881:590:7;-1:-1:-1;;;881:590:7;;;9500:16:11;881:590:7;;;-1:-1:-1;;881:590:7;;;;-1:-1:-1;;;;;881:590:7;;;;;;9924:16:11;;881:590:7;9924:16:11;;881:590:7;;;9885:63:11;;;;;881:590:7;;;;;;;;;;;;;;9885:63:11;;881:590:7;9885:63:11;;881:590:7;;;;;9885:63:11;;;;;;;;881:590:7;10029:23:11;;881:590:7;9964:222:11;10029:23;9807:37;10029:23;;;881:590:7;;;;;;;;;;;;;;9964:222:11;881:590:7;;9885:63:11;;;;:::i;:::-;881:590:7;;9885:63:11;;;;881:590:7;;;;9885:63:11;881:590:7;;;;;;;;;9885:63:11;881:590:7;;;;-1:-1:-1;;;881:590:7;;;;;;;;;;;-1:-1:-1;;;881:590:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1083:30:8;881:590:7;;;;;;;;;;;;;;-1:-1:-1;;881:590:7;;;;2357:1:81;881:590:7;;:::i;:::-;2303:62:81;;:::i;:::-;2357:1;:::i;:::-;881:590:7;;;;;;;;;;;;;;;1724:25:8;881:590:7;;;-1:-1:-1;;;;;881:590:7;;;;;;;;;;;;;;;;;;;;;1530:33:8;881:590:7;;;-1:-1:-1;;;;;881:590:7;;;;;;;;;;;;;;;-1:-1:-1;;881:590:7;;;;;;:::i;:::-;-1:-1:-1;;;;;881:590:7;;;;;;;;;;;;;;;;;;;;;;;8837:64:82;881:590:7;;;;;;;;;4301:16:82;881:590:7;-1:-1:-1;;;;;881:590:7;;4726:16:82;;:34;;;;881:590:7;4805:1:82;4790:16;:50;;;;881:590:7;4855:13:82;:30;;;;881:590:7;4851:91:82;;;-1:-1:-1;;881:590:7;;4805:1:82;881:590:7;;;;4979:67:82;;881:590:7;6893:76:82;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;6961:1;2738:10:8;6961:1:82;:::i;:::-;6893:76;;:::i;:::-;;;:::i;:::-;4805:1;-1:-1:-1;;;;;;;;;;;881:590:7;2812:6:8;881:590:7;;2846:6:8;4805:1:82;881:590:7;2877:9:8;2862:24;881:590:7;2914:9:8;2896:27;881:590:7;-1:-1:-1;;;;;881:590:7;;;;;2945:36:8;881:590:7;;;2945:36:8;881:590:7;;2991:31:8;881:590:7;;;2991:31:8;881:590:7;3032:40:8;881:590:7;;;3032:40:8;881:590:7;2384:5:10;2368:21;881:590:7;5066:101:82;;881:590:7;;;5066:101:82;881:590:7;;;;;;;5142:14:82;881:590:7;;;4805:1:82;881:590:7;;5142:14:82;881:590:7;;4979:67:82;-1:-1:-1;;881:590:7;;;;;4979:67:82;;;4851:91;881:590:7;;-1:-1:-1;;;4908:23:82;;881:590:7;;4908:23:82;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:82;;4726:34;;;-1:-1:-1;4726:34:82;;881:590:7;;;;;;;;;;;;;;;;;1434:31:8;881:590:7;;;-1:-1:-1;;;;;881:590:7;;;;;;;;;;;;;;;-1:-1:-1;;881:590:7;;;;2303:62:81;;:::i;:::-;881:590:7;;5546:30:10;881:590:7;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;881:590:7;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;881:590:7;;;;;;;;;;;;;;-1:-1:-1;;881:590:7;;;;;;:::i;:::-;2303:62:81;;:::i;:::-;-1:-1:-1;;;;;881:590:7;6959:23:8;;881:590:7;;-1:-1:-1;;;;;881:590:7;;7032:31:8;881:590:7;;;7032:31:8;881:590:7;;;;;;-1:-1:-1;;;881:590:7;;;;;;;;;;;;;;;;;-1:-1:-1;;;881:590:7;;;;;;;;;;;;;;;;;;;;4231:33:8;881:590:7;;4231:15:8;881:590:7;;;4231:33:8;;:::i;:::-;881:590:7;;;;;;;;;;;;;-1:-1:-1;;881:590:7;;;;;;;;;;;;;;2303:62:81;;:::i;:::-;881:590:7;;;5261:34:10;881:590:7;;;;;5261:34:10;881:590:7;;;;;;;;;;;;;;-1:-1:-1;;881:590:7;;;;;;;;;;;;;;2303:62:81;;:::i;:::-;881:590:7;;;10826:36:11;881:590:7;;;;;10826:36:11;881:590:7;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;881:590:7;;;-1:-1:-1;;;;;881:590:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3954:32:9;881:590:7;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;881:590:7;;;;;;;;;;;;;;;-1:-1:-1;;881:590:7;;;;;;2303:62:81;;:::i;:::-;5942:10:8;5922:30;;;:62;;;881:590:7;;;;6076:34:8;881:590:7;;;;;;-1:-1:-1;;;881:590:7;;;;;;;;;;;;;;;;;;;;;;;;;5922:62:8;5956:28;5976:8;5956:28;;;5922:62;;881:590:7;;;;;;;;;;;;;2303:62:81;;:::i;:::-;-1:-1:-1;;;;;;;;;;;881:590:7;;-1:-1:-1;;;;;;881:590:7;;;;;;;-1:-1:-1;;;;;881:590:7;3975:40:81;881:590:7;;3975:40:81;881:590:7;;;;;;;;;-1:-1:-1;;881:590:7;;;;;;;;;;;3140:63:11;881:590:7;;;;;;3140:63:11;;881:590:7;3140:63:11;;;:::i;:::-;;;;;;:::i;:::-;;881:590:7;3140:63:11;;;;881:590:7;3140:63:11;;881:590:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3816:5:8;881:590:7;;;;;;;;3816:17:8;;;;881:590:7;3816:17:8;;;;;;;;;;;;881:590:7;3799:65:8;3807:26;;;;;3799:65;:::i;:::-;3349:53;3357:10;;;3349:53;:::i;:::-;881:590:7;;;;;;3489:18:8;;;;;881:590:7;3489:18:8;;881:590:7;;3489:18:8;;;;;;;;;;;;;;;;;881:590:7;;;;;;;;3468:40:8;;881:590:7;3468:40:8;;881:590:7;;3468:40:8;;;;;;;;;;;-1:-1:-1;;;;;3412:199:8;3468:40;:88;:40;;;;;881:590:7;;;;;;3468:88:8;;:::i;:::-;3433:15;:123;;3412:199;:::i;:::-;881:590:7;2752:24:10;881:590:7;;;;;;;2836:24:10;;;;881:590:7;2836:24:10;;881:590:7;2836:24:10;;;;;;;;;;;;;;;;881:590:7;-1:-1:-1;881:590:7;;-1:-1:-1;;;2914:55:10;;881:590:7;2914:55:10;;881:590:7;;;2914:55:10;881:590:7;2914:55:10;881:590:7;2914:55:10;;;;;;;;;3023:42;2914:55;;;;;;;881:590:7;3023:42:10;;:::i;:::-;881:590:7;;-1:-1:-1;;;881:590:7;;;;;;;3127:38:10;;;;;;;;881:590:7;;;;;;;;;;;;;;;3127:38:10;;881:590:7;3127:38:10;;881:590:7;;;;3127:38:10;;;;;;;;881:590:7;;3127:38:10;;;;:::i;:::-;881:590:7;;3127:38:10;881:590:7;;-1:-1:-1;;;;;881:590:7;;-1:-1:-1;881:590:7;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;881:590:7;;;;;2914:55:10;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;881:590:7;;;;;;;;;2836:24:10;;;;;;;;;;;;;;;;;:::i;:::-;;;881:590:7;;;;;2836:24:10;;;;;;;;;;881:590:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3468:40:8;;;;881:590:7;3468:40:8;881:590:7;3468:40:8;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;3489:18;;;;;;;;;;;;;;;;:::i;:::-;;;881:590:7;;;;;3489:18:8;;;;;;;;3816:17;;;;;;;;;;;;;;;:::i;:::-;;;881:590:7;;;;3799:65:8;881:590:7;;3816:17:8;;;;;;;;881:590:7;;;;;;;;;;;;;;;;-1:-1:-1;;881:590:7;;;;;;2303:62:81;;:::i;:::-;5048:8:8;5028:28;;;:59;;;881:590:7;;;;;;;;;;;-1:-1:-1;;;881:590:7;;;;;;;;;;;;;;;;;-1:-1:-1;;;881:590:7;;;;;;;5028:59:8;5060:27;5080:7;5060:27;;;5028:59;;881:590:7;;;;;;;-1:-1:-1;;881:590:7;;;;3217:103:85;;:::i;:::-;881:590:7;;;;9687:12:9;881:590:7;;;;;9745:16:9;881:590:7;9745:16:9;;881:590:7;;;;9724:141:9;881:590:7;;;;;;;:::i;9724:141:9:-;9914:16;;;881:590:7;;;9896:15:9;:34;881:590:7;;;-1:-1:-1;;881:590:7;10044:31:9;881:590:7;;;10117:5:9;881:590:7;;10132:20:9;;881:590:7;;10132:20:9;;;-1:-1:-1;;;;;881:590:7;;-1:-1:-1;;881:590:7;;;;;;;;;10117:61:9;;;;;;881:590:7;;;;;;;;;;;;;;;10117:61:9;;881:590:7;10117:61:9;;881:590:7;;;;;10117:61:9;;;;;;;;881:590:7;;-1:-1:-1;;;;;;;;;;;10044:31:9;881:590:7;;;;;10258:22:9;;881:590:7;;;;;;10194:239:9;881:590:7;;;;;;;;;;;;;10194:239:9;881:590:7;;;;;;;;;;;;;;;;;;;;10194:239:9;;;;881:590:7;-1:-1:-1;;;;;;;;;;;881:590:7;;;10117:61:9;10044:31;10117:61;;-1:-1:-1;;;;;;;;;;;10117:61:9;;:::i;:::-;;;;;;881:590:7;;;;-1:-1:-1;;;881:590:7;;;;;;;;;;;-1:-1:-1;;;881:590:7;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;881:590:7;;-1:-1:-1;;881:590:7;;;;3816:5:8;881:590:7;;;-1:-1:-1;;;3816:17:8;;-1:-1:-1;;;;;881:590:7;;;;;;;;;3816:17:8;;;;;;;;;;881:590:7;3799:65:8;881:590:7;;;;3807:26:8;;3799:65;:::i;:::-;3349:53;881:590:7;;3357:10:8;;3349:53;:::i;:::-;881:590:7;;-1:-1:-1;;;3489:18:8;;;881:590:7;;;3489:18:8;;;881:590:7;;;;;;3489:18:8;;;;;;;;;;;;881:590:7;;;;;;;;3468:40:8;;881:590:7;3468:40:8;;881:590:7;;3468:40:8;881:590:7;3468:40:8;;;;;;;;-1:-1:-1;;;;;3468:88:8;:40;3412:199;3468:40;;;;;881:590:7;;;;;;3468:88:8;;:::i;3412:199::-;3996:60;4017:12;881:590:7;4004:9:8;:25;3996:60;:::i;:::-;881:590:7;3880:26:11;881:590:7;;;;;;;4028:23:11;;;881:590:7;;;4028:23:11;;881:590:7;;4028:23:11;881:590:7;4028:23:11;;;;;;;;;;;;;881:590:7;-1:-1:-1;881:590:7;;-1:-1:-1;;;4105:54:11;;881:590:7;;;4105:54:11;;;881:590:7;;4105:54:11;881:590:7;;;;4105:54:11;;;;;;;;;;;881:590:7;-1:-1:-1;881:590:7;;-1:-1:-1;;881:590:7;;;;;;;;;;;;;;;;;4217:58:11;;881:590:7;;;;;;4217:58:11;;881:590:7;4217:58:11;;;;;;;;;;;881:590:7;;;;;4392:36:11;;881:590:7;;;;;;;;;;;4392:36:11;;;;;:::i;:::-;881:590:7;4382:47:11;;881:590:7;;;;4460:18:11;881:590:7;;4439:159:11;881:590:7;3816:5:8;881:590:7;;;4460:40:11;881:590:7;;;;;;;:::i;:::-;4460:88:11;4439:159;:::i;:::-;-1:-1:-1;;;;;881:590:7;4712:19:11;;881:590:7;;;;4703:28:11;:57;;;881:590:7;;;;;;;4944:15:11;:52;;;881:590:7;;;;;;;;;:::i;:::-;;;;;;;5168:35:11;;881:590:7;;;-1:-1:-1;;881:590:7;;;;;;;;;;:::i;:::-;;;;;;;;;;5304:73:11;;881:590:7;4712:19:11;-1:-1:-1;;;;;5402:23:11;4712:19;881:590:7;4712:19:11;;881:590:7;;5402:23:11;:::i;:::-;881:590:7;;;5392:33:11;5388:241;;881:590:7;;;5809:33:11;881:590:7;;3433:15:8;5809:33:11;:::i;:::-;881:590:7;;;;;;;;;-1:-1:-1;;;;;881:590:7;;;;;;;;;;;;;;;3816:5:8;881:590:7;;;;;;;5710:232:11;;;881:590:7;;;;5710:232:11;;881:590:7;;;;5710:232:11;;881:590:7;;;5710:232:11;;;;5856:10;;881:590:7;;;;5710:232:11;;881:590:7;;;;5710:232:11;;;881:590:7;;;;;;4460:18:11;881:590:7;;;;;;;;;;;;;;;;4017:12:8;881:590:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6105:33:11;881:590:7;;3433:15:8;6105:33:11;:::i;:::-;881:590:7;;;;;;;;;;5997:198:11;881:590:7;;;5997:198:11;;881:590:7;;;;;;;-1:-1:-1;;;881:590:7;;;;;;;;5388:241:11;-1:-1:-1;;;;;5581:15:11;;;881:590:7;;5581:15:11;;881:590:7;4712:19:11;;881:590:7;;;;;;;;:::i;:::-;;;;5565:53:11;;881:590:7;5388:241:11;;;;881:590:7;;;-1:-1:-1;;;881:590:7;;;;;;;;;;;;;;;;;;;;;;;;;4944:52:11;4712:19;-1:-1:-1;;;;;4973:23:11;4712:19;881:590:7;4712:19:11;;881:590:7;;4973:23:11;:::i;:::-;881:590:7;;;4963:33:11;4944:52;;881:590:7;;;-1:-1:-1;;;881:590:7;;;;;;;;;;;;;;;;;-1:-1:-1;;;881:590:7;;;;;;;4703:57:11;4745:15;-1:-1:-1;;;;;881:590:7;4745:15:11;;881:590:7;;;;4735:25:11;;4703:57;;4217:58;;;;;;;;;;;;;:::i;:::-;;;;881:590:7;-1:-1:-1;;;881:590:7;;;;;;;;4105:54:11;;;;;;;;;;;;;;:::i;:::-;;;;;4028:23;;;881:590:7;4028:23:11;;881:590:7;4028:23:11;;;;;;881:590:7;4028:23:11;;;:::i;:::-;;;881:590:7;;;;;4028:23:11;;;881:590:7;;;;4028:23:11;;;-1:-1:-1;4028:23:11;;;881:590:7;;;;;;;;;;;;-1:-1:-1;;;881:590:7;;;;;;;;;;;;;;;;;;;;3468:40:8;;;;881:590:7;3468:40:8;881:590:7;3468:40:8;;;;;;;:::i;:::-;;;;3489:18;;;881:590:7;3489:18:8;;881:590:7;3489:18:8;;;;;;881:590:7;3489:18:8;;;:::i;:::-;;;881:590:7;;;;;3489:18:8;;;;;;-1:-1:-1;3489:18:8;;3816:17;;881:590:7;3816:17:8;;881:590:7;3816:17:8;;;;;;881:590:7;3816:17:8;;;:::i;:::-;;;881:590:7;;;;3799:65:8;881:590:7;;3816:17:8;;;;;-1:-1:-1;3816:17:8;;881:590:7;;;;;;;;;;;;;;1628:28:8;881:590:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5111:6:83;-1:-1:-1;;;;;881:590:7;5102:4:83;5094:23;5090:145;;881:590:7;;;1327:66:90;881:590:7;;;5090:145:83;881:590:7;;-1:-1:-1;;;5195:29:83;;881:590:7;;5195:29:83;881:590:7;;;;;;;-1:-1:-1;;881:590:7;;;;3217:103:85;;:::i;:::-;881:590:7;;;;11107:12:9;881:590:7;;;;;11165:17:9;881:590:7;11165:17:9;;881:590:7;;;;11144:107:9;881:590:7;;;;;;11144:107:9;:::i;:::-;881:590:7;;;;;;;:::i;:::-;;11302:31:9;11282:51;;:120;;;;;;881:590:7;11261:204:9;;;:::i;:::-;-1:-1:-1;;881:590:7;;;;;:::i;:::-;11514:51:9;;;881:590:7;;;11694:44:9;881:590:7;11302:31:9;881:590:7;;;;;11600:20:9;;881:590:7;;;;11302:31:9;881:590:7;11600:80:9;;;;;:::i;:::-;;11694:44;:::i;:::-;881:590:7;-1:-1:-1;;;;;;;;;;;881:590:7;;;11510:383:9;881:590:7;;11302:31:9;881:590:7;11840:42:9;;-1:-1:-1;881:590:7;;;;;;-1:-1:-1;;;;;881:590:7;11788:38:9;;;;:::i;:::-;;11840:42;:::i;:::-;11510:383;;11282:120;881:590:7;;;;:::i;:::-;11373:29:9;11353:49;;11282:120;;881:590:7;-1:-1:-1;881:590:7;;-1:-1:-1;;881:590:7;;;;;;:::i;:::-;;;-1:-1:-1;;;;;881:590:7;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4688:6:83;881:590:7;;4679:4:83;4671:23;;;:120;;;;881:590:7;4654:251:83;;;2303:62:81;;:::i;:::-;881:590:7;;;;;;;;6151:52:83;;881:590:7;6151:52:83;881:590:7;6151:52:83;;;;;;;;;881:590:7;-1:-1:-1;6147:437:83;;881:590:7;;-1:-1:-1;;;6513:60:83;;881:590:7;6513:60:83;;881:590:7;;;;;6513:60:83;6147:437;1327:66:90;;;;6245:40:83;;;;6241:120;;2263:29:90;;;:34;2259:119;;881:590:7;;-1:-1:-1;;;;;;881:590:7;;;;;;;;;2922:27:90;881:590:7;;2922:27:90;881:590:7;;2964:15:90;:11;;4255:25:99;;;881:590:7;4297:55:99;4255:25;;;;;;;;;:::i;:::-;4297:55;;:::i;:::-;;881:590:7;;2960:148:90;6648:9;;;;;6644:70;;2960:148;881:590:7;;6644:70:90;-1:-1:-1;;;6684:19:90;;881:590:7;;6684:19:90;2259:119;881:590:7;;-1:-1:-1;;;2320:47:90;;881:590:7;2320:47:90;;881:590:7;;;;;2320:47:90;6241:120:83;881:590:7;;;;6312:34:83;;;;;;881:590:7;6312:34:83;;881:590:7;6312:34:83;6151:52;;;;881:590:7;6151:52:83;;881:590:7;6151:52:83;;;;;;881:590:7;6151:52:83;;;:::i;:::-;;;881:590:7;;;;;6151:52:83;;;;;;;-1:-1:-1;6151:52:83;;4671:120;881:590:7;;;1327:66:90;881:590:7;;4749:42:83;;4671:120;;;881:590:7;;;;;;;;;;;;;;2238:28:10;881:590:7;;;;;;;;;;;;;;-1:-1:-1;;881:590:7;;;;;;;;;;;;;;2303:62:81;;:::i;:::-;881:590:7;;;10793:30:9;881:590:7;;;;;10793:30:9;881:590:7;;;;;;;;;;-1:-1:-1;;881:590:7;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;;881:590:7;;;;;;;;;;;-1:-1:-1;;881:590:7;;;;;;;;;;;;2303:62:81;;:::i;:::-;881:590:7;;;6667:24:8;881:590:7;;;;;;;;;;;;;;;;;;;6667:24:8;881:590:7;;;;;;;;;;;;;;;;;1273:30:8;881:590:7;;;;;;;;;;;;;;;;;;;;;;3307:38:11;881:590:7;;;;;;;;;;;;;;;;;-1:-1:-1;;881:590:7;;;;;;2303:62:81;;:::i;:::-;5489:10:8;5472:27;;;:56;;;881:590:7;;;;5617:28:8;881:590:7;;;;;;-1:-1:-1;;;881:590:7;;;;;;;;;;;;;;;;;-1:-1:-1;;;881:590:7;;;;;;;5472:56:8;5503:25;5520:8;5503:25;;;5472:56;;881:590:7;-1:-1:-1;881:590:7;;-1:-1:-1;;881:590:7;;;;;;;;:::i;:::-;;;:::i;:::-;3816:5:8;881:590:7;;;-1:-1:-1;;;3816:17:8;;881:590:7;;;;-1:-1:-1;;;;;881:590:7;;;;;;;3816:17:8;;;;;;;;;;881:590:7;3799:65:8;3807:26;;;;;3799:65;:::i;:::-;3349:53;3357:10;;;3349:53;:::i;:::-;881:590:7;;-1:-1:-1;;;3489:18:8;;;881:590:7;3489:18:8;;881:590:7;;;;;;;3489:18:8;881:590:7;;;3489:18:8;;;;;;;;;;;;881:590:7;;;;;;;;3468:40:8;;881:590:7;3468:40:8;;881:590:7;;3468:40:8;;;;;;;;;;;;;;;881:590:7;;3412:199:8;3468:88;-1:-1:-1;;;;;881:590:7;;;;;;3468:88:8;;:::i;3412:199::-;3996:60;4017:12;881:590:7;4004:9:8;:25;3996:60;:::i;:::-;881:590:7;5299:20:9;881:590:7;;;;;;;5390:24:9;;;;881:590:7;5390:24:9;;881:590:7;5390:24:9;;;;;;;;;;;;;;;;881:590:7;5447:123:9;;;;;;;;:::i;:::-;881:590:7;;;;5678:12:9;881:590:7;;5714:113:9;881:590:7;;;;;5735:16:9;881:590:7;;;;;:::i;5714:113:9:-;881:590:7;;;;;;;;;5882:55:9;;;881:590:7;5882:55:9;;881:590:7;5882:55:9;;;;;;;;5985:23;5882:55;;;;;881:590:7;5985:23:9;;881:590:7;5985:23:9;;881:590:7;;;5969:46:9;;;881:590:7;;;;;6108:23:9;;:38;:23;;;:38;:::i;:::-;;:49;881:590:7;;;;;;;6093:64:9;;;;:233;;;;881:590:7;;;;;;;;6627:33:9;881:590:7;;3433:15:8;6627:33:9;:::i;:::-;881:590:7;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;881:590:7;;;;;;;;;6469:271:9;;;881:590:7;;;;;6469:271:9;;881:590:7;;;;;6469:271:9;;881:590:7;;;;5985:23:9;6469:271;;6603:10;;881:590:7;;6469:271:9;;;881:590:7;;;5678:12:9;6469:271;;;881:590:7;;;;;6469:271:9;;881:590:7;;;;;;;;;;;;;;;;;;;4017:12:8;881:590:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;6756:234:9;6896:33;881:590:7;;3433:15:8;6896:33:9;:::i;:::-;881:590:7;;6756:234:9;;;;881:590:7;;;;;;;;;;;;;;;;;;;;6756:234:9;;;;881:590:7;;;;;;;-1:-1:-1;;;881:590:7;;;;;;;;;;-1:-1:-1;;;881:590:7;;;;;;;;;;;;;;;;;;-1:-1:-1;;;881:590:7;;;;;;;6093:233:9;6207:23;;;;;;6279:38;6207:23;:38;881:590:7;6207:23:9;881:590:7;6207:23:9;;:38;:::i;:::-;;:49;881:590:7;;6279:23:9;;:38;:::i;:::-;;:47;881:590:7;;;;;;;;;6177:149:9;;6093:233;;;;;;881:590:7;-1:-1:-1;;;881:590:7;;;;;;;;;;;-1:-1:-1;;;881:590:7;;;;;;;;;;;;;-1:-1:-1;;;881:590:7;;;;;;;5882:55:9;;;;;;;;;;;;;:::i;:::-;;;;5390:24;;;;;;;;;;;;;;;;;:::i;:::-;;;881:590:7;;;;;5390:24:9;;;;;;;;;;881:590:7;;;;;;;;;;;;;;-1:-1:-1;;;881:590:7;;;;;;;;;;;;;;;;;;;;;3468:40:8;;;;;881:590:7;3468:40:8;881:590:7;3468:40:8;;;;;;;:::i;:::-;;;;;3489:18;;;;;;;;;;;;;;;;;:::i;:::-;;;881:590:7;;;;;3489:18:8;;;;;;;;;3816:17;;;;;;;;;;;;;;;:::i;:::-;;;881:590:7;;;;3799:65:8;881:590:7;;3816:17:8;;;;;;;881:590:7;;;;;;;;;;;;;;;2154:36:10;881:590:7;;;;;;;;;;;;;;;;;;;;;;;;1174:27:8;881:590:7;;;;;;;;;;;;;;-1:-1:-1;;881:590:7;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;;-1:-1:-1;;881:590:7;;;;3217:103:85;;:::i;:::-;881:590:7;;;;11175:18:11;881:590:7;;11239:17:11;881:590:7;;;11239:17:11;881:590:7;11376:37:11;881:590:7;;;11218:107:11;881:590:7;;;;;;11218:107:11;:::i;:::-;11335:216;881:590:7;;;;;;;;:::i;:::-;11356:57:11;;;:132;;;;;881:590:7;11335:216:11;;:::i;:::-;881:590:7;;;;;;-1:-1:-1;;;881:590:7;;;;;;;;;;:::i;:::-;11600:57:11;11376:37;;881:590:7;;;11786:44:11;881:590:7;;;;;;;;;11376:37:11;881:590:7;11692:80:11;;;;;:::i;11356:132::-;11453:35;881:590:7;;;;;:::i;:::-;11433:55:11;11356:132;;;881:590:7;;;;;;;-1:-1:-1;;881:590:7;;;;;;:::i;:::-;2303:62:81;;:::i;:::-;-1:-1:-1;;;;;881:590:7;6346:23:8;;881:590:7;;-1:-1:-1;;;;;881:590:7;;;;;;;;;;;;;-1:-1:-1;;;881:590:7;;;;;;;;;;;;;;;;;-1:-1:-1;;;881:590:7;;;;;;;;;;;;;;-1:-1:-1;;881:590:7;;;;;;;;;;;3805:51:9;881:590:7;;;;;;3805:51:9;881:590:7;3805:51:9;;881:590:7;3805:51:9;;;881:590:7;3805:51:9;881:590:7;3805:51:9;;;881:590:7;3805:51:9;;881:590:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;881:590:7;;;;;;;;;;-1:-1:-1;;;;;881:590:7;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;881:590:7;;;;;;;;;;;-1:-1:-1;;;;;881:590:7;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;881:590:7;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;881:590:7;;;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;881:590:7;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;881:590:7;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;881:590:7;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;881:590:7;;;;;;;;;;;;:::i;:::-;;;;;;;;;3217:103:85;;:::i;:::-;881:590:7;;;;7374:12:9;881:590:7;;;;;;;;;;7455:5:9;881:590:7;;7489:20:9;881:590:7;7489:20:9;;;;881:590:7;;;;;;;;;;;7455:64:9;;;881:590:7;7455:64:9;;881:590:7;7455:64:9;;;;;;;;;;;881:590:7;7551:16:9;881:590:7;;7551:16:9;;881:590:7;;7530:141:9;7489:20;881:590:7;;;;;;:::i;7530:141:9:-;7702:23;;7726:22;-1:-1:-1;;;;;7702:47:9;7726:22;;;881:590:7;;;;;7702:47:9;;:::i;:::-;;881:590:7;;;;;;7776:23:9;:29;;881:590:7;7702:110:9;881:590:7;;;;;7911:16:9;506:11:110;491;881:590:7;;;;;;:::i;:::-;7936:11:9;881:590:7;;;;;-1:-1:-1;;;;;;881:590:7;;;;;-1:-1:-1;;881:590:7;;;;;491:11:110;:::i;:::-;881:590:7;-1:-1:-1;;881:590:7;;;506:11:110;:::i;:::-;881:590:7;;;491:26:110;881:590:7;;;;;;;8184:23:9;881:590:7;8184:29:9;;;;:38;881:590:7;8086:146:9;;881:590:7;;-1:-1:-1;;;;;881:590:7;8086:146:9;:::i;:::-;881:590:7;;;;8377:83:9;8431:19;881:590:7;;;8431:16:9;:19;:::i;:::-;;8377:83;:::i;:::-;881:590:7;;;8704:19:9;881:590:7;8573:21:9;881:590:7;;;8573:18:9;:21;:::i;:::-;;881:590:7;;;8704:16:9;:19;:::i;:::-;;:23;881:590:7;;;;;;;;;;;;;;;;8649:78:9;;;;:::i;:::-;881:590:7;;;;;;8758:49:9;;;881:590:7;;8949:29:9;881:590:7;8993:237:9;881:590:7;;;-1:-1:-1;;;;;;;;;;;881:590:7;;;;;;7551:16:9;;881:590:7;;;;9161:16:9;;881:590:7;;;;;;;;8993:237:9;;881:590:7;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;881:590:7;;;;;;;;;;;;;;;;;-1:-1:-1;;;881:590:7;;;;;;;;-1:-1:-1;;;881:590:7;;;;;;;;;;;-1:-1:-1;;;881:590:7;;;;;;;;;;;;;;;;;-1:-1:-1;;;881:590:7;;;;;;;;;;-1:-1:-1;;;881:590:7;;;;;;;;;;;;-1:-1:-1;;;881:590:7;;;;;;;;;;-1:-1:-1;;;881:590:7;;;;;;;;;;;;;;;;;;;;7455:64:9;;;;;;;;;;;;;:::i;:::-;;;;881:590:7;;;-1:-1:-1;;;;;881:590:7;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;881:590:7;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;881:590:7;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;881:590:7;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;881:590:7;;;;;;;;;;;;;;;-1:-1:-1;;881:590:7;;;;;;;;;;;;;;;;3217:103:85;;:::i;:::-;881:590:7;;;;;6719:18:11;881:590:7;;;;;6806:16:11;;;;881:590:7;;;;6785:137:11;881:590:7;;;;;;;;;:::i;6785:137:11:-;881:590:7;;;;;7119:11:11;881:590:7;;;;;;;;;;;7119:39:11;;;;;881:590:7;7119:39:11;;881:590:7;7119:39:11;;;;;;;;;;;;;881:590:7;7162:16:11;881:590:7;7162:16:11;;881:590:7;7119:66:11;;;881:590:7;;;;7283:43:11;;;881:590:7;7283:43:11;;881:590:7;;;;;;;7283:43:11;;;;;;;;;;;;881:590:7;7346:20:11;;;;881:590:7;7283:90:11;881:590:7;;;;-1:-1:-1;;;7569:56:11;;;881:590:7;7569:56:11;;881:590:7;;;;;;;;;7569:56:11;;;;;;;;;;;;;;;;;881:590:7;;;;7677:60:11;;;;;;;881:590:7;7677:60:11;;881:590:7;7677:60:11;;;;;;;;;;;881:590:7;7824:13:11;;;;;;881:590:7;7841:23:11;;;;881:590:7;7824:40:11;;;881:590:7;;7949:17:11;;881:590:7;;7970:27:11;;881:590:7;7949:48:11;881:590:7;;;;8138:36:11;881:590:7;;8321:16:11;;;;881:590:7;;;8341:20:11;;881:590:7;;;-1:-1:-1;881:590:7;;;8465:15:11;-1:-1:-1;881:590:7;;;8465:15:11;881:590:7;;8570:38:11;881:590:7;;;-1:-1:-1;;;;;881:590:7;-1:-1:-1;;;881:590:7;;;7119:11:11;8953:22;881:590:7;;;;;;;;;;;7346:20:11;;881:590:7;;8814:220:11;;881:590:7;8814:220:11;881:590:7;-1:-1:-1;;;;;;;;;;;881:590:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;881:590:7;;;;;;;;-1:-1:-1;;;881:590:7;;;;;;;;;;;;;;;;;;-1:-1:-1;;;881:590:7;;;;;;;;-1:-1:-1;881:590:7;;-1:-1:-1;;;881:590:7;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;881:590:7;;-1:-1:-1;;;881:590:7;;;;;;;;;;;;;;;;;;-1:-1:-1;;;881:590:7;;;;;;;;;;-1:-1:-1;;;881:590:7;;;;;;;;;;;;;;;;;;-1:-1:-1;;;881:590:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7677:60:11;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;881:590:7;;;;;;;;;7569:56:11;;;;;;;;;;;;;;:::i;:::-;;;;;;881:590:7;;;;;;;;;;-1:-1:-1;881:590:7;;-1:-1:-1;;;881:590:7;;;;;;;;;;;;;;;;;;-1:-1:-1;;;881:590:7;;;;;;;7283:43:11;;;;;;;;;;;;;;;;:::i;:::-;;;881:590:7;;;;;7283:43:11;;;;;;;;881:590:7;;;-1:-1:-1;;;881:590:7;;;;;;;;;;;;;;;;;;-1:-1:-1;;;881:590:7;;;;;;;7119:39:11;;;;;;;;;;;;;;;;;:::i;:::-;;;881:590:7;;;;;7119:39:11;;;;;;;;;881:590:7;;;;;;;-1:-1:-1;;881:590:7;;;;;;2303:62:81;;:::i;:::-;4575:8:8;4555:28;;;:59;;;881:590:7;;;;;;;;;;;-1:-1:-1;;;881:590:7;;;;;;;;;;;;;;;;;-1:-1:-1;;;881:590:7;;;;;;;4555:59:8;4587:27;4607:7;4587:27;;;4555:59;;881:590:7;;;;;;;-1:-1:-1;;;;;881:590:7;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;881:590:7;;;;;;;:::o;:::-;-1:-1:-1;;;;;881:590:7;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;881:590:7;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;881:590:7;;;;;;;:::o;:::-;-1:-1:-1;;;;;881:590:7;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;881:590:7;;;;;;-1:-1:-1;;881:590:7;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;881:590:7;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;;881:590:7;;;;;;;;;;;;;-1:-1:-1;;881:590:7;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;881:590:7;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;881:590:7;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;881:590:7;;;:::o;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;881:590:7;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;881:590:7;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;881:590:7;;;;;;;;;;;;;;;;;-1:-1:-1;;;881:590:7;;;;;;;;;;-1:-1:-1;;;;;881:590:7;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;881:590:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;881:590:7;;;;;;:::o;:::-;;;;;;;;;;;;-1:-1:-1;;;;;881:590:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;7455:64:9;881:590:7;;;;;7455:64:9;881:590:7;;;;;;;;;;;;;;;;:::o;:::-;564:1:111;881:590:7;;;564:1:111;881:590:7;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;881:590:7;;;;;;;;;;;;;;;;;-1:-1:-1;;;881:590:7;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;881:590:7;;;;:::o;:::-;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;881:590:7;;;;;;;;;;;;-1:-1:-1;;;881:590:7;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;881:590:7;;;;;;;;;;;;;;;;;;;;4338:263:9;881:590:7;;;4537:56:9;;;881:590:7;;;;;;;;-1:-1:-1;;;;;;881:590:7;;;;;;;;;;-1:-1:-1;;;;;;881:590:7;;;;;4537:56:9;;;;881:590:7;4537:56:9;:::i;:::-;881:590:7;4527:67:9;;4338:263;:::o;881:590:7:-;;;;:::o;:::-;;;-1:-1:-1;;;881:590:7;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;881:590:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;881:590:7;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;881:590:7;;;;;;;;;;;;-1:-1:-1;;;881:590:7;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;881:590:7;;;;;;;;;;;;;;;;;;;;;;245:3:109;881:590:7;;;;;;;;:::o;:::-;-1:-1:-1;;881:590:7;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;881:590:7;;;;;;;;;:::o;3405:215:81:-;-1:-1:-1;;;;;881:590:7;;;;3489:22:81;;3485:91;;-1:-1:-1;;;;;;;;;;;881:590:7;;-1:-1:-1;;;;;;881:590:7;;;;;;;;3975:40:81;-1:-1:-1;;3975:40:81;3405:215::o;3485:91::-;881:590:7;;-1:-1:-1;;;3534:31:81;;3509:1;3534:31;;;881:590:7;;;3534:31:81;2658:162;-1:-1:-1;;;;;;;;;;;881:590:7;-1:-1:-1;;;;;881:590:7;966:10:84;2717:23:81;2713:101;;2658:162::o;2713:101::-;881:590:7;;-1:-1:-1;;;2763:40:81;;966:10:84;2763:40:81;;;881:590:7;;;2763:40:81;3326:384:85;-1:-1:-1;;;;;;;;;;;1847:1:85;881:590:7;;3526:20:85;3522:88;;1847:1;881:590:7;;3326:384:85:o;3522:88::-;881:590:7;;-1:-1:-1;;;3569:30:85;;;;;3734:1969:120;;4050:154;3734:1969;;;4111:21;;;;4134:22;;;;4158:29;;;;;4050:154;;:::i;:::-;4218:8;;4214:64;;4365:24;;;;;881:590:7;4111:21:120;;;4400;881:590:7;4365:63:120;4361:156;;-1:-1:-1;;4628:3:120;4365:24;;;4595;881:590:7;;4591:35:120;;;;;881:590:7;4673:27:120;:73;4365:24;4673:27;;4647:99;4673:27;;:::i;:::-;;:34;881:590:7;4710:27:120;4365:24;;;;4710;:27;:::i;:::-;;881:590:7;4673:73:120;;:::i;:::-;4647:99;;:::i;:::-;4628:3;881:590:7;4576:13:120;;;4591:35;;;;;;;4771:17;;881:590:7;4771:50:120;4767:148;;-1:-1:-1;;;5010:3:120;4365:24;;;4977;881:590:7;;4973:35:120;;;;;4365:24;5050:27;;:73;:27;;:::i;:::-;;:34;881:590:7;5087:27:120;4365:24;;;;5087;:27;:::i;5050:73::-;5180:17;5174:53;5180:17;;5207:19;;;;;:::i;:::-;5174:53;;:::i;:::-;881:590:7;;;;;;;;;5245:25:120;5241:83;;4111:21;5412:24;4111:21;;;;5412;:24;:::i;:::-;;4365;5438:27;4365:24;;;;5438;:27;:::i;:::-;;5467:22;;;;;881:590:7;6562:32:117;881:590:7;;6562:32:117;:::i;:::-;6609:13;-1:-1:-1;6641:3:117;881:590:7;;6624:15:117;;;;;4365:24:120;-1:-1:-1;340:4:109;6693:7:117;1139:19:119;6693:7:117;;;;:::i;:::-;;881:590:7;;;:::i;:::-;;1139:19:119;:::i;:::-;881:590:7;1099:66:119;5467:22:120;881:590:7;1099:66:119;;;;881:590:7;;;;;;;340:4:109;;;881:590:7;340:4:109;;881:590:7;340:4:109;881:590:7;;340:4:109;;;;;;;;;:::i;:::-;;;1099:66:119;;;;;;;;;:::i;:::-;5467:22:120;881:590:7;;;;;;;340:4:109;;;;:::i;:::-;;;1092:74:119;;;;;;;;881:590:7;1092:74:119;-1:-1:-1;1092:74:119;5467:22:120;881:590:7;;;;;:::i;:::-;;;;1200:43:119;4365:24:120;1200:43:119;;881:590:7;5467:22:120;1200:43:119;;881:590:7;6660:41:117;;;;:::i;:::-;;;;;;:::i;:::-;;881:590:7;6609:13:117;;1092:74:119;5467:22:120;881:590:7;;-1:-1:-1;881:590:7;;;;;6624:15:117;;;;;;;;;;;;-1:-1:-1;7486:15:117;7466:43;5467:22:120;7486:15:117;;;881:590:7;7466:43:117;:::i;:::-;7525:13;;7599:3;881:590:7;;7540:27:117;;;;:57;;;7599:3;7540:57;;;7640:43;;7715:18;7640:43;5467:22:120;7640:43:117;7747:24;7640:43;7599:3;7640:43;;:::i;:::-;7486:15;;7715;:18;:::i;:::-;;7697:36;;;;:::i;:::-;;;;;;:::i;:::-;;7747:24;:::i;:::-;7599:3;;:::i;:::-;7525:13;;;7540:57;;;;;;;;;;;;7904:28;4365:24:120;7919:12:117;;881:590:7;7904:28:117;:::i;:::-;881:590:7;;;;;;;;;1092:74:119;881:590:7;;;;;;;-1:-1:-1;7868:68:117;;8112:66;7868:68;;;;7950:29;;7946:89;;7520:262;8112:66;;;;;;;;:::i;:::-;8045:133;;;;8193:21;8188:137;881:590:7;;;8188:137:117;598:9:118;;;;;506:11:110;598:9:118;;491:11:110;616:10:118;;491:11:110;;:::i;:::-;881:590:7;;;506:11:110;;;;;:::i;:::-;881:590:7;;;491:26:110;598:62:118;;;;8188:137:117;598:97:118;;;;8188:137:117;5358:152:120;;;5337:272;;5622:20;881:590:7;5622:20:120;;;;:::i;:::-;5010:3;881:590:7;4958:13:120;;;;;5337:272;-1:-1:-1;;;5543:51:120;-1:-1:-1;;;5543:51:120:o;598:97:118:-;5467:22:120;665:12:118;;;;;881:590:7;681:13:118;;881:590:7;665:29:118;598:97;;;;:62;631:9;;;4365:24:120;631:9:118;;;649:10;;506:11:110;491;4365:24:120;649:10:118;;;491:11:110;;:::i;:::-;506;;:::i;:::-;881:590:7;;;491:26:110;598:62:118;;;;8244:3:117;7486:15;;;5467:22:120;7486:15:117;;8220;881:590:7;;8216:26:117;;;;;8295:18;;;;8274:40;8295:18;;:::i;:::-;;8274:40;;:::i;:::-;8244:3;881:590:7;8193:21:117;;;;;8216:26;;;;;;;;7946:89;7995:29;;-1:-1:-1;7946:89:117;;7540:57;7486:15;5467:22:120;7486:15:117;;7575;881:590:7;7571:26:117;;7540:57;;5241:83:120;5290:19;;;;;;;-1:-1:-1;5290:19:120;;:::o;4973:35::-;;;;;881:590:7;5663:33:120;-1:-1:-1;3734:1969:120;:::o;4767:148::-;4837:67;-1:-1:-1;4837:67:120;4852:51;4837:67;:::o;4361:156::-;-1:-1:-1;;;4459:46:120;;4444:62::o;4214:64::-;4250:5;;-1:-1:-1;4242:25:120;:::o;9752:494::-;9910:16;;881:590:7;;;;9906:107:120;;881:590:7;;10190:49:120;-1:-1:-1;9752:494:120;:::o;9906:107::-;9951:51;-1:-1:-1;9951:51:120;9962:39;9951:51;:::o;3421:1606:10:-;881:590:7;;3685:5:10;881:590:7;-1:-1:-1;;;;;881:590:7;;3421:1606:10;;;-1:-1:-1;;;;;881:590:7;;;;-1:-1:-1;;881:590:7;;;;;;;;;;;;;;3685:37:10;;;;;;;;881:590:7;-1:-1:-1;3685:37:10;;;881:590:7;3685:37:10;;;;;;;;;;;;;;;;;;3421:1606;881:590:7;;;-1:-1:-1;3668:60:10;3664:253;;881:590:7;;4020:16:10;;;;881:590:7;;;;;;4040:37:10;;;;3685;4040;;881:590:7;4040:37:10;;881:590:7;4040:37:10;;;;;;;;;;;;;;;;;;3421:1606;4040:46;;;881:590:7;;-1:-1:-1;4020:66:10;4003:284;;4364:16;;;881:590:7;;;-1:-1:-1;;;4384:28:10;;3685:37;4384:28;;881:590:7;;;;4384:28:10;881:590:7;;;4384:28:10;;;;;;;;;;;;;;;;;;3421:1606;4364:48;;4360:244;;881:590:7;;;;;;;;4722:37:10;;;;;;;3685;4722;;881:590:7;4722:37:10;;;;;;;;;;;;;;;;3421:1606;4722:46;;881:590:7;;;;;;;;;;4783:13:10;881:590:7;;;4703:93:10;4686:313;;5009:11;;;;3720:1;3421:1606;:::o;4686:313::-;4911:37;881:590:7;;;-1:-1:-1;;;;;;;;;;;4826:136:10;;;4976:12;:::o;4722:37::-;;;;;;;;;;;;;:::i;:::-;;;;;881:590:7;;;;;;;;4360:244:10;881:590:7;;;;;;;4518:35:10;881:590:7;;;-1:-1:-1;;;;;;;;;;;4433:134:10;;;4581:12;:::o;4384:28::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;881:590:7;;;;;;;;;4384:28:10;;;;;;;;;881:590:7;;;;;;;;;4003:284:10;881:590:7;;;;;;3720:1:10;881:590:7;;;-1:-1:-1;;;;;;;;;;;4116:134:10;;;4264:12;:::o;4040:37::-;;;;;;;;;;;;;:::i;:::-;;;;;3664:253;881:590:7;;;;;;;;-1:-1:-1;;;;;;;;;;;3749:131:10;;;3894:12;:::o;3685:37::-;;;;;;;;;;;;;:::i;:::-;;;;;881:590:7;;;;;;;;;767:118:110;881:590:7;;876:4:110;;;;881:590:7;;;-1:-1:-1;;;;;;881:590:7;;;848:33:110;;;881:590:7;;;-1:-1:-1;;881:590:7;;;;;;848:33:110;;;881:590:7;848:33:110;:::i;:::-;881:590:7;;;-1:-1:-1;;881:590:7;;;;;;;;;;;767:118:110;833:49;;;;767:118;:::o;881:590:7:-;;;;;;;;;;;;;;;;;7760:1276:120;;;;;;881:590:7;;8239:23:120;;;;;;;;8264;;;;;;881:590:7;;;;;;;;;8162:139:120;;;;;881:590:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;881:590:7;;;;;;-1:-1:-1;;;881:590:7;;;;;;;;;;;;;;8162:139:120;;;;881:590:7;;-1:-1:-1;;;;;881:590:7;8162:139:120;;;;;;;-1:-1:-1;8162:139:120;;;881:590:7;8161:140:120;;8144:264;;881:590:7;;;;8487:37:120;8483:128;;-1:-1:-1;8664:3:120;881:590:7;;8641:21:120;;;;;8834:54;8739:26;:12;;;;:::i;:::-;;:16;:26;:::i;:::-;8767;:12;;;;;:::i;:::-;;:16;;:26;:::i;:::-;8795:12;;;;;;:::i;:::-;;:19;881:590:7;;;;;;;;;;8722:93:120;;;881:590:7;;;;;;;;;;;;8722:93:120;;;;;:::i;:::-;8865:13;;;;:::i;:::-;;8834:54;;:::i;:::-;8833:55;8829:147;;881:590:7;;8626:13:120;;8829:147;8908:53;;;;;;-1:-1:-1;8908:53:120;8923:37;8908:53;:::o;8641:21::-;;;;;;;881:590:7;8996:33:120;-1:-1:-1;7760:1276:120;:::o;8483:128::-;8540:60;;;;;-1:-1:-1;8540:60:120;8555:44;8540:60;:::o;8144:264::-;8326:71;;;;;-1:-1:-1;8326:71:120;8162:139;8326:71;:::o;8162:139::-;;;;;;;;;;;;;;:::i;:::-;;;881:590:7;;;;;;;;;;;;;8162:139:120;;;;;;;;;;881:590:7;;;-1:-1:-1;881:590:7;;;;;;;;;;;;;;-1:-1:-1;881:590:7;;;;;;-1:-1:-1;881:590:7;;;;;;;;11712:571:120;;;11872:13;;;11868:83;;881:590:7;;11964:21:120;;;:44;;;;;11712:571;11960:118;;;12120:13;;;;:::i;:::-;881:590:7;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;-1:-1:-1;881:590:7;;;;;;12149:18:120;;;12169:8;;;;;;12244:32;;;;;-1:-1:-1;11712:571:120;:::o;12179:3::-;12216:8;12198:26;12216:8;881:590:7;12216:8:120;;;:::i;:::-;;12202:10;;;;:::i;:::-;12198:26;;;;;:::i;:::-;;;;:::i;:::-;;881:590:7;12149:18:120;;881:590:7;;;;;;;;;;;;;11960:118:120;12024:43;;;12039:27;12024:43;:::o;11964:44::-;11989:19;;;;11964:44;;;11868:83;11901:39;;;11916:23;11901:39;:::o;881:590:7:-;;;;;;;:::i;:::-;-1:-1:-1;881:590:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;881:590:7;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;669:1128:113;860:15;;;881:590:7;;669:1128:113;;;;879:1;860:20;;879:1;;900:15;;;881:590:7;896:78:113;;856:248;1150:9;;;881:590:7;;;;;-1:-1:-1;1150:28:113;1146:71;;-1:-1:-1;340:4:109;1150:9:113;881:590:7;860:15:113;881:590:7;959:45:114;881:590:7;959:45:114;;;;881:590:7;;;;340:4:109;881:590:7;;;;;;;;340:4:109;;;:::i;:::-;;;959:45:114;879:1:113;959:45:114;;;;;;;:::i;340:4:109:-;;;952:53:114;;;;;;;;-1:-1:-1;952:53:114;1463:15:113;;881:590:7;;;1463:27:113;1459:190;;881:590:7;1682:68:113;881:590:7;;;;;;1682:68:113;;:::i;:::-;1769:20;669:1128;:::o;1459:190::-;-1:-1:-1;881:590:7;879:1:113;1510:20;879:1;;-1:-1:-1;879:1:113;;1558:14;1550:23;:::o;1506:133::-;1612:12;;-1:-1:-1;1612:12:113;:::o;1146:71::-;1194:12;;;;;-1:-1:-1;1194:12:113;:::o;896:78::-;947:12;;;;-1:-1:-1;947:12:113;:::o;856:248::-;1020:45;994:15;;881:590:7;1038:9:113;;;;881:590:7;1020:45:113;:::i;:::-;994:71;856:248;990:114;1081:12;;;;-1:-1:-1;1081:12:113;:::o;881:590:7:-;-1:-1:-1;;881:590:7;;;;;;;:::o;7084:141:82:-;881:590:7;8837:64:82;881:590:7;;;;7150:18:82;7146:73;;7084:141::o;7146:73::-;881:590:7;;-1:-1:-1;;;7191:17:82;;;;;1078:881:111;;;-1:-1:-1;556:72:111;564:1;881:590:7;;;;563:30:111;;;;881:590:7;;;;;;556:72:111;881:590:7;;;;-1:-1:-1;881:590:7;;;;;-1:-1:-1;881:590:7;563:30:111;;;;;;245:3:109;881:590:7;;;;;;;;1293:48:111;;;:::i;:::-;1444:14;564:1;1444:14;;;:::i;:::-;881:590:7;1556:24:111;;;;:::i;:::-;1549:31;;1556:24;;1592:17;;;;:::o;1545:412::-;1723:25;;-1:-1:-1;1723:25:111;564:1;1723:25;;564:1;;1760:8;;;564:1;1760:8;:::o;1719:238::-;1889:26;;1871:79;1889:26;1917:32;1889:26;;:::i;:::-;1917:32;;:::i;:::-;1871:79;;:::i;:::-;1867:83;;;:::i;1994:1076:113:-;;;2170:14;;2166:106;;2298:1;2285:14;;2281:166;;881:590:7;;2460:21:113;2456:94;;2577:25;;;:::i;:::-;2645:41;2665:20;881:590:7;;2665:20:113;:::i;:::-;2645:41;;:::i;:::-;2700:13;;;;2696:191;;2932:13;;2916:76;2932:13;;2947:19;2932:13;;:::i;2947:19::-;2916:76;;:::i;:::-;3020:31;881:590:7;3030:20:113;3009:54;881:590:7;;3030:20:113;:::i;:::-;3020:31;;:::i;:::-;881:590:7;3009:54:113;:::i;2696:191::-;2748:54;;;;:::i;:::-;;2844:31;2823:53;2748:54;881:590:7;2854:20:113;881:590:7;;2854:20:113;:::i;2844:31::-;881:590:7;2823:53:113;;:::i;2456:94::-;881:590:7;;-1:-1:-1;;;2497:42:113;;881:590:7;2497:42:113;;;881:590:7;;;;;;;;;;;;;;2497:42:113;2281:166;881:590:7;;;;;2315:93:113;;2421:15;:::o;2315:93::-;881:590:7;;-1:-1:-1;;;2360:33:113;;881:590:7;2360:33:113;;;881:590:7;;;;;;;;;;;;;2497:42:113;2166:106;881:590:7;;-1:-1:-1;;;2200:61:113;;881:590:7;2200:61:113;;;881:590:7;;;;;;;;;;;-1:-1:-1;;;881:590:7;;;;;;2497:42:113;8581:286:117;;;8692:26;-1:-1:-1;9138:85:117;9145:6;;;:23;;;9138:85;9145:23;;;9184:7;;;:::i;:::-;881:590:7;9099:1:117;881:590:7;9138:85:117;;;9145:23;;;8751:11;9145:23;8742:21;9145:23;;8751:11;:::i;:::-;8742:21;:::i;:::-;-1:-1:-1;;881:590:7;;;;;;;;8781:11:117;9099:1;8781:11;;;8777:57;;881:590:7;;8581:286:117;:::o;8777:57::-;881:590:7;;;8808:15:117;:::o;9145:23::-;9155:8;;9099:1;9155:8;:13;9145:23;;2330:492:111;2692:1;2687:6;;881:590:7;;2718:11:111;;;:::i;:::-;-1:-1:-1;;881:590:7;;;;;;;2692:1:111;881:590:7;;2774:6:111;;;2770:36;;2330:492;:::o;2770:36::-;2692:1;881:590:7;2330:492:111;:::o;9968:2088:117:-;;;;;;;881:590:7;;:::i;:::-;;10308:1:117;10293:11;;;;:::i;:::-;:16;10289:674;;881:590:7;;11148:21:117;;;;:46;;;9968:2088;11144:148;;11497:71;11379:11;11364:27;11379:11;;;;:::i;:::-;11364:27;:::i;:::-;11535:9;;;;;:::i;:::-;11497:71;;;;:::i;:::-;-1:-1:-1;11497:71:117;;11683:83;;11497:71;;;;11714:9;;;;:::i;:::-;11683:83;;:::i;:::-;;;;;;881:590:7;;;;10308:1:117;11836:18;11832:98;;11967:23;;;:::i;:::-;12000:49;;;-1:-1:-1;9968:2088:117;:::o;11832:98::-;11870:49;;;;-1:-1:-1;11870:49:117;:::o;11144:148::-;11237:15;;;;;11217:64;11237:15;;;;;;11217:64;:::i;:::-;11210:71;;;;;;:::o;11148:46::-;11182:12;;;;881:590:7;11173:21:117;;;11148:46;;10289:674;881:590:7;;;;;;;;;;10410:23:117;;:47;;;;10289:674;10406:274;;;10908:15;;10888:64;10908:15;;;10888:64;:::i;10406:274::-;881:590:7;;10593:72:117;;-1:-1:-1;881:590:7;;;;-1:-1:-1;10593:72:117;:::i;10410:47::-;10445:12;;;;;881:590:7;-1:-1:-1;10410:47:117;;;1530:769:119;;881:590:7;;:::i;:::-;;1663:26:119;1676:5;;1683;;1663:26;;:::i;:::-;1695:20;1676:5;881:590:7;;;;;;;;;:::i;:::-;;;;;;;;;506:11:110;1725:5:119;;491:11:110;1739:24:119;;:::i;:::-;491:11:110;;:::i;:::-;881:590:7;;;506:11:110;;;;;:::i;:::-;881:590:7;;;491:26:110;1721:226:119;881:590:7;;;1782:24:119;;:::i;:::-;1721:226;;2051:15;:5;;:15;:::i;:::-;2080:5;;:15;:5;;;;:15;:::i;:::-;2109:8;;881:590:7;2131:5:119;;:15;:5;;:15;:::i;:::-;2160:5;:15;:5;;;;:15;:::i;:::-;2189:8;;881:590:7;;;;;1986:221:119;;;;;881:590:7;;;;;;;389:4:109;;;881:590:7;;389:4:109;;;881:590:7;389:4:109;;;881:590:7;;389:4:109;;;881:590:7;;389:4:109;;;881:590:7;389:4:109;;;881:590:7;389:4:109;1986:221:119;;881:590:7;;;;;;-1:-1:-1;;;;;881:590:7;;;;;;;;340:4:109;1676:5:119;881:590:7;;;;;;340:4:109;;;;:::i;:::-;;;1970:243:119;;;;;;;;1676:5;1970:243;881:590:7;;;;;;;:::i;:::-;;;2248:31:119;;881:590:7;2248:31:119;;881:590:7;1530:769:119;:::o;1970:243::-;881:590:7;;;1676:5:119;881:590:7;;;;;1721:226:119;1823:5;;1837:24;;506:11:110;491;1837:24:119;;:::i;:::-;491:11:110;;:::i;506:::-;881:590:7;;;491:26:110;1819:128:119;881:590:7;;;1880:5:119;;;;1819:128;1721:226;;1819:128;1914:26;1927:5;;;;1934;;;;1914:26;;:::i;:::-;1819:128;1721:226;;4625:582:99;;4797:8;;-1:-1:-1;881:590:7;;5874:21:99;:17;;6046:142;;;;;;5870:383;881:590:7;;-1:-1:-1;;;6225:17:99;;;;;4793:408;881:590:7;;5045:22:99;:49;;;4793:408;5041:119;;5173:17;;:::o;5041:119::-;881:590:7;;-1:-1:-1;;;5121:24:99;;-1:-1:-1;;;;;881:590:7;;;5121:24:99;;;881:590:7;;;5121:24:99;5045:49;5071:18;;;:23;5045:49;;3537:544:113;;;881:590:7;;3791:19:113;;3762:132;;881:590:7;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;;881:590:7;;;:::i;:::-;;;;;;;2183:1:113;3989:8;;;;;;-1:-1:-1;4064:10:113;;-1:-1:-1;;3537:544:113:o;3999:3::-;4036:8;;3766:44;4036:8;;;:::i;:::-;881:590:7;4018:26:113;;;;:::i;:::-;881:590:7;;3969:18:113;;3762:132;881:590:7;;-1:-1:-1;;;3826:57:113;;881:590:7;3826:57:113;;;881:590:7;;;;;;;;;;;-1:-1:-1;;;881:590:7;;;;;;3826:57:113;415:157:114;340:4:109;-1:-1:-1;415:157:114;516:52;415:157;881:590:7;;516:52:114;;;;881:590:7;;;;;;;;;;;;;;;516:52:114;;;;;:::i;340:4:109:-;;;509:60:114;;;;;;;;-1:-1:-1;509:60:114;415:157;:::o;2090:159:111:-;2148:17;2164:1;2172:56;2179:6;;;2234:12;2090:159;:::o;2172:56::-;2197:7;;;;:::i;:::-;881:590:7;2220:1:111;881:590:7;2172:56:111;;;12546:372:117;;12823:38;12546:372;;;;;881:590:7;;:::i;:::-;;12823:38:117;:::i;:::-;12871:40;;;;;;12546:372::o;13433:371::-;;13709:37;13433:371;;881:590:7;;:::i;13709:37:117:-;13756:41;;;;;13433:371;:::o;230:177:119:-;;-1:-1:-1;881:590:7;;;;;;:::i;:::-;;;;;;613:11:110;;;:::i;:::-;-1:-1:-1;;881:590:7;627:11:110;;;:::i;:::-;881:590:7;;;613:25:110;881:590:7;;;359:8:119;;:::o;330:75::-;390:8;;;:::o;513:157:109:-;-1:-1:-1;881:590:7;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;881:590:7;;-1:-1:-1;;881:590:7;592:75:109;;881:590:7;;513:157:109:o;493:180:119:-;;-1:-1:-1;881:590:7;;;;;;:::i;:::-;;;;;;737:11:110;;;:::i;:::-;-1:-1:-1;;881:590:7;751:11:110;;;:::i;:::-;881:590:7;;;737:25:110;881:590:7;;;625:8:119;;:::o;14105:382:117:-;;;;;881:590:7;;:::i;:::-;;;;14287:17:117;;;:41;;;;;14105:382;14287:56;;;;;14105:382;14283:151;;;14451:11;;;:::i;:::-;;14471:1;881:590:7;;;;;;;14443:37:117;;14303:1;14105:382;:::o;14283:151::-;881:590:7;;;;:::i;:::-;14398:25:117;;14418:4;14398:25;:::o;14287:56::-;14332:11;;;;;14287:56;;;:41;14308:20;;;;-1:-1:-1;14287:41:117;;",
        "linkReferences": {},
        "immutableReferences": {
            "52728": [
                {
                    "start": 5712,
                    "length": 32
                },
                {
                    "start": 6134,
                    "length": 32
                }
            ]
        }
    },
    "methodIdentifiers": {
        "UPGRADE_INTERFACE_VERSION()": "ad3cb1cc",
        "chain()": "c763e5a1",
        "chainOracle()": "bfcf4495",
        "challengeDataRootInclusion(uint256,uint8,uint32)": "3323d3e4",
        "challengeFee()": "1bd8f9ca",
        "challengeL2Header(uint256,uint256)": "5ae45d8b",
        "challengePeriod()": "f3f480d9",
        "challengeReward()": "3ea0c15e",
        "challengeWindow()": "861a1412",
        "claimDAChallengeReward(bytes32)": "51ad15cf",
        "claimL2HeaderChallengeReward(bytes32)": "17eef5b1",
        "daChallenges(bytes32)": "113e70fb",
        "daNamespace()": "55c20747",
        "daOracle()": "ee223c02",
        "dataRootInclusionChallengeKey(bytes32,uint8,uint32)": "1b0ec391",
        "defendDataRootInclusion(bytes32,(bytes[],(uint256,uint256,((bytes1,bytes28),(bytes1,bytes28),bytes32)[])[],(bytes1,bytes28),((bytes1,bytes28),(bytes1,bytes28),bytes32)[],(bytes32[],uint256,uint256)[],(uint256,(uint256,bytes32),(bytes32[],uint256,uint256))))": "0eea9bab",
        "defendL2Header(bytes32,bytes32,bytes32)": "0200501d",
        "defender()": "7f4c91c5",
        "finalizationSeconds()": "98e2dffb",
        "initialize(address,address,address)": "c0c53b8b",
        "invalidateHeader(uint256)": "5dade412",
        "isDAChallengeEnabled()": "80a2558a",
        "isHeaderChallengeEnabled()": "325898b1",
        "isL2HeaderChallengeEnabled()": "39e87c22",
        "l2HeaderChallengeHash(bytes32,uint256)": "fa8e8de2",
        "l2HeaderChallenges(bytes32)": "6da802c8",
        "maxBundleSize()": "4c1b6e4b",
        "owner()": "8da5cb5b",
        "proxiableUUID()": "52d1902d",
        "renounceOwnership()": "715018a6",
        "setChallengeFee(uint256)": "35bf82f6",
        "setChallengePeriod(uint256)": "5d475fdd",
        "setChallengeReward(uint256)": "7d3020ad",
        "setChallengeWindow(uint256)": "01c1aa0d",
        "setDANamespace((bytes1,bytes28))": "4329b101",
        "setDAOracle(address)": "a3be6534",
        "setDefender(address)": "163a7177",
        "setMaxBundleSize(uint256)": "bc677451",
        "settleDataRootInclusion(bytes32)": "5bba0ea9",
        "settleL2HeaderChallenge(bytes32)": "f8a22c6c",
        "toggleDAChallenge(bool)": "485bc239",
        "toggleHeaderChallenge(bool)": "988c6671",
        "toggleL2HeaderChallenge(bool)": "95618a28",
        "transferOwnership(address)": "f2fde38b",
        "upgradeToAndCall(address,bytes)": "4f1ef286"
    },
    "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"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\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_blockHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_pointerIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"_shareIndex\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_blockIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_expiry\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"enum ChallengeDataAvailability.ChallengeDAStatus\",\"name\":\"_status\",\"type\":\"uint8\"}],\"name\":\"ChallengeDAUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_blockIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enum ChallengeHeader.InvalidHeaderReason\",\"name\":\"_reason\",\"type\":\"uint8\"}],\"name\":\"InvalidHeader\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"challengeHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"l2Number\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"rblock\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"enum ChallengeL2Header.L2HeaderChallengeStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"L2HeaderChallengeUpdate\",\"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\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"chain\",\"outputs\":[{\"internalType\":\"contract ICanonicalStateChain\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"chainOracle\",\"outputs\":[{\"internalType\":\"contract IChainOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blockIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"_pointerIndex\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"_shareIndex\",\"type\":\"uint32\"}],\"name\":\"challengeDataRootInclusion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"challengeFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_rblockNum\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_l2Num\",\"type\":\"uint256\"}],\"name\":\"challengeL2Header\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"challengePeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"challengeReward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"challengeWindow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_challengeKey\",\"type\":\"bytes32\"}],\"name\":\"claimDAChallengeReward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_challengeKey\",\"type\":\"bytes32\"}],\"name\":\"claimL2HeaderChallengeReward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"daChallenges\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"blockIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"pointerIndex\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"shareIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"challenger\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"enum ChallengeDataAvailability.ChallengeDAStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"claimed\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"daNamespace\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"version\",\"type\":\"bytes1\"},{\"internalType\":\"bytes28\",\"name\":\"id\",\"type\":\"bytes28\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"daOracle\",\"outputs\":[{\"internalType\":\"contract IDAOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"_pointerIndex\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"_shareIndex\",\"type\":\"uint32\"}],\"name\":\"dataRootInclusionChallengeKey\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_challengeKey\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"beginKey\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endKey\",\"type\":\"uint256\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes1\",\"name\":\"version\",\"type\":\"bytes1\"},{\"internalType\":\"bytes28\",\"name\":\"id\",\"type\":\"bytes28\"}],\"internalType\":\"struct Namespace\",\"name\":\"min\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes1\",\"name\":\"version\",\"type\":\"bytes1\"},{\"internalType\":\"bytes28\",\"name\":\"id\",\"type\":\"bytes28\"}],\"internalType\":\"struct Namespace\",\"name\":\"max\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"internalType\":\"struct NamespaceNode[]\",\"name\":\"sideNodes\",\"type\":\"tuple[]\"}],\"internalType\":\"struct NamespaceMerkleMultiproof[]\",\"name\":\"shareProofs\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bytes1\",\"name\":\"version\",\"type\":\"bytes1\"},{\"internalType\":\"bytes28\",\"name\":\"id\",\"type\":\"bytes28\"}],\"internalType\":\"struct Namespace\",\"name\":\"namespace\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes1\",\"name\":\"version\",\"type\":\"bytes1\"},{\"internalType\":\"bytes28\",\"name\":\"id\",\"type\":\"bytes28\"}],\"internalType\":\"struct Namespace\",\"name\":\"min\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes1\",\"name\":\"version\",\"type\":\"bytes1\"},{\"internalType\":\"bytes28\",\"name\":\"id\",\"type\":\"bytes28\"}],\"internalType\":\"struct Namespace\",\"name\":\"max\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"internalType\":\"struct NamespaceNode[]\",\"name\":\"rowRoots\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"sideNodes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"key\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"numLeaves\",\"type\":\"uint256\"}],\"internalType\":\"struct BinaryMerkleProof[]\",\"name\":\"rowProofs\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tupleRootNonce\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"dataRoot\",\"type\":\"bytes32\"}],\"internalType\":\"struct DataRootTuple\",\"name\":\"tuple\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"sideNodes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"key\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"numLeaves\",\"type\":\"uint256\"}],\"internalType\":\"struct BinaryMerkleProof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"internalType\":\"struct AttestationProof\",\"name\":\"attestationProof\",\"type\":\"tuple\"}],\"internalType\":\"struct SharesProof\",\"name\":\"_proof\",\"type\":\"tuple\"}],\"name\":\"defendDataRootInclusion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_challengeHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_headerHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_headerPrevHash\",\"type\":\"bytes32\"}],\"name\":\"defendL2Header\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"finalizationSeconds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_chain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_daOracle\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_chainOracle\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blockIndex\",\"type\":\"uint256\"}],\"name\":\"invalidateHeader\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDAChallengeEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isHeaderChallengeEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isL2HeaderChallengeEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_rblockHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_l2Num\",\"type\":\"uint256\"}],\"name\":\"l2HeaderChallengeHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"l2HeaderChallenges\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNum\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"rblock\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct ChallengeL2Header.L2HeaderPointer\",\"name\":\"header\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"rblock\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct ChallengeL2Header.L2HeaderPointer\",\"name\":\"prevHeader\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"challengeEnd\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"challenger\",\"type\":\"address\"},{\"internalType\":\"enum ChallengeL2Header.L2HeaderChallengeStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"claimed\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxBundleSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_challengeFee\",\"type\":\"uint256\"}],\"name\":\"setChallengeFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_challengePeriod\",\"type\":\"uint256\"}],\"name\":\"setChallengePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_challengeReward\",\"type\":\"uint256\"}],\"name\":\"setChallengeReward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_challengeWindow\",\"type\":\"uint256\"}],\"name\":\"setChallengeWindow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes1\",\"name\":\"version\",\"type\":\"bytes1\"},{\"internalType\":\"bytes28\",\"name\":\"id\",\"type\":\"bytes28\"}],\"internalType\":\"struct Namespace\",\"name\":\"_namespace\",\"type\":\"tuple\"}],\"name\":\"setDANamespace\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_daOracle\",\"type\":\"address\"}],\"name\":\"setDAOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_defender\",\"type\":\"address\"}],\"name\":\"setDefender\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_maxBundleSize\",\"type\":\"uint256\"}],\"name\":\"setMaxBundleSize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_challengeKey\",\"type\":\"bytes32\"}],\"name\":\"settleDataRootInclusion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_challengeHash\",\"type\":\"bytes32\"}],\"name\":\"settleL2HeaderChallenge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"toggleDAChallenge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"toggleHeaderChallenge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"toggleL2HeaderChallenge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"LightLink Hummingbird\",\"custom:proxied\":\"@title  Challenge\",\"custom:version\":\"v1.1.0-beta\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"ChallengeDAUpdate(bytes32,uint256,uint32,uint256,uint256,uint8)\":{\"params\":{\"_blockHash\":\"- The block hash of the block being challenged.\",\"_blockIndex\":\"- The index of the block being challenged.\",\"_expiry\":\"- The expiry time of the challenge.\",\"_pointerIndex\":\"- The index of the celestia pointer being challenged.\",\"_shareIndex\":\"- The index of the share being challenged.\",\"_status\":\"- The status of the challenge.\"}},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"InvalidHeader(uint256,bytes32,uint8)\":{\"params\":{\"_blockIndex\":\"- The block index of the invalid header.\",\"_hash\":\"- The hash of the invalid header.\",\"_reason\":\"- The reason the header is invalid.\"}},\"L2HeaderChallengeUpdate(bytes32,uint256,bytes32,uint256,uint8)\":{\"params\":{\"challengeHash\":\"- The hash of the challenge.\",\"expiry\":\"- The expiry time of the challenge.\",\"l2Number\":\"- The number of the L2 header being challenged.\",\"rblock\":\"- The rblock hash of the L2 header.\",\"status\":\"- The status of the challenge.\"}},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"challengeDataRootInclusion(uint256,uint8,uint32)\":{\"params\":{\"_blockIndex\":\"- The index of the block to challenge.\",\"_pointerIndex\":\"- The index of the celestia pointer to challenge.\",\"_shareIndex\":\"- The index of the share to challenge.\"},\"returns\":{\"_0\":\"The index of the block being challenged.\"}},\"challengeL2Header(uint256,uint256)\":{\"params\":{\"_l2Num\":\"- The number of the L2 header.\",\"_rblockNum\":\"- The rblock number of the L2 header.\"},\"returns\":{\"_0\":\"The hash of the challenge.\"}},\"claimDAChallengeReward(bytes32)\":{\"params\":{\"_challengeKey\":\"- The reference key of the challenge.\"}},\"claimL2HeaderChallengeReward(bytes32)\":{\"params\":{\"_challengeKey\":\"- The key of the challenge.\"}},\"dataRootInclusionChallengeKey(bytes32,uint8,uint32)\":{\"params\":{\"_blockHash\":\"- The block hash of the block being challenged.\",\"_pointerIndex\":\"- The index of the celestia pointer being challenged.\",\"_shareIndex\":\"- The index of the share being challenged.\"},\"returns\":{\"_0\":\"The reference key for the DA challenge.\"}},\"defendDataRootInclusion(bytes32,(bytes[],(uint256,uint256,((bytes1,bytes28),(bytes1,bytes28),bytes32)[])[],(bytes1,bytes28),((bytes1,bytes28),(bytes1,bytes28),bytes32)[],(bytes32[],uint256,uint256)[],(uint256,(uint256,bytes32),(bytes32[],uint256,uint256))))\":{\"params\":{\"_challengeKey\":\"- The reference key of the challenge.\",\"_proof\":\"- The proof of inclusion.\"}},\"defendL2Header(bytes32,bytes32,bytes32)\":{\"params\":{\"_challengeHash\":\"- The hash of the challenge.\",\"_headerHash\":\"- The hash of the L2 header.\",\"_headerPrevHash\":\"- The hash of the previous L2 header.\"}},\"finalizationSeconds()\":{\"returns\":{\"_0\":\"The total time in seconds for a block to be finalized.\"}},\"initialize(address,address,address)\":{\"params\":{\"_chain\":\"- The address of the chain contract.\",\"_chainOracle\":\"- The address of the chain oracle contract.\",\"_daOracle\":\"- The address of the data availability oracle.\"}},\"invalidateHeader(uint256)\":{\"params\":{\"_blockIndex\":\"- The block index of the header to challenge.\"}},\"l2HeaderChallengeHash(bytes32,uint256)\":{\"params\":{\"_l2Num\":\"- The number of the L2 header.\",\"_rblockHash\":\"- The rblock hash of the L2 header.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setChallengeFee(uint256)\":{\"details\":\"Only the owner can call this function.\",\"params\":{\"_challengeFee\":\"The new challenge fee.\"}},\"setChallengePeriod(uint256)\":{\"details\":\"Only the owner can call this function.\",\"params\":{\"_challengePeriod\":\"The new challenge period time.\"}},\"setChallengeReward(uint256)\":{\"details\":\"Only the owner can call this function.\",\"params\":{\"_challengeReward\":\"The new challenge reward.\"}},\"setChallengeWindow(uint256)\":{\"details\":\"Only the owner can call this function.\",\"params\":{\"_challengeWindow\":\"The new challenge window time.\"}},\"setDANamespace((bytes1,bytes28))\":{\"details\":\"Only the owner can call this function.\",\"params\":{\"_namespace\":\"The new namespace.\"}},\"setDAOracle(address)\":{\"details\":\"Only the owner can call this function.\",\"params\":{\"_daOracle\":\"The new data availability oracle address.\"}},\"setDefender(address)\":{\"details\":\"Only the owner can call this function.\",\"params\":{\"_defender\":\"The new defender address.\"}},\"setMaxBundleSize(uint256)\":{\"details\":\"Only the owner can call this function.\",\"params\":{\"_maxBundleSize\":\"- The new maximum bundle size.\"}},\"settleDataRootInclusion(bytes32)\":{\"params\":{\"_challengeKey\":\"- The reference key of the challenge.\"}},\"settleL2HeaderChallenge(bytes32)\":{\"details\":\"Can only be called after the challenge period has ended and a      defender has not responded.\",\"params\":{\"_challengeHash\":\"- The hash of the challenge.\"}},\"toggleDAChallenge(bool)\":{\"details\":\"Only the owner can call this function.\",\"params\":{\"_status\":\"- The status of the data availability challenges.\"}},\"toggleHeaderChallenge(bool)\":{\"details\":\"Only the owner can call this function.\",\"params\":{\"_status\":\"- The status to set.\"}},\"toggleL2HeaderChallenge(bool)\":{\"details\":\"Only the owner can call this function.\",\"params\":{\"_status\":\"- The status of the L2 header challenges.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"events\":{\"ChallengeDAUpdate(bytes32,uint256,uint32,uint256,uint256,uint8)\":{\"notice\":\"Emitted when a DA challenge is updated.\"},\"InvalidHeader(uint256,bytes32,uint8)\":{\"notice\":\"Emitted when a header is invalid.\"},\"L2HeaderChallengeUpdate(bytes32,uint256,bytes32,uint256,uint8)\":{\"notice\":\"Emitted when an L2 header challenge is updated.\"}},\"kind\":\"user\",\"methods\":{\"chain()\":{\"notice\":\"The address of the canonical state chain.\"},\"chainOracle()\":{\"notice\":\"The address of the chain oracle.\"},\"challengeDataRootInclusion(uint256,uint8,uint32)\":{\"notice\":\"Challenges the data root inclusion of a block.\"},\"challengeFee()\":{\"notice\":\"The fee required to make a challenge.\"},\"challengeL2Header(uint256,uint256)\":{\"notice\":\"Challenges an L2 header by providing the rblock number and the L2 number.\"},\"challengePeriod()\":{\"notice\":\"The period of time that a challenge is open for.\"},\"challengeReward()\":{\"notice\":\"The reward for successfully challenging a block.\"},\"challengeWindow()\":{\"notice\":\"Maximum age of a block that can be challenged.\"},\"claimDAChallengeReward(bytes32)\":{\"notice\":\"Claims the reward for a data root inclusion challenge.\"},\"claimL2HeaderChallengeReward(bytes32)\":{\"notice\":\"Allows the challender or defender to claim the reward for an L2 header challenge.\"},\"daChallenges(bytes32)\":{\"notice\":\"The mapping of challengeKey to challenges.\"},\"daNamespace()\":{\"notice\":\"The namespace used for data availability.\"},\"daOracle()\":{\"notice\":\"The address of the data availability oracle.\"},\"dataRootInclusionChallengeKey(bytes32,uint8,uint32)\":{\"notice\":\"Returns the reference key for a DA challenge.\"},\"defendDataRootInclusion(bytes32,(bytes[],(uint256,uint256,((bytes1,bytes28),(bytes1,bytes28),bytes32)[])[],(bytes1,bytes28),((bytes1,bytes28),(bytes1,bytes28),bytes32)[],(bytes32[],uint256,uint256)[],(uint256,(uint256,bytes32),(bytes32[],uint256,uint256))))\":{\"notice\":\"Defends the data root inclusion of a block.\"},\"defendL2Header(bytes32,bytes32,bytes32)\":{\"notice\":\"Defends an L2 header challenge by providing the L2 header and the previous L2 header.\"},\"defender()\":{\"notice\":\"The address of the defender.\"},\"initialize(address,address,address)\":{\"notice\":\"Initializes the Challenge contract.\"},\"invalidateHeader(uint256)\":{\"notice\":\"Invalidate challenges a block header by checking that the header is valid.\"},\"isDAChallengeEnabled()\":{\"notice\":\"The fee required to make a challenge.\"},\"isHeaderChallengeEnabled()\":{\"notice\":\"Whether the header challenge is enabled.\"},\"isL2HeaderChallengeEnabled()\":{\"notice\":\"Whether the L2 header challenge is enabled.\"},\"l2HeaderChallengeHash(bytes32,uint256)\":{\"notice\":\"Returns the hash of an L2 header challenge.\"},\"l2HeaderChallenges(bytes32)\":{\"notice\":\"Stores the L2 header challenges.\"},\"maxBundleSize()\":{\"notice\":\"The maximum bundle size.\"},\"setChallengeFee(uint256)\":{\"notice\":\"Sets the challenge fee in wei.\"},\"setChallengePeriod(uint256)\":{\"notice\":\"Sets the challenge period time in seconds.\"},\"setChallengeReward(uint256)\":{\"notice\":\"Sets the challenge reward in wei.\"},\"setChallengeWindow(uint256)\":{\"notice\":\"Sets the challenge window time in seconds.\"},\"setDANamespace((bytes1,bytes28))\":{\"notice\":\"Sets the namespace.\"},\"setDAOracle(address)\":{\"notice\":\"Sets the data availability oracle address.\"},\"setDefender(address)\":{\"notice\":\"Sets the defender address.\"},\"setMaxBundleSize(uint256)\":{\"notice\":\"Sets the maximum bundle size.\"},\"settleDataRootInclusion(bytes32)\":{\"notice\":\"Settles the data root inclusion challenge in favor of the challenger         if the defender does not respond within the challenge period.\"},\"settleL2HeaderChallenge(bytes32)\":{\"notice\":\"Settles an L2 header challenge by paying out the challenger.\"},\"toggleDAChallenge(bool)\":{\"notice\":\"Toggles the data availability challenges on or off.\"},\"toggleHeaderChallenge(bool)\":{\"notice\":\"Enables or disables the header challenge.\"},\"toggleL2HeaderChallenge(bool)\":{\"notice\":\"Toggles the L2 header challenges on or off.\"}},\"notice\":\"Challenge is the entry point for all validity challenges.         Challenge mechanisms allow for the verification of rollup         validity, with invalid blocks causing a rollback.         Challenges require a fee, incentivizing valid challenges         and discouraging frivolous ones, while compensating         defenders for their costs.         Challenges must be made within a specified time window         post-block publication, with late challenges being         rejected. The rules for fees and timing are outlined in         ChallengeBase.sol.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/L1/challenge/Challenge.sol\":\"Challenge\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":@openzeppelin/contracts/=node_modules/@openzeppelin/contracts/\",\":blobstream-contracts/=node_modules/blobstream-contracts/\",\":ds-test/=node_modules/blobstream-contracts/lib/ds-test/src/\",\":erc4626-tests/=node_modules/blobstream-contracts/lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-contracts-upgradeable/=node_modules/blobstream-contracts/lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=node_modules/openzeppelin-contracts/\",\":solady/=node_modules/solady/\",\":tree/=node_modules/blobstream-contracts/src/lib/tree/\",\":verifier/=node_modules/blobstream-contracts/src/lib/verifier/\"],\"viaIR\":true},\"sources\":{\"contracts/L1/challenge/Challenge.sol\":{\"keccak256\":\"0x3c73c84aac5bc7f691dfd96d56be44cd0434c36330e8bc7904657ecb7a56969e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6ccec445035d81d3fb91420c48e3472c896d4e0f59e16d9ec26b496bad145b45\",\"dweb:/ipfs/QmY6RmBSYz4pyhgQWvSJP6Bea7WuwjPPbnL7gwewtXKtT2\"]},\"contracts/L1/challenge/ChallengeBase.sol\":{\"keccak256\":\"0xcc35a67f7a2e77e99c6cf4f984a8f6e47fa79ec31693c50508afcfc348b4366a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://23928a40e0aba5340d4f5a10bd3e8d248f64380b3069426fbb0f775e7fdfa60e\",\"dweb:/ipfs/QmUWvmMvSHAdzEubLy6eMRbfryiXeEtcJrpr5maJ9qqhE9\"]},\"contracts/L1/challenge/ChallengeDataAvailability.sol\":{\"keccak256\":\"0x3537a66240ef4880ed1eb3f17af54a941dd2dc04d1927d64edb2468d7365bbf6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://583201d496e95341c0f2a91fc570bc3ac66ea986f9132c08783081e39e646b15\",\"dweb:/ipfs/QmZGpbpEhjzSpHXwRX1xTL1DDndLnYxq56MKVKEBnJS6gy\"]},\"contracts/L1/challenge/ChallengeHeader.sol\":{\"keccak256\":\"0xccd240c72a79c8ad4be89d7c7cd8e9d3dd79f75e510d7ddfa52d0bb9a1a08fe2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://28a9eeaae0fdb559a89897ccba647a7c2821ed35c38d91d211293b67f31d5006\",\"dweb:/ipfs/QmTEzUeQzvKtJB4M4sQghasCMzNj3VbqkGoiavHeADqdEW\"]},\"contracts/L1/challenge/ChallengeL2Header.sol\":{\"keccak256\":\"0xe646370d42c576a52eea394380afd1e862aff7cc4b87bf0257a49a12c37dda61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://017a2181384467a4e930973435b070464580eca3a56bba292eaf502796ba0271\",\"dweb:/ipfs/QmUT4YsEUhoszt1pk2a1zw9d3pAprXxhKmCjsRLtahDASm\"]},\"contracts/L1/interfaces/ICanonicalStateChain.sol\":{\"keccak256\":\"0x4ca083f6a7c7fa2603d7e800e01f15cd32949a0cbf257b787401d976563f8818\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb7cd4a8bd907685270c216f4479563d5cdf915a3de0bbe541b0f388e8e157ab\",\"dweb:/ipfs/QmWBMPEZ1XknxSQ4Ka9ACkgc59X3JwS633rehv261Gq7A3\"]},\"contracts/L1/interfaces/IChainOracle.sol\":{\"keccak256\":\"0x0fc66dc53f5caaf0d24351d247a9d8c2ebba2ef2a37762b2ec8197d2b38c5ac7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://102f36f2564e3dea688fa3f925dcef1322ad4d4bae93fffbffc0a9e59b85ac9c\",\"dweb:/ipfs/QmU3CvxFiDE8XBVPLn7pTo4JKv6jNVH7SGybmTq3RN2eNq\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6683e6ade6985d394d32baaef5eea0d8b9ff0b3eca86ae413d6cdde114a9930\",\"dweb:/ipfs/QmdBE8T1BTddZxpdECMsb3KiCFyjNWmxcCddYrWFTXmWPj\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45\",\"dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9\",\"dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a\",\"dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"node_modules/blobstream-contracts/src/Constants.sol\":{\"keccak256\":\"0x0236491c1b01a038105ecfb270a39db52d7591f2200dbc1af079c4d8ed689f82\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://ae7f1a1f1ddbac033f113f59c4e7899e0eb6ce5dacf048a64a49a863d2207eb5\",\"dweb:/ipfs/QmbAfGGjVm3wP2Vhted3J9a65C3h1TPJ1Rg5BYiJxrEp1f\"]},\"node_modules/blobstream-contracts/src/DataRootTuple.sol\":{\"keccak256\":\"0x0526597d14a6d7f258ec48e434a9b60c9a8781764a8f23c878d49926daeb5d1c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://06ee253f8d0f58dbe66c64cb5d2945182ba3bced088167472d8f953cec421916\",\"dweb:/ipfs/QmUF9jjr6bH3pPgjGAZqYhsUn7EevqU7kZn8RBqQ4EoU2w\"]},\"node_modules/blobstream-contracts/src/IDAOracle.sol\":{\"keccak256\":\"0xc35648b17d3587bc3a627f67a328874db536ee24c11b970c3c57226d69a32eec\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://362610301e6057d10777c84111d4bb43af53af75a488fb8ab8666a775302a3fc\",\"dweb:/ipfs/QmURgSTYhiguV1oCUARaTTWrpFHg5nMEtxhPVcpUDuEKq6\"]},\"node_modules/blobstream-contracts/src/lib/tree/Constants.sol\":{\"keccak256\":\"0x2050b2be8a739ce250cc5cea1556936c7937915b5d7fde269dd70e8e7eb660c4\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://946ea30d1001048a800f60bb24d2ab7ecf5f92ae2abd212f3f855e37a6840ce7\",\"dweb:/ipfs/QmW2PnhAB5h2eCCM6Vafg8ZUpBttjLTbBhtXjJh3SSrYEN\"]},\"node_modules/blobstream-contracts/src/lib/tree/Types.sol\":{\"keccak256\":\"0xa47e9e20fef88264acdf1fc6bc0b3bb9f23c7022f5de8d203a1014895a606958\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://d480249b6adf8730bffcf26eed5902eb9fd1d56d11f931b35a9e19c6415b3f47\",\"dweb:/ipfs/QmPCrcMmQdNMYG232WxEg2zZRFvXQqdEZgwQNMaDJ2oNab\"]},\"node_modules/blobstream-contracts/src/lib/tree/Utils.sol\":{\"keccak256\":\"0x99c4bf181cfa7526d30841bcd56519d6deba6a1b86369d03fb592c448e754471\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5295f0e22409e0bf103f21ce2e71bcbe462fc3da6e3132774b3cf12d57a5d53b\",\"dweb:/ipfs/QmNssaKFNN81GEP6t8TunPo3LJ9wXkHzLpznopCLPRj1mn\"]},\"node_modules/blobstream-contracts/src/lib/tree/binary/BinaryMerkleProof.sol\":{\"keccak256\":\"0x9fb953284b455b544091f058fdb11ac73928093517333909c0744d9319410688\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://938230a60210345fe7cc661708c4fe0db663a5f5b5306f05fe4023b44f104b6e\",\"dweb:/ipfs/QmUvcJuDmwnbRzXX5qgV4Mckg6ujvMeo46SrTPvgpPhFSF\"]},\"node_modules/blobstream-contracts/src/lib/tree/binary/BinaryMerkleTree.sol\":{\"keccak256\":\"0x4747d8a3b271ee27830efe78a51cd0b218910813365d277f4b8c12c0140d98a6\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b09be70400d922c694985a19083ec1f29dcb0b9eb122ebb031f48d056009b80f\",\"dweb:/ipfs/Qmdme1mBubWVRx4FshtGXgAig1aMw5NhpgYdMWXSjiGarn\"]},\"node_modules/blobstream-contracts/src/lib/tree/binary/TreeHasher.sol\":{\"keccak256\":\"0x2f16501eac14f6e2a61de29d3aa10e3aaf8e0a594fc9cf8dc2d955bb2f6d54e0\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://984a2e5d52cfdd38f2c597bddc4a2de8ad1e4dd9c81008376569a29c74fa963e\",\"dweb:/ipfs/QmaXhfHD58Jv4nSw3qw2hGwbDSPKDjFzPNYWm9Y4KWiigm\"]},\"node_modules/blobstream-contracts/src/lib/tree/namespace/NamespaceMerkleMultiproof.sol\":{\"keccak256\":\"0x6ae0f3e8413808e06b570202a27a08e3f1236add1b00b5cb4b4ac17049e1960c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://7eb719a34154df1d37597b8181db8cb452e5cec0439d01ac03d599ed3c845ea2\",\"dweb:/ipfs/QmXtRBmaT1ECKvpoGX2KZq9w5asLGTrwkzpF9oxxJ32a2D\"]},\"node_modules/blobstream-contracts/src/lib/tree/namespace/NamespaceMerkleProof.sol\":{\"keccak256\":\"0x52eef9f87e34c11d6f8eda6f4a508b420c0193430c4035f49088069b6217ab40\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://eaa5b17bca4461bc593cd2bf7bfe428df58f1626e93871d34c9acdaea9288837\",\"dweb:/ipfs/QmSzpv7RN2RcGBPcFhPn5EUVYXx1XYh8swKG2nN5o6wamQ\"]},\"node_modules/blobstream-contracts/src/lib/tree/namespace/NamespaceMerkleTree.sol\":{\"keccak256\":\"0xaeffefd9fbda5111670c8f22c40344ad188390e7f35096d819eb541f48400dde\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://515fdfb25d4c86a924a64d9b86592b7f361a053663b59a61bd90301041322e16\",\"dweb:/ipfs/QmXPoLXDoUJPVQw88PJoPN57YUuaS3G7XTQAu8dQDhkrf9\"]},\"node_modules/blobstream-contracts/src/lib/tree/namespace/NamespaceNode.sol\":{\"keccak256\":\"0xdffc1a51e6dbe88cbe1b89f947290b93070b4e4094fbb412d157c0862a2cee55\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://17f86103bc514a1b293ef0d800737e4a0f6ebd2d82abd0c158e3ba15d69b5875\",\"dweb:/ipfs/QmfCbafto3cWSRTJVvCUG86qv1V1rDDqRDejdZQUctDy6r\"]},\"node_modules/blobstream-contracts/src/lib/tree/namespace/TreeHasher.sol\":{\"keccak256\":\"0x068b2ef59d4b63bbc495494e21bd95371af0e8bac3ae38b739d8cfe4df6722cd\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://f4764165fba287d853d840f5b03ea07874bf0c2b9cd276704432c1da8c8139cb\",\"dweb:/ipfs/QmWKtd9LoSSw6EF8QvQGynfC1qCZFSQuBXjyRZy9ngZxa8\"]},\"node_modules/blobstream-contracts/src/lib/verifier/DAVerifier.sol\":{\"keccak256\":\"0x95d2ea98319ffb1c3e7c8660438bba25d59a955dcbdba0fe2c22c1f0cd7b0988\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4f3dcfa9c6979ff03062b22909d967b1ad0f392c84db192215a8b0f6a2996376\",\"dweb:/ipfs/Qmcr2SFvLEYawfYtUmdy3AXnAWxBZ9XYtvCrw1hVLNMbp1\"]},\"node_modules/hardhat/console.sol\":{\"keccak256\":\"0x7434453e6d3b7d0e5d0eb7846ffdbc27f0ccf3b163591263739b628074dc103a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49355f780520494d1d5a0f01858385e51bb5280ce0ecfb960f16995065dca395\",\"dweb:/ipfs/QmSwJ6C5QLz6xKeQZS8wbwjU1KxRFTYfwbGmtzisd5sRW4\"]},\"node_modules/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xa548dd62e9e17616ae80a1e7ac7b1447ae377efc27fb9f7b4f4fbf5c0b0a1dfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d27e9ae3e67eb229444cd43d49db5be57c586155fd1d363b3b1f9bb1b7bb0087\",\"dweb:/ipfs/QmT2GFnpXsTWBs8bkeVJtQ4VNX7f3igxwB77JBCr4mDXb3\"]}},\"version\":1}",
    "metadata": {
        "compiler": {
            "version": "0.8.22+commit.4fc1097e"
        },
        "language": "Solidity",
        "output": {
            "abi": [
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "target",
                            "type": "address"
                        }
                    ],
                    "type": "error",
                    "name": "AddressEmptyCode"
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "implementation",
                            "type": "address"
                        }
                    ],
                    "type": "error",
                    "name": "ERC1967InvalidImplementation"
                },
                {
                    "inputs": [],
                    "type": "error",
                    "name": "ERC1967NonPayable"
                },
                {
                    "inputs": [],
                    "type": "error",
                    "name": "FailedInnerCall"
                },
                {
                    "inputs": [],
                    "type": "error",
                    "name": "InvalidInitialization"
                },
                {
                    "inputs": [],
                    "type": "error",
                    "name": "NotInitializing"
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "owner",
                            "type": "address"
                        }
                    ],
                    "type": "error",
                    "name": "OwnableInvalidOwner"
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "account",
                            "type": "address"
                        }
                    ],
                    "type": "error",
                    "name": "OwnableUnauthorizedAccount"
                },
                {
                    "inputs": [],
                    "type": "error",
                    "name": "ReentrancyGuardReentrantCall"
                },
                {
                    "inputs": [],
                    "type": "error",
                    "name": "UUPSUnauthorizedCallContext"
                },
                {
                    "inputs": [
                        {
                            "internalType": "bytes32",
                            "name": "slot",
                            "type": "bytes32"
                        }
                    ],
                    "type": "error",
                    "name": "UUPSUnsupportedProxiableUUID"
                },
                {
                    "inputs": [
                        {
                            "internalType": "bytes32",
                            "name": "_blockHash",
                            "type": "bytes32",
                            "indexed": true
                        },
                        {
                            "internalType": "uint256",
                            "name": "_pointerIndex",
                            "type": "uint256",
                            "indexed": true
                        },
                        {
                            "internalType": "uint32",
                            "name": "_shareIndex",
                            "type": "uint32",
                            "indexed": false
                        },
                        {
                            "internalType": "uint256",
                            "name": "_blockIndex",
                            "type": "uint256",
                            "indexed": false
                        },
                        {
                            "internalType": "uint256",
                            "name": "_expiry",
                            "type": "uint256",
                            "indexed": false
                        },
                        {
                            "internalType": "enum ChallengeDataAvailability.ChallengeDAStatus",
                            "name": "_status",
                            "type": "uint8",
                            "indexed": true
                        }
                    ],
                    "type": "event",
                    "name": "ChallengeDAUpdate",
                    "anonymous": false
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint64",
                            "name": "version",
                            "type": "uint64",
                            "indexed": false
                        }
                    ],
                    "type": "event",
                    "name": "Initialized",
                    "anonymous": false
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint256",
                            "name": "_blockIndex",
                            "type": "uint256",
                            "indexed": true
                        },
                        {
                            "internalType": "bytes32",
                            "name": "_hash",
                            "type": "bytes32",
                            "indexed": true
                        },
                        {
                            "internalType": "enum ChallengeHeader.InvalidHeaderReason",
                            "name": "_reason",
                            "type": "uint8",
                            "indexed": true
                        }
                    ],
                    "type": "event",
                    "name": "InvalidHeader",
                    "anonymous": false
                },
                {
                    "inputs": [
                        {
                            "internalType": "bytes32",
                            "name": "challengeHash",
                            "type": "bytes32",
                            "indexed": true
                        },
                        {
                            "internalType": "uint256",
                            "name": "l2Number",
                            "type": "uint256",
                            "indexed": true
                        },
                        {
                            "internalType": "bytes32",
                            "name": "rblock",
                            "type": "bytes32",
                            "indexed": false
                        },
                        {
                            "internalType": "uint256",
                            "name": "expiry",
                            "type": "uint256",
                            "indexed": false
                        },
                        {
                            "internalType": "enum ChallengeL2Header.L2HeaderChallengeStatus",
                            "name": "status",
                            "type": "uint8",
                            "indexed": true
                        }
                    ],
                    "type": "event",
                    "name": "L2HeaderChallengeUpdate",
                    "anonymous": false
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "previousOwner",
                            "type": "address",
                            "indexed": true
                        },
                        {
                            "internalType": "address",
                            "name": "newOwner",
                            "type": "address",
                            "indexed": true
                        }
                    ],
                    "type": "event",
                    "name": "OwnershipTransferred",
                    "anonymous": false
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "implementation",
                            "type": "address",
                            "indexed": true
                        }
                    ],
                    "type": "event",
                    "name": "Upgraded",
                    "anonymous": false
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "UPGRADE_INTERFACE_VERSION",
                    "outputs": [
                        {
                            "internalType": "string",
                            "name": "",
                            "type": "string"
                        }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "chain",
                    "outputs": [
                        {
                            "internalType": "contract ICanonicalStateChain",
                            "name": "",
                            "type": "address"
                        }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "chainOracle",
                    "outputs": [
                        {
                            "internalType": "contract IChainOracle",
                            "name": "",
                            "type": "address"
                        }
                    ]
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint256",
                            "name": "_blockIndex",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint8",
                            "name": "_pointerIndex",
                            "type": "uint8"
                        },
                        {
                            "internalType": "uint32",
                            "name": "_shareIndex",
                            "type": "uint32"
                        }
                    ],
                    "stateMutability": "payable",
                    "type": "function",
                    "name": "challengeDataRootInclusion",
                    "outputs": [
                        {
                            "internalType": "uint256",
                            "name": "",
                            "type": "uint256"
                        }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "challengeFee",
                    "outputs": [
                        {
                            "internalType": "uint256",
                            "name": "",
                            "type": "uint256"
                        }
                    ]
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint256",
                            "name": "_rblockNum",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "_l2Num",
                            "type": "uint256"
                        }
                    ],
                    "stateMutability": "payable",
                    "type": "function",
                    "name": "challengeL2Header",
                    "outputs": [
                        {
                            "internalType": "bytes32",
                            "name": "",
                            "type": "bytes32"
                        }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "challengePeriod",
                    "outputs": [
                        {
                            "internalType": "uint256",
                            "name": "",
                            "type": "uint256"
                        }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "challengeReward",
                    "outputs": [
                        {
                            "internalType": "uint256",
                            "name": "",
                            "type": "uint256"
                        }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "challengeWindow",
                    "outputs": [
                        {
                            "internalType": "uint256",
                            "name": "",
                            "type": "uint256"
                        }
                    ]
                },
                {
                    "inputs": [
                        {
                            "internalType": "bytes32",
                            "name": "_challengeKey",
                            "type": "bytes32"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "claimDAChallengeReward"
                },
                {
                    "inputs": [
                        {
                            "internalType": "bytes32",
                            "name": "_challengeKey",
                            "type": "bytes32"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "claimL2HeaderChallengeReward"
                },
                {
                    "inputs": [
                        {
                            "internalType": "bytes32",
                            "name": "",
                            "type": "bytes32"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "daChallenges",
                    "outputs": [
                        {
                            "internalType": "bytes32",
                            "name": "blockHash",
                            "type": "bytes32"
                        },
                        {
                            "internalType": "uint256",
                            "name": "blockIndex",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint8",
                            "name": "pointerIndex",
                            "type": "uint8"
                        },
                        {
                            "internalType": "uint32",
                            "name": "shareIndex",
                            "type": "uint32"
                        },
                        {
                            "internalType": "address",
                            "name": "challenger",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "expiry",
                            "type": "uint256"
                        },
                        {
                            "internalType": "enum ChallengeDataAvailability.ChallengeDAStatus",
                            "name": "status",
                            "type": "uint8"
                        },
                        {
                            "internalType": "bool",
                            "name": "claimed",
                            "type": "bool"
                        }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "daNamespace",
                    "outputs": [
                        {
                            "internalType": "bytes1",
                            "name": "version",
                            "type": "bytes1"
                        },
                        {
                            "internalType": "bytes28",
                            "name": "id",
                            "type": "bytes28"
                        }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "daOracle",
                    "outputs": [
                        {
                            "internalType": "contract IDAOracle",
                            "name": "",
                            "type": "address"
                        }
                    ]
                },
                {
                    "inputs": [
                        {
                            "internalType": "bytes32",
                            "name": "_blockHash",
                            "type": "bytes32"
                        },
                        {
                            "internalType": "uint8",
                            "name": "_pointerIndex",
                            "type": "uint8"
                        },
                        {
                            "internalType": "uint32",
                            "name": "_shareIndex",
                            "type": "uint32"
                        }
                    ],
                    "stateMutability": "pure",
                    "type": "function",
                    "name": "dataRootInclusionChallengeKey",
                    "outputs": [
                        {
                            "internalType": "bytes32",
                            "name": "",
                            "type": "bytes32"
                        }
                    ]
                },
                {
                    "inputs": [
                        {
                            "internalType": "bytes32",
                            "name": "_challengeKey",
                            "type": "bytes32"
                        },
                        {
                            "internalType": "struct SharesProof",
                            "name": "_proof",
                            "type": "tuple",
                            "components": [
                                {
                                    "internalType": "bytes[]",
                                    "name": "data",
                                    "type": "bytes[]"
                                },
                                {
                                    "internalType": "struct NamespaceMerkleMultiproof[]",
                                    "name": "shareProofs",
                                    "type": "tuple[]",
                                    "components": [
                                        {
                                            "internalType": "uint256",
                                            "name": "beginKey",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "endKey",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "struct NamespaceNode[]",
                                            "name": "sideNodes",
                                            "type": "tuple[]",
                                            "components": [
                                                {
                                                    "internalType": "struct Namespace",
                                                    "name": "min",
                                                    "type": "tuple",
                                                    "components": [
                                                        {
                                                            "internalType": "bytes1",
                                                            "name": "version",
                                                            "type": "bytes1"
                                                        },
                                                        {
                                                            "internalType": "bytes28",
                                                            "name": "id",
                                                            "type": "bytes28"
                                                        }
                                                    ]
                                                },
                                                {
                                                    "internalType": "struct Namespace",
                                                    "name": "max",
                                                    "type": "tuple",
                                                    "components": [
                                                        {
                                                            "internalType": "bytes1",
                                                            "name": "version",
                                                            "type": "bytes1"
                                                        },
                                                        {
                                                            "internalType": "bytes28",
                                                            "name": "id",
                                                            "type": "bytes28"
                                                        }
                                                    ]
                                                },
                                                {
                                                    "internalType": "bytes32",
                                                    "name": "digest",
                                                    "type": "bytes32"
                                                }
                                            ]
                                        }
                                    ]
                                },
                                {
                                    "internalType": "struct Namespace",
                                    "name": "namespace",
                                    "type": "tuple",
                                    "components": [
                                        {
                                            "internalType": "bytes1",
                                            "name": "version",
                                            "type": "bytes1"
                                        },
                                        {
                                            "internalType": "bytes28",
                                            "name": "id",
                                            "type": "bytes28"
                                        }
                                    ]
                                },
                                {
                                    "internalType": "struct NamespaceNode[]",
                                    "name": "rowRoots",
                                    "type": "tuple[]",
                                    "components": [
                                        {
                                            "internalType": "struct Namespace",
                                            "name": "min",
                                            "type": "tuple",
                                            "components": [
                                                {
                                                    "internalType": "bytes1",
                                                    "name": "version",
                                                    "type": "bytes1"
                                                },
                                                {
                                                    "internalType": "bytes28",
                                                    "name": "id",
                                                    "type": "bytes28"
                                                }
                                            ]
                                        },
                                        {
                                            "internalType": "struct Namespace",
                                            "name": "max",
                                            "type": "tuple",
                                            "components": [
                                                {
                                                    "internalType": "bytes1",
                                                    "name": "version",
                                                    "type": "bytes1"
                                                },
                                                {
                                                    "internalType": "bytes28",
                                                    "name": "id",
                                                    "type": "bytes28"
                                                }
                                            ]
                                        },
                                        {
                                            "internalType": "bytes32",
                                            "name": "digest",
                                            "type": "bytes32"
                                        }
                                    ]
                                },
                                {
                                    "internalType": "struct BinaryMerkleProof[]",
                                    "name": "rowProofs",
                                    "type": "tuple[]",
                                    "components": [
                                        {
                                            "internalType": "bytes32[]",
                                            "name": "sideNodes",
                                            "type": "bytes32[]"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "key",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "numLeaves",
                                            "type": "uint256"
                                        }
                                    ]
                                },
                                {
                                    "internalType": "struct AttestationProof",
                                    "name": "attestationProof",
                                    "type": "tuple",
                                    "components": [
                                        {
                                            "internalType": "uint256",
                                            "name": "tupleRootNonce",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "struct DataRootTuple",
                                            "name": "tuple",
                                            "type": "tuple",
                                            "components": [
                                                {
                                                    "internalType": "uint256",
                                                    "name": "height",
                                                    "type": "uint256"
                                                },
                                                {
                                                    "internalType": "bytes32",
                                                    "name": "dataRoot",
                                                    "type": "bytes32"
                                                }
                                            ]
                                        },
                                        {
                                            "internalType": "struct BinaryMerkleProof",
                                            "name": "proof",
                                            "type": "tuple",
                                            "components": [
                                                {
                                                    "internalType": "bytes32[]",
                                                    "name": "sideNodes",
                                                    "type": "bytes32[]"
                                                },
                                                {
                                                    "internalType": "uint256",
                                                    "name": "key",
                                                    "type": "uint256"
                                                },
                                                {
                                                    "internalType": "uint256",
                                                    "name": "numLeaves",
                                                    "type": "uint256"
                                                }
                                            ]
                                        }
                                    ]
                                }
                            ]
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "defendDataRootInclusion"
                },
                {
                    "inputs": [
                        {
                            "internalType": "bytes32",
                            "name": "_challengeHash",
                            "type": "bytes32"
                        },
                        {
                            "internalType": "bytes32",
                            "name": "_headerHash",
                            "type": "bytes32"
                        },
                        {
                            "internalType": "bytes32",
                            "name": "_headerPrevHash",
                            "type": "bytes32"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "defendL2Header"
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "defender",
                    "outputs": [
                        {
                            "internalType": "address",
                            "name": "",
                            "type": "address"
                        }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "finalizationSeconds",
                    "outputs": [
                        {
                            "internalType": "uint256",
                            "name": "",
                            "type": "uint256"
                        }
                    ]
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "_chain",
                            "type": "address"
                        },
                        {
                            "internalType": "address",
                            "name": "_daOracle",
                            "type": "address"
                        },
                        {
                            "internalType": "address",
                            "name": "_chainOracle",
                            "type": "address"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "initialize"
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint256",
                            "name": "_blockIndex",
                            "type": "uint256"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "invalidateHeader"
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "isDAChallengeEnabled",
                    "outputs": [
                        {
                            "internalType": "bool",
                            "name": "",
                            "type": "bool"
                        }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "isHeaderChallengeEnabled",
                    "outputs": [
                        {
                            "internalType": "bool",
                            "name": "",
                            "type": "bool"
                        }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "isL2HeaderChallengeEnabled",
                    "outputs": [
                        {
                            "internalType": "bool",
                            "name": "",
                            "type": "bool"
                        }
                    ]
                },
                {
                    "inputs": [
                        {
                            "internalType": "bytes32",
                            "name": "_rblockHash",
                            "type": "bytes32"
                        },
                        {
                            "internalType": "uint256",
                            "name": "_l2Num",
                            "type": "uint256"
                        }
                    ],
                    "stateMutability": "pure",
                    "type": "function",
                    "name": "l2HeaderChallengeHash",
                    "outputs": [
                        {
                            "internalType": "bytes32",
                            "name": "",
                            "type": "bytes32"
                        }
                    ]
                },
                {
                    "inputs": [
                        {
                            "internalType": "bytes32",
                            "name": "",
                            "type": "bytes32"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "l2HeaderChallenges",
                    "outputs": [
                        {
                            "internalType": "uint256",
                            "name": "blockNum",
                            "type": "uint256"
                        },
                        {
                            "internalType": "struct ChallengeL2Header.L2HeaderPointer",
                            "name": "header",
                            "type": "tuple",
                            "components": [
                                {
                                    "internalType": "bytes32",
                                    "name": "rblock",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "number",
                                    "type": "uint256"
                                }
                            ]
                        },
                        {
                            "internalType": "struct ChallengeL2Header.L2HeaderPointer",
                            "name": "prevHeader",
                            "type": "tuple",
                            "components": [
                                {
                                    "internalType": "bytes32",
                                    "name": "rblock",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "number",
                                    "type": "uint256"
                                }
                            ]
                        },
                        {
                            "internalType": "uint256",
                            "name": "challengeEnd",
                            "type": "uint256"
                        },
                        {
                            "internalType": "address",
                            "name": "challenger",
                            "type": "address"
                        },
                        {
                            "internalType": "enum ChallengeL2Header.L2HeaderChallengeStatus",
                            "name": "status",
                            "type": "uint8"
                        },
                        {
                            "internalType": "bool",
                            "name": "claimed",
                            "type": "bool"
                        }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "maxBundleSize",
                    "outputs": [
                        {
                            "internalType": "uint256",
                            "name": "",
                            "type": "uint256"
                        }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "owner",
                    "outputs": [
                        {
                            "internalType": "address",
                            "name": "",
                            "type": "address"
                        }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "proxiableUUID",
                    "outputs": [
                        {
                            "internalType": "bytes32",
                            "name": "",
                            "type": "bytes32"
                        }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "renounceOwnership"
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint256",
                            "name": "_challengeFee",
                            "type": "uint256"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "setChallengeFee"
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint256",
                            "name": "_challengePeriod",
                            "type": "uint256"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "setChallengePeriod"
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint256",
                            "name": "_challengeReward",
                            "type": "uint256"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "setChallengeReward"
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint256",
                            "name": "_challengeWindow",
                            "type": "uint256"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "setChallengeWindow"
                },
                {
                    "inputs": [
                        {
                            "internalType": "struct Namespace",
                            "name": "_namespace",
                            "type": "tuple",
                            "components": [
                                {
                                    "internalType": "bytes1",
                                    "name": "version",
                                    "type": "bytes1"
                                },
                                {
                                    "internalType": "bytes28",
                                    "name": "id",
                                    "type": "bytes28"
                                }
                            ]
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "setDANamespace"
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "_daOracle",
                            "type": "address"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "setDAOracle"
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "_defender",
                            "type": "address"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "setDefender"
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint256",
                            "name": "_maxBundleSize",
                            "type": "uint256"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "setMaxBundleSize"
                },
                {
                    "inputs": [
                        {
                            "internalType": "bytes32",
                            "name": "_challengeKey",
                            "type": "bytes32"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "settleDataRootInclusion"
                },
                {
                    "inputs": [
                        {
                            "internalType": "bytes32",
                            "name": "_challengeHash",
                            "type": "bytes32"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "settleL2HeaderChallenge"
                },
                {
                    "inputs": [
                        {
                            "internalType": "bool",
                            "name": "_status",
                            "type": "bool"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "toggleDAChallenge"
                },
                {
                    "inputs": [
                        {
                            "internalType": "bool",
                            "name": "_status",
                            "type": "bool"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "toggleHeaderChallenge"
                },
                {
                    "inputs": [
                        {
                            "internalType": "bool",
                            "name": "_status",
                            "type": "bool"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "toggleL2HeaderChallenge"
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "newOwner",
                            "type": "address"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "transferOwnership"
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "newImplementation",
                            "type": "address"
                        },
                        {
                            "internalType": "bytes",
                            "name": "data",
                            "type": "bytes"
                        }
                    ],
                    "stateMutability": "payable",
                    "type": "function",
                    "name": "upgradeToAndCall"
                }
            ],
            "devdoc": {
                "kind": "dev",
                "methods": {
                    "challengeDataRootInclusion(uint256,uint8,uint32)": {
                        "params": {
                            "_blockIndex": "- The index of the block to challenge.",
                            "_pointerIndex": "- The index of the celestia pointer to challenge.",
                            "_shareIndex": "- The index of the share to challenge."
                        },
                        "returns": {
                            "_0": "The index of the block being challenged."
                        }
                    },
                    "challengeL2Header(uint256,uint256)": {
                        "params": {
                            "_l2Num": "- The number of the L2 header.",
                            "_rblockNum": "- The rblock number of the L2 header."
                        },
                        "returns": {
                            "_0": "The hash of the challenge."
                        }
                    },
                    "claimDAChallengeReward(bytes32)": {
                        "params": {
                            "_challengeKey": "- The reference key of the challenge."
                        }
                    },
                    "claimL2HeaderChallengeReward(bytes32)": {
                        "params": {
                            "_challengeKey": "- The key of the challenge."
                        }
                    },
                    "dataRootInclusionChallengeKey(bytes32,uint8,uint32)": {
                        "params": {
                            "_blockHash": "- The block hash of the block being challenged.",
                            "_pointerIndex": "- The index of the celestia pointer being challenged.",
                            "_shareIndex": "- The index of the share being challenged."
                        },
                        "returns": {
                            "_0": "The reference key for the DA challenge."
                        }
                    },
                    "defendDataRootInclusion(bytes32,(bytes[],(uint256,uint256,((bytes1,bytes28),(bytes1,bytes28),bytes32)[])[],(bytes1,bytes28),((bytes1,bytes28),(bytes1,bytes28),bytes32)[],(bytes32[],uint256,uint256)[],(uint256,(uint256,bytes32),(bytes32[],uint256,uint256))))": {
                        "params": {
                            "_challengeKey": "- The reference key of the challenge.",
                            "_proof": "- The proof of inclusion."
                        }
                    },
                    "defendL2Header(bytes32,bytes32,bytes32)": {
                        "params": {
                            "_challengeHash": "- The hash of the challenge.",
                            "_headerHash": "- The hash of the L2 header.",
                            "_headerPrevHash": "- The hash of the previous L2 header."
                        }
                    },
                    "finalizationSeconds()": {
                        "returns": {
                            "_0": "The total time in seconds for a block to be finalized."
                        }
                    },
                    "initialize(address,address,address)": {
                        "params": {
                            "_chain": "- The address of the chain contract.",
                            "_chainOracle": "- The address of the chain oracle contract.",
                            "_daOracle": "- The address of the data availability oracle."
                        }
                    },
                    "invalidateHeader(uint256)": {
                        "params": {
                            "_blockIndex": "- The block index of the header to challenge."
                        }
                    },
                    "l2HeaderChallengeHash(bytes32,uint256)": {
                        "params": {
                            "_l2Num": "- The number of the L2 header.",
                            "_rblockHash": "- The rblock hash of the L2 header."
                        }
                    },
                    "owner()": {
                        "details": "Returns the address of the current owner."
                    },
                    "proxiableUUID()": {
                        "details": "Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."
                    },
                    "renounceOwnership()": {
                        "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."
                    },
                    "setChallengeFee(uint256)": {
                        "details": "Only the owner can call this function.",
                        "params": {
                            "_challengeFee": "The new challenge fee."
                        }
                    },
                    "setChallengePeriod(uint256)": {
                        "details": "Only the owner can call this function.",
                        "params": {
                            "_challengePeriod": "The new challenge period time."
                        }
                    },
                    "setChallengeReward(uint256)": {
                        "details": "Only the owner can call this function.",
                        "params": {
                            "_challengeReward": "The new challenge reward."
                        }
                    },
                    "setChallengeWindow(uint256)": {
                        "details": "Only the owner can call this function.",
                        "params": {
                            "_challengeWindow": "The new challenge window time."
                        }
                    },
                    "setDANamespace((bytes1,bytes28))": {
                        "details": "Only the owner can call this function.",
                        "params": {
                            "_namespace": "The new namespace."
                        }
                    },
                    "setDAOracle(address)": {
                        "details": "Only the owner can call this function.",
                        "params": {
                            "_daOracle": "The new data availability oracle address."
                        }
                    },
                    "setDefender(address)": {
                        "details": "Only the owner can call this function.",
                        "params": {
                            "_defender": "The new defender address."
                        }
                    },
                    "setMaxBundleSize(uint256)": {
                        "details": "Only the owner can call this function.",
                        "params": {
                            "_maxBundleSize": "- The new maximum bundle size."
                        }
                    },
                    "settleDataRootInclusion(bytes32)": {
                        "params": {
                            "_challengeKey": "- The reference key of the challenge."
                        }
                    },
                    "settleL2HeaderChallenge(bytes32)": {
                        "details": "Can only be called after the challenge period has ended and a      defender has not responded.",
                        "params": {
                            "_challengeHash": "- The hash of the challenge."
                        }
                    },
                    "toggleDAChallenge(bool)": {
                        "details": "Only the owner can call this function.",
                        "params": {
                            "_status": "- The status of the data availability challenges."
                        }
                    },
                    "toggleHeaderChallenge(bool)": {
                        "details": "Only the owner can call this function.",
                        "params": {
                            "_status": "- The status to set."
                        }
                    },
                    "toggleL2HeaderChallenge(bool)": {
                        "details": "Only the owner can call this function.",
                        "params": {
                            "_status": "- The status of the L2 header challenges."
                        }
                    },
                    "transferOwnership(address)": {
                        "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
                    },
                    "upgradeToAndCall(address,bytes)": {
                        "custom:oz-upgrades-unsafe-allow-reachable": "delegatecall",
                        "details": "Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."
                    }
                },
                "version": 1
            },
            "userdoc": {
                "kind": "user",
                "methods": {
                    "chain()": {
                        "notice": "The address of the canonical state chain."
                    },
                    "chainOracle()": {
                        "notice": "The address of the chain oracle."
                    },
                    "challengeDataRootInclusion(uint256,uint8,uint32)": {
                        "notice": "Challenges the data root inclusion of a block."
                    },
                    "challengeFee()": {
                        "notice": "The fee required to make a challenge."
                    },
                    "challengeL2Header(uint256,uint256)": {
                        "notice": "Challenges an L2 header by providing the rblock number and the L2 number."
                    },
                    "challengePeriod()": {
                        "notice": "The period of time that a challenge is open for."
                    },
                    "challengeReward()": {
                        "notice": "The reward for successfully challenging a block."
                    },
                    "challengeWindow()": {
                        "notice": "Maximum age of a block that can be challenged."
                    },
                    "claimDAChallengeReward(bytes32)": {
                        "notice": "Claims the reward for a data root inclusion challenge."
                    },
                    "claimL2HeaderChallengeReward(bytes32)": {
                        "notice": "Allows the challender or defender to claim the reward for an L2 header challenge."
                    },
                    "daChallenges(bytes32)": {
                        "notice": "The mapping of challengeKey to challenges."
                    },
                    "daNamespace()": {
                        "notice": "The namespace used for data availability."
                    },
                    "daOracle()": {
                        "notice": "The address of the data availability oracle."
                    },
                    "dataRootInclusionChallengeKey(bytes32,uint8,uint32)": {
                        "notice": "Returns the reference key for a DA challenge."
                    },
                    "defendDataRootInclusion(bytes32,(bytes[],(uint256,uint256,((bytes1,bytes28),(bytes1,bytes28),bytes32)[])[],(bytes1,bytes28),((bytes1,bytes28),(bytes1,bytes28),bytes32)[],(bytes32[],uint256,uint256)[],(uint256,(uint256,bytes32),(bytes32[],uint256,uint256))))": {
                        "notice": "Defends the data root inclusion of a block."
                    },
                    "defendL2Header(bytes32,bytes32,bytes32)": {
                        "notice": "Defends an L2 header challenge by providing the L2 header and the previous L2 header."
                    },
                    "defender()": {
                        "notice": "The address of the defender."
                    },
                    "initialize(address,address,address)": {
                        "notice": "Initializes the Challenge contract."
                    },
                    "invalidateHeader(uint256)": {
                        "notice": "Invalidate challenges a block header by checking that the header is valid."
                    },
                    "isDAChallengeEnabled()": {
                        "notice": "The fee required to make a challenge."
                    },
                    "isHeaderChallengeEnabled()": {
                        "notice": "Whether the header challenge is enabled."
                    },
                    "isL2HeaderChallengeEnabled()": {
                        "notice": "Whether the L2 header challenge is enabled."
                    },
                    "l2HeaderChallengeHash(bytes32,uint256)": {
                        "notice": "Returns the hash of an L2 header challenge."
                    },
                    "l2HeaderChallenges(bytes32)": {
                        "notice": "Stores the L2 header challenges."
                    },
                    "maxBundleSize()": {
                        "notice": "The maximum bundle size."
                    },
                    "setChallengeFee(uint256)": {
                        "notice": "Sets the challenge fee in wei."
                    },
                    "setChallengePeriod(uint256)": {
                        "notice": "Sets the challenge period time in seconds."
                    },
                    "setChallengeReward(uint256)": {
                        "notice": "Sets the challenge reward in wei."
                    },
                    "setChallengeWindow(uint256)": {
                        "notice": "Sets the challenge window time in seconds."
                    },
                    "setDANamespace((bytes1,bytes28))": {
                        "notice": "Sets the namespace."
                    },
                    "setDAOracle(address)": {
                        "notice": "Sets the data availability oracle address."
                    },
                    "setDefender(address)": {
                        "notice": "Sets the defender address."
                    },
                    "setMaxBundleSize(uint256)": {
                        "notice": "Sets the maximum bundle size."
                    },
                    "settleDataRootInclusion(bytes32)": {
                        "notice": "Settles the data root inclusion challenge in favor of the challenger         if the defender does not respond within the challenge period."
                    },
                    "settleL2HeaderChallenge(bytes32)": {
                        "notice": "Settles an L2 header challenge by paying out the challenger."
                    },
                    "toggleDAChallenge(bool)": {
                        "notice": "Toggles the data availability challenges on or off."
                    },
                    "toggleHeaderChallenge(bool)": {
                        "notice": "Enables or disables the header challenge."
                    },
                    "toggleL2HeaderChallenge(bool)": {
                        "notice": "Toggles the L2 header challenges on or off."
                    }
                },
                "version": 1
            }
        },
        "settings": {
            "remappings": [
                "@openzeppelin/=node_modules/@openzeppelin/",
                "@openzeppelin/contracts/=node_modules/@openzeppelin/contracts/",
                "blobstream-contracts/=node_modules/blobstream-contracts/",
                "ds-test/=node_modules/blobstream-contracts/lib/ds-test/src/",
                "erc4626-tests/=node_modules/blobstream-contracts/lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/",
                "forge-std/=lib/forge-std/src/",
                "hardhat/=node_modules/hardhat/",
                "openzeppelin-contracts-upgradeable/=node_modules/blobstream-contracts/lib/openzeppelin-contracts-upgradeable/",
                "openzeppelin-contracts/=node_modules/openzeppelin-contracts/",
                "solady/=node_modules/solady/",
                "tree/=node_modules/blobstream-contracts/src/lib/tree/",
                "verifier/=node_modules/blobstream-contracts/src/lib/verifier/"
            ],
            "optimizer": {
                "enabled": true,
                "runs": 200
            },
            "metadata": {
                "bytecodeHash": "none"
            },
            "compilationTarget": {
                "contracts/L1/challenge/Challenge.sol": "Challenge"
            },
            "evmVersion": "paris",
            "libraries": {},
            "viaIR": true
        },
        "sources": {
            "contracts/L1/challenge/Challenge.sol": {
                "keccak256": "0x3c73c84aac5bc7f691dfd96d56be44cd0434c36330e8bc7904657ecb7a56969e",
                "urls": [
                    "bzz-raw://6ccec445035d81d3fb91420c48e3472c896d4e0f59e16d9ec26b496bad145b45",
                    "dweb:/ipfs/QmY6RmBSYz4pyhgQWvSJP6Bea7WuwjPPbnL7gwewtXKtT2"
                ],
                "license": "MIT"
            },
            "contracts/L1/challenge/ChallengeBase.sol": {
                "keccak256": "0xcc35a67f7a2e77e99c6cf4f984a8f6e47fa79ec31693c50508afcfc348b4366a",
                "urls": [
                    "bzz-raw://23928a40e0aba5340d4f5a10bd3e8d248f64380b3069426fbb0f775e7fdfa60e",
                    "dweb:/ipfs/QmUWvmMvSHAdzEubLy6eMRbfryiXeEtcJrpr5maJ9qqhE9"
                ],
                "license": "MIT"
            },
            "contracts/L1/challenge/ChallengeDataAvailability.sol": {
                "keccak256": "0x3537a66240ef4880ed1eb3f17af54a941dd2dc04d1927d64edb2468d7365bbf6",
                "urls": [
                    "bzz-raw://583201d496e95341c0f2a91fc570bc3ac66ea986f9132c08783081e39e646b15",
                    "dweb:/ipfs/QmZGpbpEhjzSpHXwRX1xTL1DDndLnYxq56MKVKEBnJS6gy"
                ],
                "license": "MIT"
            },
            "contracts/L1/challenge/ChallengeHeader.sol": {
                "keccak256": "0xccd240c72a79c8ad4be89d7c7cd8e9d3dd79f75e510d7ddfa52d0bb9a1a08fe2",
                "urls": [
                    "bzz-raw://28a9eeaae0fdb559a89897ccba647a7c2821ed35c38d91d211293b67f31d5006",
                    "dweb:/ipfs/QmTEzUeQzvKtJB4M4sQghasCMzNj3VbqkGoiavHeADqdEW"
                ],
                "license": "MIT"
            },
            "contracts/L1/challenge/ChallengeL2Header.sol": {
                "keccak256": "0xe646370d42c576a52eea394380afd1e862aff7cc4b87bf0257a49a12c37dda61",
                "urls": [
                    "bzz-raw://017a2181384467a4e930973435b070464580eca3a56bba292eaf502796ba0271",
                    "dweb:/ipfs/QmUT4YsEUhoszt1pk2a1zw9d3pAprXxhKmCjsRLtahDASm"
                ],
                "license": "MIT"
            },
            "contracts/L1/interfaces/ICanonicalStateChain.sol": {
                "keccak256": "0x4ca083f6a7c7fa2603d7e800e01f15cd32949a0cbf257b787401d976563f8818",
                "urls": [
                    "bzz-raw://fb7cd4a8bd907685270c216f4479563d5cdf915a3de0bbe541b0f388e8e157ab",
                    "dweb:/ipfs/QmWBMPEZ1XknxSQ4Ka9ACkgc59X3JwS633rehv261Gq7A3"
                ],
                "license": "MIT"
            },
            "contracts/L1/interfaces/IChainOracle.sol": {
                "keccak256": "0x0fc66dc53f5caaf0d24351d247a9d8c2ebba2ef2a37762b2ec8197d2b38c5ac7",
                "urls": [
                    "bzz-raw://102f36f2564e3dea688fa3f925dcef1322ad4d4bae93fffbffc0a9e59b85ac9c",
                    "dweb:/ipfs/QmU3CvxFiDE8XBVPLn7pTo4JKv6jNVH7SGybmTq3RN2eNq"
                ],
                "license": "MIT"
            },
            "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol": {
                "keccak256": "0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a",
                "urls": [
                    "bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6",
                    "dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"
                ],
                "license": "MIT"
            },
            "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol": {
                "keccak256": "0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b",
                "urls": [
                    "bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609",
                    "dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"
                ],
                "license": "MIT"
            },
            "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol": {
                "keccak256": "0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53",
                "urls": [
                    "bzz-raw://c6683e6ade6985d394d32baaef5eea0d8b9ff0b3eca86ae413d6cdde114a9930",
                    "dweb:/ipfs/QmdBE8T1BTddZxpdECMsb3KiCFyjNWmxcCddYrWFTXmWPj"
                ],
                "license": "MIT"
            },
            "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol": {
                "keccak256": "0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397",
                "urls": [
                    "bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9",
                    "dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"
                ],
                "license": "MIT"
            },
            "node_modules/@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol": {
                "keccak256": "0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74",
                "urls": [
                    "bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45",
                    "dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB"
                ],
                "license": "MIT"
            },
            "node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol": {
                "keccak256": "0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c",
                "urls": [
                    "bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9",
                    "dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v"
                ],
                "license": "MIT"
            },
            "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol": {
                "keccak256": "0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65",
                "urls": [
                    "bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a",
                    "dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE"
                ],
                "license": "MIT"
            },
            "node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol": {
                "keccak256": "0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c",
                "urls": [
                    "bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa",
                    "dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"
                ],
                "license": "MIT"
            },
            "node_modules/@openzeppelin/contracts/utils/Address.sol": {
                "keccak256": "0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721",
                "urls": [
                    "bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245",
                    "dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"
                ],
                "license": "MIT"
            },
            "node_modules/@openzeppelin/contracts/utils/StorageSlot.sol": {
                "keccak256": "0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418",
                "urls": [
                    "bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c",
                    "dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR"
                ],
                "license": "MIT"
            },
            "node_modules/blobstream-contracts/src/Constants.sol": {
                "keccak256": "0x0236491c1b01a038105ecfb270a39db52d7591f2200dbc1af079c4d8ed689f82",
                "urls": [
                    "bzz-raw://ae7f1a1f1ddbac033f113f59c4e7899e0eb6ce5dacf048a64a49a863d2207eb5",
                    "dweb:/ipfs/QmbAfGGjVm3wP2Vhted3J9a65C3h1TPJ1Rg5BYiJxrEp1f"
                ],
                "license": "Apache-2.0"
            },
            "node_modules/blobstream-contracts/src/DataRootTuple.sol": {
                "keccak256": "0x0526597d14a6d7f258ec48e434a9b60c9a8781764a8f23c878d49926daeb5d1c",
                "urls": [
                    "bzz-raw://06ee253f8d0f58dbe66c64cb5d2945182ba3bced088167472d8f953cec421916",
                    "dweb:/ipfs/QmUF9jjr6bH3pPgjGAZqYhsUn7EevqU7kZn8RBqQ4EoU2w"
                ],
                "license": "Apache-2.0"
            },
            "node_modules/blobstream-contracts/src/IDAOracle.sol": {
                "keccak256": "0xc35648b17d3587bc3a627f67a328874db536ee24c11b970c3c57226d69a32eec",
                "urls": [
                    "bzz-raw://362610301e6057d10777c84111d4bb43af53af75a488fb8ab8666a775302a3fc",
                    "dweb:/ipfs/QmURgSTYhiguV1oCUARaTTWrpFHg5nMEtxhPVcpUDuEKq6"
                ],
                "license": "Apache-2.0"
            },
            "node_modules/blobstream-contracts/src/lib/tree/Constants.sol": {
                "keccak256": "0x2050b2be8a739ce250cc5cea1556936c7937915b5d7fde269dd70e8e7eb660c4",
                "urls": [
                    "bzz-raw://946ea30d1001048a800f60bb24d2ab7ecf5f92ae2abd212f3f855e37a6840ce7",
                    "dweb:/ipfs/QmW2PnhAB5h2eCCM6Vafg8ZUpBttjLTbBhtXjJh3SSrYEN"
                ],
                "license": "Apache-2.0"
            },
            "node_modules/blobstream-contracts/src/lib/tree/Types.sol": {
                "keccak256": "0xa47e9e20fef88264acdf1fc6bc0b3bb9f23c7022f5de8d203a1014895a606958",
                "urls": [
                    "bzz-raw://d480249b6adf8730bffcf26eed5902eb9fd1d56d11f931b35a9e19c6415b3f47",
                    "dweb:/ipfs/QmPCrcMmQdNMYG232WxEg2zZRFvXQqdEZgwQNMaDJ2oNab"
                ],
                "license": "Apache-2.0"
            },
            "node_modules/blobstream-contracts/src/lib/tree/Utils.sol": {
                "keccak256": "0x99c4bf181cfa7526d30841bcd56519d6deba6a1b86369d03fb592c448e754471",
                "urls": [
                    "bzz-raw://5295f0e22409e0bf103f21ce2e71bcbe462fc3da6e3132774b3cf12d57a5d53b",
                    "dweb:/ipfs/QmNssaKFNN81GEP6t8TunPo3LJ9wXkHzLpznopCLPRj1mn"
                ],
                "license": "Apache-2.0"
            },
            "node_modules/blobstream-contracts/src/lib/tree/binary/BinaryMerkleProof.sol": {
                "keccak256": "0x9fb953284b455b544091f058fdb11ac73928093517333909c0744d9319410688",
                "urls": [
                    "bzz-raw://938230a60210345fe7cc661708c4fe0db663a5f5b5306f05fe4023b44f104b6e",
                    "dweb:/ipfs/QmUvcJuDmwnbRzXX5qgV4Mckg6ujvMeo46SrTPvgpPhFSF"
                ],
                "license": "Apache-2.0"
            },
            "node_modules/blobstream-contracts/src/lib/tree/binary/BinaryMerkleTree.sol": {
                "keccak256": "0x4747d8a3b271ee27830efe78a51cd0b218910813365d277f4b8c12c0140d98a6",
                "urls": [
                    "bzz-raw://b09be70400d922c694985a19083ec1f29dcb0b9eb122ebb031f48d056009b80f",
                    "dweb:/ipfs/Qmdme1mBubWVRx4FshtGXgAig1aMw5NhpgYdMWXSjiGarn"
                ],
                "license": "Apache-2.0"
            },
            "node_modules/blobstream-contracts/src/lib/tree/binary/TreeHasher.sol": {
                "keccak256": "0x2f16501eac14f6e2a61de29d3aa10e3aaf8e0a594fc9cf8dc2d955bb2f6d54e0",
                "urls": [
                    "bzz-raw://984a2e5d52cfdd38f2c597bddc4a2de8ad1e4dd9c81008376569a29c74fa963e",
                    "dweb:/ipfs/QmaXhfHD58Jv4nSw3qw2hGwbDSPKDjFzPNYWm9Y4KWiigm"
                ],
                "license": "Apache-2.0"
            },
            "node_modules/blobstream-contracts/src/lib/tree/namespace/NamespaceMerkleMultiproof.sol": {
                "keccak256": "0x6ae0f3e8413808e06b570202a27a08e3f1236add1b00b5cb4b4ac17049e1960c",
                "urls": [
                    "bzz-raw://7eb719a34154df1d37597b8181db8cb452e5cec0439d01ac03d599ed3c845ea2",
                    "dweb:/ipfs/QmXtRBmaT1ECKvpoGX2KZq9w5asLGTrwkzpF9oxxJ32a2D"
                ],
                "license": "Apache-2.0"
            },
            "node_modules/blobstream-contracts/src/lib/tree/namespace/NamespaceMerkleProof.sol": {
                "keccak256": "0x52eef9f87e34c11d6f8eda6f4a508b420c0193430c4035f49088069b6217ab40",
                "urls": [
                    "bzz-raw://eaa5b17bca4461bc593cd2bf7bfe428df58f1626e93871d34c9acdaea9288837",
                    "dweb:/ipfs/QmSzpv7RN2RcGBPcFhPn5EUVYXx1XYh8swKG2nN5o6wamQ"
                ],
                "license": "Apache-2.0"
            },
            "node_modules/blobstream-contracts/src/lib/tree/namespace/NamespaceMerkleTree.sol": {
                "keccak256": "0xaeffefd9fbda5111670c8f22c40344ad188390e7f35096d819eb541f48400dde",
                "urls": [
                    "bzz-raw://515fdfb25d4c86a924a64d9b86592b7f361a053663b59a61bd90301041322e16",
                    "dweb:/ipfs/QmXPoLXDoUJPVQw88PJoPN57YUuaS3G7XTQAu8dQDhkrf9"
                ],
                "license": "Apache-2.0"
            },
            "node_modules/blobstream-contracts/src/lib/tree/namespace/NamespaceNode.sol": {
                "keccak256": "0xdffc1a51e6dbe88cbe1b89f947290b93070b4e4094fbb412d157c0862a2cee55",
                "urls": [
                    "bzz-raw://17f86103bc514a1b293ef0d800737e4a0f6ebd2d82abd0c158e3ba15d69b5875",
                    "dweb:/ipfs/QmfCbafto3cWSRTJVvCUG86qv1V1rDDqRDejdZQUctDy6r"
                ],
                "license": "Apache-2.0"
            },
            "node_modules/blobstream-contracts/src/lib/tree/namespace/TreeHasher.sol": {
                "keccak256": "0x068b2ef59d4b63bbc495494e21bd95371af0e8bac3ae38b739d8cfe4df6722cd",
                "urls": [
                    "bzz-raw://f4764165fba287d853d840f5b03ea07874bf0c2b9cd276704432c1da8c8139cb",
                    "dweb:/ipfs/QmWKtd9LoSSw6EF8QvQGynfC1qCZFSQuBXjyRZy9ngZxa8"
                ],
                "license": "Apache-2.0"
            },
            "node_modules/blobstream-contracts/src/lib/verifier/DAVerifier.sol": {
                "keccak256": "0x95d2ea98319ffb1c3e7c8660438bba25d59a955dcbdba0fe2c22c1f0cd7b0988",
                "urls": [
                    "bzz-raw://4f3dcfa9c6979ff03062b22909d967b1ad0f392c84db192215a8b0f6a2996376",
                    "dweb:/ipfs/Qmcr2SFvLEYawfYtUmdy3AXnAWxBZ9XYtvCrw1hVLNMbp1"
                ],
                "license": "Apache-2.0"
            },
            "node_modules/hardhat/console.sol": {
                "keccak256": "0x7434453e6d3b7d0e5d0eb7846ffdbc27f0ccf3b163591263739b628074dc103a",
                "urls": [
                    "bzz-raw://49355f780520494d1d5a0f01858385e51bb5280ce0ecfb960f16995065dca395",
                    "dweb:/ipfs/QmSwJ6C5QLz6xKeQZS8wbwjU1KxRFTYfwbGmtzisd5sRW4"
                ],
                "license": "MIT"
            },
            "node_modules/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol": {
                "keccak256": "0xa548dd62e9e17616ae80a1e7ac7b1447ae377efc27fb9f7b4f4fbf5c0b0a1dfb",
                "urls": [
                    "bzz-raw://d27e9ae3e67eb229444cd43d49db5be57c586155fd1d363b3b1f9bb1b7bb0087",
                    "dweb:/ipfs/QmT2GFnpXsTWBs8bkeVJtQ4VNX7f3igxwB77JBCr4mDXb3"
                ],
                "license": "MIT"
            }
        },
        "version": 1
    },
    "id": 7
}
