{
    "abi": [
        { "type": "constructor", "inputs": [], "stateMutability": "nonpayable" },
        {
            "type": "function",
            "name": "L1_INITIATION_DELAY",
            "inputs": [],
            "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "MAX_L1_ORIGIN_DELAY",
            "inputs": [],
            "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "MAX_PREBLOCKS_PER_BATCH",
            "inputs": [],
            "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "acceptOwnership",
            "inputs": [],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "addProver",
            "inputs": [{ "name": "prover", "type": "address", "internalType": "address" }],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "addSequencer",
            "inputs": [{ "name": "sequencer", "type": "address", "internalType": "address" }],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "appExeCommit",
            "inputs": [],
            "outputs": [{ "name": "", "type": "bytes32", "internalType": "bytes32" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "claimProverFees",
            "inputs": [{ "name": "receiverAddress", "type": "address", "internalType": "address" }],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "commitBatch",
            "inputs": [
                {
                    "name": "args",
                    "type": "tuple",
                    "internalType": "struct AxiomKeystoreRollup.CommitBatchArgs",
                    "components": [
                        { "name": "sequencerKeystoreAddress", "type": "bytes32", "internalType": "bytes32" },
                        { "name": "l1Origin", "type": "uint256", "internalType": "uint256" },
                        { "name": "baseFeeScalar", "type": "uint256", "internalType": "uint256" },
                        { "name": "blobBaseFeeScalar", "type": "uint256", "internalType": "uint256" },
                        { "name": "preblocks", "type": "bytes", "internalType": "bytes" }
                    ]
                }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "commitBatch4844",
            "inputs": [
                {
                    "name": "args",
                    "type": "tuple",
                    "internalType": "struct AxiomKeystoreRollup.CommitBatch4844Args",
                    "components": [
                        { "name": "sequencerKeystoreAddress", "type": "bytes32", "internalType": "bytes32" },
                        { "name": "l1Origin", "type": "uint256", "internalType": "uint256" },
                        { "name": "baseFeeScalar", "type": "uint256", "internalType": "uint256" },
                        { "name": "blobBaseFeeScalar", "type": "uint256", "internalType": "uint256" },
                        { "name": "blobDataProof", "type": "bytes", "internalType": "bytes" }
                    ]
                }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "committedBatchesCount",
            "inputs": [],
            "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "extsload",
            "inputs": [{ "name": "slot", "type": "bytes32", "internalType": "bytes32" }],
            "outputs": [{ "name": "", "type": "bytes32", "internalType": "bytes32" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "finalizeBatch",
            "inputs": [
                {
                    "name": "args",
                    "type": "tuple",
                    "internalType": "struct AxiomKeystoreRollup.FinalizationArgs",
                    "components": [
                        { "name": "parentFinalizedBatchIndex", "type": "uint256", "internalType": "uint256" },
                        { "name": "targetSequencerBatchIndex", "type": "uint256", "internalType": "uint256" },
                        { "name": "targetL1BatchIndex", "type": "uint256", "internalType": "uint256" },
                        { "name": "newOutputRoot", "type": "bytes32", "internalType": "bytes32" },
                        { "name": "rewardAddress", "type": "address", "internalType": "address" },
                        { "name": "partialProof", "type": "bytes", "internalType": "bytes" }
                    ]
                }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "finalizeWithdrawal",
            "inputs": [
                { "name": "batchIndex", "type": "uint256", "internalType": "uint256" },
                {
                    "name": "outputRootPreimage",
                    "type": "tuple",
                    "internalType": "struct AxiomKeystoreRollup.OutputRootPreimage",
                    "components": [
                        { "name": "stateRoot", "type": "bytes32", "internalType": "bytes32" },
                        { "name": "withdrawalsRoot", "type": "bytes32", "internalType": "bytes32" },
                        { "name": "lastValidBlockhash", "type": "bytes32", "internalType": "bytes32" }
                    ]
                },
                {
                    "name": "withdrawalArgs",
                    "type": "tuple",
                    "internalType": "struct AxiomKeystoreRollup.WithdrawalArgs",
                    "components": [
                        { "name": "imtKey", "type": "bytes32", "internalType": "bytes32" },
                        { "name": "nextDummyByte", "type": "bytes1", "internalType": "bytes1" },
                        { "name": "nextImtKey", "type": "bytes32", "internalType": "bytes32" },
                        { "name": "withdrawalAmount", "type": "uint256", "internalType": "uint256" },
                        { "name": "to", "type": "address", "internalType": "address" }
                    ]
                },
                { "name": "proof", "type": "bytes32[]", "internalType": "bytes32[]" },
                { "name": "isLeft", "type": "uint256", "internalType": "uint256" }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "finalizedBatchData",
            "inputs": [{ "name": "index", "type": "uint256", "internalType": "uint256" }],
            "outputs": [
                {
                    "name": "",
                    "type": "tuple",
                    "internalType": "struct AxiomKeystoreRollup.FinalizedBatchData",
                    "components": [
                        { "name": "outputRoot", "type": "bytes32", "internalType": "bytes32" },
                        { "name": "sequencerBatchIndex", "type": "uint256", "internalType": "uint256" },
                        { "name": "l1BatchIndex", "type": "uint256", "internalType": "uint256" }
                    ]
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "finalizedBatchesCount",
            "inputs": [],
            "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "initialize",
            "inputs": [
                { "name": "l1DepositFee", "type": "uint256", "internalType": "uint256" },
                { "name": "l1WithdrawalFee", "type": "uint256", "internalType": "uint256" },
                { "name": "l1UpdateFee", "type": "uint256", "internalType": "uint256" },
                { "name": "_verifier", "type": "address", "internalType": "contract IOpenVmHalo2Verifier" }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "initiateL1Transaction",
            "inputs": [
                {
                    "name": "_tx",
                    "type": "tuple",
                    "internalType": "struct AxiomKeystoreRollup.L1InitiatedTransaction",
                    "components": [
                        {
                            "name": "txType",
                            "type": "uint8",
                            "internalType": "enum AxiomKeystoreRollup.KeystoreTxType"
                        },
                        { "name": "data", "type": "bytes", "internalType": "bytes" }
                    ]
                }
            ],
            "outputs": [],
            "stateMutability": "payable"
        },
        {
            "type": "function",
            "name": "isProver",
            "inputs": [{ "name": "prover", "type": "address", "internalType": "address" }],
            "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "isSequencer",
            "inputs": [{ "name": "sequencer", "type": "address", "internalType": "address" }],
            "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "isWithdrawalClaimed",
            "inputs": [{ "name": "leaf", "type": "bytes32", "internalType": "bytes32" }],
            "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "l1BatchCount",
            "inputs": [],
            "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "l1BatchData",
            "inputs": [{ "name": "index", "type": "uint256", "internalType": "uint256" }],
            "outputs": [
                {
                    "name": "",
                    "type": "tuple",
                    "internalType": "struct AxiomKeystoreRollup.L1BatchData",
                    "components": [
                        { "name": "batchCommitment", "type": "bytes32", "internalType": "bytes32" },
                        { "name": "preblockCount", "type": "uint256", "internalType": "uint256" },
                        { "name": "feeAccumulator", "type": "uint256", "internalType": "uint256" }
                    ]
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "l1BatchInclusionBlock",
            "inputs": [{ "name": "index", "type": "uint256", "internalType": "uint256" }],
            "outputs": [{ "name": "", "type": "uint32", "internalType": "uint32" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "l1InitiatedFee",
            "inputs": [
                {
                    "name": "txType",
                    "type": "uint8",
                    "internalType": "enum AxiomKeystoreRollup.KeystoreTxType"
                }
            ],
            "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "latestOutputRoot",
            "inputs": [],
            "outputs": [{ "name": "", "type": "bytes32", "internalType": "bytes32" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "owner",
            "inputs": [],
            "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "pendingL1Batches",
            "inputs": [],
            "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "pendingOwner",
            "inputs": [],
            "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "proverRewards",
            "inputs": [{ "name": "prover", "type": "address", "internalType": "address" }],
            "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "removeProver",
            "inputs": [{ "name": "prover", "type": "address", "internalType": "address" }],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "removeSequencer",
            "inputs": [{ "name": "sequencer", "type": "address", "internalType": "address" }],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "renounceOwnership",
            "inputs": [],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "sequencerBatchCount",
            "inputs": [],
            "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "sequencerBatchData",
            "inputs": [{ "name": "index", "type": "uint256", "internalType": "uint256" }],
            "outputs": [
                {
                    "name": "",
                    "type": "tuple",
                    "internalType": "struct AxiomKeystoreRollup.SequencerBatchData",
                    "components": [
                        { "name": "batchCommitment", "type": "bytes32", "internalType": "bytes32" },
                        { "name": "l1Origin", "type": "uint256", "internalType": "uint256" },
                        { "name": "prevL1BatchIndex", "type": "uint256", "internalType": "uint256" }
                    ]
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "setL1InitiatedTransactionFee",
            "inputs": [
                {
                    "name": "txType",
                    "type": "uint8",
                    "internalType": "enum AxiomKeystoreRollup.KeystoreTxType"
                },
                { "name": "newFee", "type": "uint256", "internalType": "uint256" }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "transferOwnership",
            "inputs": [{ "name": "newOwner", "type": "address", "internalType": "address" }],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "updateAppExeCommit",
            "inputs": [{ "name": "newAppExeCommit", "type": "bytes32", "internalType": "bytes32" }],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "updateVerifier",
            "inputs": [
                {
                    "name": "newVerifier",
                    "type": "address",
                    "internalType": "contract IOpenVmHalo2Verifier"
                }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "verifier",
            "inputs": [],
            "outputs": [
                { "name": "", "type": "address", "internalType": "contract IOpenVmHalo2Verifier" }
            ],
            "stateMutability": "view"
        },
        {
            "type": "event",
            "name": "BatchCommitted",
            "inputs": [
                { "name": "batchIndex", "type": "uint256", "indexed": true, "internalType": "uint256" },
                {
                    "name": "sequencerBatchIndex",
                    "type": "uint256",
                    "indexed": true,
                    "internalType": "uint256"
                },
                {
                    "name": "batchCommitment",
                    "type": "bytes32",
                    "indexed": false,
                    "internalType": "bytes32"
                },
                { "name": "l1Origin", "type": "uint256", "indexed": false, "internalType": "uint256" }
            ],
            "anonymous": false
        },
        {
            "type": "event",
            "name": "BatchCommitted4844",
            "inputs": [
                { "name": "batchIndex", "type": "uint256", "indexed": true, "internalType": "uint256" },
                {
                    "name": "sequencerBatchIndex",
                    "type": "uint256",
                    "indexed": true,
                    "internalType": "uint256"
                },
                {
                    "name": "batchCommitment",
                    "type": "bytes32",
                    "indexed": false,
                    "internalType": "bytes32"
                },
                { "name": "l1Origin", "type": "uint256", "indexed": false, "internalType": "uint256" }
            ],
            "anonymous": false
        },
        {
            "type": "event",
            "name": "BatchesFinalized",
            "inputs": [
                {
                    "name": "parentFinalizedBatchIndex",
                    "type": "uint256",
                    "indexed": true,
                    "internalType": "uint256"
                },
                {
                    "name": "targetBatchIndex",
                    "type": "uint256",
                    "indexed": true,
                    "internalType": "uint256"
                },
                { "name": "newOutputRoot", "type": "bytes32", "indexed": false, "internalType": "bytes32" }
            ],
            "anonymous": false
        },
        {
            "type": "event",
            "name": "Initialized",
            "inputs": [
                { "name": "version", "type": "uint64", "indexed": false, "internalType": "uint64" }
            ],
            "anonymous": false
        },
        {
            "type": "event",
            "name": "L1TransactionInitiated",
            "inputs": [
                { "name": "l1BatchIndex", "type": "uint256", "indexed": true, "internalType": "uint256" },
                {
                    "name": "l1BatchCommitment",
                    "type": "bytes32",
                    "indexed": false,
                    "internalType": "bytes32"
                },
                {
                    "name": "l1BatchInclusionBlock",
                    "type": "uint256",
                    "indexed": false,
                    "internalType": "uint256"
                },
                {
                    "name": "l1InitiatedNonce",
                    "type": "uint256",
                    "indexed": false,
                    "internalType": "uint256"
                },
                { "name": "txHash", "type": "bytes32", "indexed": false, "internalType": "bytes32" }
            ],
            "anonymous": false
        },
        {
            "type": "event",
            "name": "OwnershipTransferStarted",
            "inputs": [
                { "name": "previousOwner", "type": "address", "indexed": true, "internalType": "address" },
                { "name": "newOwner", "type": "address", "indexed": true, "internalType": "address" }
            ],
            "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": "WithdrawalFinalized",
            "inputs": [
                { "name": "batchNumber", "type": "uint256", "indexed": true, "internalType": "uint256" },
                { "name": "to", "type": "address", "indexed": true, "internalType": "address" },
                { "name": "withdrawAmount", "type": "uint256", "indexed": false, "internalType": "uint256" }
            ],
            "anonymous": false
        },
        { "type": "error", "name": "CallPointEvaluationPrecompileFailed", "inputs": [] },
        { "type": "error", "name": "FoundMultipleBlobs", "inputs": [] },
        { "type": "error", "name": "IncorrectProofLength", "inputs": [] },
        { "type": "error", "name": "InvalidAppExeCommit", "inputs": [] },
        { "type": "error", "name": "InvalidInitialization", "inputs": [] },
        { "type": "error", "name": "InvalidLeafExeCommit", "inputs": [] },
        { "type": "error", "name": "InvalidMsgValue", "inputs": [] },
        { "type": "error", "name": "InvalidVerifier", "inputs": [] },
        { "type": "error", "name": "InvalidWithdrawalProof", "inputs": [] },
        { "type": "error", "name": "L1BatchNotYetFinalizable", "inputs": [] },
        {
            "type": "error",
            "name": "L1OriginOutOfOrder",
            "inputs": [{ "name": "l1Origin", "type": "uint256", "internalType": "uint256" }]
        },
        {
            "type": "error",
            "name": "L1OriginTooNew",
            "inputs": [{ "name": "l1Origin", "type": "uint256", "internalType": "uint256" }]
        },
        {
            "type": "error",
            "name": "L1OriginTooOld",
            "inputs": [{ "name": "l1Origin", "type": "uint256", "internalType": "uint256" }]
        },
        { "type": "error", "name": "MaxPreblocksPerL1BatchReached", "inputs": [] },
        { "type": "error", "name": "NoBlobFound", "inputs": [] },
        { "type": "error", "name": "NotInitializing", "inputs": [] },
        { "type": "error", "name": "NotProver", "inputs": [] },
        { "type": "error", "name": "NotSequencer", "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": "ParentBatchHasNoOutputRoot", "inputs": [] },
        { "type": "error", "name": "ProofVerificationFailed", "inputs": [] },
        { "type": "error", "name": "ReentrantCall", "inputs": [] },
        { "type": "error", "name": "SequencerBatchNotAssociated", "inputs": [] },
        {
            "type": "error",
            "name": "TargetBatchAlreadyFinalized",
            "inputs": [{ "name": "finalizedBatchesCount", "type": "uint256", "internalType": "uint256" }]
        },
        { "type": "error", "name": "TargetL1BatchNotCommitted", "inputs": [] },
        { "type": "error", "name": "TargetSequencerBatchNotCommitted", "inputs": [] },
        { "type": "error", "name": "TransferFailed", "inputs": [] },
        { "type": "error", "name": "UnexpectedPointEvaluationPrecompileOutput", "inputs": [] },
        { "type": "error", "name": "WithdrawalAlreadyClaimed", "inputs": [] },
        { "type": "error", "name": "WithdrawalsRootVerificationFailed", "inputs": [] }
    ],
    "bytecode": {
        "object": "0x6080604052348015600e575f80fd5b5060156019565b60c9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560685760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b613661806100d65f395ff3fe6080604052600436106102ab575f3560e01c80638a33623111610165578063abb63e3e116100c6578063ca2672381161007c578063dd6c472711610062578063dd6c4727146109fb578063e30c397814610a1a578063f2fde38b14610a2e575f80fd5b8063ca267238146109b4578063d900dbd3146109e7575f80fd5b8063b219266d116100ac578063b219266d146108fd578063b571d3dd14610912578063b7dffcfb14610931575f80fd5b8063abb63e3e14610891578063aea8b9a7146108b0575f80fd5b80639f639b621161011b578063a797403011610101578063a797403014610836578063a876ecd11461084a578063aab78a8e1461085e575f80fd5b80639f639b62146107b7578063a5543308146107d6575f80fd5b80638fed22d31161014b5780638fed22d314610752578063909ea9b11461078557806397fc007c14610798575f80fd5b80638a3362311461071f5780638da5cb5b1461073e575f80fd5b8063317162d61161020f578063715018a6116101c55780637d07568a116101ab5780637d07568a146106365780637dcdebd5146106b957806382c25d35146106ec575f80fd5b8063715018a61461060e57806379ba509714610622575f80fd5b80636989ca7c116101f55780636989ca7c1461056d5780636c3c29271461058c5780636d46e987146105ab575f80fd5b8063317162d6146104a957806367c4624014610539575f80fd5b80631e2eaeaf11610264578063209df2011161024a578063209df2011461040157806323de69fa146104205780632b7ac3f31461043f575f80fd5b80631e2eaeaf146103c35780631f8d519d146103e2575f80fd5b80630e9aa4b3116102945780630e9aa4b3146103485780631022929f146103855780631d49e457146103a4575f80fd5b80630a245924146102af5780630e60ad9c14610327575b5f80fd5b3480156102ba575f80fd5b506103126102c9366004613021565b73ffffffffffffffffffffffffffffffffffffffff165f9081527fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00d602052604090205460ff1690565b60405190151581526020015b60405180910390f35b348015610332575f80fd5b50610346610341366004613021565b610a4d565b005b348015610353575f80fd5b507fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d010545b60405190815260200161031e565b348015610390575f80fd5b5061034661039f366004613043565b610b7e565b3480156103af575f80fd5b506103466103be366004613021565b61102c565b3480156103ce575f80fd5b506103776103dd36600461307a565b6110a1565b3480156103ed575f80fd5b506103466103fc366004613091565b6110ab565b34801561040c575f80fd5b5061037761041b3660046130e2565b611530565b34801561042b575f80fd5b5061034661043a366004613111565b61158b565b34801561044a575f80fd5b507fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00f5473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161031e565b3480156104b4575f80fd5b5061052c6104c336600461307a565b60408051606080820183525f80835260208084018290529284018190529384527fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00a8252928290208251938401835280548452600181015491840191909152600201549082015290565b60405161031e919061314b565b348015610544575f80fd5b5061055861055336600461307a565b61173d565b60405163ffffffff909116815260200161031e565b348015610578575f80fd5b50610346610587366004613021565b61179e565b348015610597575f80fd5b506103466105a636600461316c565b611810565b3480156105b6575f80fd5b506103126105c5366004613021565b73ffffffffffffffffffffffffffffffffffffffff165f9081527fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00c602052604090205460ff1690565b348015610619575f80fd5b50610346611894565b34801561062d575f80fd5b506103466118a7565b348015610641575f80fd5b5061052c61065036600461307a565b60408051606080820183525f80835260208084018290529284018190529384527fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d0058252928290208251938401835280548452600181015491840191909152600201549082015290565b3480156106c4575f80fd5b507fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00254610377565b3480156106f7575f80fd5b507fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00354610377565b34801561072a575f80fd5b50610346610739366004613021565b611922565b348015610749575f80fd5b50610484611997565b34801561075d575f80fd5b507fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00654610377565b610346610793366004613194565b6119d8565b3480156107a3575f80fd5b506103466107b2366004613021565b611ca6565b3480156107c2575f80fd5b506103466107d13660046131cb565b611d61565b3480156107e1575f80fd5b506103776107f0366004613021565b73ffffffffffffffffffffffffffffffffffffffff165f9081527fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00e602052604090205490565b348015610841575f80fd5b50610377611fff565b348015610855575f80fd5b50610377606481565b348015610869575f80fd5b507fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00854610377565b34801561089c575f80fd5b506103466108ab366004613111565b612034565b3480156108bb575f80fd5b506103126108ca36600461307a565b5f9081527fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00b602052604090205460ff1690565b348015610908575f80fd5b50610377611c2081565b34801561091d575f80fd5b5061034661092c366004613021565b612256565b34801561093c575f80fd5b5061052c61094b36600461307a565b60408051606080820183525f80835260208084018290529284018190529384527fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d0078252928290208251938401835280548452600181015491840191909152600201549082015290565b3480156109bf575f80fd5b507fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00054610377565b3480156109f2575f80fd5b50610377600a81565b348015610a06575f80fd5b50610346610a1536600461307a565b6122c8565b348015610a25575f80fd5b506104846122f4565b348015610a39575f80fd5b50610346610a48366004613021565b61231c565b5f5c8015610a87576040517f37ed32e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015f5d335f9081527fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00e602052604080822080549083905590517fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d000929073ffffffffffffffffffffffffffffffffffffffff86169083908381818185875af1925050503d805f8114610b34576040519150601f19603f3d011682016040523d82523d5f602084013e610b39565b606091505b5050905080610b74576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505f805d5050565b5f5c8015610bb8576040517f37ed32e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015f5d335f9081527fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00d60205260409020547fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d0009060ff16610c45576040517f2f6a53d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d0005f610c79604086013560208701356132c8565b90508160020154811015610cca5781600201546040517fb60d166f000000000000000000000000000000000000000000000000000000008152600401610cc191815260200190565b60405180910390fd5b6020808601355f90815260078401825260408082208054828a013584526005870190945290822054909291829003610d2e576040517fa3d7023c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f819003610d68576040517fd525813100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028301546040890135811015610eb9575f866004018281548110610d8f57610d8f6132db565b5f918252602080832060088304015460079283166004026101000a900463ffffffff169350908901908290610dc8908e013560016132c8565b81526020019081526020015f20600101549050805f03610e2c5743610def611c20846132c8565b1115610e27576040517fca17379600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e66565b81811015610e66576040517f668d270700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f03610eb2575f610e7c8460408e0135613308565b905080896003015f828254610e919190613308565b9250508190555080896008015f828254610eab91906132c8565b9091555050505b5050610ef6565b80896040013514610ef6576040517f668d270700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5087355f908152600a860160205260409020610f3590838360608c0135610f2360a08e0160808f01613021565b610f3060a08f018f61331b565b6123d3565b5f848152600a8601602090815260409182902060608b01358155908a01356001820155908901356002820155610f6a81612618565b600e87015f610f7f60a08d0160808e01613021565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610fc691906132c8565b909155505060608901358655610fdd8560016132c8565b600287015560405160608a0135815285908a35907f8aad65dee71b9cf4c01e49f0ff5da481e473b375a80db72b6209a3ca0ea36c449060200160405180910390a3505050505050505f805d5050565b6110346126c2565b73ffffffffffffffffffffffffffffffffffffffff165f9081527fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00d6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b5f81545f5260205ff35b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff165f811580156110f55750825b90505f8267ffffffffffffffff1660011480156111115750303b155b90508115801561111f575080155b15611156576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156111b75784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b7fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00073ffffffffffffffffffffffffffffffffffffffff8716611225576040517fbaa3de5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600f810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff891617905560048082018054600181810183555f92835260208084206008840401805460079485169096026101000a63ffffffff021990951690945582805260058501845260408084207f27e87c261ce7c825f391f8bd6f243192f5d5194f599110f723a784d62f67a6ad90558051606080820183527fcee40b249ef2f3b190670243cac02ab08de8c800793f85d128831554cdf5e0c68252438288019081528284018781528780529589018852838720925183555193820193909355925160029093019290925581517f6077df4fc2481833b5c58e08af09e072f2cff19c55a4e5aafe65e575662d405c9481018590527f226d50da400d02d463c53e9a08cc47d82a297340d6a1f1d173d31aeea222840f9281018390527f6c6c5cf2cbf7108dab158edb80d6e89f2b6f44caeff01986611d3504673af45a91810182905291929091608001604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815282825280516020918201206060840183528084525f828501818152858501828152828052600a8c01909452938120945185559251600180860191909155915160029485015592880181905560088801558187559091508e9060098701908081526020019081526020015f20819055508c856009015f6001600281111561145b5761145b613383565b600281111561146c5761146c613383565b81526020019081526020015f20819055508b856009015f60028081111561149557611495613383565b60028111156114a6576114a6613383565b815260208101919091526040015f20556114bf3361271a565b505050505083156115255784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b5f7fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d0098183600281111561156557611565613383565b600281111561157657611576613383565b81526020019081526020015f20549050919050565b335f9081527fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00c60205260409020547fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d0009060ff16611614576040517f53e2827c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5c801561164e576040517f37ed32e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015f5d5f611660608085018561331b565b60405161166e9291906133b0565b6040519081900381207f010000000000000000000000000000000000000000000000000000000000000060208301526021820181905291505f906041016040516020818303038152906040528051906020012090505f805f6116e284895f01358a602001358b604001358c6060013561272b565b92509250925081837fe5e757a1777ec13eb7a3998c224fbae626ae69128522401f3fe5d6c65f667e06838b60200135604051611728929190918252602082015260400190565b60405180910390a350505050505f805d505050565b5f7fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d0006004018281548110611773576117736132db565b905f5260205f2090600891828204019190066004029054906101000a900463ffffffff169050919050565b6117a66126c2565b73ffffffffffffffffffffffffffffffffffffffff165f9081527fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b6118186126c2565b7fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d000817fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d0095f85600281111561186e5761186e613383565b600281111561187f5761187f613383565b815260208101919091526040015f2055505050565b61189c6126c2565b6118a55f612971565b565b33806118b16122f4565b73ffffffffffffffffffffffffffffffffffffffff1614611916576040517f118cdaa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610cc1565b61191f81612971565b50565b61192a6126c2565b73ffffffffffffffffffffffffffffffffffffffff165f9081527fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b5f807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b5473ffffffffffffffffffffffffffffffffffffffff1692915050565b5f5c8015611a12576040517f37ed32e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015f5d7fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d0005f7fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00981611a6760208701876130e2565b6002811115611a7857611a78613383565b6002811115611a8957611a89613383565b81526020019081526020015f205490505f611aa485836129c5565b90505f611aaf611fff565b60018501545f8281526005870160205260408120805460028201549495509293909291611add600a436132c8565b905080896004018781548110611af557611af56132db565b5f918252602090912060088204015460079091166004026101000a900463ffffffff1614611b7957611b26866133bf565b9550886003015f8154611b38906133bf565b90915550600489810180546001810182555f91825260209091206008820401805460079092169092026101000a63ffffffff81810219909216918416021790555b5f86815260058a016020526040902060018101547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c01611be5576040517f4fef572800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160208082018790528183018a90526060820185905242608083015260a08083018c90528351808403909101815260c09092019092528051910120808255611c308a856132c8565b600283015560018083018054820190558b8101805490910190556040805182815260208101859052908101889052606081018a905288907f12b9cd6534800b648703ec5d0090895e021b0bd085742bdb34f574049695183b9060800160405180910390a250505050505050505050505f805d5050565b611cae6126c2565b73ffffffffffffffffffffffffffffffffffffffff8116611cfb576040517fbaa3de5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b5f5c8015611d9b576040517f37ed32e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015f5d5f7fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d0005f898152600a820160209081526040918290205482518b3581840152918b013582840152918a0135606082015291925090608001604051602081830303815290604052805190602001208114611e43576040517fc8c4328600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611e4d88612b33565b5f818152600b8501602052604090205490915060ff1615611e9a576040517f2f29b3db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611eab87878b602001358489612c05565b5f818152600b84016020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611ef360a08a0160808b01613021565b73ffffffffffffffffffffffffffffffffffffffff1689606001356040515f6040518083038185875af1925050503d805f8114611f4b576040519150601f19603f3d011682016040523d82523d5f602084013e611f50565b606091505b5050905080611f8b576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f9b60a08a0160808b01613021565b73ffffffffffffffffffffffffffffffffffffffff168b7f2144673b243cbac0f18cd0de7b99b0d8e12caf36ff781e39524425d75ba4b2738b60600135604051611fe791815260200190565b60405180910390a3505050505f805d50505050505050565b7fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d004545f9061202f90600190613308565b905090565b335f9081527fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00c60205260409020547fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d0009060ff166120bd576040517f53e2827c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5c80156120f7576040517f37ed32e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015f5d5f4960014981612137576040517f590c038600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b801561216f576040517f0f08fa7500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506040517f02000000000000000000000000000000000000000000000000000000000000006020820152602181018290525f90604101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012090506121f3826121ee608088018861331b565b612c9c565b5f808061221084893560208b013560408c013560608d013561272b565b92509250925081837f63d18c9e307e6faa3bf6096039a5f1197189161fbc0957576a48b5181208fda5838b60200135604051611728929190918252602082015260400190565b61225e6126c2565b73ffffffffffffffffffffffffffffffffffffffff165f9081527fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00d6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b6122d06126c2565b7fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d01055565b5f807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c006119bb565b6123246126c2565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117825561238d611997565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b610720811461240e576040517f1d57967a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00f5487547fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d0009173ffffffffffffffffffffffffffffffffffffffff16905f8190036124a5576040517fc6be1cbd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018a01545f90815260078401602090815260408083205460028e015484526005870183528184205482519384018690529183018190526060808401839052608084018c905260a084018e905260c084018d90528a901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660e084015292909160f4016040516020818303038152906040528051906020012090508473ffffffffffffffffffffffffffffffffffffffff1663c4d062588260405160200161257091815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260108a01547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526125dd928d918d916004016133f6565b5f6040518083038186803b1580156125f3575f80fd5b505afa158015612605573d5f803e3d5ffd5b5050505050505050505050505050505050565b5f7fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d0008160016126657fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d0025490565b035f818152600a84016020526040902060028082015490870154929350909180821061269757505f9695505050505050565b5f91825260059094016020526040808220948252902060029384015493015492909203949350505050565b336126cb611997565b73ffffffffffffffffffffffffffffffffffffffff16146118a5576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610cc1565b612722612ded565b61191f81612e54565b5f808080878742888861273f600143613308565b6040805160208101979097528601949094526060850192909252608084015260a08301524060c082015260e081018a90526101000160405160208183030381529060405290505f6127ad7fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00090565b9050438811156127ec576040517f7962a70d00000000000000000000000000000000000000000000000000000000815260048101899052602401610cc1565b436127f9611c208a6132c8565b1015612834576040517f10b72d2600000000000000000000000000000000000000000000000000000000815260048101899052602401610cc1565b60068101545f90815260078201602052604090206001015480891015612889576040517f5c42fb74000000000000000000000000000000000000000000000000000000008152600481018a9052602401610cc1565b505f806128958a612eab565b915091505f8284600301546128aa9190613308565b600385018490556006850180549192505f6128c4836133bf565b909155505f8181526007860160205260408120805490916128e68460016132c8565b905081818a6040516020016128fd939291906134b4565b60405160208183030381529060405280519060200120995084886008015461292591906132c8565b9b506129328c60016132c8565b60088901555f81815260079098016020526040909720898155600181019e909e5550505050600290990198909855939993985090965091945050505050565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080547fffffffffffffffffffffffff00000000000000000000000000000000000000001681556129c182612f6b565b5050565b5f7fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d000816129f560208601866130e2565b6002811115612a0657612a06613383565b03612aa257823411612a44576040517f1841b4e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f612a52602086018661331b565b612a5b916134d4565b90505f82600101548534612a6f9190613308565b83604051602001612a83949392919061354c565b6040516020818303038152906040528051906020012092505050612b2d565b823414612adb576040517f1841b4e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001612aea60208601866130e2565b60018301548290612afe602089018961331b565b604051602001612b12959493929190613573565b60405160208183030381529060405280519060200120925050505b92915050565b5f7f0100000000000000000000000000000000000000000000000000000000000000808335612b6860408601602087016135a6565b6040860135612b92612b8060a0890160808a01613021565b5f5260608801356020526034600c2090565b6040517fff000000000000000000000000000000000000000000000000000000000000009687166020820152948616602186015260228501939093529316604283015260438201929092526063810191909152608301604051602081830303815290604052805190602001209050919050565b8185855f5b818114612c585784811c600116808015612c2b5760018114612c3857612c41565b855f528435602052612c41565b84355f52856020525b505060405f20935060209290920191600101612c0a565b505050808414612c94576040517fb86abc9c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b5f80600a73ffffffffffffffffffffffffffffffffffffffff16858585604051602001612ccb939291906135e5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052612d03916135fe565b5f60405180830381855afa9150503d805f8114612d3b576040519150601f19603f3d011682016040523d82523d5f602084013e612d40565b606091505b509150915081612d7c576040517feebc703800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f81806020019051810190612d919190613609565b9150507f73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff000000018114612c94576040517f30a0045e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166118a5576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612e5c612ded565b73ffffffffffffffffffffffffffffffffffffffff8116611916576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f6004820152602401610cc1565b7fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00480545f9182917fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d0009190600b845b818114612f61575f81600185030390505f858281548110612f1c57612f1c6132db565b5f918252602090912060088204015460079091166004026101000a900463ffffffff169050898111612f575750909890975095505050505050565b5050600101612ef9565b5050505050915091565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811673ffffffffffffffffffffffffffffffffffffffff848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461191f575f80fd5b5f60208284031215613031575f80fd5b813561303c81613000565b9392505050565b5f60208284031215613053575f80fd5b813567ffffffffffffffff811115613069575f80fd5b820160c0818503121561303c575f80fd5b5f6020828403121561308a575f80fd5b5035919050565b5f805f80608085870312156130a4575f80fd5b84359350602085013592506040850135915060608501356130c481613000565b939692955090935050565b8035600381106130dd575f80fd5b919050565b5f602082840312156130f2575f80fd5b61303c826130cf565b5f60a0828403121561310b575f80fd5b50919050565b5f60208284031215613121575f80fd5b813567ffffffffffffffff811115613137575f80fd5b613143848285016130fb565b949350505050565b81518152602080830151908201526040808301519082015260608101612b2d565b5f806040838503121561317d575f80fd5b613186836130cf565b946020939093013593505050565b5f602082840312156131a4575f80fd5b813567ffffffffffffffff8111156131ba575f80fd5b82016040818503121561303c575f80fd5b5f805f805f808688036101608112156131e2575f80fd5b8735965060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082011215613215575f80fd5b5060208701945061322988608089016130fb565b935061012087013567ffffffffffffffff811115613245575f80fd5b8701601f81018913613255575f80fd5b803567ffffffffffffffff81111561326b575f80fd5b8960208260051b840101111561327f575f80fd5b9699959850939660209094019594610140909401359392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115612b2d57612b2d61329b565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b81810381811115612b2d57612b2d61329b565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261334e575f80fd5b83018035915067ffffffffffffffff821115613368575f80fd5b60200191503681900382131561337c575f80fd5b9250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b818382375f9101908152919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036133ef576133ef61329b565b5060010190565b606081525f85518060608401528060208801608085015e5f608082850101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f820116830190506080838203016020840152846080820152848660a08301375f60a08287018101919091526040939093019390935250601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b5f81518060208401855e5f93019283525090919050565b8381528260208201525f6134cb604083018461349d565b95945050505050565b80356020831015612b2d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b60038110613545577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60f81b9052565b6135568186613510565b600181019390935260218301919091526041820152606101919050565b61357d8187613510565b84151560f81b6001820152836002820152818360228301375f9101602201908152949350505050565b5f602082840312156135b6575f80fd5b81357fff000000000000000000000000000000000000000000000000000000000000008116811461303c575f80fd5b838152818360208301375f910160200190815292915050565b5f61303c828461349d565b5f806040838503121561361a575f80fd5b50508051602090910151909290915056fea264697066735822122078a716b5fe03232a844977cb07d41f44ce22f9c273e983ce6a0d9b2c3f4d188264736f6c634300081a0033",
        "sourceMap": "497:34689:42:-:0;;;6807:53;;;;;;;;;-1:-1:-1;6831:22:42;:20;:22::i;:::-;497:34689;;7711:422:27;8870:21;7900:15;;;;;;;7896:76;;;7938:23;;-1:-1:-1;;;7938:23:27;;;;;;;;;;;7896:76;7985:14;;-1:-1:-1;;;;;7985:14:27;;;:34;7981:146;;8035:33;;-1:-1:-1;;;;;;8035:33:27;-1:-1:-1;;;;;8035:33:27;;;;;8087:29;;158:50:45;;;8087:29:27;;146:2:45;131:18;8087:29:27;;;;;;;7981:146;7760:373;7711:422::o;14:200:45:-;497:34689:42;;;;;;",
        "linkReferences": {}
    },
    "deployedBytecode": {
        "object": "0x6080604052600436106102ab575f3560e01c80638a33623111610165578063abb63e3e116100c6578063ca2672381161007c578063dd6c472711610062578063dd6c4727146109fb578063e30c397814610a1a578063f2fde38b14610a2e575f80fd5b8063ca267238146109b4578063d900dbd3146109e7575f80fd5b8063b219266d116100ac578063b219266d146108fd578063b571d3dd14610912578063b7dffcfb14610931575f80fd5b8063abb63e3e14610891578063aea8b9a7146108b0575f80fd5b80639f639b621161011b578063a797403011610101578063a797403014610836578063a876ecd11461084a578063aab78a8e1461085e575f80fd5b80639f639b62146107b7578063a5543308146107d6575f80fd5b80638fed22d31161014b5780638fed22d314610752578063909ea9b11461078557806397fc007c14610798575f80fd5b80638a3362311461071f5780638da5cb5b1461073e575f80fd5b8063317162d61161020f578063715018a6116101c55780637d07568a116101ab5780637d07568a146106365780637dcdebd5146106b957806382c25d35146106ec575f80fd5b8063715018a61461060e57806379ba509714610622575f80fd5b80636989ca7c116101f55780636989ca7c1461056d5780636c3c29271461058c5780636d46e987146105ab575f80fd5b8063317162d6146104a957806367c4624014610539575f80fd5b80631e2eaeaf11610264578063209df2011161024a578063209df2011461040157806323de69fa146104205780632b7ac3f31461043f575f80fd5b80631e2eaeaf146103c35780631f8d519d146103e2575f80fd5b80630e9aa4b3116102945780630e9aa4b3146103485780631022929f146103855780631d49e457146103a4575f80fd5b80630a245924146102af5780630e60ad9c14610327575b5f80fd5b3480156102ba575f80fd5b506103126102c9366004613021565b73ffffffffffffffffffffffffffffffffffffffff165f9081527fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00d602052604090205460ff1690565b60405190151581526020015b60405180910390f35b348015610332575f80fd5b50610346610341366004613021565b610a4d565b005b348015610353575f80fd5b507fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d010545b60405190815260200161031e565b348015610390575f80fd5b5061034661039f366004613043565b610b7e565b3480156103af575f80fd5b506103466103be366004613021565b61102c565b3480156103ce575f80fd5b506103776103dd36600461307a565b6110a1565b3480156103ed575f80fd5b506103466103fc366004613091565b6110ab565b34801561040c575f80fd5b5061037761041b3660046130e2565b611530565b34801561042b575f80fd5b5061034661043a366004613111565b61158b565b34801561044a575f80fd5b507fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00f5473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161031e565b3480156104b4575f80fd5b5061052c6104c336600461307a565b60408051606080820183525f80835260208084018290529284018190529384527fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00a8252928290208251938401835280548452600181015491840191909152600201549082015290565b60405161031e919061314b565b348015610544575f80fd5b5061055861055336600461307a565b61173d565b60405163ffffffff909116815260200161031e565b348015610578575f80fd5b50610346610587366004613021565b61179e565b348015610597575f80fd5b506103466105a636600461316c565b611810565b3480156105b6575f80fd5b506103126105c5366004613021565b73ffffffffffffffffffffffffffffffffffffffff165f9081527fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00c602052604090205460ff1690565b348015610619575f80fd5b50610346611894565b34801561062d575f80fd5b506103466118a7565b348015610641575f80fd5b5061052c61065036600461307a565b60408051606080820183525f80835260208084018290529284018190529384527fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d0058252928290208251938401835280548452600181015491840191909152600201549082015290565b3480156106c4575f80fd5b507fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00254610377565b3480156106f7575f80fd5b507fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00354610377565b34801561072a575f80fd5b50610346610739366004613021565b611922565b348015610749575f80fd5b50610484611997565b34801561075d575f80fd5b507fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00654610377565b610346610793366004613194565b6119d8565b3480156107a3575f80fd5b506103466107b2366004613021565b611ca6565b3480156107c2575f80fd5b506103466107d13660046131cb565b611d61565b3480156107e1575f80fd5b506103776107f0366004613021565b73ffffffffffffffffffffffffffffffffffffffff165f9081527fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00e602052604090205490565b348015610841575f80fd5b50610377611fff565b348015610855575f80fd5b50610377606481565b348015610869575f80fd5b507fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00854610377565b34801561089c575f80fd5b506103466108ab366004613111565b612034565b3480156108bb575f80fd5b506103126108ca36600461307a565b5f9081527fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00b602052604090205460ff1690565b348015610908575f80fd5b50610377611c2081565b34801561091d575f80fd5b5061034661092c366004613021565b612256565b34801561093c575f80fd5b5061052c61094b36600461307a565b60408051606080820183525f80835260208084018290529284018190529384527fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d0078252928290208251938401835280548452600181015491840191909152600201549082015290565b3480156109bf575f80fd5b507fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00054610377565b3480156109f2575f80fd5b50610377600a81565b348015610a06575f80fd5b50610346610a1536600461307a565b6122c8565b348015610a25575f80fd5b506104846122f4565b348015610a39575f80fd5b50610346610a48366004613021565b61231c565b5f5c8015610a87576040517f37ed32e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015f5d335f9081527fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00e602052604080822080549083905590517fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d000929073ffffffffffffffffffffffffffffffffffffffff86169083908381818185875af1925050503d805f8114610b34576040519150601f19603f3d011682016040523d82523d5f602084013e610b39565b606091505b5050905080610b74576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505f805d5050565b5f5c8015610bb8576040517f37ed32e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015f5d335f9081527fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00d60205260409020547fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d0009060ff16610c45576040517f2f6a53d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d0005f610c79604086013560208701356132c8565b90508160020154811015610cca5781600201546040517fb60d166f000000000000000000000000000000000000000000000000000000008152600401610cc191815260200190565b60405180910390fd5b6020808601355f90815260078401825260408082208054828a013584526005870190945290822054909291829003610d2e576040517fa3d7023c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f819003610d68576040517fd525813100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028301546040890135811015610eb9575f866004018281548110610d8f57610d8f6132db565b5f918252602080832060088304015460079283166004026101000a900463ffffffff169350908901908290610dc8908e013560016132c8565b81526020019081526020015f20600101549050805f03610e2c5743610def611c20846132c8565b1115610e27576040517fca17379600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e66565b81811015610e66576040517f668d270700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f03610eb2575f610e7c8460408e0135613308565b905080896003015f828254610e919190613308565b9250508190555080896008015f828254610eab91906132c8565b9091555050505b5050610ef6565b80896040013514610ef6576040517f668d270700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5087355f908152600a860160205260409020610f3590838360608c0135610f2360a08e0160808f01613021565b610f3060a08f018f61331b565b6123d3565b5f848152600a8601602090815260409182902060608b01358155908a01356001820155908901356002820155610f6a81612618565b600e87015f610f7f60a08d0160808e01613021565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610fc691906132c8565b909155505060608901358655610fdd8560016132c8565b600287015560405160608a0135815285908a35907f8aad65dee71b9cf4c01e49f0ff5da481e473b375a80db72b6209a3ca0ea36c449060200160405180910390a3505050505050505f805d5050565b6110346126c2565b73ffffffffffffffffffffffffffffffffffffffff165f9081527fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00d6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b5f81545f5260205ff35b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff165f811580156110f55750825b90505f8267ffffffffffffffff1660011480156111115750303b155b90508115801561111f575080155b15611156576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156111b75784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b7fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00073ffffffffffffffffffffffffffffffffffffffff8716611225576040517fbaa3de5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600f810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff891617905560048082018054600181810183555f92835260208084206008840401805460079485169096026101000a63ffffffff021990951690945582805260058501845260408084207f27e87c261ce7c825f391f8bd6f243192f5d5194f599110f723a784d62f67a6ad90558051606080820183527fcee40b249ef2f3b190670243cac02ab08de8c800793f85d128831554cdf5e0c68252438288019081528284018781528780529589018852838720925183555193820193909355925160029093019290925581517f6077df4fc2481833b5c58e08af09e072f2cff19c55a4e5aafe65e575662d405c9481018590527f226d50da400d02d463c53e9a08cc47d82a297340d6a1f1d173d31aeea222840f9281018390527f6c6c5cf2cbf7108dab158edb80d6e89f2b6f44caeff01986611d3504673af45a91810182905291929091608001604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815282825280516020918201206060840183528084525f828501818152858501828152828052600a8c01909452938120945185559251600180860191909155915160029485015592880181905560088801558187559091508e9060098701908081526020019081526020015f20819055508c856009015f6001600281111561145b5761145b613383565b600281111561146c5761146c613383565b81526020019081526020015f20819055508b856009015f60028081111561149557611495613383565b60028111156114a6576114a6613383565b815260208101919091526040015f20556114bf3361271a565b505050505083156115255784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b5f7fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d0098183600281111561156557611565613383565b600281111561157657611576613383565b81526020019081526020015f20549050919050565b335f9081527fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00c60205260409020547fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d0009060ff16611614576040517f53e2827c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5c801561164e576040517f37ed32e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015f5d5f611660608085018561331b565b60405161166e9291906133b0565b6040519081900381207f010000000000000000000000000000000000000000000000000000000000000060208301526021820181905291505f906041016040516020818303038152906040528051906020012090505f805f6116e284895f01358a602001358b604001358c6060013561272b565b92509250925081837fe5e757a1777ec13eb7a3998c224fbae626ae69128522401f3fe5d6c65f667e06838b60200135604051611728929190918252602082015260400190565b60405180910390a350505050505f805d505050565b5f7fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d0006004018281548110611773576117736132db565b905f5260205f2090600891828204019190066004029054906101000a900463ffffffff169050919050565b6117a66126c2565b73ffffffffffffffffffffffffffffffffffffffff165f9081527fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b6118186126c2565b7fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d000817fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d0095f85600281111561186e5761186e613383565b600281111561187f5761187f613383565b815260208101919091526040015f2055505050565b61189c6126c2565b6118a55f612971565b565b33806118b16122f4565b73ffffffffffffffffffffffffffffffffffffffff1614611916576040517f118cdaa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610cc1565b61191f81612971565b50565b61192a6126c2565b73ffffffffffffffffffffffffffffffffffffffff165f9081527fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b5f807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b5473ffffffffffffffffffffffffffffffffffffffff1692915050565b5f5c8015611a12576040517f37ed32e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015f5d7fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d0005f7fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00981611a6760208701876130e2565b6002811115611a7857611a78613383565b6002811115611a8957611a89613383565b81526020019081526020015f205490505f611aa485836129c5565b90505f611aaf611fff565b60018501545f8281526005870160205260408120805460028201549495509293909291611add600a436132c8565b905080896004018781548110611af557611af56132db565b5f918252602090912060088204015460079091166004026101000a900463ffffffff1614611b7957611b26866133bf565b9550886003015f8154611b38906133bf565b90915550600489810180546001810182555f91825260209091206008820401805460079092169092026101000a63ffffffff81810219909216918416021790555b5f86815260058a016020526040902060018101547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c01611be5576040517f4fef572800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160208082018790528183018a90526060820185905242608083015260a08083018c90528351808403909101815260c09092019092528051910120808255611c308a856132c8565b600283015560018083018054820190558b8101805490910190556040805182815260208101859052908101889052606081018a905288907f12b9cd6534800b648703ec5d0090895e021b0bd085742bdb34f574049695183b9060800160405180910390a250505050505050505050505f805d5050565b611cae6126c2565b73ffffffffffffffffffffffffffffffffffffffff8116611cfb576040517fbaa3de5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b5f5c8015611d9b576040517f37ed32e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015f5d5f7fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d0005f898152600a820160209081526040918290205482518b3581840152918b013582840152918a0135606082015291925090608001604051602081830303815290604052805190602001208114611e43576040517fc8c4328600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611e4d88612b33565b5f818152600b8501602052604090205490915060ff1615611e9a576040517f2f29b3db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611eab87878b602001358489612c05565b5f818152600b84016020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611ef360a08a0160808b01613021565b73ffffffffffffffffffffffffffffffffffffffff1689606001356040515f6040518083038185875af1925050503d805f8114611f4b576040519150601f19603f3d011682016040523d82523d5f602084013e611f50565b606091505b5050905080611f8b576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f9b60a08a0160808b01613021565b73ffffffffffffffffffffffffffffffffffffffff168b7f2144673b243cbac0f18cd0de7b99b0d8e12caf36ff781e39524425d75ba4b2738b60600135604051611fe791815260200190565b60405180910390a3505050505f805d50505050505050565b7fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d004545f9061202f90600190613308565b905090565b335f9081527fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00c60205260409020547fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d0009060ff166120bd576040517f53e2827c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5c80156120f7576040517f37ed32e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015f5d5f4960014981612137576040517f590c038600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b801561216f576040517f0f08fa7500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506040517f02000000000000000000000000000000000000000000000000000000000000006020820152602181018290525f90604101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012090506121f3826121ee608088018861331b565b612c9c565b5f808061221084893560208b013560408c013560608d013561272b565b92509250925081837f63d18c9e307e6faa3bf6096039a5f1197189161fbc0957576a48b5181208fda5838b60200135604051611728929190918252602082015260400190565b61225e6126c2565b73ffffffffffffffffffffffffffffffffffffffff165f9081527fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00d6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b6122d06126c2565b7fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d01055565b5f807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c006119bb565b6123246126c2565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117825561238d611997565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b610720811461240e576040517f1d57967a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00f5487547fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d0009173ffffffffffffffffffffffffffffffffffffffff16905f8190036124a5576040517fc6be1cbd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018a01545f90815260078401602090815260408083205460028e015484526005870183528184205482519384018690529183018190526060808401839052608084018c905260a084018e905260c084018d90528a901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660e084015292909160f4016040516020818303038152906040528051906020012090508473ffffffffffffffffffffffffffffffffffffffff1663c4d062588260405160200161257091815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260108a01547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526125dd928d918d916004016133f6565b5f6040518083038186803b1580156125f3575f80fd5b505afa158015612605573d5f803e3d5ffd5b5050505050505050505050505050505050565b5f7fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d0008160016126657fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d0025490565b035f818152600a84016020526040902060028082015490870154929350909180821061269757505f9695505050505050565b5f91825260059094016020526040808220948252902060029384015493015492909203949350505050565b336126cb611997565b73ffffffffffffffffffffffffffffffffffffffff16146118a5576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610cc1565b612722612ded565b61191f81612e54565b5f808080878742888861273f600143613308565b6040805160208101979097528601949094526060850192909252608084015260a08301524060c082015260e081018a90526101000160405160208183030381529060405290505f6127ad7fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00090565b9050438811156127ec576040517f7962a70d00000000000000000000000000000000000000000000000000000000815260048101899052602401610cc1565b436127f9611c208a6132c8565b1015612834576040517f10b72d2600000000000000000000000000000000000000000000000000000000815260048101899052602401610cc1565b60068101545f90815260078201602052604090206001015480891015612889576040517f5c42fb74000000000000000000000000000000000000000000000000000000008152600481018a9052602401610cc1565b505f806128958a612eab565b915091505f8284600301546128aa9190613308565b600385018490556006850180549192505f6128c4836133bf565b909155505f8181526007860160205260408120805490916128e68460016132c8565b905081818a6040516020016128fd939291906134b4565b60405160208183030381529060405280519060200120995084886008015461292591906132c8565b9b506129328c60016132c8565b60088901555f81815260079098016020526040909720898155600181019e909e5550505050600290990198909855939993985090965091945050505050565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080547fffffffffffffffffffffffff00000000000000000000000000000000000000001681556129c182612f6b565b5050565b5f7fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d000816129f560208601866130e2565b6002811115612a0657612a06613383565b03612aa257823411612a44576040517f1841b4e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f612a52602086018661331b565b612a5b916134d4565b90505f82600101548534612a6f9190613308565b83604051602001612a83949392919061354c565b6040516020818303038152906040528051906020012092505050612b2d565b823414612adb576040517f1841b4e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001612aea60208601866130e2565b60018301548290612afe602089018961331b565b604051602001612b12959493929190613573565b60405160208183030381529060405280519060200120925050505b92915050565b5f7f0100000000000000000000000000000000000000000000000000000000000000808335612b6860408601602087016135a6565b6040860135612b92612b8060a0890160808a01613021565b5f5260608801356020526034600c2090565b6040517fff000000000000000000000000000000000000000000000000000000000000009687166020820152948616602186015260228501939093529316604283015260438201929092526063810191909152608301604051602081830303815290604052805190602001209050919050565b8185855f5b818114612c585784811c600116808015612c2b5760018114612c3857612c41565b855f528435602052612c41565b84355f52856020525b505060405f20935060209290920191600101612c0a565b505050808414612c94576040517fb86abc9c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b5f80600a73ffffffffffffffffffffffffffffffffffffffff16858585604051602001612ccb939291906135e5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052612d03916135fe565b5f60405180830381855afa9150503d805f8114612d3b576040519150601f19603f3d011682016040523d82523d5f602084013e612d40565b606091505b509150915081612d7c576040517feebc703800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f81806020019051810190612d919190613609565b9150507f73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff000000018114612c94576040517f30a0045e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166118a5576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612e5c612ded565b73ffffffffffffffffffffffffffffffffffffffff8116611916576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f6004820152602401610cc1565b7fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d00480545f9182917fc94330da5d5688c06df0ade6bfd773c87249c0b9f38b25021e2c16ab9672d0009190600b845b818114612f61575f81600185030390505f858281548110612f1c57612f1c6132db565b5f918252602090912060088204015460079091166004026101000a900463ffffffff169050898111612f575750909890975095505050505050565b5050600101612ef9565b5050505050915091565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811673ffffffffffffffffffffffffffffffffffffffff848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461191f575f80fd5b5f60208284031215613031575f80fd5b813561303c81613000565b9392505050565b5f60208284031215613053575f80fd5b813567ffffffffffffffff811115613069575f80fd5b820160c0818503121561303c575f80fd5b5f6020828403121561308a575f80fd5b5035919050565b5f805f80608085870312156130a4575f80fd5b84359350602085013592506040850135915060608501356130c481613000565b939692955090935050565b8035600381106130dd575f80fd5b919050565b5f602082840312156130f2575f80fd5b61303c826130cf565b5f60a0828403121561310b575f80fd5b50919050565b5f60208284031215613121575f80fd5b813567ffffffffffffffff811115613137575f80fd5b613143848285016130fb565b949350505050565b81518152602080830151908201526040808301519082015260608101612b2d565b5f806040838503121561317d575f80fd5b613186836130cf565b946020939093013593505050565b5f602082840312156131a4575f80fd5b813567ffffffffffffffff8111156131ba575f80fd5b82016040818503121561303c575f80fd5b5f805f805f808688036101608112156131e2575f80fd5b8735965060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082011215613215575f80fd5b5060208701945061322988608089016130fb565b935061012087013567ffffffffffffffff811115613245575f80fd5b8701601f81018913613255575f80fd5b803567ffffffffffffffff81111561326b575f80fd5b8960208260051b840101111561327f575f80fd5b9699959850939660209094019594610140909401359392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115612b2d57612b2d61329b565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b81810381811115612b2d57612b2d61329b565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261334e575f80fd5b83018035915067ffffffffffffffff821115613368575f80fd5b60200191503681900382131561337c575f80fd5b9250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b818382375f9101908152919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036133ef576133ef61329b565b5060010190565b606081525f85518060608401528060208801608085015e5f608082850101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f820116830190506080838203016020840152846080820152848660a08301375f60a08287018101919091526040939093019390935250601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b5f81518060208401855e5f93019283525090919050565b8381528260208201525f6134cb604083018461349d565b95945050505050565b80356020831015612b2d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b60038110613545577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60f81b9052565b6135568186613510565b600181019390935260218301919091526041820152606101919050565b61357d8187613510565b84151560f81b6001820152836002820152818360228301375f9101602201908152949350505050565b5f602082840312156135b6575f80fd5b81357fff000000000000000000000000000000000000000000000000000000000000008116811461303c575f80fd5b838152818360208301375f910160200190815292915050565b5f61303c828461349d565b5f806040838503121561361a575f80fd5b50508051602090910151909290915056fea264697066735822122078a716b5fe03232a844977cb07d41f44ce22f9c273e983ce6a0d9b2c3f4d188264736f6c634300081a0033",
        "sourceMap": "497:34689:42:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33435:136;;;;;;;;;;-1:-1:-1;33435:136:42;;;;;:::i;:::-;33515:49;;33492:4;33515:49;;;:41;:49;;;;;;;;;33435:136;;;;590:14:45;;583:22;565:41;;553:2;538:18;33435:136:42;;;;;;;;28931:373;;;;;;;;;;-1:-1:-1;28931:373:42;;;;;:::i;:::-;;:::i;:::-;;33868:125;;;;;;;;;;-1:-1:-1;33941:45:42;;33868:125;;;763:25:45;;;751:2;736:18;33868:125:42;617:177:45;18945:4315:42;;;;;;;;;;-1:-1:-1;18945:4315:42;;;;;:::i;:::-;;:::i;29989:178::-;;;;;;;;;;-1:-1:-1;29989:178:42;;;;;:::i;:::-;;:::i;34282:212::-;;;;;;;;;;-1:-1:-1;34282:212:42;;;;;:::i;:::-;;:::i;6866:1714::-;;;;;;;;;;-1:-1:-1;6866:1714:42;;;;;:::i;:::-;;:::i;32775:159::-;;;;;;;;;;-1:-1:-1;32775:159:42;;;;;:::i;:::-;;:::i;11416:728::-;;;;;;;;;;-1:-1:-1;11416:728:42;;;;;:::i;:::-;;:::i;33732:130::-;;;;;;;;;;-1:-1:-1;33814:41:42;;;;33732:130;;;3347:42:45;3335:55;;;3317:74;;3305:2;3290:18;33732:130:42;3141:256:45;32940:175:42;;;;;;;;;;-1:-1:-1;32940:175:42;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;33050:58:42;;;:51;:58;;;;;;33043:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32940:175;;;;;;;;:::i;31972:162::-;;;;;;;;;;-1:-1:-1;31972:162:42;;;;;:::i;:::-;;:::i;:::-;;;4313:10:45;4301:23;;;4283:42;;4271:2;4256:18;31972:162:42;4139:192:45;29789:194:42;;;;;;;;;;-1:-1:-1;29789:194:42;;;;;:::i;:::-;;:::i;30361:229::-;;;;;;;;;;-1:-1:-1;30361:229:42;;;;;:::i;:::-;;:::i;33281:148::-;;;;;;;;;;-1:-1:-1;33281:148:42;;;;;:::i;:::-;33367:55;;33344:4;33367:55;;;:44;:55;;;;;;;;;33281:148;3155:101:26;;;;;;;;;;;;;:::i;2774:229:25:-;;;;;;;;;;;;;:::i;32140:154:42:-;;;;;;;;;;-1:-1:-1;32140:154:42;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;32236:51:42;;;:44;:51;;;;;;32229:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32140:154;31537:141;;;;;;;;;;-1:-1:-1;31617:54:42;;31537:141;;31684:133;;;;;;;;;;-1:-1:-1;31761:49:42;;31684:133;;29593:190;;;;;;;;;;-1:-1:-1;29593:190:42;;;;;:::i;:::-;;:::i;2441:144:26:-;;;;;;;;;;;;;:::i;32300:139:42:-;;;;;;;;;;-1:-1:-1;32380:52:42;;32300:139;;8679:1708;;;;;;:::i;:::-;;:::i;30596:275::-;;;;;;;;;;-1:-1:-1;30596:275:42;;;;;:::i;:::-;;:::i;26563:1462::-;;;;;;;;;;-1:-1:-1;26563:1462:42;;;;;:::i;:::-;;:::i;33577:149::-;;;;;;;;;;-1:-1:-1;33577:149:42;;;;;:::i;:::-;33665:54;;33639:7;33665:54;;;:46;:54;;;;;;;33577:149;31823:143;;;;;;;;;;;;;:::i;2988:53::-;;;;;;;;;;;;3038:3;2988:53;;32626:143;;;;;;;;;;-1:-1:-1;32708:54:42;;32626:143;;12353:1148;;;;;;;;;;-1:-1:-1;12353:1148:42;;;;;:::i;:::-;;:::i;33121:154::-;;;;;;;;;;-1:-1:-1;33121:154:42;;;;;:::i;:::-;33187:4;33210:58;;;:52;:58;;;;;;;;;33121:154;2931:50;;;;;;;;;;;;2977:4;2931:50;;30173:182;;;;;;;;;;-1:-1:-1;30173:182:42;;;;;:::i;:::-;;:::i;32445:175::-;;;;;;;;;;-1:-1:-1;32445:175:42;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;32555:58:42;;;:51;:58;;;;;;32548:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32445:175;31398:133;;;;;;;;;;-1:-1:-1;6751:34:42;31475:49;31398:133;;3048:48;;;;;;;;;;;;3094:2;3048:48;;30877:203;;;;;;;;;;-1:-1:-1;30877:203:42;;;;;:::i;:::-;;:::i;1680:168:25:-;;;;;;;;;;;;;:::i;2041:247::-;;;;;;;;;;-1:-1:-1;2041:247:25;;;;;:::i;:::-;;:::i;28931:373:42:-;6301:11;6355;6385:34;;;;6404:15;;;;;;;;;;;;;;6385:34;6465:4;6459;6452:18;29128:10:::1;29013:36;29112:27:::0;;;:15;:27:::1;::::0;;;;;;;29149:31;;;;29209:41;;6751:34;;29013:36;29112:27:::1;29209:20:::0;::::1;::::0;29112:27;;29013:36;29209:41;29013:36;29209:41;29112:27;29209:20;:41:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29191:59;;;29265:7;29260:37;;29281:16;;;;;;;;;;;;;;29260:37;29003:301;;;6536:4:::0;;6523:18;6509:42;28931:373;:::o;18945:4315::-;6301:11;6355;6385:34;;;;6404:15;;;;;;;;;;;;;;6385:34;6465:4;6459;6452:18;6212:10:::1;6115:36;6201:22:::0;;;:10;:22:::1;::::0;;;;;6751:34;;6201:22:::1;;6196:47;;6232:11;;;;;;;;;;;;;;6196:47;6751:34:::0;19043:36:::2;19152:56;19185:23;::::0;::::2;;19152:30;::::0;::::2;;:56;:::i;:::-;19125:83;;19241:1;:23;;;19222:16;:42;19218:107;;;19301:1;:23;;;19273:52;;;;;;;;;763:25:45::0;;751:2;736:18;;617:177;19273:52:42::2;;;;;;;;19218:107;19411:30;::::0;;::::2;;19336:51;19390:52:::0;;;:20:::2;::::0;::::2;:52:::0;;;;;;19494:68;;19620:23;;::::2;;19606:38:::0;;:13:::2;::::0;::::2;:38:::0;;;;;;:54;19390:52;;19494:68;19734:35;;;19730:82:::2;;19778:34;;;;;;;;;;;;;;19730:82;19853:1;19826:28:::0;;;19822:68:::2;;19863:27;;;;;;;;;;;;;;19822:68;19974:41;::::0;::::2;::::0;20075:23:::2;::::0;::::2;;:42:::0;-1:-1:-1;20071:2178:42::2;;;20137:30;20170:1;:23;;20194:16;20170:41;;;;;;;;:::i;:::-;;::::0;;;::::2;::::0;;;::::2;::::0;::::2;;::::0;;;;;::::2;;;;::::0;::::2;;;::::0;-1:-1:-1;20916:20:42;;::::2;::::0;20170:41;;20937:34:::2;::::0;:30;::::2;;20970:1;20937:34;:::i;:::-;20916:56;;;;;;;;;;;:65;;;20884:97;;21003:21;21028:1;21003:26:::0;20999:463:::2;;21104:12;21057:44;2977:4;21057:22:::0;:44:::2;:::i;:::-;:59;21053:98;;;21125:26;;;;;;;;;;;;;;21053:98;20999:463;;;21207:22;21182:21;:47;;21176:286;;21414:29;;;;;;;;;;;;;;21176:286;21736:21;21761:1;21736:26:::0;21732:253:::2;;21786:19;21808:42;21834:16:::0;21808:23:::2;::::0;::::2;;:42;:::i;:::-;21786:64;;21895:11;21873:1;:18;;;:33;;;;;;;:::i;:::-;;;;;;;;21955:11;21928:1;:23;;;:38;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;21732:253:42::2;20119:1880;;20071:2178;;;22036:16;22009:4;:23;;;:43;22005:244;;22205:29;;;;;;;;;;;;;;22005:244;-1:-1:-1::0;22345:30:42;::::2;22324:52;::::0;;;:20:::2;::::0;::::2;:52;::::0;;;;22269:395:::2;::::0;22422:30;22491:23;22543:18:::2;::::0;::::2;;22590;::::0;;;::::2;::::0;::::2;;:::i;:::-;22636:17;;::::0;::::2;:4:::0;:17:::2;:::i;:::-;22269:14;:395::i;:::-;22675:42;22720:38:::0;;;:20:::2;::::0;::::2;:38;::::0;;;;;;;;22798:18:::2;::::0;::::2;;22769:47:::0;;22864:30;;::::2;;22826:35;::::0;::::2;:68:::0;22935:23;;::::2;;22904:28;::::0;::::2;:54:::0;23008:37:::2;22720:38:::0;23008:20:::2;:37::i;:::-;22969:15;::::0;::::2;:35;22985:18;::::0;;;::::2;::::0;::::2;;:::i;:::-;22969:35;;;;;;;;;;;;;;;;:76;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;23077:18:42::2;::::0;::::2;;23056:39:::0;;23131:20:::2;:16:::0;23150:1:::2;23131:20;:::i;:::-;23105:23;::::0;::::2;:46:::0;23167:86:::2;::::0;23234:18:::2;::::0;::::2;;763:25:45::0;;23216:16:42;;23184:30;::::2;::::0;23167:86:::2;::::0;751:2:45;736:18;23167:86:42::2;;;;;;;19033:4227;;;;;;6105:156:::1;6536:4:::0;;6523:18;6509:42;18945:4315;:::o;29989:178::-;2334:13:26;:11;:13::i;:::-;30135:18:42::1;;30053:36;30135:18:::0;;;:10;:18:::1;::::0;;;;:25;;;::::1;30156:4;30135:25;::::0;;29989:178::o;34282:212::-;34337:7;34441:4;34435:11;34429:4;34422:25;34473:4;34467;34460:18;6866:1714;8870:21:27;4302:15;;;;;;;4301:16;;4348:14;;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;:16;;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:27;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;;;;;;;;;;;;;4851:91;4951:18;;;;4968:1;4951:18;;;4979:67;;;;5013:22;;;;;;;;4979:67;6751:34:42;7139:32:::1;::::0;::::1;7135:62;;7180:17;;;;;;;;;;;;;;7135:62;7207:10;::::0;::::1;:22:::0;;;::::1;;::::0;::::1;;::::0;;7240:23:::1;::::0;;::::1;:31:::0;;-1:-1:-1;7240:31:42;;::::1;::::0;;-1:-1:-1;7240:31:42;;;::::1;::::0;;;::::1;::::0;::::1;;::::0;;;;;;;;::::1;7207:22;7240:31;;;;::::0;;::::1;::::0;;;7281:16;;;:13:::1;::::0;::::1;:16:::0;;;;;;7316:39:::1;7281:74:::0;;7406:192;;::::1;::::0;;::::1;::::0;;7460:46:::1;7406:192:::0;;7534:12:::1;7406:192:::0;;::::1;::::0;;;;;;;;;7366:23;;;:20;;::::1;:23:::0;;;;;:242;;;;;;;::::1;::::0;;;;;;::::1;::::0;;::::1;::::0;;;;7903:76;;7646:34:::1;7903:76:::0;;::::1;9376:19:45::0;;;7723:40:42::1;9411:12:45::0;;;9404:28;;;7800:43:42::1;9448:12:45::0;;;9441:28;;;7723:40:42;;7800:43;;9485:12:45;;7903:76:42::1;::::0;;;;::::1;::::0;;;;;;;7893:87;;7903:76:::1;7893:87:::0;;::::1;::::0;8030:94:::1;::::0;::::1;::::0;;;;;-1:-1:-1;8030:94:42;;::::1;::::0;;;;;;;;;7991:23;;;:20:::1;::::0;::::1;:23:::0;;;;;;:134;;;;;;::::1;::::0;;::::1;::::0;;;;;;::::1;::::0;;::::1;::::0;8135:23;;::::1;:27:::0;;;8172:23:::1;::::0;::::1;:27:::0;8210:38;;;7893:87;;-1:-1:-1;8303:12:42;;8259:17:::1;::::0;::::1;::::0;-1:-1:-1;8259:41:42::1;;;;;;;;;;;:56;;;;8370:15;8325:1;:17;;:42;8343:23;8325:42;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;:60;;;;8438:11;8395:1;:17;;:40;8413:21;8395:40:::0;::::1;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;8395:40:42;:54;8547:26:::1;8562:10;8547:14;:26::i;:::-;7043:1537;;;;;5070:14:27::0;5066:101;;;5100:23;;;;;;5142:14;;-1:-1:-1;9850:50:45;;5142:14:27;;9838:2:45;9823:18;5142:14:27;;;;;;;5066:101;4092:1081;;;;;6866:1714:42;;;;:::o;32775:159::-;32845:7;32871:48;32845:7;32920:6;32871:56;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;32864:63;;32775:159;;;:::o;11416:728::-;6025:10;5925:36;6011:25;;;:13;:25;;;;;;6751:34;;6011:25;;6006:53;;6045:14;;;;;;;;;;;;;;6006:53;6301:11:::1;6355;6385:34:::0;::::1;;;6404:15;;;;;;;;;;;;;;6385:34;6465:4;6459;6452:18;11514:27:::2;11554:14;;::::0;::::2;:4:::0;:14:::2;:::i;:::-;11544:25;;;;;;;:::i;:::-;;::::0;;;;::::2;::::0;;11635:14;11618:53:::2;::::0;::::2;10342:92:45::0;10450:11;;;10443:27;;;11544:25:42;-1:-1:-1;11580:25:42::2;::::0;10486:12:45;;11618:53:42::2;;;;;;;;;;;;11608:64;;;;;;11580:92;;11684:18;11704:27:::0;11733:23:::2;11760:282;11806:17;11863:4;:29;;;11916:4;:13;;;11958:4;:18;;;12009:4;:22;;;11760:12;:282::i;:::-;11683:359;;;;;;12085:19;12073:10;12058:79;12106:15;12123:4;:13;;;12058:79;;;;;;10683:25:45::0;;;10739:2;10724:18;;10717:34;10671:2;10656:18;;10509:248;12058:79:42::2;;;;;;;;11504:640;;;;;6536:4:::1;::::0;6523:18:::1;6509:42;5915:162:::0;11416:728;:::o;31972:162::-;32041:6;6751:34;32066:54;;32121:5;32066:61;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;32059:68;;31972:162;;;:::o;29789:194::-;2334:13:26;:11;:13::i;:::-;29944:24:42::1;;29862:36;29944:24:::0;;;:13;:24:::1;::::0;;;;:32;;;::::1;::::0;;29789:194::o;30361:229::-;2334:13:26;:11;:13::i;:::-;6751:34:42;30577:6;30549:17;30467:36:::1;30567:6:::0;30549:25:::1;::::0;::::1;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;30549:25:42;:34;-1:-1:-1;;;30361:229:42:o;3155:101:26:-;2334:13;:11;:13::i;:::-;3219:30:::1;3246:1;3219:18;:30::i;:::-;3155:101::o:0;2774:229:25:-;966:10:28;;2869:14:25;:12;:14::i;:::-;:24;;;2865:96;;2916:34;;;;;3347:42:45;3335:55;;2916:34:25;;;3317:74:45;3290:18;;2916:34:25;3141:256:45;2865:96:25;2970:26;2989:6;2970:18;:26::i;:::-;2816:187;2774:229::o;29593:190:42:-;2334:13:26;:11;:13::i;:::-;29745:24:42::1;;29663:36;29745:24:::0;;;:13;:24:::1;::::0;;;;:31;;;::::1;29772:4;29745:31;::::0;;29593:190::o;2441:144:26:-;2487:7;;1313:22;2533:20;2570:8;;;;2441:144;-1:-1:-1;;2441:144:26:o;8679:1708:42:-;6301:11;6355;6385:34;;;;6404:15;;;;;;;;;;;;;;6385:34;6465:4;6459;6452:18;6751:34;8787:36:::1;8883:17:::0;8787:36;8901:10:::1;;::::0;::::1;::::0;::::1;:::i;:::-;8883:29;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;8869:43;;8922:14;8939:44;8974:3;8979;8939:34;:44::i;:::-;8922:61;;8994:20;9017:14;:12;:14::i;:::-;9068:18;::::0;::::1;::::0;9041:24:::1;9132:27:::0;;;:13:::1;::::0;::::1;:27;::::0;;;;9198:29;;9269:28:::1;::::0;::::1;::::0;8994:37;;-1:-1:-1;9068:18:42;;9132:27;;9198:29;9400:34:::1;3094:2;9400:12;:34;:::i;:::-;9367:67;;9490:22;9449:1;:23;;9473:12;9449:37;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;::::1;;::::0;;;;;::::1;;;;::::0;::::1;;;:63;9445:216;;9528:14;::::0;::::1;:::i;:::-;;;9558:1;:18;;;9556:20;;;;;:::i;:::-;::::0;;;-1:-1:-1;9590:23:42::1;::::0;;::::1;:60:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;9590:60:42;;;::::1;::::0;;;::::1;::::0;::::1;;::::0;;;;;;;;::::1;;;;::::0;;::::1;;::::0;;::::1;::::0;;::::1;;;::::0;;9445:216:::1;9671:35;9709:27:::0;;;:13:::1;::::0;::::1;:27;::::0;;;;9751:29:::1;::::0;::::1;::::0;:56;;9747:100:::1;;9816:31;;;;;;;;;;;;;;9747:100;9909:99;::::0;;::::1;::::0;;::::1;11203:19:45::0;;;11238:12;;;11231:28;;;11275:12;;;11268:28;;;9984:15:42::1;11312:12:45::0;;;11305:28;11349:13;;;;11342:29;;;9909:99:42;;;;;;;;;;11387:13:45;;;;9909:99:42;;;9886:132;;;::::1;::::0;10028:51;;;10122:27:::1;10146:3:::0;10122:21;:27:::1;:::i;:::-;10089:30;::::0;::::1;:60:::0;10186:29:::1;::::0;;::::1;10184:31:::0;;;::::1;::::0;;10231:18;;::::1;10229:20:::0;;;;::::1;::::0;;10275:105:::1;::::0;;11642:25:45;;;11698:2;11683:18;;11676:34;;;11726:18;;;11719:34;;;11784:2;11769:18;;11762:34;;;10298:12:42;;10275:105:::1;::::0;11629:3:45;11614:19;10275:105:42::1;;;;;;;8777:1610;;;;;;;;;;;6536:4:::0;;6523:18;6509:42;8679:1708;:::o;30596:275::-;2334:13:26;:11;:13::i;:::-;30687:34:42::1;::::0;::::1;30683:64;;30730:17;;;;;;;;;;;;;;30683:64;30840:10:::0;:24;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;30596:275::o;26563:1462::-;6301:11;6355;6385:34;;;;6404:15;;;;;;;;;;;;;;6385:34;6465:4;6459;6452:18;26819:36:::1;6751:34:::0;27067:18:::1;27088:32:::0;;;:20:::1;::::0;::::1;:32;::::0;;;;;;;;:43;27219:215;;27261:28;::::1;27219:215:::0;;::::1;9376:19:45::0;27315:34:42;;::::1;;9411:12:45::0;;;9404:28;27375:37:42;;::::1;;9448:12:45::0;;;9441:28;27088:20:42;;-1:-1:-1;27088:43:42;9485:12:45;;27219:215:42::1;;;;;;;;;;;;27188:264;;;;;;27158:10;:294;27141:364;;27470:35;;;;;;;;;;;;;;27141:364;27516:12;27531:38;27554:14;27531:22;:38::i;:::-;27583:27;::::0;;;:21:::1;::::0;::::1;:27;::::0;;;;;27516:53;;-1:-1:-1;27583:27:42::1;;27579:66;;;27619:26;;;;;;;;;;;;;;27579:66;27656:75;27675:5;;27682:18;:34;;;27718:4;27724:6;27656:18;:75::i;:::-;27741:27;::::0;;;:21:::1;::::0;::::1;:27;::::0;;;;:34;;;::::1;27771:4;27741:34;::::0;;27804:17:::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;:22;;27835:14;:31;;;27804:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27786:86;;;27887:7;27882:37;;27903:16;;;;;;;;;;;;;;27882:37;27967:17;::::0;;;::::1;::::0;::::1;;:::i;:::-;27935:83;;27955:10;27935:83;27986:14;:31;;;27935:83;;;;763:25:45::0;;751:2;736:18;;617:177;27935:83:42::1;;;;;;;;26809:1216;;;;6536:4:::0;;6523:18;6509:42;26563:1462;;;;;;:::o;31823:143::-;31894:54;:61;31868:7;;31894:65;;31958:1;;31894:65;:::i;:::-;31887:72;;31823:143;:::o;12353:1148::-;6025:10;5925:36;6011:25;;;:13;:25;;;;;;6751:34;;6011:25;;6006:53;;6045:14;;;;;;;;;;;;;;6006:53;6301:11:::1;6355;6385:34:::0;::::1;;;6404:15;;;;;;;;;;;;;;6385:34;6465:4;6459;6452:18;12459:26:::2;12632:11;12684:1;12675:11;12632::::0;12713:58:::2;;12758:13;;;;;;;;;;;;;;12713:58;12789:25:::0;;12785:58:::2;;12823:20;;;;;;;;;;;;;;12785:58;-1:-1:-1::0;12902:48:42::2;::::0;12919:10;12902:48:::2;::::0;::::2;10342:92:45::0;10450:11;;;10443:27;;;12864:25:42::2;::::0;10486:12:45;;12902:48:42::2;::::0;;;;;::::2;::::0;;;;;;12892:59;;12902:48:::2;12892:59:::0;;::::2;::::0;;-1:-1:-1;12962:63:42::2;12986:18:::0;13006::::2;;::::0;::::2;:4:::0;:18:::2;:::i;:::-;12962:23;:63::i;:::-;13037:18;::::0;;13113:282:::2;13159:17:::0;13216:29;::::2;13269:13;::::0;::::2;;13311:18;::::0;::::2;;13362:22;::::0;::::2;;13113:12;:282::i;:::-;13036:359;;;;;;13442:19;13430:10;13411:83;13463:15;13480:4;:13;;;13411:83;;;;;;10683:25:45::0;;;10739:2;10724:18;;10717:34;10671:2;10656:18;;10509:248;30173:182:42;2334:13:26;:11;:13::i;:::-;30322:18:42::1;;30240:36;30322:18:::0;;;:10;:18:::1;::::0;;;;:26;;;::::1;::::0;;30173:182::o;30877:203::-;2334:13:26;:11;:13::i;:::-;31041:14:42;:32;30877:203::o;1680:168:25:-;1733:7;;1318:27;1784:25;1187:174;2041:247;2334:13:26;:11;:13::i;:::-;1318:27:25;2197:26;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;2263:7:::1;:5;:7::i;:::-;2238:43;;;;;;;;;;;;2120:168;2041:247:::0;:::o;23416:1486:42:-;23324:14;23726:53;;23722:88;;23788:22;;;;;;;;;;;;;;23722:88;23935:10;;23983:35;;6751:34;;23935:10;;;23821:36;24032:21;;;24028:62;;24062:28;;;;;;;;;;;;;;24028:62;24175:44;;;;24101:38;24154:66;;;:20;;;:66;;;;;;;;:82;24294:37;;;;24280:52;;:13;;;:52;;;;;:68;24405:304;;;;;12104:19:45;;;12139:12;;;12132:28;;;12176:12;;;;12169:28;;;12213:12;;;12206:28;;;12250:13;;;12243:29;;;12288:13;;;12281:29;;;12345:15;;;12362:66;12341:88;12326:13;;;12319:111;24154:82:42;24280:68;;12446:13:45;;24405:304:42;;;;;;;;;;;;24382:337;;;;;;24359:360;;24730:9;:16;;;24792:12;24775:30;;;;;;12599:19:45;;12643:2;12634:12;;12470:182;24775:30:42;;;;;;;;;;;;;;;24870:14;;;;24730:165;;;;;;;;;;24830:12;;;;24730:165;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23712:1190;;;;;;23416:1486;;;;;;;:::o;24908:1343::-;25005:7;6751:34;25005:7;25439:1;25413:23;31617:54;;;31537:141;25413:23;:27;25454:51;25508:47;;;:20;;;:47;;;;;25608:37;;;;;25688:28;;;;25413:27;;-1:-1:-1;25508:47:42;;25735:49;;;25731:63;;-1:-1:-1;25793:1:42;;24908:1343;-1:-1:-1;;;;;;24908:1343:42:o;25731:63::-;25809:46;25858:42;;;:13;;;;:42;;;;;;25954:33;;;;;26042:41;;;;;26128:32;;;26182:52;;;;;24908:1343;-1:-1:-1;;;;24908:1343:42:o;2658:162:26:-;966:10:28;2717:7:26;:5;:7::i;:::-;:23;;;2713:101;;2763:40;;;;;966:10:28;2763:40:26;;;3317:74:45;3290:18;;2763:40:26;3141:256:45;1847:127:26;6931:20:27;:18;:20::i;:::-;1929:38:26::1;1954:12;1929:24;:38::i;13507:2448:42:-:0;13722:18;;;;13993:24;14031:8;14053:15;14082:13;14109:17;14150:16;14165:1;14150:12;:16;:::i;:::-;13963:245;;;;;;13904:19:45;;;;13939:12;;13932:28;;;;13976:12;;;13969:28;;;;14013:12;;;14006:28;14050:13;;;14043:29;14140:27:42;14088:13:45;;;14081:29;14126:13;;;14119:29;;;14164:13;;13963:245:42;;;;;;;;;;;;13922:286;;14219:36;14258:32;6751:34;;6563:238;14258:32;14219:71;;14316:12;14305:8;:23;14301:60;;;14337:24;;;;;;;;763:25:45;;;736:18;;14337:24:42;617:177:45;14301:60:42;14408:12;14375:30;2977:4;14375:8;:30;:::i;:::-;:45;14371:82;;;14429:24;;;;;;;;763:25:45;;;736:18;;14429:24:42;617:177:45;14371:82:42;14536:21;;;;14478:34;14515:43;;;:20;;;:43;;;;;:52;;;14585:37;;;14581:78;;;14631:28;;;;;;;;763:25:45;;;736:18;;14631:28:42;617:177:45;14581:78:42;14464:206;14681:25;14708:24;14736:35;14762:8;14736:25;:35::i;:::-;14680:91;;;;14781:25;14830:17;14809:1;:18;;;:38;;;;:::i;:::-;14857:18;;;:38;;;14936:21;;;;;14781:66;;-1:-1:-1;14906:27:42;14967:23;14936:21;14967:23;:::i;:::-;;;;-1:-1:-1;15000:46:42;15049:41;;;:20;;;:41;;;;;15142:35;;15049:41;;15218:23;15070:19;15240:1;15218:23;:::i;:::-;15187:54;;15308:30;15340:20;15362:25;15291:97;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;15281:108;;;;;;15251:138;;15593:17;15567:1;:23;;;:43;;;;:::i;:::-;15554:56;-1:-1:-1;15647:14:42;15554:56;15660:1;15647:14;:::i;:::-;15621:23;;;:40;15724:35;15762:41;;;:20;;;;:41;;;;;;15814:42;;;15866:17;;;:28;;;;-1:-1:-1;;;;15904:25:42;;;;:44;;;;13507:2448;;15694:20;;-1:-1:-1;15841:15:42;;-1:-1:-1;13507:2448:42;;-1:-1:-1;;;;;13507:2448:42:o;2472:222:25:-;1318:27;2621:22;;;;;;2653:34;2678:8;2653:24;:34::i;:::-;2544:150;2472:222;:::o;10393:822:42:-;10534:7;6751:34;10534:7;10643:10;;;;;;:::i;:::-;:36;;;;;;;;:::i;:::-;;10639:376;;10761:3;10748:9;:16;10744:46;;10773:17;;;;;;;;;;;;;;10744:46;10805:23;10839:8;;;;:3;:8;:::i;:::-;10831:17;;;:::i;:::-;10805:43;;10913:22;10937:1;:18;;;10969:3;10957:9;:15;;;;:::i;:::-;10974;10896:94;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;10869:135;;;;;;10862:142;;;;;;10639:376;11042:3;11029:9;:16;11025:46;;11054:17;;;;;;;;;;;;;;11025:46;11103:4;11151:10;;;;:3;:10;:::i;:::-;11178:18;;;;11163:13;;11198:8;;;;:3;:8;:::i;:::-;11134:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;11124:84;;;;;;11117:91;;;;10393:822;;;;;:::o;34778:406::-;34863:7;34946:12;;35009:11;;35038:18;;;;;;;;:::i;:::-;35074:15;;;;35107:46;35122:7;;;;;;;;:::i;:::-;34576:11;34665:18;35131:21;;;;34703:4;34696:19;34751:4;34745;34735:21;;34500:272;35107:46;34912:255;;16949:66:45;16937:79;;;34912:255:42;;;16925:92:45;17046:79;;;17033:11;;;17026:100;17142:11;;;17135:27;;;;17192:79;;17178:12;;;17171:101;17288:12;;;17281:28;;;;17325:12;;;17318:28;;;;17362:12;;34912:255:42;;;;;;;;;;;;34889:288;;;;;;34882:295;;34778:406;;;:::o;28031:894::-;28175:4;28226:12;28265;28153:19;28291:551;28323:6;28320:1;28317:13;28291:551;;28390:14;;;28406:1;28386:22;;28459:127;;;;28608:1;28603:127;;;;28426:304;;28459:127;28501:11;28495:4;28488:25;28560:6;28547:20;28541:4;28534:34;28459:127;;28603;28658:6;28645:20;28639:4;28632:34;28700:11;28694:4;28687:25;28426:304;-1:-1:-1;;28823:4:42;28817;28807:21;;-1:-1:-1;28770:4:42;28758:17;;;;;28346:1;28339:9;28291:551;;;28295:14;;;28874:11;28866:4;:19;28862:56;;28894:24;;;;;;;;;;;;;;28862:56;28143:782;28031:894;;;;;:::o;16385:805::-;16575:12;16589:17;3264:4;16622:43;;16683:18;16703:14;;16666:52;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;16622:97;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16574:145;;;;16976:7;16971:58;;16992:37;;;;;;;;;;;;;;16971:58;17042:14;17071:4;17060:36;;;;;;;;;;;;:::i;:::-;17039:57;;;3469:102;17110:6;:21;17106:77;;17140:43;;;;;;;;;;;;;;7084:141:27;8870:21;8560:40;;;;;;7146:73;;7191:17;;;;;;;;;;;;;;1980:235:26;6931:20:27;:18;:20::i;:::-;2076:26:26::1;::::0;::::1;2072:95;;2125:31;::::0;::::1;::::0;;2153:1:::1;2125:31;::::0;::::1;3317:74:45::0;3290:18;;2125:31:26::1;3141:256:45::0;17258:1104:42;17542:23;17592:13;;17367:25;;;;6751:34;;17542:23;17883;17367:25;17920:426;17945:10;17940:1;:15;17920:426;;18173:13;18202:1;18198;18189:6;:10;:14;18173:30;;18221:20;18244:6;18251:5;18244:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18279:33:42;;;18275:56;;-1:-1:-1;18322:1:42;;18325:5;;-1:-1:-1;17258:1104:42;-1:-1:-1;;;;;;17258:1104:42:o;18275:56::-;-1:-1:-1;;17957:3:42;;17920:426;;;;17616:740;17424:938;;;17258:1104;;;:::o;3774:248:26:-;1313:22;3923:8;;3941:19;;;3923:8;3941:19;;;;;;;;3975:40;;3923:8;;;;;3975:40;;3847:24;;3975:40;3837:185;;3774:248;:::o;14:154:45:-;100:42;93:5;89:54;82:5;79:65;69:93;;158:1;155;148:12;173:247;232:6;285:2;273:9;264:7;260:23;256:32;253:52;;;301:1;298;291:12;253:52;340:9;327:23;359:31;384:5;359:31;:::i;:::-;409:5;173:247;-1:-1:-1;;;173:247:45:o;799:397::-;895:6;948:2;936:9;927:7;923:23;919:32;916:52;;;964:1;961;954:12;916:52;1004:9;991:23;1037:18;1029:6;1026:30;1023:50;;;1069:1;1066;1059:12;1023:50;1092:22;;1148:3;1130:16;;;1126:26;1123:46;;;1165:1;1162;1155:12;1201:180;1260:6;1313:2;1301:9;1292:7;1288:23;1284:32;1281:52;;;1329:1;1326;1319:12;1281:52;-1:-1:-1;1352:23:45;;1201:180;-1:-1:-1;1201:180:45:o;1386:638::-;1502:6;1510;1518;1526;1579:3;1567:9;1558:7;1554:23;1550:33;1547:53;;;1596:1;1593;1586:12;1547:53;1641:23;;;-1:-1:-1;1761:2:45;1746:18;;1733:32;;-1:-1:-1;1864:2:45;1849:18;;1836:32;;-1:-1:-1;1946:2:45;1931:18;;1918:32;1959:33;1918:32;1959:33;:::i;:::-;1386:638;;;;-1:-1:-1;1386:638:45;;-1:-1:-1;;1386:638:45:o;2029:155::-;2109:20;;2158:1;2148:12;;2138:40;;2174:1;2171;2164:12;2138:40;2029:155;;;:::o;2189:218::-;2268:6;2321:2;2309:9;2300:7;2296:23;2292:32;2289:52;;;2337:1;2334;2327:12;2289:52;2360:41;2391:9;2360:41;:::i;2594:164::-;2662:5;2707:3;2698:6;2693:3;2689:16;2685:26;2682:46;;;2724:1;2721;2714:12;2682:46;-1:-1:-1;2746:6:45;2594:164;-1:-1:-1;2594:164:45:o;2763:373::-;2858:6;2911:2;2899:9;2890:7;2886:23;2882:32;2879:52;;;2927:1;2924;2917:12;2879:52;2967:9;2954:23;3000:18;2992:6;2989:30;2986:50;;;3032:1;3029;3022:12;2986:50;3055:75;3122:7;3113:6;3102:9;3098:22;3055:75;:::i;:::-;3045:85;2763:373;-1:-1:-1;;;;2763:373:45:o;3853:281::-;3717:12;;3705:25;;3779:4;3768:16;;;3762:23;3746:14;;;3739:47;3835:4;3824:16;;;3818:23;3802:14;;;3795:47;4061:2;4046:18;;4073:55;3633:215;4336:332;4424:6;4432;4485:2;4473:9;4464:7;4460:23;4456:32;4453:52;;;4501:1;4498;4491:12;4453:52;4524:41;4555:9;4524:41;:::i;:::-;4514:51;4634:2;4619:18;;;;4606:32;;-1:-1:-1;;;4336:332:45:o;5176:402::-;5278:6;5331:2;5319:9;5310:7;5306:23;5302:32;5299:52;;;5347:1;5344;5337:12;5299:52;5387:9;5374:23;5420:18;5412:6;5409:30;5406:50;;;5452:1;5449;5442:12;5406:50;5475:22;;5531:2;5513:16;;;5509:25;5506:45;;;5547:1;5544;5537:12;5865:1217;6061:6;6069;6077;6085;6093;6101;6145:9;6136:7;6132:23;6175:3;6171:2;6167:12;6164:32;;;6192:1;6189;6182:12;6164:32;6237:23;;;-1:-1:-1;6377:2:45;6308:66;6300:75;;6296:84;6293:104;;;6393:1;6390;6383:12;6293:104;;6431:2;6420:9;6416:18;6406:28;;6453:72;6517:7;6511:3;6500:9;6496:19;6453:72;:::i;:::-;6443:82;;6576:3;6565:9;6561:19;6548:33;6604:18;6596:6;6593:30;6590:50;;;6636:1;6633;6626:12;6590:50;6659:22;;6712:4;6704:13;;6700:27;-1:-1:-1;6690:55:45;;6741:1;6738;6731:12;6690:55;6781:2;6768:16;6807:18;6799:6;6796:30;6793:50;;;6839:1;6836;6829:12;6793:50;6892:7;6887:2;6877:6;6874:1;6870:14;6866:2;6862:23;6858:32;6855:45;6852:65;;;6913:1;6910;6903:12;6852:65;5865:1217;;;;-1:-1:-1;5865:1217:45;;6944:2;6936:11;;;;5865:1217;7045:3;7030:19;;;7017:33;;5865:1217;-1:-1:-1;;;5865:1217:45:o;7965:184::-;8017:77;8014:1;8007:88;8114:4;8111:1;8104:15;8138:4;8135:1;8128:15;8154:125;8219:9;;;8240:10;;;8237:36;;;8253:18;;:::i;8284:184::-;8336:77;8333:1;8326:88;8433:4;8430:1;8423:15;8457:4;8454:1;8447:15;8473:128;8540:9;;;8561:11;;;8558:37;;;8575:18;;:::i;8606:580::-;8683:4;8689:6;8749:11;8736:25;8839:66;8828:8;8812:14;8808:29;8804:102;8784:18;8780:127;8770:155;;8921:1;8918;8911:12;8770:155;8948:33;;9000:20;;;-1:-1:-1;9043:18:45;9032:30;;9029:50;;;9075:1;9072;9065:12;9029:50;9108:4;9096:17;;-1:-1:-1;9139:14:45;9135:27;;;9125:38;;9122:58;;;9176:1;9173;9166:12;9122:58;8606:580;;;;;:::o;9508:184::-;9560:77;9557:1;9550:88;9657:4;9654:1;9647:15;9681:4;9678:1;9671:15;9911:271;10094:6;10086;10081:3;10068:33;10050:3;10120:16;;10145:13;;;10120:16;9911:271;-1:-1:-1;9911:271:45:o;10762:195::-;10801:3;10832:66;10825:5;10822:77;10819:103;;10902:18;;:::i;:::-;-1:-1:-1;10949:1:45;10938:13;;10762:195::o;12657:945::-;12888:2;12877:9;12870:21;12851:4;12920:6;12914:13;12963:6;12958:2;12947:9;12943:18;12936:34;13025:6;13018:4;13010:6;13006:17;13000:3;12989:9;12985:19;12979:53;13082:1;13076:3;13067:6;13056:9;13052:22;13048:32;13041:43;13139:66;13134:2;13126:6;13122:15;13118:88;13107:9;13103:104;13093:114;;13269:3;13257:9;13253:2;13249:18;13245:28;13238:4;13227:9;13223:20;13216:58;13304:6;13298:3;13294:2;13290:12;13283:28;13355:6;13347;13341:3;13337:2;13333:12;13320:42;13416:1;13378:36;13386:15;;;13378:36;;13371:47;;;;13584:2;13569:18;;;;13562:34;;;;-1:-1:-1;13467:2:45;13455:15;;;13472:66;13451:88;13443:97;13435:118;;12657:945;-1:-1:-1;;12657:945:45:o;14188:211::-;14229:3;14267:5;14261:12;14311:6;14304:4;14297:5;14293:16;14288:3;14282:36;14373:1;14337:16;;14362:13;;;-1:-1:-1;14337:16:45;;14188:211;-1:-1:-1;14188:211:45:o;14404:319::-;14619:6;14614:3;14607:19;14656:6;14651:2;14646:3;14642:12;14635:28;14589:3;14679:38;14713:2;14708:3;14704:12;14696:6;14679:38;:::i;:::-;14672:45;14404:319;-1:-1:-1;;;;;14404:319:45:o;14728:315::-;14848:19;;14887:2;14879:11;;14876:161;;;14959:66;14948:2;14944:12;;;14941:1;14937:20;14933:93;14922:105;14728:315;;;;:::o;15048:309::-;15134:1;15127:5;15124:12;15114:200;;15170:77;15167:1;15160:88;15271:4;15268:1;15261:15;15299:4;15296:1;15289:15;15114:200;15339:3;15335:15;15323:28;;15048:309::o;15362:418::-;15593:43;15632:3;15624:6;15593:43;:::i;:::-;15661:1;15652:11;;15645:27;;;;15697:2;15688:12;;15681:28;;;;15734:2;15725:12;;15718:28;15771:2;15762:12;;15362:418;-1:-1:-1;15362:418:45:o;15785:535::-;16038:43;16077:3;16069:6;16038:43;:::i;:::-;16133:6;16126:14;16119:22;16114:3;16110:32;16106:1;16101:3;16097:11;16090:53;16172:6;16168:1;16163:3;16159:11;16152:27;16223:6;16215;16210:2;16205:3;16201:12;16188:42;16020:3;16253:16;;16271:2;16249:25;16283:13;;;16249:25;15785:535;-1:-1:-1;;;;15785:535:45:o;16325:332::-;16383:6;16436:2;16424:9;16415:7;16411:23;16407:32;16404:52;;;16452:1;16449;16442:12;16404:52;16491:9;16478:23;16541:66;16534:5;16530:78;16523:5;16520:89;16510:117;;16623:1;16620;16613:12;17385:345;17582:6;17577:3;17570:19;17633:6;17625;17620:2;17615:3;17611:12;17598:42;17552:3;17663:16;;17681:2;17659:25;17693:13;;;17659:25;17385:345;-1:-1:-1;;17385:345:45:o;17735:189::-;17864:3;17889:29;17914:3;17906:6;17889:29;:::i;17929:343::-;18008:6;18016;18069:2;18057:9;18048:7;18044:23;18040:32;18037:52;;;18085:1;18082;18075:12;18037:52;-1:-1:-1;;18130:16:45;;18236:2;18221:18;;;18215:25;18130:16;;18215:25;;-1:-1:-1;17929:343:45:o",
        "linkReferences": {}
    },
    "methodIdentifiers": {
        "L1_INITIATION_DELAY()": "d900dbd3",
        "MAX_L1_ORIGIN_DELAY()": "b219266d",
        "MAX_PREBLOCKS_PER_BATCH()": "a876ecd1",
        "acceptOwnership()": "79ba5097",
        "addProver(address)": "1d49e457",
        "addSequencer(address)": "8a336231",
        "appExeCommit()": "0e9aa4b3",
        "claimProverFees(address)": "0e60ad9c",
        "commitBatch((bytes32,uint256,uint256,uint256,bytes))": "23de69fa",
        "commitBatch4844((bytes32,uint256,uint256,uint256,bytes))": "abb63e3e",
        "committedBatchesCount()": "aab78a8e",
        "extsload(bytes32)": "1e2eaeaf",
        "finalizeBatch((uint256,uint256,uint256,bytes32,address,bytes))": "1022929f",
        "finalizeWithdrawal(uint256,(bytes32,bytes32,bytes32),(bytes32,bytes1,bytes32,uint256,address),bytes32[],uint256)": "9f639b62",
        "finalizedBatchData(uint256)": "317162d6",
        "finalizedBatchesCount()": "7dcdebd5",
        "initialize(uint256,uint256,uint256,address)": "1f8d519d",
        "initiateL1Transaction((uint8,bytes))": "909ea9b1",
        "isProver(address)": "0a245924",
        "isSequencer(address)": "6d46e987",
        "isWithdrawalClaimed(bytes32)": "aea8b9a7",
        "l1BatchCount()": "a7974030",
        "l1BatchData(uint256)": "7d07568a",
        "l1BatchInclusionBlock(uint256)": "67c46240",
        "l1InitiatedFee(uint8)": "209df201",
        "latestOutputRoot()": "ca267238",
        "owner()": "8da5cb5b",
        "pendingL1Batches()": "82c25d35",
        "pendingOwner()": "e30c3978",
        "proverRewards(address)": "a5543308",
        "removeProver(address)": "b571d3dd",
        "removeSequencer(address)": "6989ca7c",
        "renounceOwnership()": "715018a6",
        "sequencerBatchCount()": "8fed22d3",
        "sequencerBatchData(uint256)": "b7dffcfb",
        "setL1InitiatedTransactionFee(uint8,uint256)": "6c3c2927",
        "transferOwnership(address)": "f2fde38b",
        "updateAppExeCommit(bytes32)": "dd6c4727",
        "updateVerifier(address)": "97fc007c",
        "verifier()": "2b7ac3f3"
    },
    "rawMetadata": "{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CallPointEvaluationPrecompileFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FoundMultipleBlobs\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectProofLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAppExeCommit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidLeafExeCommit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMsgValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidVerifier\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWithdrawalProof\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1BatchNotYetFinalizable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"l1Origin\",\"type\":\"uint256\"}],\"name\":\"L1OriginOutOfOrder\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"l1Origin\",\"type\":\"uint256\"}],\"name\":\"L1OriginTooNew\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"l1Origin\",\"type\":\"uint256\"}],\"name\":\"L1OriginTooOld\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxPreblocksPerL1BatchReached\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoBlobFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotProver\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotSequencer\",\"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\":\"ParentBatchHasNoOutputRoot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProofVerificationFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SequencerBatchNotAssociated\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"finalizedBatchesCount\",\"type\":\"uint256\"}],\"name\":\"TargetBatchAlreadyFinalized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetL1BatchNotCommitted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetSequencerBatchNotCommitted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnexpectedPointEvaluationPrecompileOutput\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WithdrawalAlreadyClaimed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WithdrawalsRootVerificationFailed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"batchIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"sequencerBatchIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"batchCommitment\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"l1Origin\",\"type\":\"uint256\"}],\"name\":\"BatchCommitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"batchIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"sequencerBatchIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"batchCommitment\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"l1Origin\",\"type\":\"uint256\"}],\"name\":\"BatchCommitted4844\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"parentFinalizedBatchIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"targetBatchIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"newOutputRoot\",\"type\":\"bytes32\"}],\"name\":\"BatchesFinalized\",\"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\":\"l1BatchIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"l1BatchCommitment\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"l1BatchInclusionBlock\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"l1InitiatedNonce\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"L1TransactionInitiated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"batchNumber\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"withdrawAmount\",\"type\":\"uint256\"}],\"name\":\"WithdrawalFinalized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"L1_INITIATION_DELAY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_L1_ORIGIN_DELAY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_PREBLOCKS_PER_BATCH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"}],\"name\":\"addProver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sequencer\",\"type\":\"address\"}],\"name\":\"addSequencer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"appExeCommit\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiverAddress\",\"type\":\"address\"}],\"name\":\"claimProverFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"sequencerKeystoreAddress\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"l1Origin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseFeeScalar\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blobBaseFeeScalar\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"preblocks\",\"type\":\"bytes\"}],\"internalType\":\"struct AxiomKeystoreRollup.CommitBatchArgs\",\"name\":\"args\",\"type\":\"tuple\"}],\"name\":\"commitBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"sequencerKeystoreAddress\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"l1Origin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseFeeScalar\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blobBaseFeeScalar\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"blobDataProof\",\"type\":\"bytes\"}],\"internalType\":\"struct AxiomKeystoreRollup.CommitBatch4844Args\",\"name\":\"args\",\"type\":\"tuple\"}],\"name\":\"commitBatch4844\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"committedBatchesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"extsload\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"parentFinalizedBatchIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"targetSequencerBatchIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"targetL1BatchIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"newOutputRoot\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"rewardAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"partialProof\",\"type\":\"bytes\"}],\"internalType\":\"struct AxiomKeystoreRollup.FinalizationArgs\",\"name\":\"args\",\"type\":\"tuple\"}],\"name\":\"finalizeBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"batchIndex\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"withdrawalsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"lastValidBlockhash\",\"type\":\"bytes32\"}],\"internalType\":\"struct AxiomKeystoreRollup.OutputRootPreimage\",\"name\":\"outputRootPreimage\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"imtKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes1\",\"name\":\"nextDummyByte\",\"type\":\"bytes1\"},{\"internalType\":\"bytes32\",\"name\":\"nextImtKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"withdrawalAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"internalType\":\"struct AxiomKeystoreRollup.WithdrawalArgs\",\"name\":\"withdrawalArgs\",\"type\":\"tuple\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"isLeft\",\"type\":\"uint256\"}],\"name\":\"finalizeWithdrawal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"finalizedBatchData\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"outputRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"sequencerBatchIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"l1BatchIndex\",\"type\":\"uint256\"}],\"internalType\":\"struct AxiomKeystoreRollup.FinalizedBatchData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"finalizedBatchesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"l1DepositFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"l1WithdrawalFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"l1UpdateFee\",\"type\":\"uint256\"},{\"internalType\":\"contract IOpenVmHalo2Verifier\",\"name\":\"_verifier\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum AxiomKeystoreRollup.KeystoreTxType\",\"name\":\"txType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct AxiomKeystoreRollup.L1InitiatedTransaction\",\"name\":\"_tx\",\"type\":\"tuple\"}],\"name\":\"initiateL1Transaction\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"}],\"name\":\"isProver\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sequencer\",\"type\":\"address\"}],\"name\":\"isSequencer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"leaf\",\"type\":\"bytes32\"}],\"name\":\"isWithdrawalClaimed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l1BatchCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"l1BatchData\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"batchCommitment\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"preblockCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeAccumulator\",\"type\":\"uint256\"}],\"internalType\":\"struct AxiomKeystoreRollup.L1BatchData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"l1BatchInclusionBlock\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum AxiomKeystoreRollup.KeystoreTxType\",\"name\":\"txType\",\"type\":\"uint8\"}],\"name\":\"l1InitiatedFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestOutputRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingL1Batches\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"}],\"name\":\"proverRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"}],\"name\":\"removeProver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sequencer\",\"type\":\"address\"}],\"name\":\"removeSequencer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sequencerBatchCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"sequencerBatchData\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"batchCommitment\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"l1Origin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"prevL1BatchIndex\",\"type\":\"uint256\"}],\"internalType\":\"struct AxiomKeystoreRollup.SequencerBatchData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum AxiomKeystoreRollup.KeystoreTxType\",\"name\":\"txType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"setL1InitiatedTransactionFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"newAppExeCommit\",\"type\":\"bytes32\"}],\"name\":\"updateAppExeCommit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IOpenVmHalo2Verifier\",\"name\":\"newVerifier\",\"type\":\"address\"}],\"name\":\"updateVerifier\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"verifier\",\"outputs\":[{\"internalType\":\"contract IOpenVmHalo2Verifier\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"CallPointEvaluationPrecompileFailed()\":[{\"details\":\"Thrown when call precompile failed.\"}],\"FoundMultipleBlobs()\":[{\"details\":\"Thrown when the transaction has multiple blobs.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NoBlobFound()\":[{\"details\":\"Thrown when no blob found in the transaction.\"}],\"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.\"}],\"UnexpectedPointEvaluationPrecompileOutput()\":[{\"details\":\"Thrown when the precompile output is incorrect.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"finalizeBatch((uint256,uint256,uint256,bytes32,address,bytes))\":{\"details\":\"No constraint on parentFinalizedBatch. It must have an output root which means we know it is finalized. The target global index must NOT be finalized. So we know parentFinalizedBatch will come before the target.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"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.\"},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner.\"}},\"stateVariables\":{\"BLS_MODULUS\":{\"details\":\"BLS Modulus value defined in EIP-4844 and the magic value returned from a successful call to the point evaluation precompile\"},\"POINT_EVALUATION_PRECOMPILE_ADDR\":{\"details\":\"Address of the point evaluation precompile used for EIP-4844 blob verification.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"initiateL1Transaction((uint8,bytes))\":{\"notice\":\"Behavior will be weird if someone calls this in same tx as deployment/initialization\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/AxiomKeystoreRollup.sol\":\"AxiomKeystoreRollup\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openvm-solidity-sdk/=lib/openvm-solidity-sdk/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openvm-solidity-sdk/src/interfaces/IOpenVmHalo2Verifier.sol\":{\"keccak256\":\"0xc0a5097f4493b2cd1a25374433f6841fe778120513d26d1260d85f3d8ee0a2d4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://016109456b252aa6334cd921d93cba268a25a19972c0b54759f55c9e88eafda0\",\"dweb:/ipfs/QmNeqMnbnGroybjmqGoaSDTsyhZrnoooNPkxwPZxTHzVTy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":{\"keccak256\":\"0xbca4a4f66d98028293dba695851d1b20d3e0ba2fff7453fb241f192fa3fc6b6f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://013b3cfd9d1e34dad409c3b9a340860e8651e61cda509de33599fb5102f62fe7\",\"dweb:/ipfs/QmTVjDKofM9Nst8w8LAA3HHgi1eCnGYBpFb7Nbat71e2xz\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"src/AxiomKeystoreRollup.sol\":{\"keccak256\":\"0xcdb5fc1d950d9cf4ae575e5b6f55782f7f919202b55ce68978c2217a9d1d7e62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2b8885c57628c956a604ce1b4a7b121aa6dce86bad0ee8091518306806de8016\",\"dweb:/ipfs/QmbdJcFCMKZgm3LfeAwtK6SDWgmDhiTa7eK78oNVDDCPtZ\"]}},\"version\":1}",
    "metadata": {
        "compiler": { "version": "0.8.26+commit.8a97fa7a" },
        "language": "Solidity",
        "output": {
            "abi": [
                { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" },
                { "inputs": [], "type": "error", "name": "CallPointEvaluationPrecompileFailed" },
                { "inputs": [], "type": "error", "name": "FoundMultipleBlobs" },
                { "inputs": [], "type": "error", "name": "IncorrectProofLength" },
                { "inputs": [], "type": "error", "name": "InvalidAppExeCommit" },
                { "inputs": [], "type": "error", "name": "InvalidInitialization" },
                { "inputs": [], "type": "error", "name": "InvalidLeafExeCommit" },
                { "inputs": [], "type": "error", "name": "InvalidMsgValue" },
                { "inputs": [], "type": "error", "name": "InvalidVerifier" },
                { "inputs": [], "type": "error", "name": "InvalidWithdrawalProof" },
                { "inputs": [], "type": "error", "name": "L1BatchNotYetFinalizable" },
                {
                    "inputs": [{ "internalType": "uint256", "name": "l1Origin", "type": "uint256" }],
                    "type": "error",
                    "name": "L1OriginOutOfOrder"
                },
                {
                    "inputs": [{ "internalType": "uint256", "name": "l1Origin", "type": "uint256" }],
                    "type": "error",
                    "name": "L1OriginTooNew"
                },
                {
                    "inputs": [{ "internalType": "uint256", "name": "l1Origin", "type": "uint256" }],
                    "type": "error",
                    "name": "L1OriginTooOld"
                },
                { "inputs": [], "type": "error", "name": "MaxPreblocksPerL1BatchReached" },
                { "inputs": [], "type": "error", "name": "NoBlobFound" },
                { "inputs": [], "type": "error", "name": "NotInitializing" },
                { "inputs": [], "type": "error", "name": "NotProver" },
                { "inputs": [], "type": "error", "name": "NotSequencer" },
                {
                    "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": "ParentBatchHasNoOutputRoot" },
                { "inputs": [], "type": "error", "name": "ProofVerificationFailed" },
                { "inputs": [], "type": "error", "name": "ReentrantCall" },
                { "inputs": [], "type": "error", "name": "SequencerBatchNotAssociated" },
                {
                    "inputs": [
                        { "internalType": "uint256", "name": "finalizedBatchesCount", "type": "uint256" }
                    ],
                    "type": "error",
                    "name": "TargetBatchAlreadyFinalized"
                },
                { "inputs": [], "type": "error", "name": "TargetL1BatchNotCommitted" },
                { "inputs": [], "type": "error", "name": "TargetSequencerBatchNotCommitted" },
                { "inputs": [], "type": "error", "name": "TransferFailed" },
                { "inputs": [], "type": "error", "name": "UnexpectedPointEvaluationPrecompileOutput" },
                { "inputs": [], "type": "error", "name": "WithdrawalAlreadyClaimed" },
                { "inputs": [], "type": "error", "name": "WithdrawalsRootVerificationFailed" },
                {
                    "inputs": [
                        { "internalType": "uint256", "name": "batchIndex", "type": "uint256", "indexed": true },
                        {
                            "internalType": "uint256",
                            "name": "sequencerBatchIndex",
                            "type": "uint256",
                            "indexed": true
                        },
                        {
                            "internalType": "bytes32",
                            "name": "batchCommitment",
                            "type": "bytes32",
                            "indexed": false
                        },
                        { "internalType": "uint256", "name": "l1Origin", "type": "uint256", "indexed": false }
                    ],
                    "type": "event",
                    "name": "BatchCommitted",
                    "anonymous": false
                },
                {
                    "inputs": [
                        { "internalType": "uint256", "name": "batchIndex", "type": "uint256", "indexed": true },
                        {
                            "internalType": "uint256",
                            "name": "sequencerBatchIndex",
                            "type": "uint256",
                            "indexed": true
                        },
                        {
                            "internalType": "bytes32",
                            "name": "batchCommitment",
                            "type": "bytes32",
                            "indexed": false
                        },
                        { "internalType": "uint256", "name": "l1Origin", "type": "uint256", "indexed": false }
                    ],
                    "type": "event",
                    "name": "BatchCommitted4844",
                    "anonymous": false
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint256",
                            "name": "parentFinalizedBatchIndex",
                            "type": "uint256",
                            "indexed": true
                        },
                        {
                            "internalType": "uint256",
                            "name": "targetBatchIndex",
                            "type": "uint256",
                            "indexed": true
                        },
                        {
                            "internalType": "bytes32",
                            "name": "newOutputRoot",
                            "type": "bytes32",
                            "indexed": false
                        }
                    ],
                    "type": "event",
                    "name": "BatchesFinalized",
                    "anonymous": false
                },
                {
                    "inputs": [
                        { "internalType": "uint64", "name": "version", "type": "uint64", "indexed": false }
                    ],
                    "type": "event",
                    "name": "Initialized",
                    "anonymous": false
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint256",
                            "name": "l1BatchIndex",
                            "type": "uint256",
                            "indexed": true
                        },
                        {
                            "internalType": "bytes32",
                            "name": "l1BatchCommitment",
                            "type": "bytes32",
                            "indexed": false
                        },
                        {
                            "internalType": "uint256",
                            "name": "l1BatchInclusionBlock",
                            "type": "uint256",
                            "indexed": false
                        },
                        {
                            "internalType": "uint256",
                            "name": "l1InitiatedNonce",
                            "type": "uint256",
                            "indexed": false
                        },
                        { "internalType": "bytes32", "name": "txHash", "type": "bytes32", "indexed": false }
                    ],
                    "type": "event",
                    "name": "L1TransactionInitiated",
                    "anonymous": false
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "previousOwner",
                            "type": "address",
                            "indexed": true
                        },
                        { "internalType": "address", "name": "newOwner", "type": "address", "indexed": true }
                    ],
                    "type": "event",
                    "name": "OwnershipTransferStarted",
                    "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": "uint256",
                            "name": "batchNumber",
                            "type": "uint256",
                            "indexed": true
                        },
                        { "internalType": "address", "name": "to", "type": "address", "indexed": true },
                        {
                            "internalType": "uint256",
                            "name": "withdrawAmount",
                            "type": "uint256",
                            "indexed": false
                        }
                    ],
                    "type": "event",
                    "name": "WithdrawalFinalized",
                    "anonymous": false
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "L1_INITIATION_DELAY",
                    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "MAX_L1_ORIGIN_DELAY",
                    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "MAX_PREBLOCKS_PER_BATCH",
                    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }]
                },
                {
                    "inputs": [],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "acceptOwnership"
                },
                {
                    "inputs": [{ "internalType": "address", "name": "prover", "type": "address" }],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "addProver"
                },
                {
                    "inputs": [{ "internalType": "address", "name": "sequencer", "type": "address" }],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "addSequencer"
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "appExeCommit",
                    "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }]
                },
                {
                    "inputs": [{ "internalType": "address", "name": "receiverAddress", "type": "address" }],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "claimProverFees"
                },
                {
                    "inputs": [
                        {
                            "internalType": "struct AxiomKeystoreRollup.CommitBatchArgs",
                            "name": "args",
                            "type": "tuple",
                            "components": [
                                {
                                    "internalType": "bytes32",
                                    "name": "sequencerKeystoreAddress",
                                    "type": "bytes32"
                                },
                                { "internalType": "uint256", "name": "l1Origin", "type": "uint256" },
                                { "internalType": "uint256", "name": "baseFeeScalar", "type": "uint256" },
                                { "internalType": "uint256", "name": "blobBaseFeeScalar", "type": "uint256" },
                                { "internalType": "bytes", "name": "preblocks", "type": "bytes" }
                            ]
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "commitBatch"
                },
                {
                    "inputs": [
                        {
                            "internalType": "struct AxiomKeystoreRollup.CommitBatch4844Args",
                            "name": "args",
                            "type": "tuple",
                            "components": [
                                {
                                    "internalType": "bytes32",
                                    "name": "sequencerKeystoreAddress",
                                    "type": "bytes32"
                                },
                                { "internalType": "uint256", "name": "l1Origin", "type": "uint256" },
                                { "internalType": "uint256", "name": "baseFeeScalar", "type": "uint256" },
                                { "internalType": "uint256", "name": "blobBaseFeeScalar", "type": "uint256" },
                                { "internalType": "bytes", "name": "blobDataProof", "type": "bytes" }
                            ]
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "commitBatch4844"
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "committedBatchesCount",
                    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }]
                },
                {
                    "inputs": [{ "internalType": "bytes32", "name": "slot", "type": "bytes32" }],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "extsload",
                    "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }]
                },
                {
                    "inputs": [
                        {
                            "internalType": "struct AxiomKeystoreRollup.FinalizationArgs",
                            "name": "args",
                            "type": "tuple",
                            "components": [
                                {
                                    "internalType": "uint256",
                                    "name": "parentFinalizedBatchIndex",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "targetSequencerBatchIndex",
                                    "type": "uint256"
                                },
                                { "internalType": "uint256", "name": "targetL1BatchIndex", "type": "uint256" },
                                { "internalType": "bytes32", "name": "newOutputRoot", "type": "bytes32" },
                                { "internalType": "address", "name": "rewardAddress", "type": "address" },
                                { "internalType": "bytes", "name": "partialProof", "type": "bytes" }
                            ]
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "finalizeBatch"
                },
                {
                    "inputs": [
                        { "internalType": "uint256", "name": "batchIndex", "type": "uint256" },
                        {
                            "internalType": "struct AxiomKeystoreRollup.OutputRootPreimage",
                            "name": "outputRootPreimage",
                            "type": "tuple",
                            "components": [
                                { "internalType": "bytes32", "name": "stateRoot", "type": "bytes32" },
                                { "internalType": "bytes32", "name": "withdrawalsRoot", "type": "bytes32" },
                                { "internalType": "bytes32", "name": "lastValidBlockhash", "type": "bytes32" }
                            ]
                        },
                        {
                            "internalType": "struct AxiomKeystoreRollup.WithdrawalArgs",
                            "name": "withdrawalArgs",
                            "type": "tuple",
                            "components": [
                                { "internalType": "bytes32", "name": "imtKey", "type": "bytes32" },
                                { "internalType": "bytes1", "name": "nextDummyByte", "type": "bytes1" },
                                { "internalType": "bytes32", "name": "nextImtKey", "type": "bytes32" },
                                { "internalType": "uint256", "name": "withdrawalAmount", "type": "uint256" },
                                { "internalType": "address", "name": "to", "type": "address" }
                            ]
                        },
                        { "internalType": "bytes32[]", "name": "proof", "type": "bytes32[]" },
                        { "internalType": "uint256", "name": "isLeft", "type": "uint256" }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "finalizeWithdrawal"
                },
                {
                    "inputs": [{ "internalType": "uint256", "name": "index", "type": "uint256" }],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "finalizedBatchData",
                    "outputs": [
                        {
                            "internalType": "struct AxiomKeystoreRollup.FinalizedBatchData",
                            "name": "",
                            "type": "tuple",
                            "components": [
                                { "internalType": "bytes32", "name": "outputRoot", "type": "bytes32" },
                                { "internalType": "uint256", "name": "sequencerBatchIndex", "type": "uint256" },
                                { "internalType": "uint256", "name": "l1BatchIndex", "type": "uint256" }
                            ]
                        }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "finalizedBatchesCount",
                    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }]
                },
                {
                    "inputs": [
                        { "internalType": "uint256", "name": "l1DepositFee", "type": "uint256" },
                        { "internalType": "uint256", "name": "l1WithdrawalFee", "type": "uint256" },
                        { "internalType": "uint256", "name": "l1UpdateFee", "type": "uint256" },
                        {
                            "internalType": "contract IOpenVmHalo2Verifier",
                            "name": "_verifier",
                            "type": "address"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "initialize"
                },
                {
                    "inputs": [
                        {
                            "internalType": "struct AxiomKeystoreRollup.L1InitiatedTransaction",
                            "name": "_tx",
                            "type": "tuple",
                            "components": [
                                {
                                    "internalType": "enum AxiomKeystoreRollup.KeystoreTxType",
                                    "name": "txType",
                                    "type": "uint8"
                                },
                                { "internalType": "bytes", "name": "data", "type": "bytes" }
                            ]
                        }
                    ],
                    "stateMutability": "payable",
                    "type": "function",
                    "name": "initiateL1Transaction"
                },
                {
                    "inputs": [{ "internalType": "address", "name": "prover", "type": "address" }],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "isProver",
                    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }]
                },
                {
                    "inputs": [{ "internalType": "address", "name": "sequencer", "type": "address" }],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "isSequencer",
                    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }]
                },
                {
                    "inputs": [{ "internalType": "bytes32", "name": "leaf", "type": "bytes32" }],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "isWithdrawalClaimed",
                    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "l1BatchCount",
                    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }]
                },
                {
                    "inputs": [{ "internalType": "uint256", "name": "index", "type": "uint256" }],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "l1BatchData",
                    "outputs": [
                        {
                            "internalType": "struct AxiomKeystoreRollup.L1BatchData",
                            "name": "",
                            "type": "tuple",
                            "components": [
                                { "internalType": "bytes32", "name": "batchCommitment", "type": "bytes32" },
                                { "internalType": "uint256", "name": "preblockCount", "type": "uint256" },
                                { "internalType": "uint256", "name": "feeAccumulator", "type": "uint256" }
                            ]
                        }
                    ]
                },
                {
                    "inputs": [{ "internalType": "uint256", "name": "index", "type": "uint256" }],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "l1BatchInclusionBlock",
                    "outputs": [{ "internalType": "uint32", "name": "", "type": "uint32" }]
                },
                {
                    "inputs": [
                        {
                            "internalType": "enum AxiomKeystoreRollup.KeystoreTxType",
                            "name": "txType",
                            "type": "uint8"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "l1InitiatedFee",
                    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "latestOutputRoot",
                    "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "owner",
                    "outputs": [{ "internalType": "address", "name": "", "type": "address" }]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "pendingL1Batches",
                    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "pendingOwner",
                    "outputs": [{ "internalType": "address", "name": "", "type": "address" }]
                },
                {
                    "inputs": [{ "internalType": "address", "name": "prover", "type": "address" }],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "proverRewards",
                    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }]
                },
                {
                    "inputs": [{ "internalType": "address", "name": "prover", "type": "address" }],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "removeProver"
                },
                {
                    "inputs": [{ "internalType": "address", "name": "sequencer", "type": "address" }],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "removeSequencer"
                },
                {
                    "inputs": [],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "renounceOwnership"
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "sequencerBatchCount",
                    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }]
                },
                {
                    "inputs": [{ "internalType": "uint256", "name": "index", "type": "uint256" }],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "sequencerBatchData",
                    "outputs": [
                        {
                            "internalType": "struct AxiomKeystoreRollup.SequencerBatchData",
                            "name": "",
                            "type": "tuple",
                            "components": [
                                { "internalType": "bytes32", "name": "batchCommitment", "type": "bytes32" },
                                { "internalType": "uint256", "name": "l1Origin", "type": "uint256" },
                                { "internalType": "uint256", "name": "prevL1BatchIndex", "type": "uint256" }
                            ]
                        }
                    ]
                },
                {
                    "inputs": [
                        {
                            "internalType": "enum AxiomKeystoreRollup.KeystoreTxType",
                            "name": "txType",
                            "type": "uint8"
                        },
                        { "internalType": "uint256", "name": "newFee", "type": "uint256" }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "setL1InitiatedTransactionFee"
                },
                {
                    "inputs": [{ "internalType": "address", "name": "newOwner", "type": "address" }],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "transferOwnership"
                },
                {
                    "inputs": [{ "internalType": "bytes32", "name": "newAppExeCommit", "type": "bytes32" }],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "updateAppExeCommit"
                },
                {
                    "inputs": [
                        {
                            "internalType": "contract IOpenVmHalo2Verifier",
                            "name": "newVerifier",
                            "type": "address"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "updateVerifier"
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "verifier",
                    "outputs": [
                        { "internalType": "contract IOpenVmHalo2Verifier", "name": "", "type": "address" }
                    ]
                }
            ],
            "devdoc": {
                "kind": "dev",
                "methods": {
                    "acceptOwnership()": { "details": "The new owner accepts the ownership transfer." },
                    "finalizeBatch((uint256,uint256,uint256,bytes32,address,bytes))": {
                        "details": "No constraint on parentFinalizedBatch. It must have an output root which means we know it is finalized. The target global index must NOT be finalized. So we know parentFinalizedBatch will come before the target."
                    },
                    "owner()": { "details": "Returns the address of the current owner." },
                    "pendingOwner()": { "details": "Returns the address of the pending owner." },
                    "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."
                    },
                    "transferOwnership(address)": {
                        "details": "Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner."
                    }
                },
                "version": 1
            },
            "userdoc": {
                "kind": "user",
                "methods": {
                    "initiateL1Transaction((uint8,bytes))": {
                        "notice": "Behavior will be weird if someone calls this in same tx as deployment/initialization"
                    }
                },
                "version": 1
            }
        },
        "settings": {
            "remappings": [
                "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
                "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
                "ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/",
                "erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/",
                "forge-std/=lib/forge-std/src/",
                "openvm-solidity-sdk/=lib/openvm-solidity-sdk/src/",
                "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/",
                "openzeppelin-contracts/=lib/openzeppelin-contracts/"
            ],
            "optimizer": { "enabled": true, "runs": 100000 },
            "metadata": { "bytecodeHash": "ipfs" },
            "compilationTarget": { "src/AxiomKeystoreRollup.sol": "AxiomKeystoreRollup" },
            "evmVersion": "cancun",
            "libraries": {}
        },
        "sources": {
            "lib/openvm-solidity-sdk/src/interfaces/IOpenVmHalo2Verifier.sol": {
                "keccak256": "0xc0a5097f4493b2cd1a25374433f6841fe778120513d26d1260d85f3d8ee0a2d4",
                "urls": [
                    "bzz-raw://016109456b252aa6334cd921d93cba268a25a19972c0b54759f55c9e88eafda0",
                    "dweb:/ipfs/QmNeqMnbnGroybjmqGoaSDTsyhZrnoooNPkxwPZxTHzVTy"
                ],
                "license": "MIT"
            },
            "lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol": {
                "keccak256": "0xbca4a4f66d98028293dba695851d1b20d3e0ba2fff7453fb241f192fa3fc6b6f",
                "urls": [
                    "bzz-raw://013b3cfd9d1e34dad409c3b9a340860e8651e61cda509de33599fb5102f62fe7",
                    "dweb:/ipfs/QmTVjDKofM9Nst8w8LAA3HHgi1eCnGYBpFb7Nbat71e2xz"
                ],
                "license": "MIT"
            },
            "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol": {
                "keccak256": "0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a",
                "urls": [
                    "bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6",
                    "dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"
                ],
                "license": "MIT"
            },
            "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol": {
                "keccak256": "0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b",
                "urls": [
                    "bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609",
                    "dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"
                ],
                "license": "MIT"
            },
            "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol": {
                "keccak256": "0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397",
                "urls": [
                    "bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9",
                    "dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"
                ],
                "license": "MIT"
            },
            "src/AxiomKeystoreRollup.sol": {
                "keccak256": "0xcdb5fc1d950d9cf4ae575e5b6f55782f7f919202b55ce68978c2217a9d1d7e62",
                "urls": [
                    "bzz-raw://2b8885c57628c956a604ce1b4a7b121aa6dce86bad0ee8091518306806de8016",
                    "dweb:/ipfs/QmbdJcFCMKZgm3LfeAwtK6SDWgmDhiTa7eK78oNVDDCPtZ"
                ],
                "license": "MIT"
            }
        },
        "version": 1
    },
    "id": 42
}
