{
  "contractName": "TestDepositUtilsSPV",
  "abi": [
    {
      "inputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "payable": true,
      "stateMutability": "payable",
      "type": "fallback"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_digest",
          "type": "bytes32"
        }
      ],
      "name": "approveDigest",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "auctionValue",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "_redeemer",
          "type": "address"
        }
      ],
      "name": "calculateRedemptionTbtcAmounts",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "collateralizationPercentage",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "currentState",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "exitCourtesyCall",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "fundingInfo",
      "outputs": [
        {
          "internalType": "bytes8",
          "name": "utxoValueBytes",
          "type": "bytes8"
        },
        {
          "internalType": "uint256",
          "name": "fundedAt",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "utxoOutpoint",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getAuctionBasePercentage",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getFundingProofTimerStart",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getLatestRedemptionFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getLiquidationAndCourtesyInitiated",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getLiquidationInitiator",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getLiquidationTimestamp",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "_redeemer",
          "type": "address"
        }
      ],
      "name": "getOwnerRedemptionTbtcRequirement",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "_redeemer",
          "type": "address"
        }
      ],
      "name": "getRedemptionTbtcRequirement",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getRequestInfo",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getSignerFeeDivisor",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getSigningGroupPublicKey",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getSigningGroupRequestedAt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getState",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getWithdrawalRequestTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "inActive",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes8",
          "name": "_previousOutputValueBytes",
          "type": "bytes8"
        },
        {
          "internalType": "bytes8",
          "name": "_newOutputValueBytes",
          "type": "bytes8"
        }
      ],
      "name": "increaseRedemptionFee",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "initialCollateralizedPercent",
      "outputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_factory",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "contract ITBTCSystem",
          "name": "_tbtcSystem",
          "type": "address"
        },
        {
          "internalType": "contract TBTCToken",
          "name": "_tbtcToken",
          "type": "address"
        },
        {
          "internalType": "contract IERC721",
          "name": "_tbtcDepositToken",
          "type": "address"
        },
        {
          "internalType": "contract FeeRebateToken",
          "name": "_feeRebateToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_vendingMachineAddress",
          "type": "address"
        },
        {
          "internalType": "uint64",
          "name": "_lotSizeSatoshis",
          "type": "uint64"
        }
      ],
      "name": "initializeDeposit",
      "outputs": [],
      "payable": true,
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "keepAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "lotSizeSatoshis",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "lotSizeTbtc",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "notifyCourtesyCall",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "notifyCourtesyCallExpired",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "notifyFundingTimedOut",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "notifyRedemptionProofTimedOut",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "notifyRedemptionSignatureTimedOut",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "notifySignerSetupFailed",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "notifyUndercollateralizedLiquidation",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "performRedemptionTbtcTransfers",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "_txVersion",
          "type": "bytes4"
        },
        {
          "internalType": "bytes",
          "name": "_txInputVector",
          "type": "bytes"
        },
        {
          "internalType": "bytes",
          "name": "_txOutputVector",
          "type": "bytes"
        },
        {
          "internalType": "bytes4",
          "name": "_txLocktime",
          "type": "bytes4"
        },
        {
          "internalType": "uint8",
          "name": "_fundingOutputIndex",
          "type": "uint8"
        },
        {
          "internalType": "bytes",
          "name": "_merkleProof",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "_txIndexInBlock",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_bitcoinHeaders",
          "type": "bytes"
        }
      ],
      "name": "provideBTCFundingProof",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint8",
          "name": "_v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "_r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_s",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_signedDigest",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "_preimage",
          "type": "bytes"
        }
      ],
      "name": "provideECDSAFraudProof",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint8",
          "name": "_v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "_r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_s",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_signedDigest",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "_preimage",
          "type": "bytes"
        }
      ],
      "name": "provideFundingECDSAFraudProof",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "_txVersion",
          "type": "bytes4"
        },
        {
          "internalType": "bytes",
          "name": "_txInputVector",
          "type": "bytes"
        },
        {
          "internalType": "bytes",
          "name": "_txOutputVector",
          "type": "bytes"
        },
        {
          "internalType": "bytes4",
          "name": "_txLocktime",
          "type": "bytes4"
        },
        {
          "internalType": "bytes",
          "name": "_merkleProof",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "_txIndexInBlock",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_bitcoinHeaders",
          "type": "bytes"
        }
      ],
      "name": "provideRedemptionProof",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint8",
          "name": "_v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "_r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_s",
          "type": "bytes32"
        }
      ],
      "name": "provideRedemptionSignature",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "purchaseSignerBondsAtAuction",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_ethValue",
          "type": "uint256"
        }
      ],
      "name": "pushFundsToKeepGroup",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes",
          "name": "_txInputVector",
          "type": "bytes"
        },
        {
          "internalType": "bytes",
          "name": "_txOutputVector",
          "type": "bytes"
        }
      ],
      "name": "redemptionTransactionChecks",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "remainingTerm",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes",
          "name": "_abortOutputScript",
          "type": "bytes"
        }
      ],
      "name": "requestFunderAbort",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes8",
          "name": "_outputValueBytes",
          "type": "bytes8"
        },
        {
          "internalType": "bytes",
          "name": "_redeemerOutputScript",
          "type": "bytes"
        }
      ],
      "name": "requestRedemption",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "reset",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "retrieveSignerPubkey",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_digest",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "setDigestApprovedAtTime",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_sys",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_tbtcDepositToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_feeRebateToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_vendingMachineAddress",
          "type": "address"
        }
      ],
      "name": "setExteriorAddresses",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes8",
          "name": "_utxoValueBytes",
          "type": "bytes8"
        },
        {
          "internalType": "uint256",
          "name": "_fundedAt",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_utxoOutpoint",
          "type": "bytes"
        }
      ],
      "name": "setFundingInfo",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_fundingProofTimerStart",
          "type": "uint256"
        }
      ],
      "name": "setFundingProofTimerStart",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint16",
          "name": "_initialCollateralizedPercent",
          "type": "uint16"
        }
      ],
      "name": "setInitialCollateralizedPercent",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_keepAddress",
          "type": "address"
        }
      ],
      "name": "setKeepAddress",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_fee",
          "type": "uint256"
        }
      ],
      "name": "setKeepSetupFee",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_latestRedemptionFee",
          "type": "uint256"
        }
      ],
      "name": "setLatestRedemptionFee",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_liquidation",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_courtesy",
          "type": "uint256"
        }
      ],
      "name": "setLiquidationAndCourtesyInitated",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address payable",
          "name": "_initiator",
          "type": "address"
        }
      ],
      "name": "setLiquidationInitiator",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_lotSizeSatoshis",
          "type": "uint64"
        }
      ],
      "name": "setLotSize",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address payable",
          "name": "_redeemerAddress",
          "type": "address"
        }
      ],
      "name": "setRedeemerAddress",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address payable",
          "name": "_redeemerAddress",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "_redeemerOutputScript",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "_initialRedemptionFee",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_withdrawalRequestTime",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "_lastRequestedDigest",
          "type": "bytes32"
        }
      ],
      "name": "setRequestInfo",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint16",
          "name": "_severelyUndercollateralizedThresholdPercent",
          "type": "uint16"
        }
      ],
      "name": "setSeverelyUndercollateralizedThresholdPercent",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint16",
          "name": "_signerFeeDivisor",
          "type": "uint16"
        }
      ],
      "name": "setSignerFeeDivisor",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_x",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_y",
          "type": "bytes32"
        }
      ],
      "name": "setSigningGroupPublicKey",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_signingGroupRequestedAt",
          "type": "uint256"
        }
      ],
      "name": "setSigningGroupRequestedAt",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint8",
          "name": "_state",
          "type": "uint8"
        }
      ],
      "name": "setState",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint16",
          "name": "_undercollateralizedThresholdPercent",
          "type": "uint16"
        }
      ],
      "name": "setUndercollateralizedThresholdPercent",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_vendingMachineAddress",
          "type": "address"
        }
      ],
      "name": "setVendingMachineAddress",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "severelyUndercollateralizedThresholdPercent",
      "outputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "signerFeeTbtc",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bool",
          "name": "_wasFraud",
          "type": "bool"
        }
      ],
      "name": "startLiquidation",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes8",
          "name": "_outputValueBytes",
          "type": "bytes8"
        },
        {
          "internalType": "bytes",
          "name": "_redeemerOutputScript",
          "type": "bytes"
        },
        {
          "internalType": "address payable",
          "name": "_finalRecipient",
          "type": "address"
        }
      ],
      "name": "transferAndRequestRedemption",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "undercollateralizedThresholdPercent",
      "outputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "utxoValue",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_digest",
          "type": "bytes32"
        }
      ],
      "name": "wasDigestApprovedForSigning",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "withdrawFunds",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "withdrawableAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_signingGroupPubkeyX",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_signingGroupPubkeyY",
          "type": "bytes32"
        }
      ],
      "name": "setPubKey",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "_txVersion",
          "type": "bytes4"
        },
        {
          "internalType": "bytes",
          "name": "_txInputVector",
          "type": "bytes"
        },
        {
          "internalType": "bytes",
          "name": "_txOutputVector",
          "type": "bytes"
        },
        {
          "internalType": "bytes4",
          "name": "_txLocktime",
          "type": "bytes4"
        },
        {
          "internalType": "uint8",
          "name": "_fundingOutputIndex",
          "type": "uint8"
        },
        {
          "internalType": "bytes",
          "name": "_merkleProof",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "_txIndexInBlock",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_bitcoinHeaders",
          "type": "bytes"
        }
      ],
      "name": "validateAndParseFundingSPVProof",
      "outputs": [
        {
          "internalType": "bytes8",
          "name": "_valueBytes",
          "type": "bytes8"
        },
        {
          "internalType": "bytes",
          "name": "_utxoOutpoint",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_bitcoinTxId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "_merkleProof",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "_index",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_bitcoinHeaders",
          "type": "bytes"
        }
      ],
      "name": "checkProofFromTxId",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_digest\",\"type\":\"bytes32\"}],\"name\":\"approveDigest\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"auctionValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_redeemer\",\"type\":\"address\"}],\"name\":\"calculateRedemptionTbtcAmounts\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_bitcoinTxId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_merkleProof\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_bitcoinHeaders\",\"type\":\"bytes\"}],\"name\":\"checkProofFromTxId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"collateralizationPercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"currentState\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"exitCourtesyCall\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"fundingInfo\",\"outputs\":[{\"internalType\":\"bytes8\",\"name\":\"utxoValueBytes\",\"type\":\"bytes8\"},{\"internalType\":\"uint256\",\"name\":\"fundedAt\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"utxoOutpoint\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getAuctionBasePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getFundingProofTimerStart\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLatestRedemptionFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLiquidationAndCourtesyInitiated\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLiquidationInitiator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLiquidationTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_redeemer\",\"type\":\"address\"}],\"name\":\"getOwnerRedemptionTbtcRequirement\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_redeemer\",\"type\":\"address\"}],\"name\":\"getRedemptionTbtcRequirement\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRequestInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getSignerFeeDivisor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getSigningGroupPublicKey\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getSigningGroupRequestedAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getState\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getWithdrawalRequestTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"inActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes8\",\"name\":\"_previousOutputValueBytes\",\"type\":\"bytes8\"},{\"internalType\":\"bytes8\",\"name\":\"_newOutputValueBytes\",\"type\":\"bytes8\"}],\"name\":\"increaseRedemptionFee\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"initialCollateralizedPercent\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_factory\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract ITBTCSystem\",\"name\":\"_tbtcSystem\",\"type\":\"address\"},{\"internalType\":\"contract TBTCToken\",\"name\":\"_tbtcToken\",\"type\":\"address\"},{\"internalType\":\"contract IERC721\",\"name\":\"_tbtcDepositToken\",\"type\":\"address\"},{\"internalType\":\"contract FeeRebateToken\",\"name\":\"_feeRebateToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_vendingMachineAddress\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_lotSizeSatoshis\",\"type\":\"uint64\"}],\"name\":\"initializeDeposit\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"keepAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lotSizeSatoshis\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lotSizeTbtc\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"notifyCourtesyCall\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"notifyCourtesyCallExpired\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"notifyFundingTimedOut\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"notifyRedemptionProofTimedOut\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"notifyRedemptionSignatureTimedOut\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"notifySignerSetupFailed\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"notifyUndercollateralizedLiquidation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"performRedemptionTbtcTransfers\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_txVersion\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"_txInputVector\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_txOutputVector\",\"type\":\"bytes\"},{\"internalType\":\"bytes4\",\"name\":\"_txLocktime\",\"type\":\"bytes4\"},{\"internalType\":\"uint8\",\"name\":\"_fundingOutputIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"_merkleProof\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_txIndexInBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_bitcoinHeaders\",\"type\":\"bytes\"}],\"name\":\"provideBTCFundingProof\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"_r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_s\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_signedDigest\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_preimage\",\"type\":\"bytes\"}],\"name\":\"provideECDSAFraudProof\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"_r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_s\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_signedDigest\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_preimage\",\"type\":\"bytes\"}],\"name\":\"provideFundingECDSAFraudProof\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_txVersion\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"_txInputVector\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_txOutputVector\",\"type\":\"bytes\"},{\"internalType\":\"bytes4\",\"name\":\"_txLocktime\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"_merkleProof\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_txIndexInBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_bitcoinHeaders\",\"type\":\"bytes\"}],\"name\":\"provideRedemptionProof\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"_r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_s\",\"type\":\"bytes32\"}],\"name\":\"provideRedemptionSignature\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"purchaseSignerBondsAtAuction\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_ethValue\",\"type\":\"uint256\"}],\"name\":\"pushFundsToKeepGroup\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_txInputVector\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_txOutputVector\",\"type\":\"bytes\"}],\"name\":\"redemptionTransactionChecks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"remainingTerm\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_abortOutputScript\",\"type\":\"bytes\"}],\"name\":\"requestFunderAbort\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes8\",\"name\":\"_outputValueBytes\",\"type\":\"bytes8\"},{\"internalType\":\"bytes\",\"name\":\"_redeemerOutputScript\",\"type\":\"bytes\"}],\"name\":\"requestRedemption\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"reset\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"retrieveSignerPubkey\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_digest\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"setDigestApprovedAtTime\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sys\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_tbtcDepositToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_feeRebateToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_vendingMachineAddress\",\"type\":\"address\"}],\"name\":\"setExteriorAddresses\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes8\",\"name\":\"_utxoValueBytes\",\"type\":\"bytes8\"},{\"internalType\":\"uint256\",\"name\":\"_fundedAt\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_utxoOutpoint\",\"type\":\"bytes\"}],\"name\":\"setFundingInfo\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_fundingProofTimerStart\",\"type\":\"uint256\"}],\"name\":\"setFundingProofTimerStart\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_initialCollateralizedPercent\",\"type\":\"uint16\"}],\"name\":\"setInitialCollateralizedPercent\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_keepAddress\",\"type\":\"address\"}],\"name\":\"setKeepAddress\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"}],\"name\":\"setKeepSetupFee\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_latestRedemptionFee\",\"type\":\"uint256\"}],\"name\":\"setLatestRedemptionFee\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_liquidation\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_courtesy\",\"type\":\"uint256\"}],\"name\":\"setLiquidationAndCourtesyInitated\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"_initiator\",\"type\":\"address\"}],\"name\":\"setLiquidationInitiator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_lotSizeSatoshis\",\"type\":\"uint64\"}],\"name\":\"setLotSize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_signingGroupPubkeyX\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_signingGroupPubkeyY\",\"type\":\"bytes32\"}],\"name\":\"setPubKey\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"_redeemerAddress\",\"type\":\"address\"}],\"name\":\"setRedeemerAddress\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"_redeemerAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_redeemerOutputScript\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_initialRedemptionFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_withdrawalRequestTime\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_lastRequestedDigest\",\"type\":\"bytes32\"}],\"name\":\"setRequestInfo\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_severelyUndercollateralizedThresholdPercent\",\"type\":\"uint16\"}],\"name\":\"setSeverelyUndercollateralizedThresholdPercent\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_signerFeeDivisor\",\"type\":\"uint16\"}],\"name\":\"setSignerFeeDivisor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_y\",\"type\":\"bytes32\"}],\"name\":\"setSigningGroupPublicKey\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_signingGroupRequestedAt\",\"type\":\"uint256\"}],\"name\":\"setSigningGroupRequestedAt\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_state\",\"type\":\"uint8\"}],\"name\":\"setState\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_undercollateralizedThresholdPercent\",\"type\":\"uint16\"}],\"name\":\"setUndercollateralizedThresholdPercent\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_vendingMachineAddress\",\"type\":\"address\"}],\"name\":\"setVendingMachineAddress\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"severelyUndercollateralizedThresholdPercent\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"signerFeeTbtc\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_wasFraud\",\"type\":\"bool\"}],\"name\":\"startLiquidation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes8\",\"name\":\"_outputValueBytes\",\"type\":\"bytes8\"},{\"internalType\":\"bytes\",\"name\":\"_redeemerOutputScript\",\"type\":\"bytes\"},{\"internalType\":\"address payable\",\"name\":\"_finalRecipient\",\"type\":\"address\"}],\"name\":\"transferAndRequestRedemption\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"undercollateralizedThresholdPercent\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"utxoValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_txVersion\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"_txInputVector\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_txOutputVector\",\"type\":\"bytes\"},{\"internalType\":\"bytes4\",\"name\":\"_txLocktime\",\"type\":\"bytes4\"},{\"internalType\":\"uint8\",\"name\":\"_fundingOutputIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"_merkleProof\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_txIndexInBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_bitcoinHeaders\",\"type\":\"bytes\"}],\"name\":\"validateAndParseFundingSPVProof\",\"outputs\":[{\"internalType\":\"bytes8\",\"name\":\"_valueBytes\",\"type\":\"bytes8\"},{\"internalType\":\"bytes\",\"name\":\"_utxoOutpoint\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_digest\",\"type\":\"bytes32\"}],\"name\":\"wasDigestApprovedForSigning\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"withdrawFunds\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"withdrawableAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"auctionValue()\":{\"details\":\"This call will revert if the deposit is not in a state where an      auction is currently in progress.\",\"return\":\"The value in wei that would be received in exchange for the         deposit's lot size in TBTC if `purchaseSignerBondsAtAuction`         were called at the time this function is called.\"},\"collateralizationPercentage()\":{\"details\":\"This value represents the percentage of the backing BTC value the      signers currently must hold as bond.\",\"return\":\"The current collateralization level for this deposit.\"},\"currentState()\":{\"details\":\"We implement this because contracts don't handle foreign enums      well. See `DepositStates` for more info on states.\",\"return\":\"The 0-indexed state from the DepositStates enum.\"},\"exitCourtesyCall()\":{\"details\":\"This call will revert if collateral is still below the      undercollateralized threshold according to the price feed.\"},\"fundingInfo()\":{\"details\":\"This call will revert if the deposit is not in a state where the      funding info should be valid. In particular, before funding proof      is successfully submitted (i.e. in states START,      AWAITING_SIGNER_SETUP, and AWAITING_BTC_FUNDING_PROOF), none of      these values are set or valid.\",\"return\":\"A tuple of (uxtoValueBytes, fundedAt, uxtoOutpoint).\"},\"getOwnerRedemptionTbtcRequirement(address)\":{\"params\":{\"_redeemer\":\"The assumed owner of the deposit's TDT .\"},\"return\":\"The amount in TBTC needed to redeem the deposit.\"},\"getRedemptionTbtcRequirement(address)\":{\"details\":\"This call will revert if redemption is not possible by _redeemer.\",\"params\":{\"_redeemer\":\"The deposit redeemer whose TBTC requirement is being        requested.\"},\"return\":\"The amount in TBTC needed by the `_redeemer` to redeem the         deposit.\"},\"inActive()\":{\"return\":\"True if state is ACTIVE, false otherwise.\"},\"increaseRedemptionFee(bytes8,bytes8)\":{\"details\":\"This call will revert if the fee is already at its maximum, or if      the new requested fee is not a multiple of the initial requested      fee. Transaction fees can only be bumped by the amount of the      initial requested fee. Calling this sends the deposit back to      the `AWAITING_WITHDRAWAL_SIGNATURE` state and requires the signers      to `provideRedemptionSignature` for the new output value in a      timely fashion.\",\"params\":{\"_newOutputValueBytes\":\"The new output's value.\",\"_previousOutputValueBytes\":\"The previous output's value.\"}},\"initialCollateralizedPercent()\":{\"details\":\"This value represents the percentage of the backing BTC value      the signers hold initially. It is set at creation time.\",\"return\":\"The initial collateralization level for this deposit.\"},\"initialize(address)\":{\"details\":\"Since this function is not access-controlled, it should be called      transactionally with contract instantiation. In cases where a      regular contract directly inherits from DepositFactoryAuthority,      that should happen in the constructor. In cases where the inheritor      is binstead used via a clone factory, the same function that      creates a new clone should also trigger initialization.\"},\"keepAddress()\":{\"details\":\"The keep contract address is saved on Deposit initialization.\",\"return\":\"Address of the Keep contract.\"},\"lotSizeSatoshis()\":{\"return\":\"uint64 lot size in satoshis.\"},\"lotSizeTbtc()\":{\"details\":\"This is the same as lotSizeSatoshis(), but is multiplied to scale      to 18 decimal places.\",\"return\":\"uint256 lot size in TBTC precision (max 18 decimal places).\"},\"notifyCourtesyCall()\":{\"details\":\"This call will revert if the signers are not in fact      undercollateralized according to the price feed. After      TBTCConstants.COURTESY_CALL_DURATION, courtesy call times out and      regular abort liquidation occurs; see      `notifyCourtesyTimedOut`.\"},\"notifyCourtesyCallExpired()\":{\"details\":\"This call will revert if the courtesy call period has not in fact      expired or is not in the courtesy call state. Courtesy call      expiration is treated as an abort, and is handled by seizing signer      bonds and putting them up for auction for the lot size amount in      TBTC (see `purchaseSignerBondsAtAuction`). Emits a      LiquidationStarted event. The caller is captured as the liquidation      initiator, and is eligible for 50% of any bond left after the      auction is completed.\"},\"notifyFundingTimedOut()\":{\"details\":\"This is considered a funder fault, and the funder's payment for      opening the deposit is not refunded. Emits a SetupFailed event.      Reverts if the funding timeout has not yet elapsed, or if the      deposit is not currently awaiting funding proof.\"},\"notifyRedemptionProofTimedOut()\":{\"details\":\"This call will revert if the deposit is not currently awaiting a      signature or if the allotted time has not yet elapsed. This is      considered an abort, and is punished by seizing signer bonds and      putting them up for auction for the lot size amount in TBTC (see      `purchaseSignerBondsAtAuction`). Emits a LiquidationStarted event.      The caller is captured as the liquidation initiator, and      is eligible for 50% of any bond left after the auction is     completed.\"},\"notifyRedemptionSignatureTimedOut()\":{\"details\":\"This is considered an abort, and is punished by seizing signer      bonds and putting them up for auction. Emits a LiquidationStarted      event and a Liquidated event and sends the full signer bond to the      redeemer. Reverts if the deposit is not currently awaiting a      signature or if the allotted time has not yet elapsed. The caller      is captured as the liquidation initiator, and is eligible for 50%      of any bond left after the auction is completed.\"},\"notifySignerSetupFailed()\":{\"details\":\"This is considered a signer fault, and the signers' bonds are used      to make the deposit setup fee available for withdrawal by the TDT      holder as a refund. The remainder of the signers' bonds are      returned to the bonding pool and the signers are released from any      further responsibilities. Reverts if the deposit is not awaiting      signer setup or if the signing group formation timeout has not      elapsed.\"},\"notifyUndercollateralizedLiquidation()\":{\"details\":\"Calls out to the system for oracle info.This call will revert if the signers are not in fact severely      undercollateralized according to the price feed. Severe      undercollateralization is treated as an abort, and is handled by      seizing signer bonds and putting them up for auction in exchange      for the lot size amount in TBTC (see      `purchaseSignerBondsAtAuction`). Emits a LiquidationStarted event.      The caller is captured as the liquidation initiator, and is      eligible for 50% of any bond left after the auction is completed.\"},\"provideBTCFundingProof(bytes4,bytes,bytes,bytes4,uint8,bytes,uint256,bytes)\":{\"details\":\"Takes a pre-parsed transaction and calculates values needed to      verify funding.\",\"params\":{\"_bitcoinHeaders\":\"Single bytestring of 80-byte bitcoin headers,        lowest height first.\",\"_fundingOutputIndex\":\"Index of funding output in _txOutputVector        (0-indexed).\",\"_merkleProof\":\"The merkle proof of transaction inclusion in a        block.\",\"_txIndexInBlock\":\"Transaction index in the block (0-indexed).\",\"_txInputVector\":\"All transaction inputs prepended by the number of        inputs encoded as a VarInt, max 0xFC(252) inputs.\",\"_txLocktime\":\"Final 4 bytes of the transaction.\",\"_txOutputVector\":\"All transaction outputs prepended by the number         of outputs encoded as a VarInt, max 0xFC(252) outputs.\",\"_txVersion\":\"Transaction version number (4-byte little-endian).\"}},\"provideECDSAFraudProof(uint8,bytes32,bytes32,bytes32,bytes)\":{\"details\":\"This call will revert if the underlying keep cannot verify that      there was fraud. Fraud is handled by seizing signer bonds and      putting them up for auction in exchange for the lot size amount in      TBTC (see `purchaseSignerBondsAtAuction`). Emits a      LiquidationStarted event. The caller is captured as the liquidation      initiator, and is eligible for any bond left after the auction is      completed.\",\"params\":{\"_preimage\":\"The sha256 preimage of the digest.\",\"_r\":\"Signature R value.\",\"_s\":\"Signature S value.\",\"_signedDigest\":\"The digest signed by the signature (v,r,s) tuple.\",\"_v\":\"Signature recovery value.\"}},\"provideFundingECDSAFraudProof(uint8,bytes32,bytes32,bytes32,bytes)\":{\"details\":\"Calls out to the keep to verify if there was fraud.\",\"params\":{\"_preimage\":\"The sha256 preimage of the digest.\",\"_r\":\"Signature R value.\",\"_s\":\"Signature S value.\",\"_signedDigest\":\"The digest signed by the signature (v,r,s) tuple.\",\"_v\":\"Signature recovery value.\"}},\"provideRedemptionProof(bytes4,bytes,bytes,bytes4,bytes,uint256,bytes)\":{\"details\":\"Takes a pre-parsed transaction and calculates values needed to      verify funding. Signers can have their bonds seized if this is not      called within `TBTCConstants.REDEMPTION_PROOF_TIMEOUT` seconds of      a redemption signature being provided.\",\"params\":{\"_bitcoinHeaders\":\"Single bytestring of 80-byte bitcoin headers,        lowest height first.\",\"_merkleProof\":\"The merkle proof of transaction inclusion in a        block.\",\"_txIndexInBlock\":\"Transaction index in the block (0-indexed).\",\"_txInputVector\":\"All transaction inputs prepended by the number of        inputs encoded as a VarInt, max 0xFC(252) inputs.\",\"_txLocktime\":\"Final 4 bytes of the transaction.\",\"_txOutputVector\":\"All transaction outputs prepended by the number         of outputs encoded as a VarInt, max 0xFC(252) outputs.\",\"_txVersion\":\"Transaction version number (4-byte little-endian).\"}},\"provideRedemptionSignature(uint8,bytes32,bytes32)\":{\"details\":\"The signers will be penalized if this function is not called      correctly within `TBTCConstants.REDEMPTION_SIGNATURE_TIMEOUT`      seconds of a redemption request or fee increase being received.\",\"params\":{\"_r\":\"Signature R value.\",\"_s\":\"Signature S value. Should be in the low half of secp256k1        curve's order.\",\"_v\":\"Signature recovery value.\"}},\"purchaseSignerBondsAtAuction()\":{\"details\":\"The amount of ETH given for the transferred TBTC can be read using      the `auctionValue` function; note, however, that the function's      value is only static during the specific block it is queried, as it      varies by block timestamp.\"},\"remainingTerm()\":{\"details\":\"The value accuracy is not guaranteed since block.timestmap can be      lightly manipulated by miners.\",\"return\":\"The remaining term of the deposit in seconds. 0 if already at         term.\"},\"requestFunderAbort(bytes)\":{\"details\":\"This is a self-admitted funder fault, and is only be callable by      the TDT holder. This function emits the FunderAbortRequested event,      but stores no additional state.\",\"params\":{\"_abortOutputScript\":\"The output script the funder wishes to request        a return of their UTXO to.\"}},\"requestRedemption(bytes8,bytes)\":{\"details\":\"The amount of TBTC needed to redeem can be looked up using the      `getRedemptionTbtcRequirement` or `getOwnerRedemptionTbtcRequirement`      functions.\",\"params\":{\"_outputValueBytes\":\"The 8-byte little-endian output size. The         difference between this value and the lot size of the deposit         will be paid as a fee to the Bitcoin miners when the signed         transaction is broadcast.\",\"_redeemerOutputScript\":\"The redeemer's length-prefixed output         script.\"}},\"retrieveSignerPubkey()\":{\"details\":\"Stores the pubkey as 2 bytestrings, X and Y. Emits a      RegisteredPubkey event with the two components. Reverts if the      deposit is not awaiting signer setup, if the generated public key      is unset or has incorrect length, or if the public key has a 0      X or Y value.\"},\"severelyUndercollateralizedThresholdPercent()\":{\"details\":\"This collateralization level is critical. If the collateralization      level falls below this percentage the Deposit can get liquidated.      This value represents the percentage of the backing BTC value the      signers must hold as bond in order to not be severely      undercollateralized. It is set at creation time. Note that the      value for new deposits in TBTCSystem can be changed by governance,      but the value for a particular deposit is static once the deposit      is created.\",\"return\":\"The severely undercollateralized level for this deposit.\"},\"signerFeeTbtc()\":{\"details\":\"This is the one-time fee required by the signers to perform the      tasks needed to maintain a decentralized and trustless model for      tBTC. It is a percentage of the deposit's lot size.\",\"return\":\"Fee amount in TBTC.\"},\"transferAndRequestRedemption(bytes8,bytes,address)\":{\"details\":\"Performs the same action as requestRedemption, but transfers      ownership of the deposit to the specified _finalRecipient. Used as      a utility helper for the vending machine's shortcut      TBTC->redemption path.\",\"params\":{\"_finalRecipient\":\"The address to receive the TDT and later be recorded as deposit redeemer.\",\"_outputValueBytes\":\"The 8-byte little-endian output size.\",\"_redeemerOutputScript\":\"The redeemer's length-prefixed output script.\"}},\"undercollateralizedThresholdPercent()\":{\"details\":\"This collateralization level is semi-critical. If the      collateralization level falls below this percentage the Deposit can      be courtesy-called by calling `notifyCourtesyCall`. This value      represents the percentage of the backing BTC value the signers must      hold as bond in order to not be undercollateralized. It is set at      creation time. Note that the value for new deposits in TBTCSystem      can be changed by governance, but the value for a particular      deposit is static once the deposit is created.\",\"return\":\"The undercollateralized level for this deposit.\"},\"utxoValue()\":{\"details\":\"This call will revert if the deposit is not in a state where the      UTXO info should be valid. In particular, before funding proof is      successfully submitted (i.e. in states START,      AWAITING_SIGNER_SETUP, and AWAITING_BTC_FUNDING_PROOF), this value      would not be valid.\",\"return\":\"The value of the funding UTXO in satoshis.\"},\"withdrawFunds()\":{\"details\":\"Withdrawals can only happen when a contract is in an end-state.\"},\"withdrawableAmount()\":{\"details\":\"Generally ETH is only available to withdraw after the deposit      reaches a closed state. The amount reported is for the sender, and      can be withdrawn using `withdrawFunds` if the deposit is in an end      state.\",\"return\":\"The withdraw allowance in wei.\"}}},\"userdoc\":{\"methods\":{\"auctionValue()\":{\"notice\":\"Calculates the amount of value at auction right now.\"},\"collateralizationPercentage()\":{\"notice\":\"Get the current collateralization level for this Deposit.\"},\"currentState()\":{\"notice\":\"Get the integer representing the current state.\"},\"exitCourtesyCall()\":{\"notice\":\"Notify the contract that the signers' bond value has recovered         enough to be considered sufficiently collateralized.\"},\"fundingInfo()\":{\"notice\":\"Returns information associated with the funding UXTO.\"},\"getOwnerRedemptionTbtcRequirement(address)\":{\"notice\":\"Get TBTC amount required for redemption assuming _redeemer         is this deposit's owner (TDT holder).\"},\"getRedemptionTbtcRequirement(address)\":{\"notice\":\"Get TBTC amount required for redemption by a specified         _redeemer.\"},\"inActive()\":{\"notice\":\"Check if the Deposit is in ACTIVE state.\"},\"increaseRedemptionFee(bytes8,bytes8)\":{\"notice\":\"Anyone may request a signature for a transaction with an         increased Bitcoin transaction fee.\"},\"initialCollateralizedPercent()\":{\"notice\":\"Get the initial collateralization level for this Deposit.\"},\"initialize(address)\":{\"notice\":\"Set the address of the System contract on contract         initialization.\"},\"keepAddress()\":{\"notice\":\"Get the contract address of the BondedECDSAKeep associated with         this Deposit.\"},\"lotSizeSatoshis()\":{\"notice\":\"Get this deposit's BTC lot size in satoshis.\"},\"lotSizeTbtc()\":{\"notice\":\"Get this deposit's lot size in TBTC.\"},\"notifyCourtesyCall()\":{\"notice\":\"Notify the contract that the signers are undercollateralized.\"},\"notifyCourtesyCallExpired()\":{\"notice\":\"Notify the contract that the courtesy period has expired and the         deposit should move into liquidation.\"},\"notifyFundingTimedOut()\":{\"notice\":\"Notify the contract that the funding phase of the deposit has         timed out if `provideBTCFundingProof` is not successfully called         within the allotted time. Any sent BTC is left under control of         the signer group, and the funder can use `requestFunderAbort` to         request an at-signer-discretion return of any BTC sent to a         deposit that has been notified of a funding timeout.\"},\"notifyRedemptionProofTimedOut()\":{\"notice\":\"Notify the contract that the deposit has failed to receive a         redemption proof in the allotted time.\"},\"notifyRedemptionSignatureTimedOut()\":{\"notice\":\"Notify the contract that the signers have failed to produce a         signature for a redemption request in the allotted time.\"},\"notifySignerSetupFailed()\":{\"notice\":\"Notify the contract that signing group setup has timed out if         retrieveSignerPubkey is not successfully called within the         allotted time.\"},\"notifyUndercollateralizedLiquidation()\":{\"notice\":\"Notify the contract that the signers are undercollateralized.\"},\"provideBTCFundingProof(bytes4,bytes,bytes,bytes4,uint8,bytes,uint256,bytes)\":{\"notice\":\"Anyone may submit a funding proof to the deposit showing that         a transaction was submitted and sufficiently confirmed on the         Bitcoin chain transferring the deposit lot size's amount of BTC         to the signer-controlled private key corresopnding to this         deposit. This will move the deposit into an active state.\"},\"provideECDSAFraudProof(uint8,bytes32,bytes32,bytes32,bytes)\":{\"notice\":\"Anyone can provide a signature corresponding to the signers'         public key that was not requested to prove fraud. A redemption         request and a redemption fee increase are the only ways to         request a signature from the signers.\"},\"provideFundingECDSAFraudProof(uint8,bytes32,bytes32,bytes32,bytes)\":{\"notice\":\"Anyone can provide a signature corresponding to the signers'         public key to prove fraud during funding. Note that during         funding no signature has been requested from the signers, so         any signature is effectively fraud.\"},\"provideRedemptionProof(bytes4,bytes,bytes,bytes4,bytes,uint256,bytes)\":{\"notice\":\"Anyone may submit a redemption proof to the deposit showing that         a transaction was submitted and sufficiently confirmed on the         Bitcoin chain transferring the deposit lot size's amount of BTC         from the signer-controlled private key corresponding to this         deposit to the requested redemption output script. This will         move the deposit into a redeemed state.\"},\"provideRedemptionSignature(uint8,bytes32,bytes32)\":{\"notice\":\"Anyone may provide a withdrawal signature if it was requested.\"},\"purchaseSignerBondsAtAuction()\":{\"notice\":\"Closes an auction and purchases the signer bonds by transferring         the lot size in TBTC to the redeemer, if there is one, or to the         TDT holder if not. Any bond amount that is not currently up for         auction is either made available for the liquidation initiator         to withdraw (for fraud) or split 50-50 between the initiator and         the signers (for abort or collateralization issues).\"},\"remainingTerm()\":{\"notice\":\"Retrieve the remaining term of the deposit in seconds.\"},\"requestFunderAbort(bytes)\":{\"notice\":\"Requests a funder abort for a failed-funding deposit; that is,         requests the return of a sent UTXO to _abortOutputScript. It         imposes no requirements on the signing group. Signers should         send their UTXO to the requested output script, but do so at         their discretion and with no penalty for failing to do so. This         can be used for example when a UTXO is sent that is the wrong         size for the lot.\"},\"requestRedemption(bytes8,bytes)\":{\"notice\":\"Requests redemption of this deposit, meaning the transmission,         by the signers, of the deposit's UTXO to the specified Bitocin         output script. Requires approving the deposit to spend the         amount of TBTC needed to redeem.\"},\"retrieveSignerPubkey()\":{\"notice\":\"Notify the contract that the ECDSA keep has generated a public         key so the deposit contract can pull it in.\"},\"severelyUndercollateralizedThresholdPercent()\":{\"notice\":\"Get the severe undercollateralization level for this Deposit.\"},\"signerFeeTbtc()\":{\"notice\":\"Get the signer fee for this deposit, in TBTC.\"},\"transferAndRequestRedemption(bytes8,bytes,address)\":{\"notice\":\"This function can only be called by the vending machine.\"},\"undercollateralizedThresholdPercent()\":{\"notice\":\"Get the undercollateralization level for this Deposit.\"},\"utxoValue()\":{\"notice\":\"Get the value of the funding UTXO.\"},\"withdrawFunds()\":{\"notice\":\"Withdraw the ETH balance of the deposit allotted to the caller.\"},\"withdrawableAmount()\":{\"notice\":\"Get caller's ETH withdraw allowance.\"}}}},\"settings\":{\"compilationTarget\":{\"/home/runner/work/tbtc/tbtc/solidity/contracts/test/deposit/TestDepositUtils.sol\":\"TestDepositUtilsSPV\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/runner/work/tbtc/tbtc/solidity/contracts/DepositLog.sol\":{\"keccak256\":\"0xd2422abaf64bf2d28f4c0548bc31c3d0e4c5f3e4414486c149b773bea0c9db0a\",\"urls\":[\"bzz-raw://c4b0e3caea108ce67da5922906753dc1a1f87cee923e7c32260239150f2152bb\",\"dweb:/ipfs/QmcHcftf4M6ZyuFG725QiFGHuAtz6zDQZ9HCEaoP5Wb6Fd\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/Deposit.sol\":{\"keccak256\":\"0x4e25c6bfe874c5254659e99b5d87ad0bd6299468106c8f955e973a0431367dec\",\"urls\":[\"bzz-raw://c54c7e956fee91813946745f23d11062a9dd2c07d916979871f7468509295de4\",\"dweb:/ipfs/QmQ1qFjzq9uY7SmdUqzwNM7z8AAnCbji2joqkJYJSBaJyW\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositFunding.sol\":{\"keccak256\":\"0xe223f4e039e347d3eec8eea8d30d6f87f25ab3f8839e96b5da608c6a012db2c2\",\"urls\":[\"bzz-raw://48435948a4b232a3c610f7ac51e5c87a27aa10f92775bc95cd2068dd07b69a70\",\"dweb:/ipfs/Qmd7PeN1uovU8BqyrPuLkKf4U1DENt9S7hFr6G5cXFamim\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositLiquidation.sol\":{\"keccak256\":\"0x6ec98705ac0cfc20f2e94069ba88c74816c40283c47b3086cf619b69d8a15379\",\"urls\":[\"bzz-raw://981e7e1ababfe4bb7bb35251679f59d188348c416af29822794011a0e48f2cd3\",\"dweb:/ipfs/QmTpPQCYP3qzKdcMBLBZGRSM2X6rgR1CZmYDQ7SHP4pjrb\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositRedemption.sol\":{\"keccak256\":\"0xe40c0cbb443715c4f587b78f568348276fabae9a2f77645596367a1f65b1fae5\",\"urls\":[\"bzz-raw://310d07df39ad769b5ffca044a1a589686268d72ac36d568360da3a4a9ab16f93\",\"dweb:/ipfs/QmT9stQ2AVkF7i9nvDSTswhD6EkfNHVCtTmRENsVqYxwso\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositStates.sol\":{\"keccak256\":\"0x0b407fe4cfa56771c7cb0280e58c23e6c79089bb0f39ec9af83855103cfadce0\",\"urls\":[\"bzz-raw://b06c9ff8c10125cd7dcee7167fd081c95248c97c699a4dfc92bf65d68774f5f1\",\"dweb:/ipfs/QmcdTkj1XtJcPhF9pxr56xV4DW3SxGaaiE5PeGxbYVoHL3\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositUtils.sol\":{\"keccak256\":\"0xc18e532fc384f45567abcf7fbe7bccb885308d63ffeed41d9cf845573a289b98\",\"urls\":[\"bzz-raw://7250e8fce13326313e64d2f24e093bd51c9fdba939b8370f64a1fe820814275b\",\"dweb:/ipfs/QmVfX5w4xN6gxoqbdgPeeTbBvFtxxaNYWSknSY7JDtve2b\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/OutsourceDepositLogging.sol\":{\"keccak256\":\"0x8bddca84b4106ea5d865b5e19c0d49f3dc94a7e614c7403ae05074eda01d6ee9\",\"urls\":[\"bzz-raw://65b05f6e04ae46a16194db335ad21dd806d0b07ad571a126b6981896890c8a4c\",\"dweb:/ipfs/QmTF4RgELhXX7pooNKwW8qNY7Sr7dFY7vfueApjTMa99jt\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/interfaces/ITBTCSystem.sol\":{\"keccak256\":\"0xd8530ab1baddbdfbba6c1b03e547375afe79493b9948d645f94fc0da12ec953b\",\"urls\":[\"bzz-raw://713285a0a4d865a37f3770ce848c20f7277e1540c0a8aa43c2ae0966a7c3df9a\",\"dweb:/ipfs/QmaPiXxvySt9UDmQtVGidh8TQ4XJdxY2X61rEBd8346ELi\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/interfaces/ITokenRecipient.sol\":{\"keccak256\":\"0x4ac6830ad44d0b0d70ebabc60150e9c915c7c0bd0129ef868d5d2cd8da0c32bd\",\"urls\":[\"bzz-raw://a5c6465285add41f07a951f90405800a8802e323ea11e9c7bdb5625ce109c7f7\",\"dweb:/ipfs/QmRf7B4WxsS7gbSwUotgQM633BQc2ye7rhYC1RNVFamBfp\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/DepositFactoryAuthority.sol\":{\"keccak256\":\"0xd8e81ec58dea6a6bcc554e8c7e6c58898ab11a410c3f61224330cbe833992add\",\"urls\":[\"bzz-raw://9d2b23cf1e2f98eb77acf6ae62933e48494113e1d6091146459fd79a635f1dcf\",\"dweb:/ipfs/QmPK3nTmcrScDavDSXGHvonhfik3BJ55qhwSnUmhzL5QUE\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/FeeRebateToken.sol\":{\"keccak256\":\"0x3d9980b4b18be7e69364b93581d86d08dd2c66fc76b2f9f0af0b4911dc648318\",\"urls\":[\"bzz-raw://751dae1cd68c285a22b513d515074eb6704e11e00ba8196f360d47dc8551dd86\",\"dweb:/ipfs/QmRe5u8bjSd2CMvjgWMzpeea3VdcqEGwAP91zvjxgur8o8\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCConstants.sol\":{\"keccak256\":\"0x74833fb25cf9f24716d563c8fad0fd6172d03577dc85ab4271ca4754285ee915\",\"urls\":[\"bzz-raw://62d37b71546ea52f0c86170b588b021a488785e8570f904f0d2bcfecee93f6a7\",\"dweb:/ipfs/QmePuD631VYpEproKbap8cPXmWeb5mYjU6bwEWnxKCVWbz\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCDepositToken.sol\":{\"keccak256\":\"0xd9238bbd83f5352706426103a0708ad7c00ffbd90340a4b3bab03d2c5371e48b\",\"urls\":[\"bzz-raw://f1fc94f00aeabd49bd0f8ecf372213e83c949454c28fa672a46dd12d9a0b4311\",\"dweb:/ipfs/QmaCzqi2g4GSvzHDDES61FauDmdTGGyZrCkK1BdxpMqYa3\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCToken.sol\":{\"keccak256\":\"0x167b07029df8d350996d7f82d853437d1a2562401eeac98037c2eb4c5f295319\",\"urls\":[\"bzz-raw://7d2601ac8dcd5d59b3e479a61262de2162c96ed7ad1cd161331e2e4500b8346a\",\"dweb:/ipfs/QmWVjBSvHFg9W5zsSxgdpNSYKgfLa28fr3mPjjKQaDBxmk\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/VendingMachineAuthority.sol\":{\"keccak256\":\"0x7ad8a2cee5e6bbc187d04b147dc0d2bc2ae12bb8c3680870be9013dd5543bfd6\",\"urls\":[\"bzz-raw://733f2370c788437b0034c40a8df07f4714009769ed8134a9c656e2a103996687\",\"dweb:/ipfs/Qma9LAGQDzyUvsbhLx3FUKRCx3FmnoZuMxG4SUdjLr8bRm\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/test/deposit/TestDeposit.sol\":{\"keccak256\":\"0x22acde4643eb1ef3c1c64c3b3ab9472f659b4f711234da5d112b5ad70efd6768\",\"urls\":[\"bzz-raw://a917725404b56c24784ba2fb862670a9b3bf295dd15be5db82b535ee64536d9d\",\"dweb:/ipfs/QmXB9NUrHUY5s7dwXVfNp5aUTPaGzC16p6n3q4sBzMzqMB\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/test/deposit/TestDepositUtils.sol\":{\"keccak256\":\"0xdcc53f14ac47c35bb1b06c86e072897103af0afeccd35a4194aec2fb4aae90b5\",\"urls\":[\"bzz-raw://bdd88dcd8cdfff6e982d6b880a9f3c1dd3df059c910a39bd59a87561f274fdf7\",\"dweb:/ipfs/QmW4zFypqyb316NYfjGXPCuLPtngs3uHiCyDTZaLW6wDRq\"]},\"@keep-network/keep-ecdsa/contracts/api/IBondedECDSAKeep.sol\":{\"keccak256\":\"0x8f1edc0a2dfb4d167d190989ebc1c4256664e50ec1f82dfaeb25fa5d4a76a35a\",\"urls\":[\"bzz-raw://e815868907cc082fee1e3964be7de12da2161863d68dd1532a74e3a97bacf533\",\"dweb:/ipfs/Qmd8DqutKSwxh38WWA1ydftNkiAxSD9sqxa7qf1asHKA8c\"]},\"@summa-tx/bitcoin-spv-sol/contracts/BTCUtils.sol\":{\"keccak256\":\"0x461cc52e40ba53e646f5c9505b992baa3d5b3c98ae5718561e61b3bc6c726d52\",\"urls\":[\"bzz-raw://90cf2e608b660671642a616ec044e2a39e8ceb7079315b6133ec978c47af9f98\",\"dweb:/ipfs/QmX4hyYS99RYWiQ7BwLXuvQpU5x62YbjJWLgYFwrPkYbzT\"]},\"@summa-tx/bitcoin-spv-sol/contracts/BytesLib.sol\":{\"keccak256\":\"0x43451fdb4c4d55c01122411a4cf89a5c544c2bd4b646ee1d1f306626275324bf\",\"urls\":[\"bzz-raw://db93f07c32fa294d416aaab1b19a205772f2a3fa573fd380e5641e7770193ccf\",\"dweb:/ipfs/QmVE4y8cFKWZGKEfTM9Q3YreAArpMTTALHNr2tcvcNDnbi\"]},\"@summa-tx/bitcoin-spv-sol/contracts/CheckBitcoinSigs.sol\":{\"keccak256\":\"0x2fcbfa2440f69e346d5e14d960b14498f6484f83713fe7cec1ecf4abea3835a1\",\"urls\":[\"bzz-raw://4a385ef55a53dd0dcd1b687a47dbf6785580883a0be0cb10c617c338a35f3a8b\",\"dweb:/ipfs/QmZp9AT146beL3SoETJCWsJ4zzAZQavy9oGCYPiwAofEtq\"]},\"@summa-tx/bitcoin-spv-sol/contracts/SafeMath.sol\":{\"keccak256\":\"0x22d34c04c68c2a77ee83e2ef3756f6e6bad6ad675560d777e612315d7eb83935\",\"urls\":[\"bzz-raw://b642c61be1d34e153e4f9cc139291fa26f4ecf31a3acc5b960aad20f4f689eeb\",\"dweb:/ipfs/QmWADdVTCSyvtgb76AxFFkAr9h9jbY57Mj5X6xiEqCqmMu\"]},\"@summa-tx/bitcoin-spv-sol/contracts/ValidateSPV.sol\":{\"keccak256\":\"0x9af3b3f36de63e95977f09548617989e391b3c511cf0383ee35cefd5da7d3bfd\",\"urls\":[\"bzz-raw://97ce025c7d18540e4c24578db61cc5e33828be8e9a82b5cb5f46c99212f75ed1\",\"dweb:/ipfs/QmRrdWnd95rgCZzeaNiU4KUcGe1j7oDBj7LatpXhUmjbEE\"]},\"openzeppelin-solidity/contracts/drafts/Counters.sol\":{\"keccak256\":\"0x5eb69360d3441ab2ee799bd7c007cccbffb0896f12b2dfe1456193e2aa180a11\",\"urls\":[\"bzz-raw://072e8b5a1b5acfc2acba9b6fb87d1dc57065aad44572617ad46b014074969eb3\",\"dweb:/ipfs/QmVTDHUriaxBJqiWCWgWC8vYaYYfXSz883LsowzTx1DcpK\"]},\"openzeppelin-solidity/contracts/introspection/ERC165.sol\":{\"keccak256\":\"0xac2eacd7e7762e275442f28f21d821544df5aae2ed7698af13be8c41b7005e2e\",\"urls\":[\"bzz-raw://8bdbefb642e7b08535c66bbf074e576cfef2300cdf910c1e0b211f6393833a28\",\"dweb:/ipfs/QmQhfx2Ufr8a2gFXm3KogL66xGgAuAWMwcamkWFKGG6Vya\"]},\"openzeppelin-solidity/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0x661553e43d7c4fbb2de504e5999fd5c104d367488350ed5bf023031bd1ba5ac5\",\"urls\":[\"bzz-raw://b40442c5b350b57b88a081a1eacd2bac962d4ecc1f029f5447a18986f08f6f14\",\"dweb:/ipfs/QmV7wjtRf11ibUHh4g8JjuhMpy68pPhV95L2y46UBoRfsZ\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x4ccf2d7b51873db1ccfd54ca2adae5eac3b184f9699911ed4490438419f1c690\",\"urls\":[\"bzz-raw://d62d769b2219d5de39013093412623e624fa887f871826ea3bae6052ee893610\",\"dweb:/ipfs/QmV3yVktya1s617QmuzQR2CfuJgUi3dR2xEZY9ecmqZ2G1\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x852793a3c2f86d336a683b30d688ec3dcfc57451af5a2bf5975cda3b7191a901\",\"urls\":[\"bzz-raw://4f5b57664069671648fb81f55b0082faecdf1b2f159eec6b1fa6cef9b7d73bc5\",\"dweb:/ipfs/QmcyytaLs7zFdb4Uu7C5PmQRhQdB3wA3fUdkV6mkYfdDFH\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol\":{\"keccak256\":\"0xc61b3603089b09a730d8ca72e9133a496cc4405da40e9b87c12f073245d774bf\",\"urls\":[\"bzz-raw://de8bb0003d53de236913f0e0102e7a9d015e02098f2495edd000f207fe2be2f4\",\"dweb:/ipfs/QmbtwNwAJEehWWL7yGGyyMoenQvcqtz91pqLgQPpLRoLYC\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x90e8c2521653bbb1768b05889c5760031e688d9cd361f167489b89215e201b95\",\"urls\":[\"bzz-raw://d0abb99bb8bfc2bc0a89902b8ed1dc0442ad08cc78cee64c291b3df6a27bcccc\",\"dweb:/ipfs/QmP5NaEwZthQeM2ESz4WTT3osrP7jhbvu7ocbttBi2JAw6\"]},\"openzeppelin-solidity/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0xf151df411bbf4eaef1fc8e8480cd10c2cd985f1a36517e63981517610213efc1\",\"urls\":[\"bzz-raw://2a277b3cc3a1a03af5c039bc75cd16bb2d23b529cb2564cc0bea1b1e0eb4dd68\",\"dweb:/ipfs/QmNRxggY8qmjjuLnxggRqE8uBueuCktLwi9YYHagWoaEJ8\"]},\"openzeppelin-solidity/contracts/token/ERC721/ERC721Metadata.sol\":{\"keccak256\":\"0xe5e28b1a405164faa98f8ecd8ed2b00907b89e3d58b2b2bb8ac8b12bc5714489\",\"urls\":[\"bzz-raw://0d5d3f0caa7e7ec91f8a2894e1a6a3513a0c79aa91a498ebf8fdbdd07c12286f\",\"dweb:/ipfs/QmP7r4jQMRxXb5JHy5V9bgMz5FmTezcSDd7ivyzJN88pTR\"]},\"openzeppelin-solidity/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xce48937a8007c580b8e2e35705738c922dd17540de89ebee6df06d2917a3f9fc\",\"urls\":[\"bzz-raw://1d117265103ee3efcd454d3aafb3e79a115f9bca6dec78a1229558eb30d14d05\",\"dweb:/ipfs/QmTm5Z1c7zzPiG3Cfj1eBMB23AeiEFGgvmTFQVaeEWXVCw\"]},\"openzeppelin-solidity/contracts/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0x2b2b99dc7fe8fcd1f9427d00822b99cbc683dc21f5dd7532bd7e2281fd2c2ca2\",\"urls\":[\"bzz-raw://a8024c00e34efaf328f9592e76823c79f25fa0f6006bdf4a1e7fea204afd4773\",\"dweb:/ipfs/QmZns9jTr7843njq3J2iL2LLoWXK5mdzN1bDGd9GL3ahhD\"]},\"openzeppelin-solidity/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xadbfb7028fb0f851dc848a48b9e54e7c89ffd2c2edc12fa4ba9bb383dfaa83d9\",\"urls\":[\"bzz-raw://90dceab42713246639100b87d6650037d68e4a2ab2dd4b5768c3ed35d6b3a4a0\",\"dweb:/ipfs/QmQ42UW5nchMoYP9bU9F1AJga5chG8j92fCPkURpiDKsCu\"]},\"openzeppelin-solidity/contracts/utils/Address.sol\":{\"keccak256\":\"0xf3358e5819ca73357abd6c90bdfffd0474af54364897f6b3e3234c4b71fbe9a1\",\"urls\":[\"bzz-raw://75ae8d04454d1511a2ed986cc8585736f05c5c25280683b3d24712a9f414a4bf\",\"dweb:/ipfs/Qmb3kNCoBUZdah1AgBBD4zMk898j5Qw8ahT1w5cCMYp5Y3\"]}},\"version\":1}",
  "bytecode": "0x60806040526000805460ff191690553480156200001b57600080fd5b506200003463deadbeef6001600160e01b036200003a16565b620000f4565b6001600160a01b038116620000815760405162461bcd60e51b8152600401808060200182810382526023815260200180620056606023913960400191505060405180910390fd5b60005460ff1615620000c55760405162461bcd60e51b8152600401808060200182810382526025815260200180620056836025913960400191505060405180910390fd5b6000805460ff196001600160a01b0390931661010002610100600160a81b031990911617919091166001179055565b61555c80620001046000396000f3fe6080604052600436106104885760003560e01c806391d165e311610255578063c4572eb911610144578063dba49153116100c1578063f21cc71f11610085578063f21cc71f14611df5578063f603f2eb14611e1f578063f97a02fa14611e4b578063fb7c592a14611e74578063fb90da6814611f41578063fc1e6db214611f5657610488565b8063dba4915314611bc2578063dd52890b14611c71578063dd9e995a1461142f578063df27eb8914611db6578063ea3db25014611de057610488565b8063d459c41611610108578063d459c416146115d0578063d5eef9711461183b578063d826f88f14611907578063d8d023301461191c578063d9f74b0e1461194f57610488565b8063c4572eb91461152b578063c4d66de814611540578063c6254dba14611573578063c82ba9dd14611588578063d02fd9581461159d57610488565b8063a87d00b8116101d2578063b6aef06f11610196578063b6aef06f14611489578063b7a34a731461149e578063ba346839146114c8578063bcb65607146114dd578063c4159559146114f257610488565b8063a87d00b814611100578063abb3bb73146113fc578063b1474a971461142f578063b4bd2e7a1461145f578063b6104f961461147457610488565b806396aab3111161021957806396aab31114610f635780639894d73414610f78578063994aa93114610fb4578063a2af041914611076578063a81e63f7146110a957610488565b806391d165e314610ecc57806393c43bd014610ee1578063946626f414610f0f578063946fbf4c14610f39578063951303f514610f4e57610488565b806342dbc60a1161037c57806373059199116102f95780637be4227f116102bd5780637be4227f14610cc457806384eb69aa14610d7f57806385df153d14610e4657806387a90d8014610e5b5780638a7e646414610e7057806390a2f68714610e9a57610488565b80637305919914610be8578063735bd9d614610bfd57806374f1c69414610c3057806376ef551014610c815780637a26f05a14610c9657610488565b806360e98d591161034057806360e98d5914610a9757806368b2bb3514610aac5780636c3b011414610b785780636e4668be14610ba95780636ede101114610bbe57610488565b806342dbc60a146109cd578063436fd9e6146109fd5780634cb24d4114610a275780634f706e4414610a5557806356de96db14610a6a57610488565b8063243155371161040a5780632b0bc981116103ce5780632b0bc9811461078c5780632c735daa146107a15780632d099442146107b65780633322f9a01461088257806335bc0ebe146109b857610488565b806324315537146106e3578063245dc4c51461073857806324600fc31461074d578063259b1ea314610762578063287b32e51461077757610488565b80630c3f6acf116104515780630c3f6acf1461062e5780630d5889f4146106435780631209114a1461066f57806313f654df146106a35780631865c57d146106b857610488565b806249ce75146104c7578063022d44b71461057857806303c73ded146105ab578063058d3703146105d95780630b3728c314610600575b36156104c55760405162461bcd60e51b815260040180806020018281038252603b8152602001806153d0603b913960400191505060405180910390fd5b005b3480156104d357600080fd5b506104c5600480360360208110156104ea57600080fd5b810190602081018135600160201b81111561050457600080fd5b82018360208201111561051657600080fd5b803590602001918460018302840111600160201b8311171561053757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611f86945050505050565b34801561058457600080fd5b506104c56004803603602081101561059b57600080fd5b50356001600160a01b0316612121565b3480156105b757600080fd5b506104c5600480360360208110156105ce57600080fd5b503561ffff16612143565b3480156105e557600080fd5b506105ee612163565b60408051918252519081900360200190f35b34801561060c57600080fd5b506104c56004803603602081101561062357600080fd5b503561ffff166121e9565b34801561063a57600080fd5b506105ee612201565b34801561064f57600080fd5b50610658612211565b6040805161ffff9092168252519081900360200190f35b34801561067b57600080fd5b506104c56004803603602081101561069257600080fd5b503567ffffffffffffffff16612222565b3480156106af57600080fd5b506105ee612250565b3480156106c457600080fd5b506106cd612201565b6040805160ff9092168252519081900360200190f35b3480156106ef57600080fd5b506104c5600480360360a081101561070657600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101358216916080909101351661235d565b34801561074457600080fd5b506105ee6123bc565b34801561075957600080fd5b506104c56123c2565b34801561076e57600080fd5b506104c56123ce565b34801561078357600080fd5b506104c561243a565b34801561079857600080fd5b506104c561248c565b3480156107ad57600080fd5b506104c56124de565b3480156107c257600080fd5b506104c5600480360360a08110156107d957600080fd5b60ff8235169160208101359160408201359160608101359181019060a081016080820135600160201b81111561080e57600080fd5b82018360208201111561082057600080fd5b803590602001918460018302840111600160201b8311171561084157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612530945050505050565b34801561088e57600080fd5b506105ee600480360360408110156108a557600080fd5b810190602081018135600160201b8111156108bf57600080fd5b8201836020820111156108d157600080fd5b803590602001918460018302840111600160201b831117156108f257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561094457600080fd5b82018360208201111561095657600080fd5b803590602001918460018302840111600160201b8311171561097757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612631945050505050565b3480156109c457600080fd5b506105ee61278b565b3480156109d957600080fd5b506104c5600480360360408110156109f057600080fd5b50803590602001356127df565b348015610a0957600080fd5b506104c560048036036020811015610a2057600080fd5b50356127ea565b348015610a3357600080fd5b50610a3c6127fe565b6040805192835260208301919091528051918290030190f35b348015610a6157600080fd5b506104c5612808565b348015610a7657600080fd5b506104c560048036036020811015610a8d57600080fd5b503560ff1661285a565b348015610aa357600080fd5b506105ee61287a565b348015610ab857600080fd5b506104c5600480360360a0811015610acf57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b811115610af957600080fd5b820183602082011115610b0b57600080fd5b803590602001918460018302840111600160201b83111715610b2c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550508235935050506020810135906040013561288b565b348015610b8457600080fd5b50610b8d6128ca565b604080516001600160a01b039092168252519081900360200190f35b348015610bb557600080fd5b506105ee6128d9565b348015610bca57600080fd5b506104c560048036036020811015610be157600080fd5b503561292d565b348015610bf457600080fd5b506105ee612932565b348015610c0957600080fd5b506104c560048036036020811015610c2057600080fd5b50356001600160a01b0316612938565b348015610c3c57600080fd5b50610c6360048036036020811015610c5357600080fd5b50356001600160a01b031661295a565b60408051938452602084019290925282820152519081900360600190f35b348015610c8d57600080fd5b5061065861297d565b348015610ca257600080fd5b506104c560048036036020811015610cb957600080fd5b503561ffff16612987565b348015610cd057600080fd5b50610cd96129a9565b60405180866001600160a01b03166001600160a01b0316815260200180602001858152602001848152602001838152602001828103825286818151815260200191508051906020019080838360005b83811015610d40578181015183820152602001610d28565b50505050905090810190601f168015610d6d5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b348015610d8b57600080fd5b506104c560048036036060811015610da257600080fd5b6001600160c01b031982351691602081013591810190606081016040820135600160201b811115610dd257600080fd5b820183602082011115610de457600080fd5b803590602001918460018302840111600160201b83111715610e0557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612a73945050505050565b348015610e5257600080fd5b50610658612aa2565b348015610e6757600080fd5b506105ee612ab2565b348015610e7c57600080fd5b506104c560048036036020811015610e9357600080fd5b5035612bc0565b348015610ea657600080fd5b50610eaf612bd1565b6040805167ffffffffffffffff9092168252519081900360200190f35b348015610ed857600080fd5b506104c5612be8565b348015610eed57600080fd5b506104c560048036036020811015610f0457600080fd5b503561ffff16612c3a565b348015610f1b57600080fd5b506104c560048036036020811015610f3257600080fd5b5035612c5d565b348015610f4557600080fd5b506105ee612c62565b348015610f5a57600080fd5b506105ee612cb6565b348015610f6f57600080fd5b506104c5612cc7565b348015610f8457600080fd5b506104c560048036036040811015610f9b57600080fd5b506001600160c01b031981358116916020013516612d19565b348015610fc057600080fd5b506104c560048036036040811015610fd757600080fd5b6001600160c01b03198235169190810190604081016020820135600160201b81111561100257600080fd5b82018360208201111561101457600080fd5b803590602001918460018302840111600160201b8311171561103557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612d9f945050505050565b34801561108257600080fd5b506104c56004803603602081101561109957600080fd5b50356001600160a01b0316612e71565b6104c5600480360360c08110156110bf57600080fd5b5080356001600160a01b03908116916020810135821691604082013581169160608101358216916080820135169060a0013567ffffffffffffffff16612e93565b34801561110c57600080fd5b50611373600480360361010081101561112457600080fd5b6001600160e01b03198235169190810190604081016020820135600160201b81111561114f57600080fd5b82018360208201111561116157600080fd5b803590602001918460018302840111600160201b8311171561118257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156111d457600080fd5b8201836020820111156111e657600080fd5b803590602001918460018302840111600160201b8311171561120757600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092956001600160e01b03198535169560ff60208701351695919450925060608101915060400135600160201b81111561127257600080fd5b82018360208201111561128457600080fd5b803590602001918460018302840111600160201b831117156112a557600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092958435959094909350604081019250602001359050600160201b8111156112ff57600080fd5b82018360208201111561131157600080fd5b803590602001918460018302840111600160201b8311171561133257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612f6b945050505050565b604080516001600160c01b03198416815260208082018381528451938301939093528351919291606084019185019080838360005b838110156113c05781810151838201526020016113a8565b50505050905090810190601f1680156113ed5780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b34801561140857600080fd5b506104c56004803603602081101561141f57600080fd5b50356001600160a01b03166132b1565b34801561143b57600080fd5b506104c56004803603604081101561145257600080fd5b50803590602001356132d3565b34801561146b57600080fd5b506104c56132de565b34801561148057600080fd5b506105ee613330565b34801561149557600080fd5b506105ee613336565b3480156114aa57600080fd5b506105ee600480360360208110156114c157600080fd5b503561333c565b3480156114d457600080fd5b506104c56133cc565b3480156114e957600080fd5b506104c561341e565b3480156114fe57600080fd5b506104c56004803603606081101561151557600080fd5b5060ff8135169060208101359060400135613428565b34801561153757600080fd5b506105ee6134ae565b34801561154c57600080fd5b506104c56004803603602081101561156357600080fd5b50356001600160a01b03166134ba565b34801561157f57600080fd5b50610a3c613570565b34801561159457600080fd5b506105ee61357a565b3480156115a957600080fd5b506105ee600480360360208110156115c057600080fd5b50356001600160a01b0316613580565b3480156115dc57600080fd5b506104c5600480360360e08110156115f357600080fd5b6001600160e01b03198235169190810190604081016020820135600160201b81111561161e57600080fd5b82018360208201111561163057600080fd5b803590602001918460018302840111600160201b8311171561165157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156116a357600080fd5b8201836020820111156116b557600080fd5b803590602001918460018302840111600160201b831117156116d657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092956001600160e01b0319853516959094909350604081019250602001359050600160201b81111561173a57600080fd5b82018360208201111561174c57600080fd5b803590602001918460018302840111600160201b8311171561176d57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092958435959094909350604081019250602001359050600160201b8111156117c757600080fd5b8201836020820111156117d957600080fd5b803590602001918460018302840111600160201b831117156117fa57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061359f945050505050565b34801561184757600080fd5b506104c5600480360360a081101561185e57600080fd5b60ff8235169160208101359160408201359160608101359181019060a081016080820135600160201b81111561189357600080fd5b8201836020820111156118a557600080fd5b803590602001918460018302840111600160201b831117156118c657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506137e1945050505050565b34801561191357600080fd5b506104c5613873565b34801561192857600080fd5b506105ee6004803603602081101561193f57600080fd5b50356001600160a01b03166138ec565b34801561195b57600080fd5b506104c5600480360361010081101561197357600080fd5b6001600160e01b03198235169190810190604081016020820135600160201b81111561199e57600080fd5b8201836020820111156119b057600080fd5b803590602001918460018302840111600160201b831117156119d157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115611a2357600080fd5b820183602082011115611a3557600080fd5b803590602001918460018302840111600160201b83111715611a5657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092956001600160e01b03198535169560ff60208701351695919450925060608101915060400135600160201b811115611ac157600080fd5b820183602082011115611ad357600080fd5b803590602001918460018302840111600160201b83111715611af457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092958435959094909350604081019250602001359050600160201b811115611b4e57600080fd5b820183602082011115611b6057600080fd5b803590602001918460018302840111600160201b83111715611b8157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550613901945050505050565b348015611bce57600080fd5b50611bd7613b51565b60405180846001600160c01b0319166001600160c01b031916815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611c34578181015183820152602001611c1c565b50505050905090810190601f168015611c615780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b348015611c7d57600080fd5b506105ee60048036036080811015611c9457600080fd5b81359190810190604081016020820135600160201b811115611cb557600080fd5b820183602082011115611cc757600080fd5b803590602001918460018302840111600160201b83111715611ce857600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092958435959094909350604081019250602001359050600160201b811115611d4257600080fd5b820183602082011115611d5457600080fd5b803590602001918460018302840111600160201b83111715611d7557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550613cb7945050505050565b348015611dc257600080fd5b506104c560048036036020811015611dd957600080fd5b5035613e0c565b348015611dec57600080fd5b506104c5613e11565b348015611e0157600080fd5b506104c560048036036020811015611e1857600080fd5b5035613e63565b348015611e2b57600080fd5b506104c560048036036020811015611e4257600080fd5b50351515613e68565b348015611e5757600080fd5b50611e60613e79565b604080519115158252519081900360200190f35b348015611e8057600080fd5b506104c560048036036060811015611e9757600080fd5b6001600160c01b03198235169190810190604081016020820135600160201b811115611ec257600080fd5b820183602082011115611ed457600080fd5b803590602001918460018302840111600160201b83111715611ef557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550505090356001600160a01b03169150613ecd9050565b348015611f4d57600080fd5b50610b8d613ff4565b348015611f6257600080fd5b506104c560048036036040811015611f7957600080fd5b5080359060200135614003565b6040805163ad91ce1f60e01b8152600160048201529051339173__DepositUtils__________________________9163ad91ce1f91602480820192602092909190829003018186803b158015611fdb57600080fd5b505af4158015611fef573d6000803e3d6000fd5b505050506040513d602081101561200557600080fd5b50516001600160a01b03161461204c5760405162461bcd60e51b815260040180806020018281038252602881526020018061540b6028913960400191505060405180910390fd5b60408051635f3c5d8960e01b81526001600482018181526024830193845284516044840152845173__DepositFunding________________________94635f3c5d8994879392606490910190602085019080838360005b838110156120bb5781810151838201526020016120a3565b50505050905090810190601f1680156120e85780820380516001836020036101000a031916815260200191505b50935050505060006040518083038186803b15801561210657600080fd5b505af415801561211a573d6000803e3d6000fd5b5050505050565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6006805461ffff909216620100000263ffff000019909216919091179055565b6000600173__DepositUtils__________________________63a880784890916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156121b757600080fd5b505af41580156121cb573d6000803e3d6000fd5b505050506040513d60208110156121e157600080fd5b505190505b90565b6006805461ffff191661ffff92909216919091179055565b600554600160e01b900460ff1690565b600654600160201b900461ffff1690565b6005805467ffffffffffffffff909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b6000600173__DepositStates_________________________63fb0611ff90916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156122a457600080fd5b505af41580156122b8573d6000803e3d6000fd5b505050506040513d60208110156122ce57600080fd5b505161230b5760405162461bcd60e51b81526004018080602001828103825260298152602001806154ff6029913960400191505060405180910390fd5b604080516350ef3aa160e01b815260016004820152905173__DepositUtils__________________________916350ef3aa1916024808301926020929190829003018186803b1580156121b757600080fd5b600180546001600160a01b03199081166001600160a01b03978816179091556002805482169587169590951790945560038054851693861693909317909255600480548416918516919091179055600580549092169216919091179055565b600d5490565b6123cc6001614015565b565b6040805163426e16c160e01b815260016004820152905173__DepositFunding________________________9163426e16c1916024808301926000929190829003018186803b15801561242057600080fd5b505af4158015612434573d6000803e3d6000fd5b50505050565b6040805163077aceb960e31b815260016004820152905173__DepositLiquidation____________________91633bd675c8916024808301926000929190829003018186803b15801561242057600080fd5b6040805163439b7be160e11b815260016004820152905173__DepositRedemption_____________________91638736f7c2916024808301926000929190829003018186803b15801561242057600080fd5b60408051631754228360e11b815260016004820152905173__DepositLiquidation____________________91632ea84506916024808301926000929190829003018186803b15801561242057600080fd5b600173__DepositFunding________________________63fb12d9df909187878787876040518763ffffffff1660e01b8152600401808781526020018660ff1660ff16815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156125c35781810151838201526020016125ab565b50505050905090810190601f1680156125f05780820380516001836020036101000a031916815260200191505b5097505050505050505060006040518083038186803b15801561261257600080fd5b505af4158015612626573d6000803e3d6000fd5b505050505050505050565b6000600173__DepositRedemption_____________________63936b9ac5909185856040518463ffffffff1660e01b8152600401808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156126a9578181015183820152602001612691565b50505050905090810190601f1680156126d65780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156127095781810151838201526020016126f1565b50505050905090810190601f1680156127365780820380516001836020036101000a031916815260200191505b509550505050505060206040518083038186803b15801561275657600080fd5b505af415801561276a573d6000803e3d6000fd5b505050506040513d602081101561278057600080fd5b505190505b92915050565b6000600173__DepositUtils__________________________6391f88c8590916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156121b757600080fd5b600891909155600955565b6127fb60018263ffffffff61423216565b50565b6008546009549091565b604080516361f036d360e01b815260016004820152905173__DepositFunding________________________916361f036d3916024808301926000929190829003018186803b15801561242057600080fd5b6005805460ff909216600160e01b0260ff60e01b19909216919091179055565b600554600160e81b900461ffff1690565b601080546001600160a01b0319166001600160a01b03871617905583516128b99060119060208701906152a7565b506012929092556014556015555050565b600b546001600160a01b031690565b6000600173__DepositLiquidation____________________63e86e97b690916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156121b757600080fd5b601355565b60145490565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b600080806129706001858363ffffffff6142af16565b9250925092509193909250565b60065461ffff1690565b6005805461ffff909216600160e81b0261ffff60e81b19909216919091179055565b6010546012546014546015546011805460408051602060026101006001861615026000190190941693909304601f81018490048402820184019092528181526000976060978997889788976001600160a01b039094169693959294919390928691830182828015612a5b5780601f10612a3057610100808354040283529160200191612a5b565b820191906000526020600020905b815481529060010190602001808311612a3e57829003601f168201915b50505050509350945094509450945094509091929394565b6016805467ffffffffffffffff191660c085901c179055601782905580516124349060189060208401906152a7565b60065462010000900461ffff1690565b6000600173__DepositStates_________________________6348312fa390916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612b0657600080fd5b505af4158015612b1a573d6000803e3d6000fd5b505050506040513d6020811015612b3057600080fd5b505115612b6e5760405162461bcd60e51b81526004018080602001828103825260418152602001806153406041913960600191505060405180910390fd5b60408051631ec664f560e21b815260016004820152905173__DepositUtils__________________________91637b1993d4916024808301926020929190829003018186803b1580156121b757600080fd5b6127fb60018263ffffffff61452616565b600554600160a01b900467ffffffffffffffff1690565b60408051634e40547560e11b815260016004820152905173__DepositLiquidation____________________91639c80a8ea916024808301926000929190829003018186803b15801561242057600080fd5b6006805461ffff909216600160201b0265ffff0000000019909216919091179055565b600d55565b6000600173__DepositUtils__________________________637949c2d290916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156121b757600080fd5b6000612cc260016145ec565b905090565b6040805163a221542160e01b815260016004820152905173__DepositLiquidation____________________9163a2215421916024808301926000929190829003018186803b15801561242057600080fd5b60408051632d0c21bf60e01b8152600160048201526001600160c01b0319808516602483015283166044820152905173__DepositRedemption_____________________91632d0c21bf916064808301926000929190829003018186803b158015612d8357600080fd5b505af4158015612d97573d6000803e3d6000fd5b505050505050565b604051632cac94ef60e01b81526001600482018181526001600160c01b03198516602484015260606044840190815284516064850152845173__DepositRedemption_____________________94632cac94ef94938893889391929091608490910190602085019080838360005b83811015612e25578181015183820152602001612e0d565b50505050905090810190601f168015612e525780820380516001836020036101000a031916815260200191505b5094505050505060006040518083038186803b158015612d8357600080fd5b601080546001600160a01b0319166001600160a01b0392909216919091179055565b600180546001600160a01b03199081166001600160a01b03898116919091178355600280548316898316179055600380548316888316179055600480548316878316178155600580549093169186169190911790915560408051632851e9dd60e01b81529182019290925267ffffffffffffffff83166024820152905173__DepositFunding________________________91632851e9dd916044808301926000929190829003018186803b158015612f4b57600080fd5b505af4158015612f5f573d6000803e3d6000fd5b50505050505050505050565b60006060600173__DepositUtils__________________________63e92d811990918c8c8c8c8c8c8c8c6040518a63ffffffff1660e01b8152600401808a8152602001896001600160e01b0319166001600160e01b03191681526020018060200180602001886001600160e01b0319166001600160e01b03191681526020018760ff1660ff168152602001806020018681526020018060200185810385528c818151815260200191508051906020019080838360005b83811015613039578181015183820152602001613021565b50505050905090810190601f1680156130665780820380516001836020036101000a031916815260200191505b5085810384528b5181528b516020918201918d019080838360005b83811015613099578181015183820152602001613081565b50505050905090810190601f1680156130c65780820380516001836020036101000a031916815260200191505b5085810383528851815288516020918201918a019080838360005b838110156130f95781810151838201526020016130e1565b50505050905090810190601f1680156131265780820380516001836020036101000a031916815260200191505b50858103825286518152865160209182019188019080838360005b83811015613159578181015183820152602001613141565b50505050905090810190601f1680156131865780820380516001836020036101000a031916815260200191505b509d505050505050505050505050505060006040518083038186803b1580156131ae57600080fd5b505af41580156131c2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160409081528110156131eb57600080fd5b815160208301805160405192949293830192919084600160201b82111561321157600080fd5b90830190602082018581111561322657600080fd5b8251600160201b81118282018810171561323f57600080fd5b82525081516020918201929091019080838360005b8381101561326c578181015183820152602001613254565b50505050905090810190601f1680156132995780820380516001836020036101000a031916815260200191505b50604052505050915091509850989650505050505050565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b600e91909155600f55565b604080516324e8e19960e21b815260016004820152905173__DepositLiquidation____________________916393a38664916024808301926000929190829003018186803b15801561242057600080fd5b60085490565b60135490565b6000600173__DepositUtils__________________________631129a8a99091846040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b15801561339857600080fd5b505af41580156133ac573d6000803e3d6000fd5b505050506040513d60208110156133c257600080fd5b505190505b919050565b604080516304bfa27760e01b815260016004820152905173__DepositRedemption_____________________916304bfa277916024808301926000929190829003018186803b15801561242057600080fd5b6123cc6001614603565b60408051631e3435d560e11b81526001600482015260ff851660248201526044810184905260648101839052905173__DepositRedemption_____________________91633c686baa916084808301926000929190829003018186803b15801561349157600080fd5b505af41580156134a5573d6000803e3d6000fd5b50505050505050565b6000612cc26001614968565b6001600160a01b0381166134ff5760405162461bcd60e51b81526004018080602001828103825260238152602001806153816023913960400191505060405180910390fd5b60005460ff16156135415760405162461bcd60e51b81526004018080602001828103825260258152602001806154da6025913960400191505060405180910390fd5b6000805460ff196001600160a01b0390931661010002610100600160a81b031990911617919091166001179055565b600e54600f549091565b600c5490565b6000806135956001848363ffffffff6142af16565b5090949350505050565b604051636c7e2b9d60e01b81526001600482018181526001600160e01b0319808b1660248501528716608484015260c48301859052610100604484019081528951610104850152895173__DepositRedemption_____________________94636c7e2b9d94938d938d938d938d938d938d938d93606481019160a482019160e48101916101249091019060208d019080838360005b8381101561364c578181015183820152602001613634565b50505050905090810190601f1680156136795780820380516001836020036101000a031916815260200191505b5085810384528a5181528a516020918201918c019080838360005b838110156136ac578181015183820152602001613694565b50505050905090810190601f1680156136d95780820380516001836020036101000a031916815260200191505b5085810383528851815288516020918201918a019080838360005b8381101561370c5781810151838201526020016136f4565b50505050905090810190601f1680156137395780820380516001836020036101000a031916815260200191505b50858103825286518152865160209182019188019080838360005b8381101561376c578181015183820152602001613754565b50505050905090810190601f1680156137995780820380516001836020036101000a031916815260200191505b509c5050505050505050505050505060006040518083038186803b1580156137c057600080fd5b505af41580156137d4573d6000803e3d6000fd5b5050505050505050505050565b600173__DepositLiquidation____________________634941676c909187878787876040518763ffffffff1660e01b8152600401808781526020018660ff1660ff1681526020018581526020018481526020018381526020018060200182810382528381815181526020019150805190602001908083836000838110156125c35781810151838201526020016125ab565b61387d600061285a565b6138886000806127df565b604080516020810190915260008082526138a49181808061288b565b6138c3600060c01b600060405180602001604052806000815250612a73565b6138cd6000612121565b6138d76000613e0c565b6138e16000612c5d565b6123cc6000806132d3565b6000806135956001848163ffffffff6142af16565b60405163d745519360e01b81526001600482018181526001600160e01b0319808c1660248501528816608484015260ff871660a484015260e48301859052610120604484019081528a516101248501528a5173__DepositFunding________________________9463d745519394938e938e938e938e938e938e938e938e939291606482019160c4810191610104820191610144019060208e019080838360005b838110156139ba5781810151838201526020016139a2565b50505050905090810190601f1680156139e75780820380516001836020036101000a031916815260200191505b5085810384528b5181528b516020918201918d019080838360005b83811015613a1a578181015183820152602001613a02565b50505050905090810190601f168015613a475780820380516001836020036101000a031916815260200191505b5085810383528851815288516020918201918a019080838360005b83811015613a7a578181015183820152602001613a62565b50505050905090810190601f168015613aa75780820380516001836020036101000a031916815260200191505b50858103825286518152865160209182019188019080838360005b83811015613ada578181015183820152602001613ac2565b50505050905090810190601f168015613b075780820380516001836020036101000a031916815260200191505b509d505050505050505050505050505060006040518083038186803b158015613b2f57600080fd5b505af4158015613b43573d6000803e3d6000fd5b505050505050505050505050565b6000806060600173__DepositStates_________________________6348312fa390916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015613ba857600080fd5b505af4158015613bbc573d6000803e3d6000fd5b505050506040513d6020811015613bd257600080fd5b505115613c105760405162461bcd60e51b81526004018080602001828103825260418152602001806153406041913960600191505060405180910390fd5b60165460175460188054604080516020601f6002600019600187161561010002019095169490940493840181900481028201810190925282815260c09590951b94918391830182828015613ca55780601f10613c7a57610100808354040283529160200191613ca5565b820191906000526020600020905b815481529060010190602001808311613c8857829003601f168201915b50505050509050925092509250909192565b6000600173__DepositUtils__________________________63f846f3719091878787876040518663ffffffff1660e01b8152600401808681526020018581526020018060200184815260200180602001838103835286818151815260200191508051906020019080838360005b83811015613d3d578181015183820152602001613d25565b50505050905090810190601f168015613d6a5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015613d9d578181015183820152602001613d85565b50505050905090810190601f168015613dca5780820380516001836020036101000a031916815260200191505b5097505050505050505060006040518083038186803b158015613dec57600080fd5b505af4158015613e00573d6000803e3d6000fd5b50505050949350505050565b600c55565b60408051632ec8740960e21b815260016004820152905173__DepositFunding________________________9163bb21d024916024808301926000929190829003018186803b15801561242057600080fd5b600755565b6127fb60018263ffffffff61498716565b6000600173__DepositStates_________________________630f2c635590916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156121b757600080fd5b6005546001600160a01b03163314613f165760405162461bcd60e51b815260040180806020018281038252603e81526020018061549c603e913960400191505060405180910390fd5b604051630d806ee760e41b81526001600482018181526001600160c01b0319861660248401526001600160a01b038416606484015260806044840190815285516084850152855173__DepositRedemption_____________________9463d806ee70949389938993899360a40190602086019080838360005b83811015613fa7578181015183820152602001613f8f565b50505050905090810190601f168015613fd45780820380516001836020036101000a031916815260200191505b509550505050505060006040518083038186803b15801561349157600080fd5b600a546001600160a01b031690565b6000918252601a602052604090912055565b336000908152601882016020908152604091829020548251635a33257560e01b8152600481018590529251909273__DepositStates_________________________92635a33257592602480840193829003018186803b15801561407857600080fd5b505af415801561408c573d6000803e3d6000fd5b505050506040513d60208110156140a257600080fd5b50516140f5576040805162461bcd60e51b815260206004820152601b60248201527f436f6e7472616374206e6f7420796574207465726d696e617465640000000000604482015290519081900360640190fd5b60008111614140576040805162461bcd60e51b81526020600482015260136024820152724e6f7468696e6720746f20776974686472617760681b604482015290519081900360640190fd5b80471015614195576040805162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420636f6e74726163742062616c616e6365000000604482015290519081900360640190fd5b3360008181526018840160205260408082208290555190919083908381818185875af1925050503d80600081146141e8576040519150601f19603f3d011682016040523d82523d6000602084013e6141ed565b606091505b505090508061422d5760405162461bcd60e51b815260040180806020018281038252602c8152602001806153a4602c913960400191505060405180910390fd5b505050565b600a8201546040805163799cd33360e01b81526004810184905290516001600160a01b039092169163799cd3339160248082019260009290919082900301818387803b15801561428157600080fd5b505af1158015614295573d6000803e3d6000fd5b505050600091825250601990910160205260409020429055565b60008060008084806142da5750856001600160a01b03166142cf88614ced565b6001600160a01b0316145b90506000806142e889614d4e565b11801561436f57508773__DepositStates_________________________63761275bf90916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561434157600080fd5b505af4158015614355573d6000803e3d6000fd5b505050506040513d602081101561436b57600080fd5b5051155b9050818061437b575080155b6143b65760405162461bcd60e51b81526004018080602001828103825260488152602001806154336048913960600191505060405180910390fd5b6000806143c28a614e00565b6001600160a01b0316141590506000886001600160a01b03166143e48b614e00565b6001600160a01b031614905060006143fb8b614ee4565b9050600061440c8286868987614f10565b90506144308161442461441e8f614f5e565b89614fef565b9063ffffffff61500616565b60018d0154604080516370a0823160e01b81523060048201529051929b506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561448357600080fd5b505afa158015614497573d6000803e3d6000fd5b505050506040513d60208110156144ad57600080fd5b50519050808a11156144d0576144c98a8263ffffffff61506716565b99506144d5565b600099505b8580156144df5750845b80156144e9575083155b156144f2578297505b614514886145088581858f63ffffffff61500616565b9063ffffffff61506716565b98505050505050505093509350939050565b8047101561457b576040805162461bcd60e51b815260206004820152601860248201527f4e6f7420656e6f7567682066756e647320746f2073656e640000000000000000604482015290519081900360640190fd5b80156145e857600a82015460408051631bb457e560e21b815290516001600160a01b03909216918291636ed15f9491859160048082019260009290919082900301818588803b1580156145cd57600080fd5b505af11580156145e1573d6000803e3d6000fd5b5050505050505b5050565b336000908152601882016020526040902054919050565b60008173__DepositUtils__________________________63ad91ce1f90916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561465657600080fd5b505af415801561466a573d6000803e3d6000fd5b505050506040513d602081101561468057600080fd5b505160408051631bf7ad3160e01b815260048101859052905191925060009173__DepositUtils__________________________91631bf7ad31916024808301926020929190829003018186803b1580156146da57600080fd5b505af41580156146ee573d6000803e3d6000fd5b505050506040513d602081101561470457600080fd5b50516004840154600f8501549192506001600160a01b039081169160009182918291614739918991168363ffffffff6142af16565b9194509250905082156147cf576001870154604080516323b872dd60e01b81523360048201523060248201526044810186905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b1580156147a257600080fd5b505af11580156147b6573d6000803e3d6000fd5b505050506040513d60208110156147cc57600080fd5b50505b81156148e057836001600160a01b0316866001600160a01b0316141561485b57600187015460408051630852cd8d60e31b81526004810185905290516001600160a01b03909216916342966c689160248082019260009290919082900301818387803b15801561483e57600080fd5b505af1158015614852573d6000803e3d6000fd5b505050506148e0565b60018701546040805163a9059cbb60e01b81526001600160a01b038981166004830152602482018690529151919092169163a9059cbb9160448083019260209291908290030181600087803b1580156148b357600080fd5b505af11580156148c7573d6000803e3d6000fd5b505050506040513d60208110156148dd57600080fd5b50505b80156134a55760018701546040805163a9059cbb60e01b81526001600160a01b038881166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561493e57600080fd5b505af1158015614952573d6000803e3d6000fd5b505050506040513d602081101561262657600080fd5b6005810154600090612785906127109061ffff1663ffffffff6150c416565b60408051630b97468760e31b8152600481018490528215156024820152905173__OutsourceDepositLogging_______________91635cba3438916044808301926000929190829003018186803b1580156149e157600080fd5b505af41580156149f5573d6000803e3d6000fd5b505050506000614a048361512e565b600f8401546040805163288ac18560e21b81526004810187905290519293506001600160a01b039091169173__DepositUtils__________________________9163a22b0614916024808301926000929190829003018186803b158015614a6a57600080fd5b505af4158015614a7e573d6000803e3d6000fd5b505050508373__DepositStates_________________________63e0dfa4b390916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015614ad357600080fd5b505af4158015614ae7573d6000803e3d6000fd5b505050506040513d6020811015614afd57600080fd5b50518015614b085750825b15614bfa578373__DepositStates_________________________63056256a890916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b158015614b5e57600080fd5b505af4158015614b72573d6000803e3d6000fd5b50614b8a92508691508390508463ffffffff61520216565b8373__OutsourceDepositLogging_______________6332e42f2d90916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b158015614bdb57600080fd5b505af4158015614bef573d6000803e3d6000fd5b5050505050506145e8565b6009840180546001600160a01b031916331790554260078501558215614c88578373__DepositStates_________________________63c28eab4090916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b158015614c6b57600080fd5b505af4158015614c7f573d6000803e3d6000fd5b50505050612434565b8373__DepositStates_________________________635dd33d9990916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b158015614cd957600080fd5b505af41580156145e1573d6000803e3d6000fd5b6002810154604080516331a9108f60e11b815230600482015290516000926001600160a01b031691636352211e916024808301926020929190829003018186803b158015614d3a57600080fd5b505afa1580156133ac573d6000803e3d6000fd5b600080614dd573__TBTCConstants_________________________63d565d1f16040518163ffffffff1660e01b815260040160206040518083038186803b158015614d9857600080fd5b505af4158015614dac573d6000803e3d6000fd5b505050506040513d6020811015614dc257600080fd5b505160168501549063ffffffff61500616565b905080421015614df757614def814263ffffffff61506716565b9150506133c7565b50600092915050565b600381015460408051634f558e7960e01b8152306004820152905160009283926001600160a01b0390911691634f558e7991602480820192602092909190829003018186803b158015614e5257600080fd5b505afa158015614e66573d6000803e3d6000fd5b505050506040513d6020811015614e7c57600080fd5b505115612785576003830154604080516331a9108f60e11b815230600482015290516001600160a01b0390921691636352211e91602480820192602092909190829003018186803b158015614ed057600080fd5b505afa15801561276a573d6000803e3d6000fd5b600481015460009061278590600160e81b900461ffff16614f0484614f5e565b9063ffffffff6150c416565b600080858015614f1d5750845b8015614f27575082155b905060008680614f345750855b80614f3c5750845b905060008115614f495788015b8215614f525788015b98975050505050505050565b600061278573__TBTCConstants_________________________63ae9eb1276040518163ffffffff1660e01b815260040160206040518083038186803b158015614fa757600080fd5b505af4158015614fbb573d6000803e3d6000fd5b505050506040513d6020811015614fd157600080fd5b50516004840154600160a01b900467ffffffffffffffff169061524e565b60008115614fff57506000612785565b5090919050565b600082820183811015615060576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6000828211156150be576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600080821161511a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b600082848161512557fe5b04949350505050565b600a810154604080516307acd5cb60e01b8152905160009247926001600160a01b039091169182916307acd5cb916004808301928892919082900301818387803b15801561517b57600080fd5b505af115801561518f573d6000803e3d6000fd5b5047925050508281116151e9576040805162461bcd60e51b815260206004820152601d60248201527f4e6f2066756e64732072656365697665642c20756e6578706563746564000000604482015290519081900360640190fd5b6151f9818463ffffffff61506716565b95945050505050565b6001600160a01b038216600090815260188401602052604090205461522d908263ffffffff61500616565b6001600160a01b039092166000908152601890930160205250604090912055565b60008261525d57506000612785565b8282028284828161526a57fe5b04146150605760405162461bcd60e51b815260040180806020018281038252602181526020018061547b6021913960400191505060405180910390fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106152e857805160ff1916838001178555615315565b82800160010185558215615315579182015b828111156153155782518255916020019190600101906152fa565b50615321929150615325565b5090565b6121e691905b80821115615321576000815560010161532b56fe4465706f73697420686173206e6f7420796574206265656e2066756e64656420616e6420686173206e6f20617661696c61626c652066756e64696e6720696e666f466163746f72792063616e6e6f7420626520746865207a65726f20616464726573732e4661696c656420746f2073656e6420776974686472617761626c6520616d6f756e7420746f2073656e6465724465706f73697420636f6e7472616374207761732063616c6c6564207769746820756e6b6e6f776e2066756e6374696f6e2073656c6563746f722e4f6e6c792054445420686f6c6465722063616e20726571756573742066756e6465722061626f72744f6e6c792054445420686f6c6465722063616e2072656465656d20756e6c657373206465706f7369742069732061742d7465726d206f7220696e20434f5552544553595f43414c4c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f6e6c79207468652076656e64696e67206d616368696e652063616e2063616c6c207472616e73666572416e6452657175657374526564656d7074696f6e466163746f72792063616e206f6e6c7920626520696e697469616c697a6564206f6e63652e4465706f73697420686173206e6f2066756e64732063757272656e746c792061742061756374696f6ea265627a7a72315820da796b3027f128b724141097810742bd339b38e43e986b3e8b97bcca3334084b64736f6c63430005110032466163746f72792063616e6e6f7420626520746865207a65726f20616464726573732e466163746f72792063616e206f6e6c7920626520696e697469616c697a6564206f6e63652e",
  "deployedBytecode": "0x6080604052600436106104885760003560e01c806391d165e311610255578063c4572eb911610144578063dba49153116100c1578063f21cc71f11610085578063f21cc71f14611df5578063f603f2eb14611e1f578063f97a02fa14611e4b578063fb7c592a14611e74578063fb90da6814611f41578063fc1e6db214611f5657610488565b8063dba4915314611bc2578063dd52890b14611c71578063dd9e995a1461142f578063df27eb8914611db6578063ea3db25014611de057610488565b8063d459c41611610108578063d459c416146115d0578063d5eef9711461183b578063d826f88f14611907578063d8d023301461191c578063d9f74b0e1461194f57610488565b8063c4572eb91461152b578063c4d66de814611540578063c6254dba14611573578063c82ba9dd14611588578063d02fd9581461159d57610488565b8063a87d00b8116101d2578063b6aef06f11610196578063b6aef06f14611489578063b7a34a731461149e578063ba346839146114c8578063bcb65607146114dd578063c4159559146114f257610488565b8063a87d00b814611100578063abb3bb73146113fc578063b1474a971461142f578063b4bd2e7a1461145f578063b6104f961461147457610488565b806396aab3111161021957806396aab31114610f635780639894d73414610f78578063994aa93114610fb4578063a2af041914611076578063a81e63f7146110a957610488565b806391d165e314610ecc57806393c43bd014610ee1578063946626f414610f0f578063946fbf4c14610f39578063951303f514610f4e57610488565b806342dbc60a1161037c57806373059199116102f95780637be4227f116102bd5780637be4227f14610cc457806384eb69aa14610d7f57806385df153d14610e4657806387a90d8014610e5b5780638a7e646414610e7057806390a2f68714610e9a57610488565b80637305919914610be8578063735bd9d614610bfd57806374f1c69414610c3057806376ef551014610c815780637a26f05a14610c9657610488565b806360e98d591161034057806360e98d5914610a9757806368b2bb3514610aac5780636c3b011414610b785780636e4668be14610ba95780636ede101114610bbe57610488565b806342dbc60a146109cd578063436fd9e6146109fd5780634cb24d4114610a275780634f706e4414610a5557806356de96db14610a6a57610488565b8063243155371161040a5780632b0bc981116103ce5780632b0bc9811461078c5780632c735daa146107a15780632d099442146107b65780633322f9a01461088257806335bc0ebe146109b857610488565b806324315537146106e3578063245dc4c51461073857806324600fc31461074d578063259b1ea314610762578063287b32e51461077757610488565b80630c3f6acf116104515780630c3f6acf1461062e5780630d5889f4146106435780631209114a1461066f57806313f654df146106a35780631865c57d146106b857610488565b806249ce75146104c7578063022d44b71461057857806303c73ded146105ab578063058d3703146105d95780630b3728c314610600575b36156104c55760405162461bcd60e51b815260040180806020018281038252603b8152602001806153d0603b913960400191505060405180910390fd5b005b3480156104d357600080fd5b506104c5600480360360208110156104ea57600080fd5b810190602081018135600160201b81111561050457600080fd5b82018360208201111561051657600080fd5b803590602001918460018302840111600160201b8311171561053757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611f86945050505050565b34801561058457600080fd5b506104c56004803603602081101561059b57600080fd5b50356001600160a01b0316612121565b3480156105b757600080fd5b506104c5600480360360208110156105ce57600080fd5b503561ffff16612143565b3480156105e557600080fd5b506105ee612163565b60408051918252519081900360200190f35b34801561060c57600080fd5b506104c56004803603602081101561062357600080fd5b503561ffff166121e9565b34801561063a57600080fd5b506105ee612201565b34801561064f57600080fd5b50610658612211565b6040805161ffff9092168252519081900360200190f35b34801561067b57600080fd5b506104c56004803603602081101561069257600080fd5b503567ffffffffffffffff16612222565b3480156106af57600080fd5b506105ee612250565b3480156106c457600080fd5b506106cd612201565b6040805160ff9092168252519081900360200190f35b3480156106ef57600080fd5b506104c5600480360360a081101561070657600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101358216916080909101351661235d565b34801561074457600080fd5b506105ee6123bc565b34801561075957600080fd5b506104c56123c2565b34801561076e57600080fd5b506104c56123ce565b34801561078357600080fd5b506104c561243a565b34801561079857600080fd5b506104c561248c565b3480156107ad57600080fd5b506104c56124de565b3480156107c257600080fd5b506104c5600480360360a08110156107d957600080fd5b60ff8235169160208101359160408201359160608101359181019060a081016080820135600160201b81111561080e57600080fd5b82018360208201111561082057600080fd5b803590602001918460018302840111600160201b8311171561084157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612530945050505050565b34801561088e57600080fd5b506105ee600480360360408110156108a557600080fd5b810190602081018135600160201b8111156108bf57600080fd5b8201836020820111156108d157600080fd5b803590602001918460018302840111600160201b831117156108f257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561094457600080fd5b82018360208201111561095657600080fd5b803590602001918460018302840111600160201b8311171561097757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612631945050505050565b3480156109c457600080fd5b506105ee61278b565b3480156109d957600080fd5b506104c5600480360360408110156109f057600080fd5b50803590602001356127df565b348015610a0957600080fd5b506104c560048036036020811015610a2057600080fd5b50356127ea565b348015610a3357600080fd5b50610a3c6127fe565b6040805192835260208301919091528051918290030190f35b348015610a6157600080fd5b506104c5612808565b348015610a7657600080fd5b506104c560048036036020811015610a8d57600080fd5b503560ff1661285a565b348015610aa357600080fd5b506105ee61287a565b348015610ab857600080fd5b506104c5600480360360a0811015610acf57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b811115610af957600080fd5b820183602082011115610b0b57600080fd5b803590602001918460018302840111600160201b83111715610b2c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550508235935050506020810135906040013561288b565b348015610b8457600080fd5b50610b8d6128ca565b604080516001600160a01b039092168252519081900360200190f35b348015610bb557600080fd5b506105ee6128d9565b348015610bca57600080fd5b506104c560048036036020811015610be157600080fd5b503561292d565b348015610bf457600080fd5b506105ee612932565b348015610c0957600080fd5b506104c560048036036020811015610c2057600080fd5b50356001600160a01b0316612938565b348015610c3c57600080fd5b50610c6360048036036020811015610c5357600080fd5b50356001600160a01b031661295a565b60408051938452602084019290925282820152519081900360600190f35b348015610c8d57600080fd5b5061065861297d565b348015610ca257600080fd5b506104c560048036036020811015610cb957600080fd5b503561ffff16612987565b348015610cd057600080fd5b50610cd96129a9565b60405180866001600160a01b03166001600160a01b0316815260200180602001858152602001848152602001838152602001828103825286818151815260200191508051906020019080838360005b83811015610d40578181015183820152602001610d28565b50505050905090810190601f168015610d6d5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b348015610d8b57600080fd5b506104c560048036036060811015610da257600080fd5b6001600160c01b031982351691602081013591810190606081016040820135600160201b811115610dd257600080fd5b820183602082011115610de457600080fd5b803590602001918460018302840111600160201b83111715610e0557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612a73945050505050565b348015610e5257600080fd5b50610658612aa2565b348015610e6757600080fd5b506105ee612ab2565b348015610e7c57600080fd5b506104c560048036036020811015610e9357600080fd5b5035612bc0565b348015610ea657600080fd5b50610eaf612bd1565b6040805167ffffffffffffffff9092168252519081900360200190f35b348015610ed857600080fd5b506104c5612be8565b348015610eed57600080fd5b506104c560048036036020811015610f0457600080fd5b503561ffff16612c3a565b348015610f1b57600080fd5b506104c560048036036020811015610f3257600080fd5b5035612c5d565b348015610f4557600080fd5b506105ee612c62565b348015610f5a57600080fd5b506105ee612cb6565b348015610f6f57600080fd5b506104c5612cc7565b348015610f8457600080fd5b506104c560048036036040811015610f9b57600080fd5b506001600160c01b031981358116916020013516612d19565b348015610fc057600080fd5b506104c560048036036040811015610fd757600080fd5b6001600160c01b03198235169190810190604081016020820135600160201b81111561100257600080fd5b82018360208201111561101457600080fd5b803590602001918460018302840111600160201b8311171561103557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612d9f945050505050565b34801561108257600080fd5b506104c56004803603602081101561109957600080fd5b50356001600160a01b0316612e71565b6104c5600480360360c08110156110bf57600080fd5b5080356001600160a01b03908116916020810135821691604082013581169160608101358216916080820135169060a0013567ffffffffffffffff16612e93565b34801561110c57600080fd5b50611373600480360361010081101561112457600080fd5b6001600160e01b03198235169190810190604081016020820135600160201b81111561114f57600080fd5b82018360208201111561116157600080fd5b803590602001918460018302840111600160201b8311171561118257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156111d457600080fd5b8201836020820111156111e657600080fd5b803590602001918460018302840111600160201b8311171561120757600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092956001600160e01b03198535169560ff60208701351695919450925060608101915060400135600160201b81111561127257600080fd5b82018360208201111561128457600080fd5b803590602001918460018302840111600160201b831117156112a557600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092958435959094909350604081019250602001359050600160201b8111156112ff57600080fd5b82018360208201111561131157600080fd5b803590602001918460018302840111600160201b8311171561133257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612f6b945050505050565b604080516001600160c01b03198416815260208082018381528451938301939093528351919291606084019185019080838360005b838110156113c05781810151838201526020016113a8565b50505050905090810190601f1680156113ed5780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b34801561140857600080fd5b506104c56004803603602081101561141f57600080fd5b50356001600160a01b03166132b1565b34801561143b57600080fd5b506104c56004803603604081101561145257600080fd5b50803590602001356132d3565b34801561146b57600080fd5b506104c56132de565b34801561148057600080fd5b506105ee613330565b34801561149557600080fd5b506105ee613336565b3480156114aa57600080fd5b506105ee600480360360208110156114c157600080fd5b503561333c565b3480156114d457600080fd5b506104c56133cc565b3480156114e957600080fd5b506104c561341e565b3480156114fe57600080fd5b506104c56004803603606081101561151557600080fd5b5060ff8135169060208101359060400135613428565b34801561153757600080fd5b506105ee6134ae565b34801561154c57600080fd5b506104c56004803603602081101561156357600080fd5b50356001600160a01b03166134ba565b34801561157f57600080fd5b50610a3c613570565b34801561159457600080fd5b506105ee61357a565b3480156115a957600080fd5b506105ee600480360360208110156115c057600080fd5b50356001600160a01b0316613580565b3480156115dc57600080fd5b506104c5600480360360e08110156115f357600080fd5b6001600160e01b03198235169190810190604081016020820135600160201b81111561161e57600080fd5b82018360208201111561163057600080fd5b803590602001918460018302840111600160201b8311171561165157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156116a357600080fd5b8201836020820111156116b557600080fd5b803590602001918460018302840111600160201b831117156116d657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092956001600160e01b0319853516959094909350604081019250602001359050600160201b81111561173a57600080fd5b82018360208201111561174c57600080fd5b803590602001918460018302840111600160201b8311171561176d57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092958435959094909350604081019250602001359050600160201b8111156117c757600080fd5b8201836020820111156117d957600080fd5b803590602001918460018302840111600160201b831117156117fa57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061359f945050505050565b34801561184757600080fd5b506104c5600480360360a081101561185e57600080fd5b60ff8235169160208101359160408201359160608101359181019060a081016080820135600160201b81111561189357600080fd5b8201836020820111156118a557600080fd5b803590602001918460018302840111600160201b831117156118c657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506137e1945050505050565b34801561191357600080fd5b506104c5613873565b34801561192857600080fd5b506105ee6004803603602081101561193f57600080fd5b50356001600160a01b03166138ec565b34801561195b57600080fd5b506104c5600480360361010081101561197357600080fd5b6001600160e01b03198235169190810190604081016020820135600160201b81111561199e57600080fd5b8201836020820111156119b057600080fd5b803590602001918460018302840111600160201b831117156119d157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115611a2357600080fd5b820183602082011115611a3557600080fd5b803590602001918460018302840111600160201b83111715611a5657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092956001600160e01b03198535169560ff60208701351695919450925060608101915060400135600160201b811115611ac157600080fd5b820183602082011115611ad357600080fd5b803590602001918460018302840111600160201b83111715611af457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092958435959094909350604081019250602001359050600160201b811115611b4e57600080fd5b820183602082011115611b6057600080fd5b803590602001918460018302840111600160201b83111715611b8157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550613901945050505050565b348015611bce57600080fd5b50611bd7613b51565b60405180846001600160c01b0319166001600160c01b031916815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611c34578181015183820152602001611c1c565b50505050905090810190601f168015611c615780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b348015611c7d57600080fd5b506105ee60048036036080811015611c9457600080fd5b81359190810190604081016020820135600160201b811115611cb557600080fd5b820183602082011115611cc757600080fd5b803590602001918460018302840111600160201b83111715611ce857600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092958435959094909350604081019250602001359050600160201b811115611d4257600080fd5b820183602082011115611d5457600080fd5b803590602001918460018302840111600160201b83111715611d7557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550613cb7945050505050565b348015611dc257600080fd5b506104c560048036036020811015611dd957600080fd5b5035613e0c565b348015611dec57600080fd5b506104c5613e11565b348015611e0157600080fd5b506104c560048036036020811015611e1857600080fd5b5035613e63565b348015611e2b57600080fd5b506104c560048036036020811015611e4257600080fd5b50351515613e68565b348015611e5757600080fd5b50611e60613e79565b604080519115158252519081900360200190f35b348015611e8057600080fd5b506104c560048036036060811015611e9757600080fd5b6001600160c01b03198235169190810190604081016020820135600160201b811115611ec257600080fd5b820183602082011115611ed457600080fd5b803590602001918460018302840111600160201b83111715611ef557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550505090356001600160a01b03169150613ecd9050565b348015611f4d57600080fd5b50610b8d613ff4565b348015611f6257600080fd5b506104c560048036036040811015611f7957600080fd5b5080359060200135614003565b6040805163ad91ce1f60e01b8152600160048201529051339173__DepositUtils__________________________9163ad91ce1f91602480820192602092909190829003018186803b158015611fdb57600080fd5b505af4158015611fef573d6000803e3d6000fd5b505050506040513d602081101561200557600080fd5b50516001600160a01b03161461204c5760405162461bcd60e51b815260040180806020018281038252602881526020018061540b6028913960400191505060405180910390fd5b60408051635f3c5d8960e01b81526001600482018181526024830193845284516044840152845173__DepositFunding________________________94635f3c5d8994879392606490910190602085019080838360005b838110156120bb5781810151838201526020016120a3565b50505050905090810190601f1680156120e85780820380516001836020036101000a031916815260200191505b50935050505060006040518083038186803b15801561210657600080fd5b505af415801561211a573d6000803e3d6000fd5b5050505050565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6006805461ffff909216620100000263ffff000019909216919091179055565b6000600173__DepositUtils__________________________63a880784890916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156121b757600080fd5b505af41580156121cb573d6000803e3d6000fd5b505050506040513d60208110156121e157600080fd5b505190505b90565b6006805461ffff191661ffff92909216919091179055565b600554600160e01b900460ff1690565b600654600160201b900461ffff1690565b6005805467ffffffffffffffff909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b6000600173__DepositStates_________________________63fb0611ff90916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156122a457600080fd5b505af41580156122b8573d6000803e3d6000fd5b505050506040513d60208110156122ce57600080fd5b505161230b5760405162461bcd60e51b81526004018080602001828103825260298152602001806154ff6029913960400191505060405180910390fd5b604080516350ef3aa160e01b815260016004820152905173__DepositUtils__________________________916350ef3aa1916024808301926020929190829003018186803b1580156121b757600080fd5b600180546001600160a01b03199081166001600160a01b03978816179091556002805482169587169590951790945560038054851693861693909317909255600480548416918516919091179055600580549092169216919091179055565b600d5490565b6123cc6001614015565b565b6040805163426e16c160e01b815260016004820152905173__DepositFunding________________________9163426e16c1916024808301926000929190829003018186803b15801561242057600080fd5b505af4158015612434573d6000803e3d6000fd5b50505050565b6040805163077aceb960e31b815260016004820152905173__DepositLiquidation____________________91633bd675c8916024808301926000929190829003018186803b15801561242057600080fd5b6040805163439b7be160e11b815260016004820152905173__DepositRedemption_____________________91638736f7c2916024808301926000929190829003018186803b15801561242057600080fd5b60408051631754228360e11b815260016004820152905173__DepositLiquidation____________________91632ea84506916024808301926000929190829003018186803b15801561242057600080fd5b600173__DepositFunding________________________63fb12d9df909187878787876040518763ffffffff1660e01b8152600401808781526020018660ff1660ff16815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156125c35781810151838201526020016125ab565b50505050905090810190601f1680156125f05780820380516001836020036101000a031916815260200191505b5097505050505050505060006040518083038186803b15801561261257600080fd5b505af4158015612626573d6000803e3d6000fd5b505050505050505050565b6000600173__DepositRedemption_____________________63936b9ac5909185856040518463ffffffff1660e01b8152600401808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156126a9578181015183820152602001612691565b50505050905090810190601f1680156126d65780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156127095781810151838201526020016126f1565b50505050905090810190601f1680156127365780820380516001836020036101000a031916815260200191505b509550505050505060206040518083038186803b15801561275657600080fd5b505af415801561276a573d6000803e3d6000fd5b505050506040513d602081101561278057600080fd5b505190505b92915050565b6000600173__DepositUtils__________________________6391f88c8590916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156121b757600080fd5b600891909155600955565b6127fb60018263ffffffff61423216565b50565b6008546009549091565b604080516361f036d360e01b815260016004820152905173__DepositFunding________________________916361f036d3916024808301926000929190829003018186803b15801561242057600080fd5b6005805460ff909216600160e01b0260ff60e01b19909216919091179055565b600554600160e81b900461ffff1690565b601080546001600160a01b0319166001600160a01b03871617905583516128b99060119060208701906152a7565b506012929092556014556015555050565b600b546001600160a01b031690565b6000600173__DepositLiquidation____________________63e86e97b690916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156121b757600080fd5b601355565b60145490565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b600080806129706001858363ffffffff6142af16565b9250925092509193909250565b60065461ffff1690565b6005805461ffff909216600160e81b0261ffff60e81b19909216919091179055565b6010546012546014546015546011805460408051602060026101006001861615026000190190941693909304601f81018490048402820184019092528181526000976060978997889788976001600160a01b039094169693959294919390928691830182828015612a5b5780601f10612a3057610100808354040283529160200191612a5b565b820191906000526020600020905b815481529060010190602001808311612a3e57829003601f168201915b50505050509350945094509450945094509091929394565b6016805467ffffffffffffffff191660c085901c179055601782905580516124349060189060208401906152a7565b60065462010000900461ffff1690565b6000600173__DepositStates_________________________6348312fa390916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612b0657600080fd5b505af4158015612b1a573d6000803e3d6000fd5b505050506040513d6020811015612b3057600080fd5b505115612b6e5760405162461bcd60e51b81526004018080602001828103825260418152602001806153406041913960600191505060405180910390fd5b60408051631ec664f560e21b815260016004820152905173__DepositUtils__________________________91637b1993d4916024808301926020929190829003018186803b1580156121b757600080fd5b6127fb60018263ffffffff61452616565b600554600160a01b900467ffffffffffffffff1690565b60408051634e40547560e11b815260016004820152905173__DepositLiquidation____________________91639c80a8ea916024808301926000929190829003018186803b15801561242057600080fd5b6006805461ffff909216600160201b0265ffff0000000019909216919091179055565b600d55565b6000600173__DepositUtils__________________________637949c2d290916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156121b757600080fd5b6000612cc260016145ec565b905090565b6040805163a221542160e01b815260016004820152905173__DepositLiquidation____________________9163a2215421916024808301926000929190829003018186803b15801561242057600080fd5b60408051632d0c21bf60e01b8152600160048201526001600160c01b0319808516602483015283166044820152905173__DepositRedemption_____________________91632d0c21bf916064808301926000929190829003018186803b158015612d8357600080fd5b505af4158015612d97573d6000803e3d6000fd5b505050505050565b604051632cac94ef60e01b81526001600482018181526001600160c01b03198516602484015260606044840190815284516064850152845173__DepositRedemption_____________________94632cac94ef94938893889391929091608490910190602085019080838360005b83811015612e25578181015183820152602001612e0d565b50505050905090810190601f168015612e525780820380516001836020036101000a031916815260200191505b5094505050505060006040518083038186803b158015612d8357600080fd5b601080546001600160a01b0319166001600160a01b0392909216919091179055565b600180546001600160a01b03199081166001600160a01b03898116919091178355600280548316898316179055600380548316888316179055600480548316878316178155600580549093169186169190911790915560408051632851e9dd60e01b81529182019290925267ffffffffffffffff83166024820152905173__DepositFunding________________________91632851e9dd916044808301926000929190829003018186803b158015612f4b57600080fd5b505af4158015612f5f573d6000803e3d6000fd5b50505050505050505050565b60006060600173__DepositUtils__________________________63e92d811990918c8c8c8c8c8c8c8c6040518a63ffffffff1660e01b8152600401808a8152602001896001600160e01b0319166001600160e01b03191681526020018060200180602001886001600160e01b0319166001600160e01b03191681526020018760ff1660ff168152602001806020018681526020018060200185810385528c818151815260200191508051906020019080838360005b83811015613039578181015183820152602001613021565b50505050905090810190601f1680156130665780820380516001836020036101000a031916815260200191505b5085810384528b5181528b516020918201918d019080838360005b83811015613099578181015183820152602001613081565b50505050905090810190601f1680156130c65780820380516001836020036101000a031916815260200191505b5085810383528851815288516020918201918a019080838360005b838110156130f95781810151838201526020016130e1565b50505050905090810190601f1680156131265780820380516001836020036101000a031916815260200191505b50858103825286518152865160209182019188019080838360005b83811015613159578181015183820152602001613141565b50505050905090810190601f1680156131865780820380516001836020036101000a031916815260200191505b509d505050505050505050505050505060006040518083038186803b1580156131ae57600080fd5b505af41580156131c2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160409081528110156131eb57600080fd5b815160208301805160405192949293830192919084600160201b82111561321157600080fd5b90830190602082018581111561322657600080fd5b8251600160201b81118282018810171561323f57600080fd5b82525081516020918201929091019080838360005b8381101561326c578181015183820152602001613254565b50505050905090810190601f1680156132995780820380516001836020036101000a031916815260200191505b50604052505050915091509850989650505050505050565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b600e91909155600f55565b604080516324e8e19960e21b815260016004820152905173__DepositLiquidation____________________916393a38664916024808301926000929190829003018186803b15801561242057600080fd5b60085490565b60135490565b6000600173__DepositUtils__________________________631129a8a99091846040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b15801561339857600080fd5b505af41580156133ac573d6000803e3d6000fd5b505050506040513d60208110156133c257600080fd5b505190505b919050565b604080516304bfa27760e01b815260016004820152905173__DepositRedemption_____________________916304bfa277916024808301926000929190829003018186803b15801561242057600080fd5b6123cc6001614603565b60408051631e3435d560e11b81526001600482015260ff851660248201526044810184905260648101839052905173__DepositRedemption_____________________91633c686baa916084808301926000929190829003018186803b15801561349157600080fd5b505af41580156134a5573d6000803e3d6000fd5b50505050505050565b6000612cc26001614968565b6001600160a01b0381166134ff5760405162461bcd60e51b81526004018080602001828103825260238152602001806153816023913960400191505060405180910390fd5b60005460ff16156135415760405162461bcd60e51b81526004018080602001828103825260258152602001806154da6025913960400191505060405180910390fd5b6000805460ff196001600160a01b0390931661010002610100600160a81b031990911617919091166001179055565b600e54600f549091565b600c5490565b6000806135956001848363ffffffff6142af16565b5090949350505050565b604051636c7e2b9d60e01b81526001600482018181526001600160e01b0319808b1660248501528716608484015260c48301859052610100604484019081528951610104850152895173__DepositRedemption_____________________94636c7e2b9d94938d938d938d938d938d938d938d93606481019160a482019160e48101916101249091019060208d019080838360005b8381101561364c578181015183820152602001613634565b50505050905090810190601f1680156136795780820380516001836020036101000a031916815260200191505b5085810384528a5181528a516020918201918c019080838360005b838110156136ac578181015183820152602001613694565b50505050905090810190601f1680156136d95780820380516001836020036101000a031916815260200191505b5085810383528851815288516020918201918a019080838360005b8381101561370c5781810151838201526020016136f4565b50505050905090810190601f1680156137395780820380516001836020036101000a031916815260200191505b50858103825286518152865160209182019188019080838360005b8381101561376c578181015183820152602001613754565b50505050905090810190601f1680156137995780820380516001836020036101000a031916815260200191505b509c5050505050505050505050505060006040518083038186803b1580156137c057600080fd5b505af41580156137d4573d6000803e3d6000fd5b5050505050505050505050565b600173__DepositLiquidation____________________634941676c909187878787876040518763ffffffff1660e01b8152600401808781526020018660ff1660ff1681526020018581526020018481526020018381526020018060200182810382528381815181526020019150805190602001908083836000838110156125c35781810151838201526020016125ab565b61387d600061285a565b6138886000806127df565b604080516020810190915260008082526138a49181808061288b565b6138c3600060c01b600060405180602001604052806000815250612a73565b6138cd6000612121565b6138d76000613e0c565b6138e16000612c5d565b6123cc6000806132d3565b6000806135956001848163ffffffff6142af16565b60405163d745519360e01b81526001600482018181526001600160e01b0319808c1660248501528816608484015260ff871660a484015260e48301859052610120604484019081528a516101248501528a5173__DepositFunding________________________9463d745519394938e938e938e938e938e938e938e938e939291606482019160c4810191610104820191610144019060208e019080838360005b838110156139ba5781810151838201526020016139a2565b50505050905090810190601f1680156139e75780820380516001836020036101000a031916815260200191505b5085810384528b5181528b516020918201918d019080838360005b83811015613a1a578181015183820152602001613a02565b50505050905090810190601f168015613a475780820380516001836020036101000a031916815260200191505b5085810383528851815288516020918201918a019080838360005b83811015613a7a578181015183820152602001613a62565b50505050905090810190601f168015613aa75780820380516001836020036101000a031916815260200191505b50858103825286518152865160209182019188019080838360005b83811015613ada578181015183820152602001613ac2565b50505050905090810190601f168015613b075780820380516001836020036101000a031916815260200191505b509d505050505050505050505050505060006040518083038186803b158015613b2f57600080fd5b505af4158015613b43573d6000803e3d6000fd5b505050505050505050505050565b6000806060600173__DepositStates_________________________6348312fa390916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015613ba857600080fd5b505af4158015613bbc573d6000803e3d6000fd5b505050506040513d6020811015613bd257600080fd5b505115613c105760405162461bcd60e51b81526004018080602001828103825260418152602001806153406041913960600191505060405180910390fd5b60165460175460188054604080516020601f6002600019600187161561010002019095169490940493840181900481028201810190925282815260c09590951b94918391830182828015613ca55780601f10613c7a57610100808354040283529160200191613ca5565b820191906000526020600020905b815481529060010190602001808311613c8857829003601f168201915b50505050509050925092509250909192565b6000600173__DepositUtils__________________________63f846f3719091878787876040518663ffffffff1660e01b8152600401808681526020018581526020018060200184815260200180602001838103835286818151815260200191508051906020019080838360005b83811015613d3d578181015183820152602001613d25565b50505050905090810190601f168015613d6a5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015613d9d578181015183820152602001613d85565b50505050905090810190601f168015613dca5780820380516001836020036101000a031916815260200191505b5097505050505050505060006040518083038186803b158015613dec57600080fd5b505af4158015613e00573d6000803e3d6000fd5b50505050949350505050565b600c55565b60408051632ec8740960e21b815260016004820152905173__DepositFunding________________________9163bb21d024916024808301926000929190829003018186803b15801561242057600080fd5b600755565b6127fb60018263ffffffff61498716565b6000600173__DepositStates_________________________630f2c635590916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156121b757600080fd5b6005546001600160a01b03163314613f165760405162461bcd60e51b815260040180806020018281038252603e81526020018061549c603e913960400191505060405180910390fd5b604051630d806ee760e41b81526001600482018181526001600160c01b0319861660248401526001600160a01b038416606484015260806044840190815285516084850152855173__DepositRedemption_____________________9463d806ee70949389938993899360a40190602086019080838360005b83811015613fa7578181015183820152602001613f8f565b50505050905090810190601f168015613fd45780820380516001836020036101000a031916815260200191505b509550505050505060006040518083038186803b15801561349157600080fd5b600a546001600160a01b031690565b6000918252601a602052604090912055565b336000908152601882016020908152604091829020548251635a33257560e01b8152600481018590529251909273__DepositStates_________________________92635a33257592602480840193829003018186803b15801561407857600080fd5b505af415801561408c573d6000803e3d6000fd5b505050506040513d60208110156140a257600080fd5b50516140f5576040805162461bcd60e51b815260206004820152601b60248201527f436f6e7472616374206e6f7420796574207465726d696e617465640000000000604482015290519081900360640190fd5b60008111614140576040805162461bcd60e51b81526020600482015260136024820152724e6f7468696e6720746f20776974686472617760681b604482015290519081900360640190fd5b80471015614195576040805162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420636f6e74726163742062616c616e6365000000604482015290519081900360640190fd5b3360008181526018840160205260408082208290555190919083908381818185875af1925050503d80600081146141e8576040519150601f19603f3d011682016040523d82523d6000602084013e6141ed565b606091505b505090508061422d5760405162461bcd60e51b815260040180806020018281038252602c8152602001806153a4602c913960400191505060405180910390fd5b505050565b600a8201546040805163799cd33360e01b81526004810184905290516001600160a01b039092169163799cd3339160248082019260009290919082900301818387803b15801561428157600080fd5b505af1158015614295573d6000803e3d6000fd5b505050600091825250601990910160205260409020429055565b60008060008084806142da5750856001600160a01b03166142cf88614ced565b6001600160a01b0316145b90506000806142e889614d4e565b11801561436f57508773__DepositStates_________________________63761275bf90916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561434157600080fd5b505af4158015614355573d6000803e3d6000fd5b505050506040513d602081101561436b57600080fd5b5051155b9050818061437b575080155b6143b65760405162461bcd60e51b81526004018080602001828103825260488152602001806154336048913960600191505060405180910390fd5b6000806143c28a614e00565b6001600160a01b0316141590506000886001600160a01b03166143e48b614e00565b6001600160a01b031614905060006143fb8b614ee4565b9050600061440c8286868987614f10565b90506144308161442461441e8f614f5e565b89614fef565b9063ffffffff61500616565b60018d0154604080516370a0823160e01b81523060048201529051929b506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561448357600080fd5b505afa158015614497573d6000803e3d6000fd5b505050506040513d60208110156144ad57600080fd5b50519050808a11156144d0576144c98a8263ffffffff61506716565b99506144d5565b600099505b8580156144df5750845b80156144e9575083155b156144f2578297505b614514886145088581858f63ffffffff61500616565b9063ffffffff61506716565b98505050505050505093509350939050565b8047101561457b576040805162461bcd60e51b815260206004820152601860248201527f4e6f7420656e6f7567682066756e647320746f2073656e640000000000000000604482015290519081900360640190fd5b80156145e857600a82015460408051631bb457e560e21b815290516001600160a01b03909216918291636ed15f9491859160048082019260009290919082900301818588803b1580156145cd57600080fd5b505af11580156145e1573d6000803e3d6000fd5b5050505050505b5050565b336000908152601882016020526040902054919050565b60008173__DepositUtils__________________________63ad91ce1f90916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561465657600080fd5b505af415801561466a573d6000803e3d6000fd5b505050506040513d602081101561468057600080fd5b505160408051631bf7ad3160e01b815260048101859052905191925060009173__DepositUtils__________________________91631bf7ad31916024808301926020929190829003018186803b1580156146da57600080fd5b505af41580156146ee573d6000803e3d6000fd5b505050506040513d602081101561470457600080fd5b50516004840154600f8501549192506001600160a01b039081169160009182918291614739918991168363ffffffff6142af16565b9194509250905082156147cf576001870154604080516323b872dd60e01b81523360048201523060248201526044810186905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b1580156147a257600080fd5b505af11580156147b6573d6000803e3d6000fd5b505050506040513d60208110156147cc57600080fd5b50505b81156148e057836001600160a01b0316866001600160a01b0316141561485b57600187015460408051630852cd8d60e31b81526004810185905290516001600160a01b03909216916342966c689160248082019260009290919082900301818387803b15801561483e57600080fd5b505af1158015614852573d6000803e3d6000fd5b505050506148e0565b60018701546040805163a9059cbb60e01b81526001600160a01b038981166004830152602482018690529151919092169163a9059cbb9160448083019260209291908290030181600087803b1580156148b357600080fd5b505af11580156148c7573d6000803e3d6000fd5b505050506040513d60208110156148dd57600080fd5b50505b80156134a55760018701546040805163a9059cbb60e01b81526001600160a01b038881166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561493e57600080fd5b505af1158015614952573d6000803e3d6000fd5b505050506040513d602081101561262657600080fd5b6005810154600090612785906127109061ffff1663ffffffff6150c416565b60408051630b97468760e31b8152600481018490528215156024820152905173__OutsourceDepositLogging_______________91635cba3438916044808301926000929190829003018186803b1580156149e157600080fd5b505af41580156149f5573d6000803e3d6000fd5b505050506000614a048361512e565b600f8401546040805163288ac18560e21b81526004810187905290519293506001600160a01b039091169173__DepositUtils__________________________9163a22b0614916024808301926000929190829003018186803b158015614a6a57600080fd5b505af4158015614a7e573d6000803e3d6000fd5b505050508373__DepositStates_________________________63e0dfa4b390916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015614ad357600080fd5b505af4158015614ae7573d6000803e3d6000fd5b505050506040513d6020811015614afd57600080fd5b50518015614b085750825b15614bfa578373__DepositStates_________________________63056256a890916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b158015614b5e57600080fd5b505af4158015614b72573d6000803e3d6000fd5b50614b8a92508691508390508463ffffffff61520216565b8373__OutsourceDepositLogging_______________6332e42f2d90916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b158015614bdb57600080fd5b505af4158015614bef573d6000803e3d6000fd5b5050505050506145e8565b6009840180546001600160a01b031916331790554260078501558215614c88578373__DepositStates_________________________63c28eab4090916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b158015614c6b57600080fd5b505af4158015614c7f573d6000803e3d6000fd5b50505050612434565b8373__DepositStates_________________________635dd33d9990916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b158015614cd957600080fd5b505af41580156145e1573d6000803e3d6000fd5b6002810154604080516331a9108f60e11b815230600482015290516000926001600160a01b031691636352211e916024808301926020929190829003018186803b158015614d3a57600080fd5b505afa1580156133ac573d6000803e3d6000fd5b600080614dd573__TBTCConstants_________________________63d565d1f16040518163ffffffff1660e01b815260040160206040518083038186803b158015614d9857600080fd5b505af4158015614dac573d6000803e3d6000fd5b505050506040513d6020811015614dc257600080fd5b505160168501549063ffffffff61500616565b905080421015614df757614def814263ffffffff61506716565b9150506133c7565b50600092915050565b600381015460408051634f558e7960e01b8152306004820152905160009283926001600160a01b0390911691634f558e7991602480820192602092909190829003018186803b158015614e5257600080fd5b505afa158015614e66573d6000803e3d6000fd5b505050506040513d6020811015614e7c57600080fd5b505115612785576003830154604080516331a9108f60e11b815230600482015290516001600160a01b0390921691636352211e91602480820192602092909190829003018186803b158015614ed057600080fd5b505afa15801561276a573d6000803e3d6000fd5b600481015460009061278590600160e81b900461ffff16614f0484614f5e565b9063ffffffff6150c416565b600080858015614f1d5750845b8015614f27575082155b905060008680614f345750855b80614f3c5750845b905060008115614f495788015b8215614f525788015b98975050505050505050565b600061278573__TBTCConstants_________________________63ae9eb1276040518163ffffffff1660e01b815260040160206040518083038186803b158015614fa757600080fd5b505af4158015614fbb573d6000803e3d6000fd5b505050506040513d6020811015614fd157600080fd5b50516004840154600160a01b900467ffffffffffffffff169061524e565b60008115614fff57506000612785565b5090919050565b600082820183811015615060576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6000828211156150be576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600080821161511a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b600082848161512557fe5b04949350505050565b600a810154604080516307acd5cb60e01b8152905160009247926001600160a01b039091169182916307acd5cb916004808301928892919082900301818387803b15801561517b57600080fd5b505af115801561518f573d6000803e3d6000fd5b5047925050508281116151e9576040805162461bcd60e51b815260206004820152601d60248201527f4e6f2066756e64732072656365697665642c20756e6578706563746564000000604482015290519081900360640190fd5b6151f9818463ffffffff61506716565b95945050505050565b6001600160a01b038216600090815260188401602052604090205461522d908263ffffffff61500616565b6001600160a01b039092166000908152601890930160205250604090912055565b60008261525d57506000612785565b8282028284828161526a57fe5b04146150605760405162461bcd60e51b815260040180806020018281038252602181526020018061547b6021913960400191505060405180910390fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106152e857805160ff1916838001178555615315565b82800160010185558215615315579182015b828111156153155782518255916020019190600101906152fa565b50615321929150615325565b5090565b6121e691905b80821115615321576000815560010161532b56fe4465706f73697420686173206e6f7420796574206265656e2066756e64656420616e6420686173206e6f20617661696c61626c652066756e64696e6720696e666f466163746f72792063616e6e6f7420626520746865207a65726f20616464726573732e4661696c656420746f2073656e6420776974686472617761626c6520616d6f756e7420746f2073656e6465724465706f73697420636f6e7472616374207761732063616c6c6564207769746820756e6b6e6f776e2066756e6374696f6e2073656c6563746f722e4f6e6c792054445420686f6c6465722063616e20726571756573742066756e6465722061626f72744f6e6c792054445420686f6c6465722063616e2072656465656d20756e6c657373206465706f7369742069732061742d7465726d206f7220696e20434f5552544553595f43414c4c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f6e6c79207468652076656e64696e67206d616368696e652063616e2063616c6c207472616e73666572416e6452657175657374526564656d7074696f6e466163746f72792063616e206f6e6c7920626520696e697469616c697a6564206f6e63652e4465706f73697420686173206e6f2066756e64732063757272656e746c792061742061756374696f6ea265627a7a72315820da796b3027f128b724141097810742bd339b38e43e986b3e8b97bcca3334084b64736f6c63430005110032",
  "sourceMap": "2566:1346:31:-;;;342:5:18;313:34;;-1:-1:-1;;313:34:18;;;2616:84:31;5:2:-1;;;;30:1;27;20:12;5:2;-1:-1;2505:31:2;2524:10;-1:-1:-1;;;;;2505:10:2;:31;:::i;:::-;2566:1346:31;;947:271:18;-1:-1:-1;;;;;1010:22:18;;1002:70;;;;-1:-1:-1;;;1002:70:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1091:12;;;;1090:13;1082:63;;;;-1:-1:-1;;;1082:63:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1156:15;:26;;-1:-1:-1;;;;;;;1156:26:18;;;;;-1:-1:-1;;;;;;1156:26:18;;;;1192:19;;;;1156:15;1192:19;;;947:271::o;2566:1346:31:-;;;;;;;",
  "deployedSourceMap": "2566:1346:31:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2662:8:2;:20;2641:126;;;;-1:-1:-1;;;2641:126:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2566:1346:31;13593:316:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13593:316:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13593:316:2;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;13593:316:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;13593:316:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;13593:316:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;13593:316:2;;-1:-1:-1;13593:316:2;;-1:-1:-1;;;;;13593:316:2:i;3866:101:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3866:101:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3866:101:30;-1:-1:-1;;;;;3866:101:30;;:::i;2493:196::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2493:196:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2493:196:30;;;;:::i;3744:101:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3744:101:2;;;:::i;:::-;;;;;;;;;;;;;;;;2695:168:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2695:168:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2695:168:30;;;;:::i;4120:106:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4120:106:2;;;:::i;7628:186::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7628:186:2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2379:108:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2379:108:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2379:108:30;;;;:::i;9801:224:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9801:224:2;;;:::i;1977:77:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1977:77:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1027:477;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1027:477:30;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;1027:477:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4552:118::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4552:118:30;;;:::i;32273:71:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32273:71:2;;;:::i;12671:87::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12671:87:2;;;:::i;17725:77::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17725:77:2;;;:::i;21463:111::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21463:111:2;;;:::i;23124:101::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23124:101:2;;;:::i;14518:389::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14518:389:2;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;14518:389:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;14518:389:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;14518:389:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;14518:389:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;14518:389:2;;-1:-1:-1;14518:389:2;;-1:-1:-1;;;;;14518:389:2:i;7366:237:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7366:237:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7366:237:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;7366:237:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7366:237:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;7366:237:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;7366:237:30;;;;;;;;-1:-1:-1;7366:237:30;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;7366:237:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7366:237:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;7366:237:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;7366:237:30;;-1:-1:-1;7366:237:30;;-1:-1:-1;;;;;7366:237:30:i;5067:101:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5067:101:2;;;:::i;3103:218:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3103:218:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3103:218:30;;;;;;;:::i;7107:98::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7107:98:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7107:98:30;;:::i;3696:164::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3696:164:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11264:91:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11264:91:2;;;:::i;1889:82:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1889:82:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1889:82:30;;;;:::i;2279:94::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2279:94:30;;;:::i;4987:532::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4987:532:30;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;4987:532:30;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;4987:532:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4987:532:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4987:532:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;4987:532:30;;-1:-1:-1;;4987:532:30;;;-1:-1:-1;;;4987:532:30;;;;;;;;;:::i;4672:95:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4672:95:2;;;:::i;:::-;;;;-1:-1:-1;;;;;4672:95:2;;;;;;;;;;;;;;5447:129;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5447:129:2;;;:::i;5525:133:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5525:133:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5525:133:30;;:::i;7609:115::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7609:115:30;;;:::i;3973:141::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3973:141:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3973:141:30;-1:-1:-1;;;;;3973:141:30;;:::i;6524:184::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6524:184:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6524:184:30;-1:-1:-1;;;;;6524:184:30;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;5870:128:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5870:128:2;;;:::i;2060:120:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2060:120:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2060:120:30;;;;:::i;5927:321::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5927:321:30;;;:::i;:::-;;;;;-1:-1:-1;;;;;5927:321:30;-1:-1:-1;;;;;5927:321:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5927:321:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6254:264;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6254:264:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6254:264:30;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6254:264:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6254:264:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6254:264:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6254:264:30;;-1:-1:-1;6254:264:30;;-1:-1:-1;;;;;6254:264:30:i;6736:170:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6736:170:2;;;:::i;8259:233::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8259:233:2;;;:::i;7730:109:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7730:109:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7730:109:30;;:::i;2972:102:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2972:102:2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18509:95;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18509:95:2;;;:::i;2869:228:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2869:228:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2869:228:30;;;;:::i;4401:145::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4401:145:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4401:145:30;;:::i;3323:97:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3323:97:2;;;:::i;10386:114::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10386:114:2;;;:::i;17350:81::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17350:81:2;;;:::i;26995:251::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26995:251:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;;26995:251:2;;;;;;;;;;:::i;25321:256::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25321:256:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;25321:256:2;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;25321:256:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;25321:256:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;25321:256:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;25321:256:2;;-1:-1:-1;25321:256:2;;-1:-1:-1;;;;;25321:256:2:i;5782:139:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5782:139:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5782:139:30;-1:-1:-1;;;;;5782:139:30;;:::i;477:544::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;477:544:30;;-1:-1:-1;;;;;477:544:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2941:679:31:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2941:679:31;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;2941:679:31;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;2941:679:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2941:679:31;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2941:679:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2941:679:31;;;;;;;;-1:-1:-1;2941:679:31;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;2941:679:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2941:679:31;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2941:679:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2941:679:31;;-1:-1:-1;;;;;;2941:679:31;;;;;;;;;;;;;-1:-1:-1;2941:679:31;-1:-1:-1;2941:679:31;;;;-1:-1:-1;2941:679:31;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;2941:679:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2941:679:31;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2941:679:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2941:679:31;;;;;;;;;-1:-1:-1;2941:679:31;;;;-1:-1:-1;2941:679:31;;;;-1:-1:-1;;;;5:28;;2:2;;;46:1;43;36:12;2:2;2941:679:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2941:679:31;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2941:679:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2941:679:31;;-1:-1:-1;2941:679:31;;-1:-1:-1;;;;;2941:679:31:i;:::-;;;;-1:-1:-1;;;;;;2941:679:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2941:679:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3327:123:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3327:123:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3327:123:30;-1:-1:-1;;;;;3327:123:30;;:::i;4676:149::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4676:149:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4676:149:30;;;;;;;:::i;19324:117:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19324:117:2;;;:::i;3576:114:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3576:114:30;;;:::i;5664:112::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5664:112:30;;;:::i;7211:149::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7211:149:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7211:149:30;;:::i;22266:103:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22266:103:2;;;:::i;6714::30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6714:103:30;;;:::i;26075:169:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26075:169:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;26075:169:2;;;;;;;;;;;;;;:::i;7845:121:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7845:121:30;;;:::i;947:271:18:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;947:271:18;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;947:271:18;-1:-1:-1;;;;;947:271:18;;:::i;4831:150:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4831:150:30;;;:::i;4275:120::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4275:120:30;;;:::i;23698:255:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23698:255:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23698:255:2;-1:-1:-1;;;;;23698:255:2;;:::i;28706:582::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28706:582:2;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;28706:582:2;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;28706:582:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;28706:582:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;28706:582:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;28706:582:2;;;;;;;;-1:-1:-1;28706:582:2;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;28706:582:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;28706:582:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;28706:582:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;28706:582:2;;-1:-1:-1;;;;;;28706:582:2;;;;;;;;-1:-1:-1;28706:582:2;;;;-1:-1:-1;28706:582:2;;;;-1:-1:-1;;;;5:28;;2:2;;;46:1;43;36:12;2:2;28706:582:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;28706:582:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;28706:582:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;28706:582:2;;;;;;;;;-1:-1:-1;28706:582:2;;;;-1:-1:-1;28706:582:2;;;;-1:-1:-1;;;;5:28;;2:2;;;46:1;43;36:12;2:2;28706:582:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;28706:582:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;28706:582:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;28706:582:2;;-1:-1:-1;28706:582:2;;-1:-1:-1;;;;;28706:582:2:i;20472:305::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20472:305:2;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;20472:305:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;20472:305:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;20472:305:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;20472:305:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;20472:305:2;;-1:-1:-1;20472:305:2;;-1:-1:-1;;;;;20472:305:2:i;1510:373:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1510:373:30;;;:::i;24219:259:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24219:259:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24219:259:2;-1:-1:-1;;;;;24219:259:2;;:::i;16227:650::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16227:650:2;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;16227:650:2;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;16227:650:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;16227:650:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;16227:650:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;16227:650:2;;;;;;;;-1:-1:-1;16227:650:2;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;16227:650:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;16227:650:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;16227:650:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;16227:650:2;;-1:-1:-1;;;;;;16227:650:2;;;;;;;;;;;;;-1:-1:-1;16227:650:2;-1:-1:-1;16227:650:2;;;;-1:-1:-1;16227:650:2;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;16227:650:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;16227:650:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;16227:650:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;16227:650:2;;;;;;;;;-1:-1:-1;16227:650:2;;;;-1:-1:-1;16227:650:2;;;;-1:-1:-1;;;;5:28;;2:2;;;46:1;43;36:12;2:2;16227:650:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;16227:650:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;16227:650:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;16227:650:2;;-1:-1:-1;16227:650:2;;-1:-1:-1;;;;;16227:650:2:i;8977:407::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8977:407:2;;;:::i;:::-;;;;;-1:-1:-1;;;;;8977:407:2;;-1:-1:-1;;;;;8977:407:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8977:407:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3626:284:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3626:284:31;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;3626:284:31;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;3626:284:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3626:284:31;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3626:284:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3626:284:31;;;;;;;;;-1:-1:-1;3626:284:31;;;;-1:-1:-1;3626:284:31;;;;-1:-1:-1;;;;5:28;;2:2;;;46:1;43;36:12;2:2;3626:284:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3626:284:31;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3626:284:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3626:284:31;;-1:-1:-1;3626:284:31;;-1:-1:-1;;;;;3626:284:31:i;4120:149:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4120:149:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4120:149:30;;:::i;11824:85:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11824:85:2;;;:::i;2186:87:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2186:87:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2186:87:30;;:::i;6965:98::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6965:98:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6965:98:30;;;;:::i;4347:88:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4347:88:2;;;:::i;:::-;;;;;;;;;;;;;;;;;;31569:541;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31569:541:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;31569:541:2;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;31569:541:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;31569:541:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;31569:541:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;31569:541:2;;-1:-1:-1;;;31569:541:2;;-1:-1:-1;;;;;31569:541:2;;-1:-1:-1;31569:541:2;;-1:-1:-1;31569:541:2:i;3456:114:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3456:114:30;;;:::i;6823:136::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6823:136:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6823:136:30;;;;;;;:::i;13593:316:2:-;13749:19;;;-1:-1:-1;;;13749:19:2;;:4;:19;;;;;;13772:10;;13749:17;;;;:19;;;;;;;;;;;;;;;:17;:19;;;5:2:-1;;;;30:1;27;20:12;5:2;13749:19:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13749:19:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13749:19:2;-1:-1:-1;;;;;13749:33:2;;13728:120;;;;-1:-1:-1;;;13728:120:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13859:43;;;-1:-1:-1;;;13859:43:2;;:4;:43;;;;;;;;;;;;;;;;;;;;:23;;;;13883:18;;13859:43;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;13859:43:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13859:43:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13859:43:2;;;;13593:316;:::o;3866:101:30:-;3929:16;:31;;-1:-1:-1;;;;;;3929:31:30;-1:-1:-1;;;;;3929:31:30;;;;;;;;;;3866:101::o;2493:196::-;2603:40;:79;;;;;;;;-1:-1:-1;;2603:79:30;;;;;;;;;2493:196::o;3744:101:2:-;3792:7;3818:4;:18;;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3818:20:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3818:20:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3818:20:2;;-1:-1:-1;3744:101:2;;:::o;2695:168:30:-;2791:33;:65;;-1:-1:-1;;2791:65:30;;;;;;;;;;;;2695:168::o;4120:106:2:-;4201:17;;-1:-1:-1;;;4201:17:2;;;;;4120:106::o;7628:186::-;7759:48;;-1:-1:-1;;;7759:48:2;;;;;7628:186::o;2379:108:30:-;2441:20;:39;;;;;;-1:-1:-1;;;2441:39:30;-1:-1:-1;;;;2441:39:30;;;;;;;;;2379:108::o;9801:224:2:-;9848:7;9888:4;:24;;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9888:26:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9888:26:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9888:26:2;9867:114;;;;-1:-1:-1;;;9867:114:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9999:19;;;-1:-1:-1;;;9999:19:2;;:4;:19;;;;;;:17;;;;:19;;;;;;;;;;;;;;:17;:19;;;5:2:-1;;;;30:1;27;20:12;1027:477:30;1234:4;:35;;-1:-1:-1;;;;;;1234:35:30;;;-1:-1:-1;;;;;1234:35:30;;;;;;;1279:14;:34;;;;;;;;;;;;;;1323:21;:50;;;;;;;;;;;;;;1383:19;:53;;;;;;;;;;;;;1446:26;:51;;;;;;;;;;;;;1027:477::o;4552:118::-;4636:27;;4552:118;:::o;32273:71:2:-;32317:20;:4;:18;:20::i;:::-;32273:71::o;12671:87::-;12723:28;;;-1:-1:-1;;;12723:28:2;;:4;:28;;;;;;:26;;;;:28;;;;;-1:-1:-1;;12723:28:2;;;;;;;:26;:28;;;5:2:-1;;;;30:1;27;20:12;5:2;12723:28:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12723:28:2;;;;12671:87::o;17725:77::-;17772:23;;;-1:-1:-1;;;17772:23:2;;:4;:23;;;;;;:21;;;;:23;;;;;-1:-1:-1;;17772:23:2;;;;;;;:21;:23;;;5:2:-1;;;;30:1;27;20:12;21463:111:2;21527:40;;;-1:-1:-1;;;21527:40:2;;:4;:40;;;;;;:38;;;;:40;;;;;-1:-1:-1;;21527:40:2;;;;;;;:38;:40;;;5:2:-1;;;;30:1;27;20:12;23124:101:2;23183:35;;;-1:-1:-1;;;23183:35:2;;:4;:35;;;;;;:33;;;;:35;;;;;-1:-1:-1;;23183:35:2;;;;;;;:33;:35;;;5:2:-1;;;;30:1;27;20:12;14518:389:2;14758:4;:34;;;;14806:2;14822;14838;14854:13;14881:9;14758:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14758:142:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14758:142:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14758:142:2;;;;14518:389;;;;;:::o;7366:237:30:-;7505:7;7531:4;:32;;;;7564:14;7580:15;7531:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7531:65:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7531:65:30;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7531:65:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7531:65:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7531:65:30;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7531:65:30;;-1:-1:-1;7366:237:30;;;;;:::o;5067:101:2:-;5115:7;5141:4;:18;;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;3103:218:30;3226:25;:40;;;;3276:26;:38;3103:218::o;7107:98::-;7171:27;:4;7190:7;7171:27;:18;:27;:::i;:::-;7107:98;:::o;3696:164::-;3799:25;;3826:26;;3696:164;;:::o;11264:91:2:-;11318:30;;;-1:-1:-1;;;11318:30:2;;:4;:30;;;;;;:28;;;;:30;;;;;-1:-1:-1;;11318:30:2;;;;;;;:28;:30;;;5:2:-1;;;;30:1;27;20:12;1889:82:30;1938:17;:26;;;;;;-1:-1:-1;;;1938:26:30;-1:-1:-1;;;;1938:26:30;;;;;;;;;1889:82::o;2279:94::-;2349:21;;-1:-1:-1;;;2349:21:30;;;;;2279:94::o;4987:532::-;5237:20;:39;;-1:-1:-1;;;;;;5237:39:30;-1:-1:-1;;;;;5237:39:30;;;;;5286:49;;;;:25;;:49;;;;;:::i;:::-;-1:-1:-1;5345:25:30;:49;;;;5404:26;:51;5465:24;:47;-1:-1:-1;;4987:532:30:o;4672:95:2:-;4744:16;;-1:-1:-1;;;;;4744:16:2;4672:95;:::o;5447:129::-;5509:7;5535:4;:32;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5525:133:30;5604:24;:47;5525:133::o;7609:115::-;7691:26;;7609:115;:::o;3973:141::-;4056:26;:51;;-1:-1:-1;;;;;;4056:51:30;-1:-1:-1;;;;;4056:51:30;;;;;;;;;;3973:141::o;6524:184::-;6604:7;;;6648:53;:4;6684:9;6604:7;6648:53;:35;:53;:::i;:::-;6641:60;;;;;;6524:184;;;;;:::o;5870:128:2:-;5958:33;;;;5870:128;:::o;2060:120:30:-;2132:21;:41;;;;;;-1:-1:-1;;;2132:41:30;-1:-1:-1;;;;2132:41:30;;;;;;;;;2060:120::o;5927:321::-;6055:20;;6128:25;;6167:26;;6207:24;;6089:25;6034:207;;;;;;;6055:20;:4;6034:207;;;;-1:-1:-1;;6034:207:30;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5983:12:30;;-1:-1:-1;;;;;;;;;;;6055:20:30;;;;6089:25;;6128;;6167:26;;6207:24;;6089:25;;6034:207;;6089:25;6034:207;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5927:321;;;;;:::o;6254:264::-;6396:19;:37;;-1:-1:-1;;6396:37:30;;;;;;;;6443:13;:25;;;6478:33;;;;:17;;:33;;;;;:::i;6736:170:2:-;6859:40;;;;;;;;6736:170::o;8259:233::-;8303:7;8344:4;:14;;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8344:16:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8344:16:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8344:16:2;8343:17;8322:129;;;;-1:-1:-1;;;8322:129:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8469:16;;;-1:-1:-1;;;8469:16:2;;:4;:16;;;;;;:14;;;;:16;;;;;;;;;;;;;;:14;:16;;;5:2:-1;;;;30:1;27;20:12;7730:109:30;7796:36;:4;7822:9;7796:36;:25;:36;:::i;2972:102:2:-;3047:20;;-1:-1:-1;;;3047:20:2;;;;;2972:102::o;18509:95::-;18565:32;;;-1:-1:-1;;;18565:32:2;;:4;:32;;;;;;:30;;;;:32;;;;;-1:-1:-1;;18565:32:2;;;;;;;:30;:32;;;5:2:-1;;;;30:1;27;20:12;2869:228:30;2995:48;:95;;;;;;-1:-1:-1;;;2995:95:30;-1:-1:-1;;2995:95:30;;;;;;;;;2869:228::o;4401:145::-;4486:27;:53;4401:145::o;3323:97:2:-;3369:7;3395:4;:16;;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;10386:114:2;10439:7;10465:28;:4;:26;:28::i;:::-;10458:35;;10386:114;:::o;17350:81::-;17399:25;;;-1:-1:-1;;;17399:25:2;;:4;:25;;;;;;:23;;;;:25;;;;;-1:-1:-1;;17399:25:2;;;;;;;:23;:25;;;5:2:-1;;;;30:1;27;20:12;26995:251:2;27130:109;;;-1:-1:-1;;;27130:109:2;;:4;:109;;;;-1:-1:-1;;;;;;27130:109:2;;;;;;;;;;;;;;;:26;;;;:109;;;;;-1:-1:-1;;27130:109:2;;;;;;;:26;:109;;;5:2:-1;;;;30:1;27;20:12;5:2;27130:109:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27130:109:2;;;;26995:251;;:::o;25321:256::-;25506:64;;-1:-1:-1;;;25506:64:2;;:4;:64;;;;;;-1:-1:-1;;;;;;25506:64:2;;;;;;;;;;;;;;;;;;;;;:22;;;;:4;25529:17;;25548:21;;25506:64;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;25506:64:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5782:139:30;5875:20;:39;;-1:-1:-1;;;;;;5875:39:30;-1:-1:-1;;;;;5875:39:30;;;;;;;;;;5782:139::o;477:544::-;746:4;:29;;-1:-1:-1;;;;;;746:29:30;;;-1:-1:-1;;;;;746:29:30;;;;;;;;;785:14;:27;;;;;;;;;;822:21;:41;;;;;;;;;;873:19;:37;;;;;;;;;;920:26;:51;;;;;;;;;;;;;;;981:33;;;-1:-1:-1;;;981:33:30;;;;;;;;;;;;;;;;;;:15;;;;:33;;;;;-1:-1:-1;;981:33:30;;;;;;;:15;:33;;;5:2:-1;;;;30:1;27;20:12;5:2;981:33:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;981:33:30;;;;477:544;;;;;;:::o;2941:679:31:-;3280:18;3300:26;3344:4;:36;;;;3394:10;3418:14;3446:15;3475:11;3500:19;3533:12;3559:15;3588;3344:269;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3344:269:31;;-1:-1:-1;;;;;3344:269:31;;;;;;;;;;;;;-1:-1:-1;;;;;3344:269:31;;-1:-1:-1;;;;;3344:269:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3344:269:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3344:269:31;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3344:269:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3344:269:31;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3344:269:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3344:269:31;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3344:269:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3344:269:31;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3344:269:31;;;;;;39:16:-1;36:1;17:17;2:54;101:4;3344:269:31;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;;;5:11;;2:2;;;29:1;26;19:12;2:2;3344:269:31;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;3344:269:31;;420:4:-1;411:14;;;;3344:269:31;;;;;411:14:-1;3344:269:31;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3344:269:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3337:276;;;;2941:679;;;;;;;;;;;:::o;3327:123:30:-;3405:25;:38;;-1:-1:-1;;;;;;3405:38:30;-1:-1:-1;;;;;3405:38:30;;;;;;;;;;3327:123::o;4676:149::-;4750:24;:29;;;;4789:24;:29;4676:149::o;19324:117:2:-;19391:43;;;-1:-1:-1;;;19391:43:2;;:4;:43;;;;;;:41;;;;:43;;;;;-1:-1:-1;;19391:43:2;;;;;;;:41;:43;;;5:2:-1;;;;30:1;27;20:12;3576:114:30;3658:25;;3576:114;:::o;5664:112::-;5745:24;;5664:112;:::o;7211:149::-;7286:7;7312:4;:32;;;;7345:7;7312:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7312:41:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7312:41:30;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7312:41:30;;-1:-1:-1;7211:149:30;;;;:::o;22266:103:2:-;22326:36;;;-1:-1:-1;;;22326:36:2;;:4;:36;;;;;;:34;;;;:36;;;;;-1:-1:-1;;22326:36:2;;;;;;;:34;:36;;;5:2:-1;;;;30:1;27;20:12;6714:103:30;6773:37;:4;:35;:37::i;26075:169:2:-;26194:43;;;-1:-1:-1;;;26194:43:2;;:4;:43;;;;;;;;;;;;;;;;;;;;;;;;;:31;;;;:43;;;;;-1:-1:-1;;26194:43:2;;;;;;;:31;:43;;;5:2:-1;;;;30:1;27;20:12;5:2;26194:43:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26194:43:2;;;;26075:169;;;:::o;7845:121:30:-;7902:7;7928:31;:4;:29;:31::i;947:271:18:-;-1:-1:-1;;;;;1010:22:18;;1002:70;;;;-1:-1:-1;;;1002:70:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1091:12;;;;1090:13;1082:63;;;;-1:-1:-1;;;1082:63:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1156:15;:26;;-1:-1:-1;;;;;;;1156:26:18;;;;;-1:-1:-1;;;;;;1156:26:18;;;;1192:19;;;;1156:15;1192:19;;;947:271::o;4831:150:30:-;4923:24;;4949;;4831:150;;:::o;4275:120::-;4360:28;;4275:120;:::o;23698:255:2:-;23802:7;;23865:53;:4;23901:9;23802:7;23865:53;:35;:53;:::i;:::-;-1:-1:-1;23825:93:2;;23698:255;-1:-1:-1;;;;23698:255:2:o;28706:582::-;29054:227;;-1:-1:-1;;;29054:227:2;;:4;:227;;;;;;-1:-1:-1;;;;;;29054:227:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;;:4;29095:10;;29119:14;;29147:15;;29176:11;;29201:12;;29227:15;;29256;;29054:227;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;29054:227:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29054:227:2;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;29054:227:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29054:227:2;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;29054:227:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29054:227:2;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;29054:227:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29054:227:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29054:227:2;;;;28706:582;;;;;;;:::o;20472:305::-;20705:4;:27;;;;20733:2;20737;20741;20745:13;20760:9;20705:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1510:373:30;1544:11;1553:1;1544:8;:11::i;:::-;1565:39;1599:1;1602;1565:33;:39::i;:::-;1614:48;;;;;;;;;1637:1;1614:48;;;;;1637:1;;;1614:14;:48::i;:::-;1672:32;1694:1;1687:9;;1698:1;1672:32;;;;;;;;;;;;:14;:32::i;:::-;1715:26;1738:1;1715:14;:26::i;:::-;1751:29;1778:1;1751:26;:29::i;:::-;1790:28;1816:1;1790:25;:28::i;:::-;1828:48;1861:1;;1828:24;:48::i;24219:259:2:-;24328:7;;24391:52;24438:4;24427:9;24438:4;24391:52;:35;:52;:::i;16227:650::-;16610:260;;-1:-1:-1;;;16610:260:2;;:4;:260;;;;;;-1:-1:-1;;;;;;16610:260:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;;:4;16651:10;;16675:14;;16703:15;;16732:11;;16757:19;;16790:12;;16816:15;;16845;;16610:260;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;16610:260:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16610:260:2;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;16610:260:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16610:260:2;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;16610:260:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16610:260:2;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;16610:260:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16610:260:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16610:260:2;;;;16227:650;;;;;;;;:::o;8977:407::-;9060:21;9095:16;9125:25;9197:4;:14;;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9197:16:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9197:16:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9197:16:2;9196:17;9175:129;;;;-1:-1:-1;;;9175:129:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9323:19;;9344:13;;9359:17;9315:62;;;;;;;;-1:-1:-1;;9323:4:2;9315:62;;;9323:19;9315:62;;;;;;;;;;;;;;;;;;;;;;;;;;;9323:19;;;;;;9315:62;9359:17;;9315:62;;9359:17;9315:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8977:407;;;:::o;3626:284:31:-;3808:7;3827:4;:23;;;;3851:12;3865;3879:6;3887:15;3827:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3827:76:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3827:76:31;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3827:76:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3827:76:31;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3827:76:31;;;;3626:284;;;;;;:::o;4120:149:30:-;4207:28;:55;4120:149::o;11824:85:2:-;11875:27;;;-1:-1:-1;;;11875:27:2;;:4;:27;;;;;;:25;;;;:27;;;;;-1:-1:-1;;11875:27:2;;;;;;;:25;:27;;;5:2:-1;;;;30:1;27;20:12;2186:87:30;2242:17;:24;2186:87::o;6965:98::-;7024:32;:4;7046:9;7024:32;:21;:32;:::i;4347:88:2:-;4390:4;4413;:13;;;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;31569:541:2;31841:26;;-1:-1:-1;;;;;31841:26:2;31827:10;:40;31806:149;;;;-1:-1:-1;;;31806:149:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31965:138;;-1:-1:-1;;;31965:138:2;;:4;:138;;;;;;-1:-1:-1;;;;;;31965:138:2;;;;;;-1:-1:-1;;;;;31965:138:2;;;;;;;;;;;;;;;;;;;;;:33;;;;:4;32012:17;;32043:21;;32078:15;;31965:138;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;31965:138:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;3456:114:30;3538:25;;-1:-1:-1;;;;;3538:25:30;3456:114;:::o;6823:136::-;6910:29;;;;:20;:29;;;;;;:42;6823:136::o;21389:660:7:-;21507:10;21464:17;21484:34;;;:22;;;:34;;;;;;;;;;21537:15;;-1:-1:-1;;;21537:15:7;;;;;;;;;;21484:34;;21537:13;;;;:15;;;;;;;;;;:13;:15;;;5:2:-1;;;;30:1;27;20:12;5:2;21537:15:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21537:15:7;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21537:15:7;21529:55;;;;;-1:-1:-1;;;21529:55:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;21614:1;21602:9;:13;21594:45;;;;;-1:-1:-1;;;21594:45:7;;;;;;;;;;;;-1:-1:-1;;;21594:45:7;;;;;;;;;;;;;;;21695:9;21670:21;:34;;21649:110;;;;;-1:-1:-1;;;21649:110:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;21835:10;21849:1;21812:34;;;:22;;;:34;;;;;;:38;;;21937:36;21849:1;;21835:10;21959:9;;21849:1;21937:36;21849:1;21937:36;21959:9;21835:10;21937:36;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;21923:50:7;;;21991:2;21983:59;;;;-1:-1:-1;;;21983:59:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21389:660;;;:::o;2087:213:5:-;2208:14;;;;2191:46;;;-1:-1:-1;;;2191:46:5;;;;;;;;;;-1:-1:-1;;;;;2208:14:5;;;;2191:37;;:46;;;;;2208:14;;2191:46;;;;;;;;2208:14;;2191:46;;;5:2:-1;;;;30:1;27;20:12;5:2;2191:46:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;2248:27:5;;;;-1:-1:-1;2248:18:5;;;;:27;;;;;2278:15;2248:45;;2087:213::o;24892:2373:7:-;25104:21;25139:23;25176;25224:21;25260:23;:56;;;;25307:9;-1:-1:-1;;;;;25287:29:7;:16;25300:2;25287:12;:16::i;:::-;-1:-1:-1;;;;;25287:29:7;;25260:56;25224:92;;25326:12;25361:1;25341:17;25355:2;25341:13;:17::i;:::-;:21;:45;;;;;25367:2;:17;;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25367:19:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25367:19:7;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25367:19:7;25366:20;25341:45;25326:60;;25418:16;:28;;;;25439:7;25438:8;25418:28;25397:147;;;;-1:-1:-1;;;25397:147:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25555:14;;25572:24;25593:2;25572:20;:24::i;:::-;-1:-1:-1;;;;;25572:38:7;;;25555:55;;25620:21;25672:9;-1:-1:-1;;;;;25644:37:7;:24;25665:2;25644:20;:24::i;:::-;-1:-1:-1;;;;;25644:37:7;;25620:61;;25691:17;25711;25725:2;25711:13;:17::i;:::-;25691:37;;25739:17;25771:189;25817:9;25844:7;25869:9;25896:16;25930;25771:28;:189::i;:::-;25739:221;;26085:126;26201:9;26085:98;26128:15;26140:2;26128:11;:15::i;:::-;26157:16;26085:29;:98::i;:::-;:115;:126;:115;:126;:::i;:::-;26346:12;;;;:37;;;-1:-1:-1;;;26346:37:7;;26377:4;26346:37;;;;;;26069:142;;-1:-1:-1;26328:15:7;;-1:-1:-1;;;;;26346:12:7;;;;:22;;:37;;;;;;;;;;;;;;;:12;:37;;;5:2:-1;;;;30:1;27;20:12;5:2;26346:37:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26346:37:7;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;26346:37:7;;-1:-1:-1;26397:23:7;;;26393:144;;;26452:26;:13;26470:7;26452:26;:17;:26;:::i;:::-;26436:42;;26393:144;;;26525:1;26509:17;;26393:144;26931:7;:20;;;;;26942:9;26931:20;:41;;;;;26956:16;26955:17;26931:41;26927:99;;;27006:9;26988:27;;26927:99;27107:84;27166:15;27107:41;27138:9;27107:41;:7;27119:13;27107:26;:11;:26;:::i;:::-;:30;:41;:30;:41;:::i;:84::-;27089:102;-1:-1:-1;;;;;;;;24892:2373:7;;;;;;;:::o;23209:351::-;23342:9;23317:21;:34;;23309:71;;;;;-1:-1:-1;;;23309:71:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;23394:13;;23390:164;;23465:14;;;;23494:49;;;-1:-1:-1;;;23494:49:7;;;;-1:-1:-1;;;;;23465:14:7;;;;;;23494:30;;23531:9;;23494:49;;;;;23423:22;;23494:49;;;;;;;;23531:9;23465:14;23494:49;;;5:2:-1;;;;30:1;27;20:12;5:2;23494:49:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23494:49:7;;;;;23390:164;;23209:351;;:::o;22172:182::-;22336:10;22283:7;22313:34;;;:22;;;:34;;;;;;22172:182;;;:::o;2634:1050:5:-;2738:17;2758:2;:15;;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2758:17:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2758:17:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2758:17:5;2805:25;;;-1:-1:-1;;;2805:25:5;;;;;;;;;;2758:17;;-1:-1:-1;2785:17:5;;2805:23;;;;:25;;;;;2758:17;;2805:25;;;;;;;:23;:25;;;5:2:-1;;;;30:1;27;20:12;5:2;2805:25:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2805:25:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2805:25:5;2872:24;;;;3075:18;;;;2805:25;;-1:-1:-1;;;;;;2872:24:5;;;;2840:29;;;;;;3041:60;;2872:2;;3075:18;2840:29;3041:60;:33;:60;:::i;:::-;2907:194;;-1:-1:-1;2907:194:5;-1:-1:-1;2907:194:5;-1:-1:-1;3116:21:5;;3112:185;;3153:12;;;;:133;;;-1:-1:-1;;;3153:133:5;;3196:10;3153:133;;;;3232:4;3153:133;;;;;;;;;;;;-1:-1:-1;;;;;3153:12:5;;;;:25;;:133;;;;;;;;;;;;;;;:12;;:133;;;5:2:-1;;;;30:1;27;20:12;5:2;3153:133:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3153:133:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;3112:185:5;3310:23;;3306:256;;3366:21;-1:-1:-1;;;;;3353:34:5;:9;-1:-1:-1;;;;;3353:34:5;;3349:203;;;3407:12;;;;:38;;;-1:-1:-1;;;3407:38:5;;;;;;;;;;-1:-1:-1;;;;;3407:12:5;;;;:17;;:38;;;;;:12;;:38;;;;;;;;:12;;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;3407:38:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3407:38:5;;;;3349:203;;;3484:12;;;;:53;;;-1:-1:-1;;;3484:53:5;;-1:-1:-1;;;;;3484:53:5;;;;;;;;;;;;;;;:12;;;;;:21;;:53;;;;;;;;;;;;;;:12;;:53;;;5:2:-1;;;;30:1;27;20:12;5:2;3484:53:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3484:53:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;3349:203:5;3575:23;;3571:107;;3614:12;;;;:53;;;-1:-1:-1;;;3614:53:5;;-1:-1:-1;;;;;3614:53:5;;;;;;;;;;;;;;;:12;;;;;:21;;:53;;;;;;;;;;;;;;:12;;:53;;;5:2:-1;;;;30:1;27;20:12;5:2;3614:53:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3614:53:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;19965:189:7;20115:31;;;;20066:7;;20096:51;;20104:5;;20115:31;;20096:51;:18;:51;:::i;3214:957:4:-;3320:35;;;-1:-1:-1;;;3320:35:4;;;;;;;;;;;;;;;;;:24;;;;:35;;;;;-1:-1:-1;;3320:35:4;;;;;;;:24;:35;;;5:2:-1;;;;30:1;27;20:12;5:2;3320:35:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3320:35:4;;;;3366:14;3383:21;:2;:19;:21::i;:::-;3440:18;;;;3515:23;;;-1:-1:-1;;;3515:23:4;;;;;;;;;;3366:38;;-1:-1:-1;;;;;;3440:18:4;;;;3515:21;;;;:23;;;;;3414;;3515;;;;;;;:21;:23;;;5:2:-1;;;;30:1;27;20:12;5:2;3515:23:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3515:23:4;;;;3703:2;:15;;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3703:17:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3703:17:4;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3703:17:4;:30;;;;;3724:9;3703:30;3699:189;;;3749:2;:16;;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3749:18:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;3781:44:4;;-1:-1:-1;3781:2:4;;-1:-1:-1;3801:15:4;;-1:-1:-1;3818:6:4;3781:44;:19;:44;:::i;:::-;3839:2;:16;;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3839:18:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3839:18:4;;;;3871:7;;;;3699:189;3898:23;;;:36;;-1:-1:-1;;;;;;3898:36:4;3924:10;3898:36;;;3970:15;3944:23;;;:41;4031:134;;;;4060:2;:32;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4060:34:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4060:34:4;;;;4031:134;;;4125:2;:27;;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4125:29:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;19001:243:7;19171:19;;;;:51;;;-1:-1:-1;;;19171:51:7;;19215:4;19171:51;;;;;;19088:15;;-1:-1:-1;;;;;19171:19:7;;:27;;:51;;;;;;;;;;;;;;:19;:51;;;5:2:-1;;;;30:1;27;20:12;5:2;19171:51:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;12092:320:7;12193:7;12216:17;12236:47;12252:13;:28;:30;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12252:30:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12252:30:7;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12252:30:7;12236:11;;;;;:47;:15;:47;:::i;:::-;12216:67;;12315:9;12297:15;:27;12293:95;;;12347:30;:9;12361:15;12347:30;:13;:30;:::i;:::-;12340:37;;;;;12293:95;-1:-1:-1;12404:1:7;;12092:320;-1:-1:-1;;12092:320:7:o;18359:410::-;18531:17;;;;:48;;;-1:-1:-1;;;18531:48:7;;18572:4;18531:48;;;;;;18454:15;;;;-1:-1:-1;;;;;18531:17:7;;;;:24;;:48;;;;;;;;;;;;;;;:17;:48;;;5:2:-1;;;;30:1;27;20:12;5:2;18531:48:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18531:48:7;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18531:48:7;18527:190;;;18642:17;;;;:49;;;-1:-1:-1;;;18642:49:7;;18684:4;18642:49;;;;;;-1:-1:-1;;;;;18642:17:7;;;;:25;;:49;;;;;;;;;;;;;;;:17;:49;;;5:2:-1;;;;30:1;27;20:12;5:2;18642:49:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;13961:137:7;14071:19;;;;14025:7;;14051:40;;-1:-1:-1;;;14071:19:7;;;;14051:15;14071:19;14051:11;:15::i;:::-;:19;:40;:19;:40;:::i;28270:1072::-;28476:7;28679:28;28722:8;:22;;;;;28734:10;28722:22;:44;;;;;28749:17;28748:18;28722:44;28679:87;;28777:22;28814:8;:190;;;;28994:10;28814:190;:298;;;;29095:17;28814:298;28777:335;-1:-1:-1;29123:17:7;29154:70;;;;29191:22;;29154:70;29237:23;29233:76;;;29276:22;;29233:76;29326:9;28270:1072;-1:-1:-1;;;;;;;;28270:1072:7:o;13589:155::-;13651:7;13677:60;13700:13;:34;:36;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13700:36:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13700:36:7;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13700:36:7;13677:18;;;;-1:-1:-1;;;13677:18:7;;;;;:22;:60::i;27557:232::-;27683:7;27706:17;27702:56;;;-1:-1:-1;27746:1:7;27739:8;;27702:56;-1:-1:-1;27774:8:7;;27557:232;-1:-1:-1;27557:232:7:o;834:176:60:-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:60:o;1274:179::-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:60;;;1274:179::o;2606:326::-;2664:7;2761:1;2757;:5;2749:44;;;;;-1:-1:-1;;;2749:44:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;2803:9;2819:1;2815;:5;;;;;;;2606:326;-1:-1:-1;;;;2606:326:60:o;20331:472:7:-;20514:14;;;;20539:24;;;-1:-1:-1;;;20539:24:7;;;;20395:7;;20440:21;;-1:-1:-1;;;;;20514:14:7;;;;;;20539:22;;:24;;;;;20395:7;;20539:24;;;;;;;20395:7;20514:14;20539:24;;;5:2:-1;;;;30:1;27;20:12;5:2;20539:24:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;20601:21:7;;-1:-1:-1;;;20653:34:7;;;20632:110;;;;;-1:-1:-1;;;20632:110:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;20759:37;:16;20780:15;20759:37;:20;:37;:::i;:::-;20752:44;20331:472;-1:-1:-1;;;;;20331:472:7:o;20976:274::-;-1:-1:-1;;;;;21160:57:7;;;;;;:22;;;:57;;;;;;:83;;21235:7;21160:83;:74;:83;:::i;:::-;-1:-1:-1;;;;;21122:35:7;;;;;;;:22;;;;:35;;-1:-1:-1;21122:35:7;;;;:121;20976:274::o;1693:458:60:-;1751:7;1991:6;1987:45;;-1:-1:-1;2020:1:60;2013:8;;1987:45;2054:5;;;2058:1;2054;:5;:1;2077:5;;;;;:10;2069:56;;;;-1:-1:-1;;;2069:56:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2566:1346:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2566:1346:31;;;-1:-1:-1;2566:1346:31;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;",
  "source": "pragma solidity 0.5.17;\n\nimport {DepositUtils} from \"../../../contracts/deposit/DepositUtils.sol\";\nimport {TestDeposit} from \"./TestDeposit.sol\";\n\ncontract TestDepositUtils is TestDeposit {\n    constructor() public {\n    // solium-disable-previous-line no-empty-blocks\n    }\n\n    // Passthroughs to test view and pure functions\n\n    function currentBlockDifficulty() public view returns (uint256) {\n        return self.currentBlockDifficulty();\n    }\n\n    function previousBlockDifficulty() public view returns (uint256) {\n        return self.previousBlockDifficulty();\n    }\n\n    function evaluateProofDifficulty(bytes memory _bitcoinHeaders) public view {\n        return self.evaluateProofDifficulty(_bitcoinHeaders);\n    }\n\n    function setPubKey(\n        bytes32 _signingGroupPubkeyX,\n        bytes32 _signingGroupPubkeyY\n    ) public {\n        self.signingGroupPubkeyX = _signingGroupPubkeyX;\n        self.signingGroupPubkeyY = _signingGroupPubkeyY;\n    }\n\n    function findAndParseFundingOutput(\n        bytes memory _txOutputVector,\n        uint8 _fundingOutputIndex\n    ) public view returns (bytes8) {\n        return self.findAndParseFundingOutput(_txOutputVector, _fundingOutputIndex);\n    }\n\n    function signerFee() public view returns (uint256) {\n        return self.signerFeeTbtc();\n    }\n\n    function signerPubkey() public view returns (bytes memory) {\n        return self.signerPubkey();\n    }\n\n    function signerPKH() public view returns (bytes20) {\n        return self.signerPKH();\n    }\n\n    function fetchBitcoinPrice() public view returns (uint256) {\n        return self.fetchBitcoinPrice();\n    }\n\n    function fetchBondAmount() public view returns (uint256) {\n        return self.fetchBondAmount();\n    }\n\n    function feeRebateTokenHolder() public view returns (address payable) {\n        return self.feeRebateTokenHolder();\n    }\n\n    function redemptionTeardown() public {\n        return self.redemptionTeardown();\n    }\n\n    function seizeSignerBonds() public returns (uint256) {\n        return self.seizeSignerBonds();\n    }\n\n    function distributeFeeRebate() public {\n        return self.distributeFeeRebate();\n    }\n\n    function pushFundsToKeepGroup(uint256 _ethValue) public {\n        self.pushFundsToKeepGroup(_ethValue);\n    }\n\n    function enableWithdrawal(address _withdrawer, uint256 _amount) public {\n        self.enableWithdrawal(_withdrawer, _amount);\n    }\n}\n\n// Separate contract for testing SPV proofs, as putting this in the main\n// TestDepositUtils contract causes it to run out of gas before finishing its\n// deploy.\ncontract TestDepositUtilsSPV is TestDeposit {\n    constructor() public {\n        // solium-disable-previous-line no-empty-blocks\n    }\n\n    function setPubKey(\n        bytes32 _signingGroupPubkeyX,\n        bytes32 _signingGroupPubkeyY\n    ) public {\n        self.signingGroupPubkeyX = _signingGroupPubkeyX;\n        self.signingGroupPubkeyY = _signingGroupPubkeyY;\n    }\n\n    function validateAndParseFundingSPVProof(\n        bytes4 _txVersion,\n        bytes memory _txInputVector,\n        bytes memory _txOutputVector,\n        bytes4 _txLocktime,\n        uint8 _fundingOutputIndex,\n        bytes memory _merkleProof,\n        uint256 _txIndexInBlock,\n        bytes memory _bitcoinHeaders\n    ) public view returns (bytes8 _valueBytes, bytes memory _utxoOutpoint){\n        return self.validateAndParseFundingSPVProof(\n            _txVersion,\n            _txInputVector,\n            _txOutputVector,\n            _txLocktime,\n            _fundingOutputIndex,\n            _merkleProof,\n            _txIndexInBlock,\n            _bitcoinHeaders\n        );\n    }\n\n    function checkProofFromTxId(\n        bytes32 _bitcoinTxId,\n        bytes memory _merkleProof,\n        uint256 _index,\n        bytes memory _bitcoinHeaders\n    ) public view returns (bytes32) {\n        self.checkProofFromTxId(_bitcoinTxId, _merkleProof, _index, _bitcoinHeaders);\n    }\n}\n",
  "sourcePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/test/deposit/TestDepositUtils.sol",
  "ast": {
    "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/test/deposit/TestDepositUtils.sol",
    "exportedSymbols": {
      "TestDepositUtils": [
        10045
      ],
      "TestDepositUtilsSPV": [
        10131
      ]
    },
    "id": 10132,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 9854,
        "literals": [
          "solidity",
          "0.5",
          ".17"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:31"
      },
      {
        "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositUtils.sol",
        "file": "../../../contracts/deposit/DepositUtils.sol",
        "id": 9856,
        "nodeType": "ImportDirective",
        "scope": 10132,
        "sourceUnit": 5104,
        "src": "25:73:31",
        "symbolAliases": [
          {
            "foreign": 9855,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/test/deposit/TestDeposit.sol",
        "file": "./TestDeposit.sol",
        "id": 9858,
        "nodeType": "ImportDirective",
        "scope": 10132,
        "sourceUnit": 9853,
        "src": "99:46:31",
        "symbolAliases": [
          {
            "foreign": 9857,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 9859,
              "name": "TestDeposit",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 9852,
              "src": "176:11:31",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_TestDeposit_$9852",
                "typeString": "contract TestDeposit"
              }
            },
            "id": 9860,
            "nodeType": "InheritanceSpecifier",
            "src": "176:11:31"
          }
        ],
        "contractDependencies": [
          1134,
          6251,
          9852
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 10045,
        "linearizedBaseContracts": [
          10045,
          9852,
          1134,
          6251
        ],
        "name": "TestDepositUtils",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 9863,
              "nodeType": "Block",
              "src": "215:59:31",
              "statements": []
            },
            "documentation": null,
            "id": 9864,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9861,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "205:2:31"
            },
            "returnParameters": {
              "id": 9862,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "215:0:31"
            },
            "scope": 10045,
            "src": "194:80:31",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9873,
              "nodeType": "Block",
              "src": "397:53:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9869,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "414:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9870,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "currentBlockDifficulty",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3924,
                      "src": "414:27:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Deposit_$3893_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 9871,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "414:29:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 9868,
                  "id": 9872,
                  "nodeType": "Return",
                  "src": "407:36:31"
                }
              ]
            },
            "documentation": null,
            "id": 9874,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "currentBlockDifficulty",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9865,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "364:2:31"
            },
            "returnParameters": {
              "id": 9868,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9867,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9874,
                  "src": "388:7:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9866,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "388:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "387:9:31"
            },
            "scope": 10045,
            "src": "333:117:31",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9883,
              "nodeType": "Block",
              "src": "521:54:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9879,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "538:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9880,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "previousBlockDifficulty",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3937,
                      "src": "538:28:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Deposit_$3893_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 9881,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "538:30:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 9878,
                  "id": 9882,
                  "nodeType": "Return",
                  "src": "531:37:31"
                }
              ]
            },
            "documentation": null,
            "id": 9884,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "previousBlockDifficulty",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9875,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "488:2:31"
            },
            "returnParameters": {
              "id": 9878,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9877,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9884,
                  "src": "512:7:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9876,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "512:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "511:9:31"
            },
            "scope": 10045,
            "src": "456:119:31",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9894,
              "nodeType": "Block",
              "src": "656:69:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9891,
                        "name": "_bitcoinHeaders",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9886,
                        "src": "702:15:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9889,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "673:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9890,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "evaluateProofDifficulty",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4036,
                      "src": "673:28:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Deposit_$3893_storage_ptr_$_t_bytes_memory_ptr_$returns$__$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer,bytes memory) view"
                      }
                    },
                    "id": 9892,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "673:45:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "functionReturnParameters": 9888,
                  "id": 9893,
                  "nodeType": "Return",
                  "src": "666:52:31"
                }
              ]
            },
            "documentation": null,
            "id": 9895,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "evaluateProofDifficulty",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9887,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9886,
                  "name": "_bitcoinHeaders",
                  "nodeType": "VariableDeclaration",
                  "scope": 9895,
                  "src": "614:28:31",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9885,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "614:5:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "613:30:31"
            },
            "returnParameters": {
              "id": 9888,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "656:0:31"
            },
            "scope": 10045,
            "src": "581:144:31",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9914,
              "nodeType": "Block",
              "src": "839:121:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9906,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9902,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "849:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9904,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "signingGroupPubkeyX",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3864,
                      "src": "849:24:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9905,
                      "name": "_signingGroupPubkeyX",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9897,
                      "src": "876:20:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "849:47:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 9907,
                  "nodeType": "ExpressionStatement",
                  "src": "849:47:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9912,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9908,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "906:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9910,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "signingGroupPubkeyY",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3866,
                      "src": "906:24:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9911,
                      "name": "_signingGroupPubkeyY",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9899,
                      "src": "933:20:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "906:47:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 9913,
                  "nodeType": "ExpressionStatement",
                  "src": "906:47:31"
                }
              ]
            },
            "documentation": null,
            "id": 9915,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setPubKey",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9900,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9897,
                  "name": "_signingGroupPubkeyX",
                  "nodeType": "VariableDeclaration",
                  "scope": 9915,
                  "src": "759:28:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9896,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "759:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9899,
                  "name": "_signingGroupPubkeyY",
                  "nodeType": "VariableDeclaration",
                  "scope": 9915,
                  "src": "797:28:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9898,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "797:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "749:82:31"
            },
            "returnParameters": {
              "id": 9901,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "839:0:31"
            },
            "scope": 10045,
            "src": "731:229:31",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9930,
              "nodeType": "Block",
              "src": "1109:92:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9926,
                        "name": "_txOutputVector",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9917,
                        "src": "1157:15:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9927,
                        "name": "_fundingOutputIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9919,
                        "src": "1174:19:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9924,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "1126:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9925,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "findAndParseFundingOutput",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4150,
                      "src": "1126:30:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Deposit_$3893_storage_ptr_$_t_bytes_memory_ptr_$_t_uint8_$returns$_t_bytes8_$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer,bytes memory,uint8) view returns (bytes8)"
                      }
                    },
                    "id": 9928,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1126:68:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes8",
                      "typeString": "bytes8"
                    }
                  },
                  "functionReturnParameters": 9923,
                  "id": 9929,
                  "nodeType": "Return",
                  "src": "1119:75:31"
                }
              ]
            },
            "documentation": null,
            "id": 9931,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "findAndParseFundingOutput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9920,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9917,
                  "name": "_txOutputVector",
                  "nodeType": "VariableDeclaration",
                  "scope": 9931,
                  "src": "1010:28:31",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9916,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1010:5:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9919,
                  "name": "_fundingOutputIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 9931,
                  "src": "1048:25:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 9918,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1048:5:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1000:79:31"
            },
            "returnParameters": {
              "id": 9923,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9922,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9931,
                  "src": "1101:6:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes8",
                    "typeString": "bytes8"
                  },
                  "typeName": {
                    "id": 9921,
                    "name": "bytes8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1101:6:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes8",
                      "typeString": "bytes8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1100:8:31"
            },
            "scope": 10045,
            "src": "966:235:31",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9940,
              "nodeType": "Block",
              "src": "1258:44:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9936,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "1275:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9937,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "signerFeeTbtc",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4372,
                      "src": "1275:18:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Deposit_$3893_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 9938,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1275:20:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 9935,
                  "id": 9939,
                  "nodeType": "Return",
                  "src": "1268:27:31"
                }
              ]
            },
            "documentation": null,
            "id": 9941,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "signerFee",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9932,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1225:2:31"
            },
            "returnParameters": {
              "id": 9935,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9934,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9941,
                  "src": "1249:7:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9933,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1249:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1248:9:31"
            },
            "scope": 10045,
            "src": "1207:95:31",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9950,
              "nodeType": "Block",
              "src": "1367:43:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9946,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "1384:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9947,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "signerPubkey",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4428,
                      "src": "1384:17:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Deposit_$3893_storage_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer) view returns (bytes memory)"
                      }
                    },
                    "id": 9948,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1384:19:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 9945,
                  "id": 9949,
                  "nodeType": "Return",
                  "src": "1377:26:31"
                }
              ]
            },
            "documentation": null,
            "id": 9951,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "signerPubkey",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9942,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1329:2:31"
            },
            "returnParameters": {
              "id": 9945,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9944,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9951,
                  "src": "1353:12:31",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9943,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1353:5:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1352:14:31"
            },
            "scope": 10045,
            "src": "1308:102:31",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9960,
              "nodeType": "Block",
              "src": "1467:40:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9956,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "1484:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9957,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "signerPKH",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4458,
                      "src": "1484:14:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Deposit_$3893_storage_ptr_$returns$_t_bytes20_$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer) view returns (bytes20)"
                      }
                    },
                    "id": 9958,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1484:16:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes20",
                      "typeString": "bytes20"
                    }
                  },
                  "functionReturnParameters": 9955,
                  "id": 9959,
                  "nodeType": "Return",
                  "src": "1477:23:31"
                }
              ]
            },
            "documentation": null,
            "id": 9961,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "signerPKH",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9952,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1434:2:31"
            },
            "returnParameters": {
              "id": 9955,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9954,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9961,
                  "src": "1458:7:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes20",
                    "typeString": "bytes20"
                  },
                  "typeName": {
                    "id": 9953,
                    "name": "bytes20",
                    "nodeType": "ElementaryTypeName",
                    "src": "1458:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes20",
                      "typeString": "bytes20"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1457:9:31"
            },
            "scope": 10045,
            "src": "1416:91:31",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9970,
              "nodeType": "Block",
              "src": "1572:48:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9966,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "1589:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9967,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "fetchBitcoinPrice",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4484,
                      "src": "1589:22:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Deposit_$3893_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 9968,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1589:24:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 9965,
                  "id": 9969,
                  "nodeType": "Return",
                  "src": "1582:31:31"
                }
              ]
            },
            "documentation": null,
            "id": 9971,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "fetchBitcoinPrice",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9962,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1539:2:31"
            },
            "returnParameters": {
              "id": 9965,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9964,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9971,
                  "src": "1563:7:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9963,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1563:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1562:9:31"
            },
            "scope": 10045,
            "src": "1513:107:31",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9980,
              "nodeType": "Block",
              "src": "1683:46:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9976,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "1700:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9977,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "fetchBondAmount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4503,
                      "src": "1700:20:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Deposit_$3893_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 9978,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1700:22:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 9975,
                  "id": 9979,
                  "nodeType": "Return",
                  "src": "1693:29:31"
                }
              ]
            },
            "documentation": null,
            "id": 9981,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "fetchBondAmount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9972,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1650:2:31"
            },
            "returnParameters": {
              "id": 9975,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9974,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9981,
                  "src": "1674:7:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9973,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1674:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1673:9:31"
            },
            "scope": 10045,
            "src": "1626:103:31",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9990,
              "nodeType": "Block",
              "src": "1805:51:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9986,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "1822:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9987,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "feeRebateTokenHolder",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4582,
                      "src": "1822:25:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Deposit_$3893_storage_ptr_$returns$_t_address_payable_$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer) view returns (address payable)"
                      }
                    },
                    "id": 9988,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1822:27:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "functionReturnParameters": 9985,
                  "id": 9989,
                  "nodeType": "Return",
                  "src": "1815:34:31"
                }
              ]
            },
            "documentation": null,
            "id": 9991,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "feeRebateTokenHolder",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9982,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1764:2:31"
            },
            "returnParameters": {
              "id": 9985,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9984,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9991,
                  "src": "1788:15:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address_payable",
                    "typeString": "address payable"
                  },
                  "typeName": {
                    "id": 9983,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1788:15:31",
                    "stateMutability": "payable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1787:17:31"
            },
            "scope": 10045,
            "src": "1735:121:31",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9998,
              "nodeType": "Block",
              "src": "1899:49:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9994,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "1916:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 9995,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "redemptionTeardown",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4636,
                      "src": "1916:23:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$returns$__$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer)"
                      }
                    },
                    "id": 9996,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1916:25:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "functionReturnParameters": 9993,
                  "id": 9997,
                  "nodeType": "Return",
                  "src": "1909:32:31"
                }
              ]
            },
            "documentation": null,
            "id": 9999,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "redemptionTeardown",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9992,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1889:2:31"
            },
            "returnParameters": {
              "id": 9993,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1899:0:31"
            },
            "scope": 10045,
            "src": "1862:86:31",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10008,
              "nodeType": "Block",
              "src": "2007:47:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 10004,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "2024:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 10005,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "seizeSignerBonds",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4698,
                      "src": "2024:21:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer) returns (uint256)"
                      }
                    },
                    "id": 10006,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2024:23:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 10003,
                  "id": 10007,
                  "nodeType": "Return",
                  "src": "2017:30:31"
                }
              ]
            },
            "documentation": null,
            "id": 10009,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "seizeSignerBonds",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10000,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1979:2:31"
            },
            "returnParameters": {
              "id": 10003,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10002,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10009,
                  "src": "1998:7:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10001,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1998:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1997:9:31"
            },
            "scope": 10045,
            "src": "1954:100:31",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10016,
              "nodeType": "Block",
              "src": "2098:50:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 10012,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "2115:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 10013,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "distributeFeeRebate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4843,
                      "src": "2115:24:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$returns$__$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer)"
                      }
                    },
                    "id": 10014,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2115:26:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "functionReturnParameters": 10011,
                  "id": 10015,
                  "nodeType": "Return",
                  "src": "2108:33:31"
                }
              ]
            },
            "documentation": null,
            "id": 10017,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "distributeFeeRebate",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10010,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2088:2:31"
            },
            "returnParameters": {
              "id": 10011,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2098:0:31"
            },
            "scope": 10045,
            "src": "2060:88:31",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10028,
              "nodeType": "Block",
              "src": "2210:53:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10025,
                        "name": "_ethValue",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10019,
                        "src": "2246:9:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 10022,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "2220:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 10024,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "pushFundsToKeepGroup",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4882,
                      "src": "2220:25:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$_t_uint256_$returns$__$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer,uint256)"
                      }
                    },
                    "id": 10026,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2220:36:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10027,
                  "nodeType": "ExpressionStatement",
                  "src": "2220:36:31"
                }
              ]
            },
            "documentation": null,
            "id": 10029,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "pushFundsToKeepGroup",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10020,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10019,
                  "name": "_ethValue",
                  "nodeType": "VariableDeclaration",
                  "scope": 10029,
                  "src": "2184:17:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10018,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2184:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2183:19:31"
            },
            "returnParameters": {
              "id": 10021,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2210:0:31"
            },
            "scope": 10045,
            "src": "2154:109:31",
            "stateMutability": "nonpayable",
            "superFunction": 9841,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10043,
              "nodeType": "Block",
              "src": "2340:60:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10039,
                        "name": "_withdrawer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10031,
                        "src": "2372:11:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10040,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10033,
                        "src": "2385:7:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 10036,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "2350:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 10038,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "enableWithdrawal",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4722,
                      "src": "2350:21:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$_t_address_$_t_uint256_$returns$__$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer,address,uint256)"
                      }
                    },
                    "id": 10041,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2350:43:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10042,
                  "nodeType": "ExpressionStatement",
                  "src": "2350:43:31"
                }
              ]
            },
            "documentation": null,
            "id": 10044,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "enableWithdrawal",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10034,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10031,
                  "name": "_withdrawer",
                  "nodeType": "VariableDeclaration",
                  "scope": 10044,
                  "src": "2295:19:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10030,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2295:7:31",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10033,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 10044,
                  "src": "2316:15:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10032,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2316:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2294:38:31"
            },
            "returnParameters": {
              "id": 10035,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2340:0:31"
            },
            "scope": 10045,
            "src": "2269:131:31",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 10132,
        "src": "147:2255:31"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10046,
              "name": "TestDeposit",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 9852,
              "src": "2598:11:31",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_TestDeposit_$9852",
                "typeString": "contract TestDeposit"
              }
            },
            "id": 10047,
            "nodeType": "InheritanceSpecifier",
            "src": "2598:11:31"
          }
        ],
        "contractDependencies": [
          1134,
          6251,
          9852
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 10131,
        "linearizedBaseContracts": [
          10131,
          9852,
          1134,
          6251
        ],
        "name": "TestDepositUtilsSPV",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 10050,
              "nodeType": "Block",
              "src": "2637:63:31",
              "statements": []
            },
            "documentation": null,
            "id": 10051,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10048,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2627:2:31"
            },
            "returnParameters": {
              "id": 10049,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2637:0:31"
            },
            "scope": 10131,
            "src": "2616:84:31",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10070,
              "nodeType": "Block",
              "src": "2814:121:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10062,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 10058,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "2824:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 10060,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "signingGroupPubkeyX",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3864,
                      "src": "2824:24:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 10061,
                      "name": "_signingGroupPubkeyX",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10053,
                      "src": "2851:20:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2824:47:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 10063,
                  "nodeType": "ExpressionStatement",
                  "src": "2824:47:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10068,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 10064,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "2881:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 10066,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "signingGroupPubkeyY",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3866,
                      "src": "2881:24:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 10067,
                      "name": "_signingGroupPubkeyY",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10055,
                      "src": "2908:20:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2881:47:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 10069,
                  "nodeType": "ExpressionStatement",
                  "src": "2881:47:31"
                }
              ]
            },
            "documentation": null,
            "id": 10071,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setPubKey",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10056,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10053,
                  "name": "_signingGroupPubkeyX",
                  "nodeType": "VariableDeclaration",
                  "scope": 10071,
                  "src": "2734:28:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10052,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2734:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10055,
                  "name": "_signingGroupPubkeyY",
                  "nodeType": "VariableDeclaration",
                  "scope": 10071,
                  "src": "2772:28:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10054,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2772:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2724:82:31"
            },
            "returnParameters": {
              "id": 10057,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2814:0:31"
            },
            "scope": 10131,
            "src": "2706:229:31",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10106,
              "nodeType": "Block",
              "src": "3327:293:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10096,
                        "name": "_txVersion",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10073,
                        "src": "3394:10:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10097,
                        "name": "_txInputVector",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10075,
                        "src": "3418:14:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10098,
                        "name": "_txOutputVector",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10077,
                        "src": "3446:15:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10099,
                        "name": "_txLocktime",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10079,
                        "src": "3475:11:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10100,
                        "name": "_fundingOutputIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10081,
                        "src": "3500:19:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10101,
                        "name": "_merkleProof",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10083,
                        "src": "3533:12:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10102,
                        "name": "_txIndexInBlock",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10085,
                        "src": "3559:15:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10103,
                        "name": "_bitcoinHeaders",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10087,
                        "src": "3588:15:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 10094,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "3344:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 10095,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "validateAndParseFundingSPVProof",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4237,
                      "src": "3344:36:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Deposit_$3893_storage_ptr_$_t_bytes4_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes4_$_t_uint8_$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes8_$_t_bytes_memory_ptr_$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer,bytes4,bytes memory,bytes memory,bytes4,uint8,bytes memory,uint256,bytes memory) view returns (bytes8,bytes memory)"
                      }
                    },
                    "id": 10104,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3344:269:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes8_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bytes8,bytes memory)"
                    }
                  },
                  "functionReturnParameters": 10093,
                  "id": 10105,
                  "nodeType": "Return",
                  "src": "3337:276:31"
                }
              ]
            },
            "documentation": null,
            "id": 10107,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "validateAndParseFundingSPVProof",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10088,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10073,
                  "name": "_txVersion",
                  "nodeType": "VariableDeclaration",
                  "scope": 10107,
                  "src": "2991:17:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 10072,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "2991:6:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10075,
                  "name": "_txInputVector",
                  "nodeType": "VariableDeclaration",
                  "scope": 10107,
                  "src": "3018:27:31",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 10074,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3018:5:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10077,
                  "name": "_txOutputVector",
                  "nodeType": "VariableDeclaration",
                  "scope": 10107,
                  "src": "3055:28:31",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 10076,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3055:5:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10079,
                  "name": "_txLocktime",
                  "nodeType": "VariableDeclaration",
                  "scope": 10107,
                  "src": "3093:18:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 10078,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "3093:6:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10081,
                  "name": "_fundingOutputIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 10107,
                  "src": "3121:25:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 10080,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "3121:5:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10083,
                  "name": "_merkleProof",
                  "nodeType": "VariableDeclaration",
                  "scope": 10107,
                  "src": "3156:25:31",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 10082,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3156:5:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10085,
                  "name": "_txIndexInBlock",
                  "nodeType": "VariableDeclaration",
                  "scope": 10107,
                  "src": "3191:23:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10084,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3191:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10087,
                  "name": "_bitcoinHeaders",
                  "nodeType": "VariableDeclaration",
                  "scope": 10107,
                  "src": "3224:28:31",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 10086,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3224:5:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2981:277:31"
            },
            "returnParameters": {
              "id": 10093,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10090,
                  "name": "_valueBytes",
                  "nodeType": "VariableDeclaration",
                  "scope": 10107,
                  "src": "3280:18:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes8",
                    "typeString": "bytes8"
                  },
                  "typeName": {
                    "id": 10089,
                    "name": "bytes8",
                    "nodeType": "ElementaryTypeName",
                    "src": "3280:6:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes8",
                      "typeString": "bytes8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10092,
                  "name": "_utxoOutpoint",
                  "nodeType": "VariableDeclaration",
                  "scope": 10107,
                  "src": "3300:26:31",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 10091,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3300:5:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3279:48:31"
            },
            "scope": 10131,
            "src": "2941:679:31",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10129,
              "nodeType": "Block",
              "src": "3817:93:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10123,
                        "name": "_bitcoinTxId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10109,
                        "src": "3851:12:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10124,
                        "name": "_merkleProof",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10111,
                        "src": "3865:12:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10125,
                        "name": "_index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10113,
                        "src": "3879:6:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10126,
                        "name": "_bitcoinHeaders",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10115,
                        "src": "3887:15:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 10120,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 536,
                        "src": "3827:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage",
                          "typeString": "struct DepositUtils.Deposit storage ref"
                        }
                      },
                      "id": 10122,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "checkProofFromTxId",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4069,
                      "src": "3827:23:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Deposit_$3893_storage_ptr_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer,bytes32,bytes memory,uint256,bytes memory) view"
                      }
                    },
                    "id": 10127,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3827:76:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10128,
                  "nodeType": "ExpressionStatement",
                  "src": "3827:76:31"
                }
              ]
            },
            "documentation": null,
            "id": 10130,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "checkProofFromTxId",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10116,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10109,
                  "name": "_bitcoinTxId",
                  "nodeType": "VariableDeclaration",
                  "scope": 10130,
                  "src": "3663:20:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10108,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3663:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10111,
                  "name": "_merkleProof",
                  "nodeType": "VariableDeclaration",
                  "scope": 10130,
                  "src": "3693:25:31",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 10110,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3693:5:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10113,
                  "name": "_index",
                  "nodeType": "VariableDeclaration",
                  "scope": 10130,
                  "src": "3728:14:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10112,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3728:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10115,
                  "name": "_bitcoinHeaders",
                  "nodeType": "VariableDeclaration",
                  "scope": 10130,
                  "src": "3752:28:31",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 10114,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3752:5:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3653:133:31"
            },
            "returnParameters": {
              "id": 10119,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10118,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10130,
                  "src": "3808:7:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10117,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3808:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3807:9:31"
            },
            "scope": 10131,
            "src": "3626:284:31",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 10132,
        "src": "2566:1346:31"
      }
    ],
    "src": "0:3913:31"
  },
  "legacyAST": {
    "attributes": {
      "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/test/deposit/TestDepositUtils.sol",
      "exportedSymbols": {
        "TestDepositUtils": [
          10045
        ],
        "TestDepositUtilsSPV": [
          10131
        ]
      }
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "0.5",
            ".17"
          ]
        },
        "id": 9854,
        "name": "PragmaDirective",
        "src": "0:23:31"
      },
      {
        "attributes": {
          "SourceUnit": 5104,
          "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositUtils.sol",
          "file": "../../../contracts/deposit/DepositUtils.sol",
          "scope": 10132,
          "symbolAliases": [
            {
              "foreign": 9855,
              "local": null
            }
          ],
          "unitAlias": ""
        },
        "id": 9856,
        "name": "ImportDirective",
        "src": "25:73:31"
      },
      {
        "attributes": {
          "SourceUnit": 9853,
          "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/test/deposit/TestDeposit.sol",
          "file": "./TestDeposit.sol",
          "scope": 10132,
          "symbolAliases": [
            {
              "foreign": 9857,
              "local": null
            }
          ],
          "unitAlias": ""
        },
        "id": 9858,
        "name": "ImportDirective",
        "src": "99:46:31"
      },
      {
        "attributes": {
          "contractDependencies": [
            1134,
            6251,
            9852
          ],
          "contractKind": "contract",
          "documentation": null,
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            10045,
            9852,
            1134,
            6251
          ],
          "name": "TestDepositUtils",
          "scope": 10132
        },
        "children": [
          {
            "attributes": {
              "arguments": null
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "TestDeposit",
                  "referencedDeclaration": 9852,
                  "type": "contract TestDeposit"
                },
                "id": 9859,
                "name": "UserDefinedTypeName",
                "src": "176:11:31"
              }
            ],
            "id": 9860,
            "name": "InheritanceSpecifier",
            "src": "176:11:31"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": true,
              "kind": "constructor",
              "modifiers": [
                null
              ],
              "name": "",
              "scope": 10045,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9861,
                "name": "ParameterList",
                "src": "205:2:31"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9862,
                "name": "ParameterList",
                "src": "215:0:31"
              },
              {
                "attributes": {
                  "statements": [
                    null
                  ]
                },
                "children": [],
                "id": 9863,
                "name": "Block",
                "src": "215:59:31"
              }
            ],
            "id": 9864,
            "name": "FunctionDefinition",
            "src": "194:80:31"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "currentBlockDifficulty",
              "scope": 10045,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9865,
                "name": "ParameterList",
                "src": "364:2:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 9874,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 9866,
                        "name": "ElementaryTypeName",
                        "src": "388:7:31"
                      }
                    ],
                    "id": 9867,
                    "name": "VariableDeclaration",
                    "src": "388:7:31"
                  }
                ],
                "id": 9868,
                "name": "ParameterList",
                "src": "387:9:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 9868
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "currentBlockDifficulty",
                              "referencedDeclaration": 3924,
                              "type": "function (struct DepositUtils.Deposit storage pointer) view returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9869,
                                "name": "Identifier",
                                "src": "414:4:31"
                              }
                            ],
                            "id": 9870,
                            "name": "MemberAccess",
                            "src": "414:27:31"
                          }
                        ],
                        "id": 9871,
                        "name": "FunctionCall",
                        "src": "414:29:31"
                      }
                    ],
                    "id": 9872,
                    "name": "Return",
                    "src": "407:36:31"
                  }
                ],
                "id": 9873,
                "name": "Block",
                "src": "397:53:31"
              }
            ],
            "id": 9874,
            "name": "FunctionDefinition",
            "src": "333:117:31"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "previousBlockDifficulty",
              "scope": 10045,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9875,
                "name": "ParameterList",
                "src": "488:2:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 9884,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 9876,
                        "name": "ElementaryTypeName",
                        "src": "512:7:31"
                      }
                    ],
                    "id": 9877,
                    "name": "VariableDeclaration",
                    "src": "512:7:31"
                  }
                ],
                "id": 9878,
                "name": "ParameterList",
                "src": "511:9:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 9878
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "previousBlockDifficulty",
                              "referencedDeclaration": 3937,
                              "type": "function (struct DepositUtils.Deposit storage pointer) view returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9879,
                                "name": "Identifier",
                                "src": "538:4:31"
                              }
                            ],
                            "id": 9880,
                            "name": "MemberAccess",
                            "src": "538:28:31"
                          }
                        ],
                        "id": 9881,
                        "name": "FunctionCall",
                        "src": "538:30:31"
                      }
                    ],
                    "id": 9882,
                    "name": "Return",
                    "src": "531:37:31"
                  }
                ],
                "id": 9883,
                "name": "Block",
                "src": "521:54:31"
              }
            ],
            "id": 9884,
            "name": "FunctionDefinition",
            "src": "456:119:31"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "evaluateProofDifficulty",
              "scope": 10045,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_bitcoinHeaders",
                      "scope": 9895,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 9885,
                        "name": "ElementaryTypeName",
                        "src": "614:5:31"
                      }
                    ],
                    "id": 9886,
                    "name": "VariableDeclaration",
                    "src": "614:28:31"
                  }
                ],
                "id": 9887,
                "name": "ParameterList",
                "src": "613:30:31"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9888,
                "name": "ParameterList",
                "src": "656:0:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 9888
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "evaluateProofDifficulty",
                              "referencedDeclaration": 4036,
                              "type": "function (struct DepositUtils.Deposit storage pointer,bytes memory) view"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9889,
                                "name": "Identifier",
                                "src": "673:4:31"
                              }
                            ],
                            "id": 9890,
                            "name": "MemberAccess",
                            "src": "673:28:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9886,
                              "type": "bytes memory",
                              "value": "_bitcoinHeaders"
                            },
                            "id": 9891,
                            "name": "Identifier",
                            "src": "702:15:31"
                          }
                        ],
                        "id": 9892,
                        "name": "FunctionCall",
                        "src": "673:45:31"
                      }
                    ],
                    "id": 9893,
                    "name": "Return",
                    "src": "666:52:31"
                  }
                ],
                "id": 9894,
                "name": "Block",
                "src": "656:69:31"
              }
            ],
            "id": 9895,
            "name": "FunctionDefinition",
            "src": "581:144:31"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "setPubKey",
              "scope": 10045,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_signingGroupPubkeyX",
                      "scope": 9915,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 9896,
                        "name": "ElementaryTypeName",
                        "src": "759:7:31"
                      }
                    ],
                    "id": 9897,
                    "name": "VariableDeclaration",
                    "src": "759:28:31"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_signingGroupPubkeyY",
                      "scope": 9915,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 9898,
                        "name": "ElementaryTypeName",
                        "src": "797:7:31"
                      }
                    ],
                    "id": 9899,
                    "name": "VariableDeclaration",
                    "src": "797:28:31"
                  }
                ],
                "id": 9900,
                "name": "ParameterList",
                "src": "749:82:31"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9901,
                "name": "ParameterList",
                "src": "839:0:31"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bytes32"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "signingGroupPubkeyX",
                              "referencedDeclaration": 3864,
                              "type": "bytes32"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9902,
                                "name": "Identifier",
                                "src": "849:4:31"
                              }
                            ],
                            "id": 9904,
                            "name": "MemberAccess",
                            "src": "849:24:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9897,
                              "type": "bytes32",
                              "value": "_signingGroupPubkeyX"
                            },
                            "id": 9905,
                            "name": "Identifier",
                            "src": "876:20:31"
                          }
                        ],
                        "id": 9906,
                        "name": "Assignment",
                        "src": "849:47:31"
                      }
                    ],
                    "id": 9907,
                    "name": "ExpressionStatement",
                    "src": "849:47:31"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bytes32"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "signingGroupPubkeyY",
                              "referencedDeclaration": 3866,
                              "type": "bytes32"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9908,
                                "name": "Identifier",
                                "src": "906:4:31"
                              }
                            ],
                            "id": 9910,
                            "name": "MemberAccess",
                            "src": "906:24:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9899,
                              "type": "bytes32",
                              "value": "_signingGroupPubkeyY"
                            },
                            "id": 9911,
                            "name": "Identifier",
                            "src": "933:20:31"
                          }
                        ],
                        "id": 9912,
                        "name": "Assignment",
                        "src": "906:47:31"
                      }
                    ],
                    "id": 9913,
                    "name": "ExpressionStatement",
                    "src": "906:47:31"
                  }
                ],
                "id": 9914,
                "name": "Block",
                "src": "839:121:31"
              }
            ],
            "id": 9915,
            "name": "FunctionDefinition",
            "src": "731:229:31"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "findAndParseFundingOutput",
              "scope": 10045,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_txOutputVector",
                      "scope": 9931,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 9916,
                        "name": "ElementaryTypeName",
                        "src": "1010:5:31"
                      }
                    ],
                    "id": 9917,
                    "name": "VariableDeclaration",
                    "src": "1010:28:31"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_fundingOutputIndex",
                      "scope": 9931,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint8",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint8",
                          "type": "uint8"
                        },
                        "id": 9918,
                        "name": "ElementaryTypeName",
                        "src": "1048:5:31"
                      }
                    ],
                    "id": 9919,
                    "name": "VariableDeclaration",
                    "src": "1048:25:31"
                  }
                ],
                "id": 9920,
                "name": "ParameterList",
                "src": "1000:79:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 9931,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes8",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes8",
                          "type": "bytes8"
                        },
                        "id": 9921,
                        "name": "ElementaryTypeName",
                        "src": "1101:6:31"
                      }
                    ],
                    "id": 9922,
                    "name": "VariableDeclaration",
                    "src": "1101:6:31"
                  }
                ],
                "id": 9923,
                "name": "ParameterList",
                "src": "1100:8:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 9923
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes8",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "findAndParseFundingOutput",
                              "referencedDeclaration": 4150,
                              "type": "function (struct DepositUtils.Deposit storage pointer,bytes memory,uint8) view returns (bytes8)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9924,
                                "name": "Identifier",
                                "src": "1126:4:31"
                              }
                            ],
                            "id": 9925,
                            "name": "MemberAccess",
                            "src": "1126:30:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9917,
                              "type": "bytes memory",
                              "value": "_txOutputVector"
                            },
                            "id": 9926,
                            "name": "Identifier",
                            "src": "1157:15:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9919,
                              "type": "uint8",
                              "value": "_fundingOutputIndex"
                            },
                            "id": 9927,
                            "name": "Identifier",
                            "src": "1174:19:31"
                          }
                        ],
                        "id": 9928,
                        "name": "FunctionCall",
                        "src": "1126:68:31"
                      }
                    ],
                    "id": 9929,
                    "name": "Return",
                    "src": "1119:75:31"
                  }
                ],
                "id": 9930,
                "name": "Block",
                "src": "1109:92:31"
              }
            ],
            "id": 9931,
            "name": "FunctionDefinition",
            "src": "966:235:31"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "signerFee",
              "scope": 10045,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9932,
                "name": "ParameterList",
                "src": "1225:2:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 9941,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 9933,
                        "name": "ElementaryTypeName",
                        "src": "1249:7:31"
                      }
                    ],
                    "id": 9934,
                    "name": "VariableDeclaration",
                    "src": "1249:7:31"
                  }
                ],
                "id": 9935,
                "name": "ParameterList",
                "src": "1248:9:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 9935
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "signerFeeTbtc",
                              "referencedDeclaration": 4372,
                              "type": "function (struct DepositUtils.Deposit storage pointer) view returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9936,
                                "name": "Identifier",
                                "src": "1275:4:31"
                              }
                            ],
                            "id": 9937,
                            "name": "MemberAccess",
                            "src": "1275:18:31"
                          }
                        ],
                        "id": 9938,
                        "name": "FunctionCall",
                        "src": "1275:20:31"
                      }
                    ],
                    "id": 9939,
                    "name": "Return",
                    "src": "1268:27:31"
                  }
                ],
                "id": 9940,
                "name": "Block",
                "src": "1258:44:31"
              }
            ],
            "id": 9941,
            "name": "FunctionDefinition",
            "src": "1207:95:31"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "signerPubkey",
              "scope": 10045,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9942,
                "name": "ParameterList",
                "src": "1329:2:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 9951,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 9943,
                        "name": "ElementaryTypeName",
                        "src": "1353:5:31"
                      }
                    ],
                    "id": 9944,
                    "name": "VariableDeclaration",
                    "src": "1353:12:31"
                  }
                ],
                "id": 9945,
                "name": "ParameterList",
                "src": "1352:14:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 9945
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "signerPubkey",
                              "referencedDeclaration": 4428,
                              "type": "function (struct DepositUtils.Deposit storage pointer) view returns (bytes memory)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9946,
                                "name": "Identifier",
                                "src": "1384:4:31"
                              }
                            ],
                            "id": 9947,
                            "name": "MemberAccess",
                            "src": "1384:17:31"
                          }
                        ],
                        "id": 9948,
                        "name": "FunctionCall",
                        "src": "1384:19:31"
                      }
                    ],
                    "id": 9949,
                    "name": "Return",
                    "src": "1377:26:31"
                  }
                ],
                "id": 9950,
                "name": "Block",
                "src": "1367:43:31"
              }
            ],
            "id": 9951,
            "name": "FunctionDefinition",
            "src": "1308:102:31"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "signerPKH",
              "scope": 10045,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9952,
                "name": "ParameterList",
                "src": "1434:2:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 9961,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes20",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes20",
                          "type": "bytes20"
                        },
                        "id": 9953,
                        "name": "ElementaryTypeName",
                        "src": "1458:7:31"
                      }
                    ],
                    "id": 9954,
                    "name": "VariableDeclaration",
                    "src": "1458:7:31"
                  }
                ],
                "id": 9955,
                "name": "ParameterList",
                "src": "1457:9:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 9955
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes20",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "signerPKH",
                              "referencedDeclaration": 4458,
                              "type": "function (struct DepositUtils.Deposit storage pointer) view returns (bytes20)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9956,
                                "name": "Identifier",
                                "src": "1484:4:31"
                              }
                            ],
                            "id": 9957,
                            "name": "MemberAccess",
                            "src": "1484:14:31"
                          }
                        ],
                        "id": 9958,
                        "name": "FunctionCall",
                        "src": "1484:16:31"
                      }
                    ],
                    "id": 9959,
                    "name": "Return",
                    "src": "1477:23:31"
                  }
                ],
                "id": 9960,
                "name": "Block",
                "src": "1467:40:31"
              }
            ],
            "id": 9961,
            "name": "FunctionDefinition",
            "src": "1416:91:31"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "fetchBitcoinPrice",
              "scope": 10045,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9962,
                "name": "ParameterList",
                "src": "1539:2:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 9971,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 9963,
                        "name": "ElementaryTypeName",
                        "src": "1563:7:31"
                      }
                    ],
                    "id": 9964,
                    "name": "VariableDeclaration",
                    "src": "1563:7:31"
                  }
                ],
                "id": 9965,
                "name": "ParameterList",
                "src": "1562:9:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 9965
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "fetchBitcoinPrice",
                              "referencedDeclaration": 4484,
                              "type": "function (struct DepositUtils.Deposit storage pointer) view returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9966,
                                "name": "Identifier",
                                "src": "1589:4:31"
                              }
                            ],
                            "id": 9967,
                            "name": "MemberAccess",
                            "src": "1589:22:31"
                          }
                        ],
                        "id": 9968,
                        "name": "FunctionCall",
                        "src": "1589:24:31"
                      }
                    ],
                    "id": 9969,
                    "name": "Return",
                    "src": "1582:31:31"
                  }
                ],
                "id": 9970,
                "name": "Block",
                "src": "1572:48:31"
              }
            ],
            "id": 9971,
            "name": "FunctionDefinition",
            "src": "1513:107:31"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "fetchBondAmount",
              "scope": 10045,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9972,
                "name": "ParameterList",
                "src": "1650:2:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 9981,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 9973,
                        "name": "ElementaryTypeName",
                        "src": "1674:7:31"
                      }
                    ],
                    "id": 9974,
                    "name": "VariableDeclaration",
                    "src": "1674:7:31"
                  }
                ],
                "id": 9975,
                "name": "ParameterList",
                "src": "1673:9:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 9975
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "fetchBondAmount",
                              "referencedDeclaration": 4503,
                              "type": "function (struct DepositUtils.Deposit storage pointer) view returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9976,
                                "name": "Identifier",
                                "src": "1700:4:31"
                              }
                            ],
                            "id": 9977,
                            "name": "MemberAccess",
                            "src": "1700:20:31"
                          }
                        ],
                        "id": 9978,
                        "name": "FunctionCall",
                        "src": "1700:22:31"
                      }
                    ],
                    "id": 9979,
                    "name": "Return",
                    "src": "1693:29:31"
                  }
                ],
                "id": 9980,
                "name": "Block",
                "src": "1683:46:31"
              }
            ],
            "id": 9981,
            "name": "FunctionDefinition",
            "src": "1626:103:31"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "feeRebateTokenHolder",
              "scope": 10045,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9982,
                "name": "ParameterList",
                "src": "1764:2:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 9991,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address payable",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "payable",
                          "type": "address payable"
                        },
                        "id": 9983,
                        "name": "ElementaryTypeName",
                        "src": "1788:15:31"
                      }
                    ],
                    "id": 9984,
                    "name": "VariableDeclaration",
                    "src": "1788:15:31"
                  }
                ],
                "id": 9985,
                "name": "ParameterList",
                "src": "1787:17:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 9985
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "address payable",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "feeRebateTokenHolder",
                              "referencedDeclaration": 4582,
                              "type": "function (struct DepositUtils.Deposit storage pointer) view returns (address payable)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9986,
                                "name": "Identifier",
                                "src": "1822:4:31"
                              }
                            ],
                            "id": 9987,
                            "name": "MemberAccess",
                            "src": "1822:25:31"
                          }
                        ],
                        "id": 9988,
                        "name": "FunctionCall",
                        "src": "1822:27:31"
                      }
                    ],
                    "id": 9989,
                    "name": "Return",
                    "src": "1815:34:31"
                  }
                ],
                "id": 9990,
                "name": "Block",
                "src": "1805:51:31"
              }
            ],
            "id": 9991,
            "name": "FunctionDefinition",
            "src": "1735:121:31"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "redemptionTeardown",
              "scope": 10045,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9992,
                "name": "ParameterList",
                "src": "1889:2:31"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 9993,
                "name": "ParameterList",
                "src": "1899:0:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 9993
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "redemptionTeardown",
                              "referencedDeclaration": 4636,
                              "type": "function (struct DepositUtils.Deposit storage pointer)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 9994,
                                "name": "Identifier",
                                "src": "1916:4:31"
                              }
                            ],
                            "id": 9995,
                            "name": "MemberAccess",
                            "src": "1916:23:31"
                          }
                        ],
                        "id": 9996,
                        "name": "FunctionCall",
                        "src": "1916:25:31"
                      }
                    ],
                    "id": 9997,
                    "name": "Return",
                    "src": "1909:32:31"
                  }
                ],
                "id": 9998,
                "name": "Block",
                "src": "1899:49:31"
              }
            ],
            "id": 9999,
            "name": "FunctionDefinition",
            "src": "1862:86:31"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "seizeSignerBonds",
              "scope": 10045,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 10000,
                "name": "ParameterList",
                "src": "1979:2:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 10009,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 10001,
                        "name": "ElementaryTypeName",
                        "src": "1998:7:31"
                      }
                    ],
                    "id": 10002,
                    "name": "VariableDeclaration",
                    "src": "1998:7:31"
                  }
                ],
                "id": 10003,
                "name": "ParameterList",
                "src": "1997:9:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 10003
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "seizeSignerBonds",
                              "referencedDeclaration": 4698,
                              "type": "function (struct DepositUtils.Deposit storage pointer) returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 10004,
                                "name": "Identifier",
                                "src": "2024:4:31"
                              }
                            ],
                            "id": 10005,
                            "name": "MemberAccess",
                            "src": "2024:21:31"
                          }
                        ],
                        "id": 10006,
                        "name": "FunctionCall",
                        "src": "2024:23:31"
                      }
                    ],
                    "id": 10007,
                    "name": "Return",
                    "src": "2017:30:31"
                  }
                ],
                "id": 10008,
                "name": "Block",
                "src": "2007:47:31"
              }
            ],
            "id": 10009,
            "name": "FunctionDefinition",
            "src": "1954:100:31"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "distributeFeeRebate",
              "scope": 10045,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 10010,
                "name": "ParameterList",
                "src": "2088:2:31"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 10011,
                "name": "ParameterList",
                "src": "2098:0:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 10011
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "distributeFeeRebate",
                              "referencedDeclaration": 4843,
                              "type": "function (struct DepositUtils.Deposit storage pointer)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 10012,
                                "name": "Identifier",
                                "src": "2115:4:31"
                              }
                            ],
                            "id": 10013,
                            "name": "MemberAccess",
                            "src": "2115:24:31"
                          }
                        ],
                        "id": 10014,
                        "name": "FunctionCall",
                        "src": "2115:26:31"
                      }
                    ],
                    "id": 10015,
                    "name": "Return",
                    "src": "2108:33:31"
                  }
                ],
                "id": 10016,
                "name": "Block",
                "src": "2098:50:31"
              }
            ],
            "id": 10017,
            "name": "FunctionDefinition",
            "src": "2060:88:31"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "pushFundsToKeepGroup",
              "scope": 10045,
              "stateMutability": "nonpayable",
              "superFunction": 9841,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_ethValue",
                      "scope": 10029,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 10018,
                        "name": "ElementaryTypeName",
                        "src": "2184:7:31"
                      }
                    ],
                    "id": 10019,
                    "name": "VariableDeclaration",
                    "src": "2184:17:31"
                  }
                ],
                "id": 10020,
                "name": "ParameterList",
                "src": "2183:19:31"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 10021,
                "name": "ParameterList",
                "src": "2210:0:31"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "pushFundsToKeepGroup",
                              "referencedDeclaration": 4882,
                              "type": "function (struct DepositUtils.Deposit storage pointer,uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 10022,
                                "name": "Identifier",
                                "src": "2220:4:31"
                              }
                            ],
                            "id": 10024,
                            "name": "MemberAccess",
                            "src": "2220:25:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10019,
                              "type": "uint256",
                              "value": "_ethValue"
                            },
                            "id": 10025,
                            "name": "Identifier",
                            "src": "2246:9:31"
                          }
                        ],
                        "id": 10026,
                        "name": "FunctionCall",
                        "src": "2220:36:31"
                      }
                    ],
                    "id": 10027,
                    "name": "ExpressionStatement",
                    "src": "2220:36:31"
                  }
                ],
                "id": 10028,
                "name": "Block",
                "src": "2210:53:31"
              }
            ],
            "id": 10029,
            "name": "FunctionDefinition",
            "src": "2154:109:31"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "enableWithdrawal",
              "scope": 10045,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_withdrawer",
                      "scope": 10044,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 10030,
                        "name": "ElementaryTypeName",
                        "src": "2295:7:31"
                      }
                    ],
                    "id": 10031,
                    "name": "VariableDeclaration",
                    "src": "2295:19:31"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_amount",
                      "scope": 10044,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 10032,
                        "name": "ElementaryTypeName",
                        "src": "2316:7:31"
                      }
                    ],
                    "id": 10033,
                    "name": "VariableDeclaration",
                    "src": "2316:15:31"
                  }
                ],
                "id": 10034,
                "name": "ParameterList",
                "src": "2294:38:31"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 10035,
                "name": "ParameterList",
                "src": "2340:0:31"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "enableWithdrawal",
                              "referencedDeclaration": 4722,
                              "type": "function (struct DepositUtils.Deposit storage pointer,address,uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 10036,
                                "name": "Identifier",
                                "src": "2350:4:31"
                              }
                            ],
                            "id": 10038,
                            "name": "MemberAccess",
                            "src": "2350:21:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10031,
                              "type": "address",
                              "value": "_withdrawer"
                            },
                            "id": 10039,
                            "name": "Identifier",
                            "src": "2372:11:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10033,
                              "type": "uint256",
                              "value": "_amount"
                            },
                            "id": 10040,
                            "name": "Identifier",
                            "src": "2385:7:31"
                          }
                        ],
                        "id": 10041,
                        "name": "FunctionCall",
                        "src": "2350:43:31"
                      }
                    ],
                    "id": 10042,
                    "name": "ExpressionStatement",
                    "src": "2350:43:31"
                  }
                ],
                "id": 10043,
                "name": "Block",
                "src": "2340:60:31"
              }
            ],
            "id": 10044,
            "name": "FunctionDefinition",
            "src": "2269:131:31"
          }
        ],
        "id": 10045,
        "name": "ContractDefinition",
        "src": "147:2255:31"
      },
      {
        "attributes": {
          "contractDependencies": [
            1134,
            6251,
            9852
          ],
          "contractKind": "contract",
          "documentation": null,
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            10131,
            9852,
            1134,
            6251
          ],
          "name": "TestDepositUtilsSPV",
          "scope": 10132
        },
        "children": [
          {
            "attributes": {
              "arguments": null
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "TestDeposit",
                  "referencedDeclaration": 9852,
                  "type": "contract TestDeposit"
                },
                "id": 10046,
                "name": "UserDefinedTypeName",
                "src": "2598:11:31"
              }
            ],
            "id": 10047,
            "name": "InheritanceSpecifier",
            "src": "2598:11:31"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": true,
              "kind": "constructor",
              "modifiers": [
                null
              ],
              "name": "",
              "scope": 10131,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 10048,
                "name": "ParameterList",
                "src": "2627:2:31"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 10049,
                "name": "ParameterList",
                "src": "2637:0:31"
              },
              {
                "attributes": {
                  "statements": [
                    null
                  ]
                },
                "children": [],
                "id": 10050,
                "name": "Block",
                "src": "2637:63:31"
              }
            ],
            "id": 10051,
            "name": "FunctionDefinition",
            "src": "2616:84:31"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "setPubKey",
              "scope": 10131,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_signingGroupPubkeyX",
                      "scope": 10071,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 10052,
                        "name": "ElementaryTypeName",
                        "src": "2734:7:31"
                      }
                    ],
                    "id": 10053,
                    "name": "VariableDeclaration",
                    "src": "2734:28:31"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_signingGroupPubkeyY",
                      "scope": 10071,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 10054,
                        "name": "ElementaryTypeName",
                        "src": "2772:7:31"
                      }
                    ],
                    "id": 10055,
                    "name": "VariableDeclaration",
                    "src": "2772:28:31"
                  }
                ],
                "id": 10056,
                "name": "ParameterList",
                "src": "2724:82:31"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 10057,
                "name": "ParameterList",
                "src": "2814:0:31"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bytes32"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "signingGroupPubkeyX",
                              "referencedDeclaration": 3864,
                              "type": "bytes32"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 10058,
                                "name": "Identifier",
                                "src": "2824:4:31"
                              }
                            ],
                            "id": 10060,
                            "name": "MemberAccess",
                            "src": "2824:24:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10053,
                              "type": "bytes32",
                              "value": "_signingGroupPubkeyX"
                            },
                            "id": 10061,
                            "name": "Identifier",
                            "src": "2851:20:31"
                          }
                        ],
                        "id": 10062,
                        "name": "Assignment",
                        "src": "2824:47:31"
                      }
                    ],
                    "id": 10063,
                    "name": "ExpressionStatement",
                    "src": "2824:47:31"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bytes32"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "signingGroupPubkeyY",
                              "referencedDeclaration": 3866,
                              "type": "bytes32"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 10064,
                                "name": "Identifier",
                                "src": "2881:4:31"
                              }
                            ],
                            "id": 10066,
                            "name": "MemberAccess",
                            "src": "2881:24:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10055,
                              "type": "bytes32",
                              "value": "_signingGroupPubkeyY"
                            },
                            "id": 10067,
                            "name": "Identifier",
                            "src": "2908:20:31"
                          }
                        ],
                        "id": 10068,
                        "name": "Assignment",
                        "src": "2881:47:31"
                      }
                    ],
                    "id": 10069,
                    "name": "ExpressionStatement",
                    "src": "2881:47:31"
                  }
                ],
                "id": 10070,
                "name": "Block",
                "src": "2814:121:31"
              }
            ],
            "id": 10071,
            "name": "FunctionDefinition",
            "src": "2706:229:31"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "validateAndParseFundingSPVProof",
              "scope": 10131,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_txVersion",
                      "scope": 10107,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes4",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes4",
                          "type": "bytes4"
                        },
                        "id": 10072,
                        "name": "ElementaryTypeName",
                        "src": "2991:6:31"
                      }
                    ],
                    "id": 10073,
                    "name": "VariableDeclaration",
                    "src": "2991:17:31"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_txInputVector",
                      "scope": 10107,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 10074,
                        "name": "ElementaryTypeName",
                        "src": "3018:5:31"
                      }
                    ],
                    "id": 10075,
                    "name": "VariableDeclaration",
                    "src": "3018:27:31"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_txOutputVector",
                      "scope": 10107,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 10076,
                        "name": "ElementaryTypeName",
                        "src": "3055:5:31"
                      }
                    ],
                    "id": 10077,
                    "name": "VariableDeclaration",
                    "src": "3055:28:31"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_txLocktime",
                      "scope": 10107,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes4",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes4",
                          "type": "bytes4"
                        },
                        "id": 10078,
                        "name": "ElementaryTypeName",
                        "src": "3093:6:31"
                      }
                    ],
                    "id": 10079,
                    "name": "VariableDeclaration",
                    "src": "3093:18:31"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_fundingOutputIndex",
                      "scope": 10107,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint8",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint8",
                          "type": "uint8"
                        },
                        "id": 10080,
                        "name": "ElementaryTypeName",
                        "src": "3121:5:31"
                      }
                    ],
                    "id": 10081,
                    "name": "VariableDeclaration",
                    "src": "3121:25:31"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_merkleProof",
                      "scope": 10107,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 10082,
                        "name": "ElementaryTypeName",
                        "src": "3156:5:31"
                      }
                    ],
                    "id": 10083,
                    "name": "VariableDeclaration",
                    "src": "3156:25:31"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_txIndexInBlock",
                      "scope": 10107,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 10084,
                        "name": "ElementaryTypeName",
                        "src": "3191:7:31"
                      }
                    ],
                    "id": 10085,
                    "name": "VariableDeclaration",
                    "src": "3191:23:31"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_bitcoinHeaders",
                      "scope": 10107,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 10086,
                        "name": "ElementaryTypeName",
                        "src": "3224:5:31"
                      }
                    ],
                    "id": 10087,
                    "name": "VariableDeclaration",
                    "src": "3224:28:31"
                  }
                ],
                "id": 10088,
                "name": "ParameterList",
                "src": "2981:277:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_valueBytes",
                      "scope": 10107,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes8",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes8",
                          "type": "bytes8"
                        },
                        "id": 10089,
                        "name": "ElementaryTypeName",
                        "src": "3280:6:31"
                      }
                    ],
                    "id": 10090,
                    "name": "VariableDeclaration",
                    "src": "3280:18:31"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_utxoOutpoint",
                      "scope": 10107,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 10091,
                        "name": "ElementaryTypeName",
                        "src": "3300:5:31"
                      }
                    ],
                    "id": 10092,
                    "name": "VariableDeclaration",
                    "src": "3300:26:31"
                  }
                ],
                "id": 10093,
                "name": "ParameterList",
                "src": "3279:48:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 10093
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple(bytes8,bytes memory)",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "validateAndParseFundingSPVProof",
                              "referencedDeclaration": 4237,
                              "type": "function (struct DepositUtils.Deposit storage pointer,bytes4,bytes memory,bytes memory,bytes4,uint8,bytes memory,uint256,bytes memory) view returns (bytes8,bytes memory)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 10094,
                                "name": "Identifier",
                                "src": "3344:4:31"
                              }
                            ],
                            "id": 10095,
                            "name": "MemberAccess",
                            "src": "3344:36:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10073,
                              "type": "bytes4",
                              "value": "_txVersion"
                            },
                            "id": 10096,
                            "name": "Identifier",
                            "src": "3394:10:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10075,
                              "type": "bytes memory",
                              "value": "_txInputVector"
                            },
                            "id": 10097,
                            "name": "Identifier",
                            "src": "3418:14:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10077,
                              "type": "bytes memory",
                              "value": "_txOutputVector"
                            },
                            "id": 10098,
                            "name": "Identifier",
                            "src": "3446:15:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10079,
                              "type": "bytes4",
                              "value": "_txLocktime"
                            },
                            "id": 10099,
                            "name": "Identifier",
                            "src": "3475:11:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10081,
                              "type": "uint8",
                              "value": "_fundingOutputIndex"
                            },
                            "id": 10100,
                            "name": "Identifier",
                            "src": "3500:19:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10083,
                              "type": "bytes memory",
                              "value": "_merkleProof"
                            },
                            "id": 10101,
                            "name": "Identifier",
                            "src": "3533:12:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10085,
                              "type": "uint256",
                              "value": "_txIndexInBlock"
                            },
                            "id": 10102,
                            "name": "Identifier",
                            "src": "3559:15:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10087,
                              "type": "bytes memory",
                              "value": "_bitcoinHeaders"
                            },
                            "id": 10103,
                            "name": "Identifier",
                            "src": "3588:15:31"
                          }
                        ],
                        "id": 10104,
                        "name": "FunctionCall",
                        "src": "3344:269:31"
                      }
                    ],
                    "id": 10105,
                    "name": "Return",
                    "src": "3337:276:31"
                  }
                ],
                "id": 10106,
                "name": "Block",
                "src": "3327:293:31"
              }
            ],
            "id": 10107,
            "name": "FunctionDefinition",
            "src": "2941:679:31"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "checkProofFromTxId",
              "scope": 10131,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_bitcoinTxId",
                      "scope": 10130,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 10108,
                        "name": "ElementaryTypeName",
                        "src": "3663:7:31"
                      }
                    ],
                    "id": 10109,
                    "name": "VariableDeclaration",
                    "src": "3663:20:31"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_merkleProof",
                      "scope": 10130,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 10110,
                        "name": "ElementaryTypeName",
                        "src": "3693:5:31"
                      }
                    ],
                    "id": 10111,
                    "name": "VariableDeclaration",
                    "src": "3693:25:31"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_index",
                      "scope": 10130,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 10112,
                        "name": "ElementaryTypeName",
                        "src": "3728:7:31"
                      }
                    ],
                    "id": 10113,
                    "name": "VariableDeclaration",
                    "src": "3728:14:31"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_bitcoinHeaders",
                      "scope": 10130,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 10114,
                        "name": "ElementaryTypeName",
                        "src": "3752:5:31"
                      }
                    ],
                    "id": 10115,
                    "name": "VariableDeclaration",
                    "src": "3752:28:31"
                  }
                ],
                "id": 10116,
                "name": "ParameterList",
                "src": "3653:133:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 10130,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 10117,
                        "name": "ElementaryTypeName",
                        "src": "3808:7:31"
                      }
                    ],
                    "id": 10118,
                    "name": "VariableDeclaration",
                    "src": "3808:7:31"
                  }
                ],
                "id": 10119,
                "name": "ParameterList",
                "src": "3807:9:31"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "checkProofFromTxId",
                              "referencedDeclaration": 4069,
                              "type": "function (struct DepositUtils.Deposit storage pointer,bytes32,bytes memory,uint256,bytes memory) view"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 536,
                                  "type": "struct DepositUtils.Deposit storage ref",
                                  "value": "self"
                                },
                                "id": 10120,
                                "name": "Identifier",
                                "src": "3827:4:31"
                              }
                            ],
                            "id": 10122,
                            "name": "MemberAccess",
                            "src": "3827:23:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10109,
                              "type": "bytes32",
                              "value": "_bitcoinTxId"
                            },
                            "id": 10123,
                            "name": "Identifier",
                            "src": "3851:12:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10111,
                              "type": "bytes memory",
                              "value": "_merkleProof"
                            },
                            "id": 10124,
                            "name": "Identifier",
                            "src": "3865:12:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10113,
                              "type": "uint256",
                              "value": "_index"
                            },
                            "id": 10125,
                            "name": "Identifier",
                            "src": "3879:6:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10115,
                              "type": "bytes memory",
                              "value": "_bitcoinHeaders"
                            },
                            "id": 10126,
                            "name": "Identifier",
                            "src": "3887:15:31"
                          }
                        ],
                        "id": 10127,
                        "name": "FunctionCall",
                        "src": "3827:76:31"
                      }
                    ],
                    "id": 10128,
                    "name": "ExpressionStatement",
                    "src": "3827:76:31"
                  }
                ],
                "id": 10129,
                "name": "Block",
                "src": "3817:93:31"
              }
            ],
            "id": 10130,
            "name": "FunctionDefinition",
            "src": "3626:284:31"
          }
        ],
        "id": 10131,
        "name": "ContractDefinition",
        "src": "2566:1346:31"
      }
    ],
    "id": 10132,
    "name": "SourceUnit",
    "src": "0:3913:31"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.17+commit.d19bba13.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.3.4",
  "updatedAt": "2021-11-23T11:52:09.349Z",
  "devdoc": {
    "methods": {
      "auctionValue()": {
        "details": "This call will revert if the deposit is not in a state where an      auction is currently in progress.",
        "return": "The value in wei that would be received in exchange for the         deposit's lot size in TBTC if `purchaseSignerBondsAtAuction`         were called at the time this function is called."
      },
      "collateralizationPercentage()": {
        "details": "This value represents the percentage of the backing BTC value the      signers currently must hold as bond.",
        "return": "The current collateralization level for this deposit."
      },
      "currentState()": {
        "details": "We implement this because contracts don't handle foreign enums      well. See `DepositStates` for more info on states.",
        "return": "The 0-indexed state from the DepositStates enum."
      },
      "exitCourtesyCall()": {
        "details": "This call will revert if collateral is still below the      undercollateralized threshold according to the price feed."
      },
      "fundingInfo()": {
        "details": "This call will revert if the deposit is not in a state where the      funding info should be valid. In particular, before funding proof      is successfully submitted (i.e. in states START,      AWAITING_SIGNER_SETUP, and AWAITING_BTC_FUNDING_PROOF), none of      these values are set or valid.",
        "return": "A tuple of (uxtoValueBytes, fundedAt, uxtoOutpoint)."
      },
      "getOwnerRedemptionTbtcRequirement(address)": {
        "params": {
          "_redeemer": "The assumed owner of the deposit's TDT ."
        },
        "return": "The amount in TBTC needed to redeem the deposit."
      },
      "getRedemptionTbtcRequirement(address)": {
        "details": "This call will revert if redemption is not possible by _redeemer.",
        "params": {
          "_redeemer": "The deposit redeemer whose TBTC requirement is being        requested."
        },
        "return": "The amount in TBTC needed by the `_redeemer` to redeem the         deposit."
      },
      "inActive()": {
        "return": "True if state is ACTIVE, false otherwise."
      },
      "increaseRedemptionFee(bytes8,bytes8)": {
        "details": "This call will revert if the fee is already at its maximum, or if      the new requested fee is not a multiple of the initial requested      fee. Transaction fees can only be bumped by the amount of the      initial requested fee. Calling this sends the deposit back to      the `AWAITING_WITHDRAWAL_SIGNATURE` state and requires the signers      to `provideRedemptionSignature` for the new output value in a      timely fashion.",
        "params": {
          "_newOutputValueBytes": "The new output's value.",
          "_previousOutputValueBytes": "The previous output's value."
        }
      },
      "initialCollateralizedPercent()": {
        "details": "This value represents the percentage of the backing BTC value      the signers hold initially. It is set at creation time.",
        "return": "The initial collateralization level for this deposit."
      },
      "initialize(address)": {
        "details": "Since this function is not access-controlled, it should be called      transactionally with contract instantiation. In cases where a      regular contract directly inherits from DepositFactoryAuthority,      that should happen in the constructor. In cases where the inheritor      is binstead used via a clone factory, the same function that      creates a new clone should also trigger initialization."
      },
      "keepAddress()": {
        "details": "The keep contract address is saved on Deposit initialization.",
        "return": "Address of the Keep contract."
      },
      "lotSizeSatoshis()": {
        "return": "uint64 lot size in satoshis."
      },
      "lotSizeTbtc()": {
        "details": "This is the same as lotSizeSatoshis(), but is multiplied to scale      to 18 decimal places.",
        "return": "uint256 lot size in TBTC precision (max 18 decimal places)."
      },
      "notifyCourtesyCall()": {
        "details": "This call will revert if the signers are not in fact      undercollateralized according to the price feed. After      TBTCConstants.COURTESY_CALL_DURATION, courtesy call times out and      regular abort liquidation occurs; see      `notifyCourtesyTimedOut`."
      },
      "notifyCourtesyCallExpired()": {
        "details": "This call will revert if the courtesy call period has not in fact      expired or is not in the courtesy call state. Courtesy call      expiration is treated as an abort, and is handled by seizing signer      bonds and putting them up for auction for the lot size amount in      TBTC (see `purchaseSignerBondsAtAuction`). Emits a      LiquidationStarted event. The caller is captured as the liquidation      initiator, and is eligible for 50% of any bond left after the      auction is completed."
      },
      "notifyFundingTimedOut()": {
        "details": "This is considered a funder fault, and the funder's payment for      opening the deposit is not refunded. Emits a SetupFailed event.      Reverts if the funding timeout has not yet elapsed, or if the      deposit is not currently awaiting funding proof."
      },
      "notifyRedemptionProofTimedOut()": {
        "details": "This call will revert if the deposit is not currently awaiting a      signature or if the allotted time has not yet elapsed. This is      considered an abort, and is punished by seizing signer bonds and      putting them up for auction for the lot size amount in TBTC (see      `purchaseSignerBondsAtAuction`). Emits a LiquidationStarted event.      The caller is captured as the liquidation initiator, and      is eligible for 50% of any bond left after the auction is     completed."
      },
      "notifyRedemptionSignatureTimedOut()": {
        "details": "This is considered an abort, and is punished by seizing signer      bonds and putting them up for auction. Emits a LiquidationStarted      event and a Liquidated event and sends the full signer bond to the      redeemer. Reverts if the deposit is not currently awaiting a      signature or if the allotted time has not yet elapsed. The caller      is captured as the liquidation initiator, and is eligible for 50%      of any bond left after the auction is completed."
      },
      "notifySignerSetupFailed()": {
        "details": "This is considered a signer fault, and the signers' bonds are used      to make the deposit setup fee available for withdrawal by the TDT      holder as a refund. The remainder of the signers' bonds are      returned to the bonding pool and the signers are released from any      further responsibilities. Reverts if the deposit is not awaiting      signer setup or if the signing group formation timeout has not      elapsed."
      },
      "notifyUndercollateralizedLiquidation()": {
        "details": "Calls out to the system for oracle info.This call will revert if the signers are not in fact severely      undercollateralized according to the price feed. Severe      undercollateralization is treated as an abort, and is handled by      seizing signer bonds and putting them up for auction in exchange      for the lot size amount in TBTC (see      `purchaseSignerBondsAtAuction`). Emits a LiquidationStarted event.      The caller is captured as the liquidation initiator, and is      eligible for 50% of any bond left after the auction is completed."
      },
      "provideBTCFundingProof(bytes4,bytes,bytes,bytes4,uint8,bytes,uint256,bytes)": {
        "details": "Takes a pre-parsed transaction and calculates values needed to      verify funding.",
        "params": {
          "_bitcoinHeaders": "Single bytestring of 80-byte bitcoin headers,        lowest height first.",
          "_fundingOutputIndex": "Index of funding output in _txOutputVector        (0-indexed).",
          "_merkleProof": "The merkle proof of transaction inclusion in a        block.",
          "_txIndexInBlock": "Transaction index in the block (0-indexed).",
          "_txInputVector": "All transaction inputs prepended by the number of        inputs encoded as a VarInt, max 0xFC(252) inputs.",
          "_txLocktime": "Final 4 bytes of the transaction.",
          "_txOutputVector": "All transaction outputs prepended by the number         of outputs encoded as a VarInt, max 0xFC(252) outputs.",
          "_txVersion": "Transaction version number (4-byte little-endian)."
        }
      },
      "provideECDSAFraudProof(uint8,bytes32,bytes32,bytes32,bytes)": {
        "details": "This call will revert if the underlying keep cannot verify that      there was fraud. Fraud is handled by seizing signer bonds and      putting them up for auction in exchange for the lot size amount in      TBTC (see `purchaseSignerBondsAtAuction`). Emits a      LiquidationStarted event. The caller is captured as the liquidation      initiator, and is eligible for any bond left after the auction is      completed.",
        "params": {
          "_preimage": "The sha256 preimage of the digest.",
          "_r": "Signature R value.",
          "_s": "Signature S value.",
          "_signedDigest": "The digest signed by the signature (v,r,s) tuple.",
          "_v": "Signature recovery value."
        }
      },
      "provideFundingECDSAFraudProof(uint8,bytes32,bytes32,bytes32,bytes)": {
        "details": "Calls out to the keep to verify if there was fraud.",
        "params": {
          "_preimage": "The sha256 preimage of the digest.",
          "_r": "Signature R value.",
          "_s": "Signature S value.",
          "_signedDigest": "The digest signed by the signature (v,r,s) tuple.",
          "_v": "Signature recovery value."
        }
      },
      "provideRedemptionProof(bytes4,bytes,bytes,bytes4,bytes,uint256,bytes)": {
        "details": "Takes a pre-parsed transaction and calculates values needed to      verify funding. Signers can have their bonds seized if this is not      called within `TBTCConstants.REDEMPTION_PROOF_TIMEOUT` seconds of      a redemption signature being provided.",
        "params": {
          "_bitcoinHeaders": "Single bytestring of 80-byte bitcoin headers,        lowest height first.",
          "_merkleProof": "The merkle proof of transaction inclusion in a        block.",
          "_txIndexInBlock": "Transaction index in the block (0-indexed).",
          "_txInputVector": "All transaction inputs prepended by the number of        inputs encoded as a VarInt, max 0xFC(252) inputs.",
          "_txLocktime": "Final 4 bytes of the transaction.",
          "_txOutputVector": "All transaction outputs prepended by the number         of outputs encoded as a VarInt, max 0xFC(252) outputs.",
          "_txVersion": "Transaction version number (4-byte little-endian)."
        }
      },
      "provideRedemptionSignature(uint8,bytes32,bytes32)": {
        "details": "The signers will be penalized if this function is not called      correctly within `TBTCConstants.REDEMPTION_SIGNATURE_TIMEOUT`      seconds of a redemption request or fee increase being received.",
        "params": {
          "_r": "Signature R value.",
          "_s": "Signature S value. Should be in the low half of secp256k1        curve's order.",
          "_v": "Signature recovery value."
        }
      },
      "purchaseSignerBondsAtAuction()": {
        "details": "The amount of ETH given for the transferred TBTC can be read using      the `auctionValue` function; note, however, that the function's      value is only static during the specific block it is queried, as it      varies by block timestamp."
      },
      "remainingTerm()": {
        "details": "The value accuracy is not guaranteed since block.timestmap can be      lightly manipulated by miners.",
        "return": "The remaining term of the deposit in seconds. 0 if already at         term."
      },
      "requestFunderAbort(bytes)": {
        "details": "This is a self-admitted funder fault, and is only be callable by      the TDT holder. This function emits the FunderAbortRequested event,      but stores no additional state.",
        "params": {
          "_abortOutputScript": "The output script the funder wishes to request        a return of their UTXO to."
        }
      },
      "requestRedemption(bytes8,bytes)": {
        "details": "The amount of TBTC needed to redeem can be looked up using the      `getRedemptionTbtcRequirement` or `getOwnerRedemptionTbtcRequirement`      functions.",
        "params": {
          "_outputValueBytes": "The 8-byte little-endian output size. The         difference between this value and the lot size of the deposit         will be paid as a fee to the Bitcoin miners when the signed         transaction is broadcast.",
          "_redeemerOutputScript": "The redeemer's length-prefixed output         script."
        }
      },
      "retrieveSignerPubkey()": {
        "details": "Stores the pubkey as 2 bytestrings, X and Y. Emits a      RegisteredPubkey event with the two components. Reverts if the      deposit is not awaiting signer setup, if the generated public key      is unset or has incorrect length, or if the public key has a 0      X or Y value."
      },
      "severelyUndercollateralizedThresholdPercent()": {
        "details": "This collateralization level is critical. If the collateralization      level falls below this percentage the Deposit can get liquidated.      This value represents the percentage of the backing BTC value the      signers must hold as bond in order to not be severely      undercollateralized. It is set at creation time. Note that the      value for new deposits in TBTCSystem can be changed by governance,      but the value for a particular deposit is static once the deposit      is created.",
        "return": "The severely undercollateralized level for this deposit."
      },
      "signerFeeTbtc()": {
        "details": "This is the one-time fee required by the signers to perform the      tasks needed to maintain a decentralized and trustless model for      tBTC. It is a percentage of the deposit's lot size.",
        "return": "Fee amount in TBTC."
      },
      "transferAndRequestRedemption(bytes8,bytes,address)": {
        "details": "Performs the same action as requestRedemption, but transfers      ownership of the deposit to the specified _finalRecipient. Used as      a utility helper for the vending machine's shortcut      TBTC->redemption path.",
        "params": {
          "_finalRecipient": "The address to receive the TDT and later be recorded as deposit redeemer.",
          "_outputValueBytes": "The 8-byte little-endian output size.",
          "_redeemerOutputScript": "The redeemer's length-prefixed output script."
        }
      },
      "undercollateralizedThresholdPercent()": {
        "details": "This collateralization level is semi-critical. If the      collateralization level falls below this percentage the Deposit can      be courtesy-called by calling `notifyCourtesyCall`. This value      represents the percentage of the backing BTC value the signers must      hold as bond in order to not be undercollateralized. It is set at      creation time. Note that the value for new deposits in TBTCSystem      can be changed by governance, but the value for a particular      deposit is static once the deposit is created.",
        "return": "The undercollateralized level for this deposit."
      },
      "utxoValue()": {
        "details": "This call will revert if the deposit is not in a state where the      UTXO info should be valid. In particular, before funding proof is      successfully submitted (i.e. in states START,      AWAITING_SIGNER_SETUP, and AWAITING_BTC_FUNDING_PROOF), this value      would not be valid.",
        "return": "The value of the funding UTXO in satoshis."
      },
      "withdrawFunds()": {
        "details": "Withdrawals can only happen when a contract is in an end-state."
      },
      "withdrawableAmount()": {
        "details": "Generally ETH is only available to withdraw after the deposit      reaches a closed state. The amount reported is for the sender, and      can be withdrawn using `withdrawFunds` if the deposit is in an end      state.",
        "return": "The withdraw allowance in wei."
      }
    }
  },
  "userdoc": {
    "methods": {
      "auctionValue()": {
        "notice": "Calculates the amount of value at auction right now."
      },
      "collateralizationPercentage()": {
        "notice": "Get the current collateralization level for this Deposit."
      },
      "currentState()": {
        "notice": "Get the integer representing the current state."
      },
      "exitCourtesyCall()": {
        "notice": "Notify the contract that the signers' bond value has recovered         enough to be considered sufficiently collateralized."
      },
      "fundingInfo()": {
        "notice": "Returns information associated with the funding UXTO."
      },
      "getOwnerRedemptionTbtcRequirement(address)": {
        "notice": "Get TBTC amount required for redemption assuming _redeemer         is this deposit's owner (TDT holder)."
      },
      "getRedemptionTbtcRequirement(address)": {
        "notice": "Get TBTC amount required for redemption by a specified         _redeemer."
      },
      "inActive()": {
        "notice": "Check if the Deposit is in ACTIVE state."
      },
      "increaseRedemptionFee(bytes8,bytes8)": {
        "notice": "Anyone may request a signature for a transaction with an         increased Bitcoin transaction fee."
      },
      "initialCollateralizedPercent()": {
        "notice": "Get the initial collateralization level for this Deposit."
      },
      "initialize(address)": {
        "notice": "Set the address of the System contract on contract         initialization."
      },
      "keepAddress()": {
        "notice": "Get the contract address of the BondedECDSAKeep associated with         this Deposit."
      },
      "lotSizeSatoshis()": {
        "notice": "Get this deposit's BTC lot size in satoshis."
      },
      "lotSizeTbtc()": {
        "notice": "Get this deposit's lot size in TBTC."
      },
      "notifyCourtesyCall()": {
        "notice": "Notify the contract that the signers are undercollateralized."
      },
      "notifyCourtesyCallExpired()": {
        "notice": "Notify the contract that the courtesy period has expired and the         deposit should move into liquidation."
      },
      "notifyFundingTimedOut()": {
        "notice": "Notify the contract that the funding phase of the deposit has         timed out if `provideBTCFundingProof` is not successfully called         within the allotted time. Any sent BTC is left under control of         the signer group, and the funder can use `requestFunderAbort` to         request an at-signer-discretion return of any BTC sent to a         deposit that has been notified of a funding timeout."
      },
      "notifyRedemptionProofTimedOut()": {
        "notice": "Notify the contract that the deposit has failed to receive a         redemption proof in the allotted time."
      },
      "notifyRedemptionSignatureTimedOut()": {
        "notice": "Notify the contract that the signers have failed to produce a         signature for a redemption request in the allotted time."
      },
      "notifySignerSetupFailed()": {
        "notice": "Notify the contract that signing group setup has timed out if         retrieveSignerPubkey is not successfully called within the         allotted time."
      },
      "notifyUndercollateralizedLiquidation()": {
        "notice": "Notify the contract that the signers are undercollateralized."
      },
      "provideBTCFundingProof(bytes4,bytes,bytes,bytes4,uint8,bytes,uint256,bytes)": {
        "notice": "Anyone may submit a funding proof to the deposit showing that         a transaction was submitted and sufficiently confirmed on the         Bitcoin chain transferring the deposit lot size's amount of BTC         to the signer-controlled private key corresopnding to this         deposit. This will move the deposit into an active state."
      },
      "provideECDSAFraudProof(uint8,bytes32,bytes32,bytes32,bytes)": {
        "notice": "Anyone can provide a signature corresponding to the signers'         public key that was not requested to prove fraud. A redemption         request and a redemption fee increase are the only ways to         request a signature from the signers."
      },
      "provideFundingECDSAFraudProof(uint8,bytes32,bytes32,bytes32,bytes)": {
        "notice": "Anyone can provide a signature corresponding to the signers'         public key to prove fraud during funding. Note that during         funding no signature has been requested from the signers, so         any signature is effectively fraud."
      },
      "provideRedemptionProof(bytes4,bytes,bytes,bytes4,bytes,uint256,bytes)": {
        "notice": "Anyone may submit a redemption proof to the deposit showing that         a transaction was submitted and sufficiently confirmed on the         Bitcoin chain transferring the deposit lot size's amount of BTC         from the signer-controlled private key corresponding to this         deposit to the requested redemption output script. This will         move the deposit into a redeemed state."
      },
      "provideRedemptionSignature(uint8,bytes32,bytes32)": {
        "notice": "Anyone may provide a withdrawal signature if it was requested."
      },
      "purchaseSignerBondsAtAuction()": {
        "notice": "Closes an auction and purchases the signer bonds by transferring         the lot size in TBTC to the redeemer, if there is one, or to the         TDT holder if not. Any bond amount that is not currently up for         auction is either made available for the liquidation initiator         to withdraw (for fraud) or split 50-50 between the initiator and         the signers (for abort or collateralization issues)."
      },
      "remainingTerm()": {
        "notice": "Retrieve the remaining term of the deposit in seconds."
      },
      "requestFunderAbort(bytes)": {
        "notice": "Requests a funder abort for a failed-funding deposit; that is,         requests the return of a sent UTXO to _abortOutputScript. It         imposes no requirements on the signing group. Signers should         send their UTXO to the requested output script, but do so at         their discretion and with no penalty for failing to do so. This         can be used for example when a UTXO is sent that is the wrong         size for the lot."
      },
      "requestRedemption(bytes8,bytes)": {
        "notice": "Requests redemption of this deposit, meaning the transmission,         by the signers, of the deposit's UTXO to the specified Bitocin         output script. Requires approving the deposit to spend the         amount of TBTC needed to redeem."
      },
      "retrieveSignerPubkey()": {
        "notice": "Notify the contract that the ECDSA keep has generated a public         key so the deposit contract can pull it in."
      },
      "severelyUndercollateralizedThresholdPercent()": {
        "notice": "Get the severe undercollateralization level for this Deposit."
      },
      "signerFeeTbtc()": {
        "notice": "Get the signer fee for this deposit, in TBTC."
      },
      "transferAndRequestRedemption(bytes8,bytes,address)": {
        "notice": "This function can only be called by the vending machine."
      },
      "undercollateralizedThresholdPercent()": {
        "notice": "Get the undercollateralization level for this Deposit."
      },
      "utxoValue()": {
        "notice": "Get the value of the funding UTXO."
      },
      "withdrawFunds()": {
        "notice": "Withdraw the ETH balance of the deposit allotted to the caller."
      },
      "withdrawableAmount()": {
        "notice": "Get caller's ETH withdraw allowance."
      }
    }
  }
}